Commit Graph

355 Commits

Author SHA1 Message Date
peter
8af51ea6d3 * locals and paras are allocated in the code generation
* tvarsym.localloc contains the location of para/local when
    generating code for the current procedure
2003-09-23 17:56:05 +00:00
florian
f3e9e7a24f * fixed web bug #2669
* cosmetic fix in printnode
  * tobjectdef.gettypename implemented
2003-09-06 22:27:08 +00:00
florian
22f1ff8da4 * merged Wiktor's Watcom patches in 1.1 2003-09-05 17:41:12 +00:00
peter
cb16846e3b * fixed static class check for properties 2003-08-23 22:29:51 +00:00
peter
17d7fb5a03 * allow typeof(self) in class methods 2003-08-23 18:41:52 +00:00
peter
6731abb0db * fixed some reported bugs 2003-08-10 17:25:23 +00:00
peter
0dceec9a64 * current_procdef removed, use current_procinfo.procdef instead 2003-06-13 21:19:30 +00:00
peter
dc64b1b54f * don't set nf_member when loaded from with symtable
* allow static variables in class methods
2003-06-03 21:02:57 +00:00
peter
31286d02e6 * search defaulthandler only for message methods 2003-05-22 17:43:21 +00:00
peter
92ee1804b6 * removed selfpointer_offset, vmtpointer_offset
* tvarsym.adjusted_address
  * address in localsymtable is now in the real direction
  * removed some obsolete globals
2003-05-15 18:58:53 +00:00
peter
fcea95f596 * ifdef'd code that checked for failed inherited constructors 2003-05-13 20:54:39 +00:00
peter
05c05f2555 * failn removed
* inherited result code check moven to pexpr
2003-05-13 19:14:41 +00:00
peter
26d78ff5c9 * moved implicit exception frame from ncgutil to psub
* constructor/destructor helpers moved from cobj/ncgutil to psub
2003-05-11 21:37:03 +00:00
peter
15b0132f6f * tloadnode does not support objectsymtable,withsymtable anymore
* withnode cleanup
  * direct with rewritten to use temprefnode
2003-05-11 14:45:12 +00:00
peter
1a2eedd767 * self moved to hidden parameter
* removed hdisposen,hnewn,selfn
2003-05-09 17:47:02 +00:00
florian
9612e57805 * introduced defaultordconsttype to decribe the default size of ordinal constants
on 64 bit CPUs it's equal to cs64bitdef while on 32 bit CPUs it's equal to s32bitdef
  + added defines CPU32 and CPU64 for 32 bit and 64 bit CPUs
  * int64s/qwords are allowed as for loop counter on 64 bit CPUs
2003-05-01 07:59:42 +00:00
peter
60978ba89c * aktprocdef renamed to current_procdef
* procinfo renamed to current_procinfo
  * procinfo will now be stored in current_module so it can be
    cleaned up properly
  * gen_main_procsym changed to create_main_proc and release_main_proc
    to also generate a tprocinfo structure
  * fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
peter
7f14891d66 * aktprocdef cleanup, aktprocdef is now always nil when parsing
a new procdef declaration
  * aktprocsym removed
  * lexlevel removed, use symtable.symtablelevel instead
  * implicit init/final code uses the normal genentry/genexit
  * funcret state checking updated for new funcret handling
2003-04-27 07:29:50 +00:00
peter
fe96aad6d6 * vo_is_result flag added for the special RESULT symbol 2003-04-26 00:33:07 +00:00
peter
f4b818fc1d * removed funcretn,funcretsym, function result is now in varsym
and aliases for result and function name are added using absolutesym
  * vs_hidden parameter for funcret passed in parameter
  * vs_hidden fixes
  * writenode changed to printnode and released from extdebug
  * -vp option added to generate a tree.log with the nodetree
  * nicer printnode for statements, callnode
2003-04-25 20:59:33 +00:00
peter
181da6423d * firstaddr will check procvardef 2003-04-23 10:13:55 +00:00
peter
47489f2376 * firstpass uses expectloc
* checks if there are differences between the expectloc and
    location.loc from secondpass in EXTDEBUG
2003-04-22 23:50:22 +00:00
peter
d780263799 * default property also increased the reference count for the
property symbol
2003-04-11 15:49:01 +00:00
peter
5cff10dd1a * fix tw2454 2003-04-11 14:50:08 +00:00
peter
750c3b315e * fixed small mem leaks 2003-03-27 17:44:13 +00:00
peter
fe6518a49c * allow more tokens instead of only semicolon after inherited 2003-03-17 18:55:30 +00:00
peter
830ea4e876 * support DefaultHandler and anonymous inheritance fixed
for message methods
2003-03-17 16:54:41 +00:00
peter
25d973ef16 * self fixes for static methods (merged) 2003-01-30 21:46:57 +00:00
peter
14f92fa36f * Find the correct procvar to load when using @ in fpc mode 2003-01-16 22:12:22 +00:00
peter
00e2ee165b * merged methodpointer fixes from 1.0.x 2003-01-15 01:44:32 +00:00
peter
ea989e01cc * fixed tw2273 2003-01-14 23:48:09 +00:00
peter
23861a4e45 * tp procvar handling fix for tb0448 2003-01-12 17:51:42 +00:00
peter
a0fbe08d83 * remove a lot of code to support typen in loadn-procsym 2003-01-05 22:44:14 +00:00
peter
74cd4c01b2 * assigned(procvar) fix for delphi mode, fixes tb0430 2002-12-11 22:40:36 +00:00
carl
93d011d184 + checking for symbols used with hint directives is done mostly in pexpr
only now
2002-11-30 11:12:48 +00:00
peter
67153fd9a1 * the never ending story of tp procvar hacks 2002-11-27 15:33:46 +00:00
peter
2e692659df * fix for tw2178. When a ^ or . follows a procsym then the procsym
needs to be called
2002-11-26 22:58:24 +00:00
peter
f3fc72095f * splitted defbase in defutil,symutil,defcmp
* merged isconvertable and is_equal into compare_defs(_ext)
  * made operator search faster by walking the list only once
2002-11-25 17:43:16 +00:00
carl
05d86bbef8 * memory optimization with tconstsym (1.5%) 2002-11-22 22:48:10 +00:00
pierre
01af531efb * commented check code tht was invalid in 1.1 2002-11-20 22:49:55 +00:00
peter
bc7a7ddb20 * fix crash with EXTDEBUG code 2002-11-18 18:34:41 +00:00
peter
aee4b7195a * fix tw2209 (merged) 2002-11-18 17:48:21 +00:00
peter
a496dbe1ff * pass proccalloption to ret_in_xxx and push_xxx functions 2002-11-18 17:31:54 +00:00
peter
9d0437f8aa * support inherited; support for overload as it is handled by
delphi. This is only for delphi mode as it is working is
    undocumented and hard to predict what is done
2002-10-05 00:48:57 +00:00
peter
f29c79b533 * ignore vecn,subscriptn when checking for a procvar loadn 2002-10-04 21:13:59 +00:00
peter
ff5f5b33cd * don't check interfaces for class methods 2002-10-02 20:51:22 +00:00
peter
d774c8d988 * Copy() is now internal syssym that calls compilerprocs 2002-10-02 18:20:52 +00:00
florian
d5f0cbbf2b * fixes to common code to get the alpha compiler compiled applied 2002-09-30 07:00:44 +00:00
peter
76eb5b4a1f * allow ^ after nil 2002-09-16 19:06:14 +00:00
peter
dcd9e0107c * old logs removed and tabs fixed 2002-09-07 15:25:00 +00:00
carl
6c2bede5a8 * second part bug report 1996 fix, testrange in cordconstnode
only called if option is set (also make parsing a tiny faster)
2002-09-07 12:16:03 +00:00
daniel
b0364566d1 * Make Tprocdef.defs protected 2002-09-03 16:26:26 +00:00
peter
98dd65b0f3 * inlining is now also allowed in interface
* renamed write/load to ppuwrite/ppuload
  * tnode storing in ppu
  * nld,ncon,nbas are already updated for storing in ppu
2002-08-18 20:06:23 +00:00
florian
e313bab4ff * first part of procinfo rewrite 2002-08-17 09:23:33 +00:00
Jonas Maebe
ad728f0267 - removed some superfluous "in_paras := true" statements 2002-08-01 16:37:47 +00:00
florian
eb2ca8d10f * rewrote the system handling 2002-07-26 21:15:37 +00:00
daniel
46b8ed0657 * Tried to make Tprocsym.defs protected. I didn't succeed but the cleanups
are worth comitting.
2002-07-23 09:51:22 +00:00
florian
59abf2555b * types.pas renamed to defbase.pas because D6 contains a types
unit so this would conflicts if D6 programms are compiled
  + Willamette/SSE2 instructions to assembler added
2002-07-20 11:57:52 +00:00
florian
31da813d1d * exit is now a syssym instead of a keyword 2002-07-16 15:34:20 +00:00
carl
e8451626f6 * longstring declaration now gives parser error since its not supported! 2002-07-06 20:18:02 +00:00
Jonas Maebe
f33ee551d7 * fixed web bug #1995 2002-06-12 15:46:14 +00:00
peter
06ebac4e27 * readded missing revisions 2002-05-18 13:34:04 +00:00
carl
21b3a10f02 + defines.inc -> fpcdefs.inc to avoid conflicts if compiling by hand
+ try to fix temp allocation (still in ifdef)
+ generic constructor calls
+ start of tassembler / tmodulebase class cleanup
2002-05-16 19:46:34 +00:00
peter
2992e1819c * removed old logs and updated copyright year 2002-05-14 19:34:38 +00:00
peter
4dcd96747e * moved entry and exitcode to ncgutil and cgobj
* foreach gets extra argument for passing local data to the
    iterator function
  * -CR checks also class typecasts at runtime by changing them
    into as
  * fixed compiler to cycle with the -CR option
  * fixed stabs with elf writer, finally the global variables can
    be watched
  * removed a lot of routines from cga unit and replaced them by
    calls to cgobj
  * u32bit-s32bit updates for and,or,xor nodes. When one element is
    u32bit then the other is typecasted also to u32bit without giving
    a rangecheck warning/error.
  * fixed pascal calling method with reversing also the high tree in
    the parast, detected by tcalcst3 test
2002-05-12 16:53:04 +00:00
peter
67ede1276b * add pinline unit that inserts compiler supported functions using
one or more statements
  * moved finalize and setlength from ninl to pinline
2002-04-23 19:16:34 +00:00
peter
6320530bdd * removed newn and disposen nodes, the code is now directly
inlined from pexpr
  * -an option that will write the secondpass nodes to the .s file, this
    requires EXTDEBUG define to actually write the info
  * fixed various internal errors and crashes due recent code changes
2002-04-21 19:02:03 +00:00
peter
8af460ac31 * using inherited; without a parent having the same function
will do nothing like delphi
2002-04-16 16:11:17 +00:00
carl
da8b01e708 + change unit use 2002-04-07 13:25:20 +00:00
Jonas Maebe
2965034fca * fixed web bug #1907
* fixed some other procvar related bugs (all related to accepting procvar
      constructs with either too many or too little parameters)
  (both merged, includes second typo fix of pexpr.pas)
2002-04-01 20:57:13 +00:00
Jonas Maebe
7fb55bf4e4 + a_loadfpu_* and a_loadmm_* methods in tcg
* register allocation is now handled by a class and is mostly processor
    independent (+rgobj.pas and i386/rgcpu.pas)
  * temp allocation is now handled by a class (+tgobj.pas, -i386\tgcpu.pas)
  * some small improvements and fixes to the optimizer
  * some register allocation fixes
  * some fpuvaroffset fixes in the unary minus node
  * push/popusedregisters is now called rg.save/restoreusedregisters and
    (for i386) uses temps instead of push/pop's when using -Op3 (that code is
    also better optimizable)
  * fixed and optimized register saving/restoring for new/dispose nodes
  * LOC_FPU locations now also require their "register" field to be set to
    R_ST, not R_ST0 (the latter is used for LOC_CFPUREGISTER locations only)
  - list field removed of the tnode class because it's not used currently
    and can cause hard-to-find bugs
2002-03-31 20:26:33 +00:00
peter
935bb2185a * fixed sizeof(TClass) to return only 4 2002-03-01 14:08:26 +00:00
peter
190ead04c0 * more fixes for protected handling 2002-02-03 09:30:03 +00:00
peter
0c96d4406b * more checks for private and protected 2002-01-29 21:25:22 +00:00
peter
fd2ad837e2 * implicit result variable generation for assembler routines
* removed m_tp modeswitch, use m_tp7 or not(m_fpc) instead
2002-01-24 18:25:48 +00:00
peter
5cdb7cc52b * removed getprocvar, use only getprocvardef 2002-01-06 21:47:32 +00:00
peter
60d2ddbbd5 * protected/private symbols parsing fixed 2001-12-31 16:59:41 +00:00
florian
b60666ae1f + parasym to tparaitem added 2001-12-06 17:57:33 +00:00
florian
9f9c1700b0 * variant paramter passing and functions results fixed 2001-11-14 01:12:44 +00:00
peter
887f6ba34c * removed obsolete chainprocsym and test_procsym code 2001-11-02 23:16:50 +00:00
peter
d2e1952377 * procsym definition rewrite 2001-11-02 22:58:00 +00:00
peter
ac400051bd * allow assignment of overloaded procedures to procvars when we know
which procedure to take
2001-10-28 17:22:25 +00:00
marco
7215d46735 * Make new/dispose system functions instead of keywords 2001-10-24 11:51:39 +00:00
peter
075b5188ee * better support for indexed properties 2001-10-21 13:10:50 +00:00
peter
cb06c9bcb8 * array access for properties added 2001-10-21 12:33:05 +00:00
peter
17d6dded66 * interface 2 guid support
* guid constants support
2001-10-20 19:28:37 +00:00
Jonas Maebe
daa7693b45 * property parameters are now fully parsed by the firstcall code to
check for the correct amount and types (merged)
2001-10-18 16:30:38 +00:00
peter
915b5cd7a9 * split constsym.value in valueord,valueordptr,valueptr. The valueordptr
is used for holding target platform pointer values. As those can be
    bigger than the source platform.
2001-09-02 21:18:28 +00:00
florian
9746f4c2d6 * some cg reorganisation
* some PPC updates
2001-08-26 13:35:06 +00:00
florian
032023f8de * some interfaces related problems regarding
mapping of interface implementions fixed
2001-08-22 21:16:20 +00:00
peter
81200dc9ef * funcret moved from tprocinfo to tprocdef 2001-08-06 21:40:46 +00:00
peter
db87f86f00 * Length made internal
* Add array support for Length
2001-07-09 21:15:40 +00:00
Jonas Maebe
77a99eecdf * fixed inconsistent handling of procvars in FPC mode (sometimes @ was
required to assign the address of a procedure to a procvar, sometimes
    not. Now it is always required) (merged)
2001-06-29 14:16:57 +00:00
peter
d7eb8e1e6b * fixed tp procvar support in parameters of a called procvar
* typenode cleanup, no special handling needed anymore for bt_type
2001-06-04 18:16:42 +00:00
peter
04be6d3ced * parse const after .. using bt_const block to allow expressions, this
is Delphi compatible
2001-06-04 11:45:35 +00:00
peter
d997613a11 * allow typenodes for typeinfo and typeof
* tp procvar fixes for properties
2001-05-19 21:15:53 +00:00
peter
be05f2b65b * fixed crash with auto dereferencing 2001-05-19 12:23:59 +00:00
peter
13877f29b2 * removed unused allow_type 2001-05-09 19:52:51 +00:00
florian
3c5793d8c6 * some Delphi incompatibilities fixed:
- out, dispose and new can be used as idenfiers now
     - const p = apointerype(nil); is supported now
  + support for const p = apointertype(pointer(1234)); added
2001-05-04 15:52:03 +00:00
peter
af5d6e60e7 * moved more code from pass_1 to det_resulttype 2001-04-14 14:07:10 +00:00