Commit Graph

131 Commits

Author SHA1 Message Date
Jonas Maebe
41acad1d11 + keep track of called virtual methods per unit. -Owoptvtms will now replace
vmt entries of virtual methods that can never be called with references
    to FPC_ABSTRACTERROR. Some virtual methods are always considered to be
    reachable: published methods, and methods used as getter/setter for a
    published property.

git-svn-id: trunk@13238 -
2009-06-06 08:24:36 +00:00
Jonas Maebe
9bb0db1a6a * fixed range check error
git-svn-id: trunk@11813 -
2008-09-21 18:52:13 +00:00
peter
e90ce867d9 * fphashlist, update hashcapacity also if capacity is changed
git-svn-id: trunk@11699 -
2008-09-03 21:04:53 +00:00
florian
9955d5b061 o patch from Sergej Gorelkin to improvement code generation for string literals
* Replaces linear search through assembler list by the hash lookup. 
    This considerably improves performance on large projects 
    (one example is winunits-jedi package, in which tcgstringconstnode.pass_generate_code 
     was top #1 in calltree, consuming about 12% IRefs).
  * Enables reusing memory locations for widestring constants 
    (and in general, the same approach may be used for any other type of constants).
  * Saves a sizeof(pointer) bytes per constant, by removing a location 
    which points to the string. This location is necessary for the 
    typed consts which may be modified, but redundant for string literals 
    because the language does not allow to modify string literals in any way. 

git-svn-id: trunk@11657 -
2008-08-27 15:16:45 +00:00
yury
5e11e697b4 * Use unsigned integers for sizes and positions to break 2GB limit in tdynamicarray, object writer, internal linker, coff and PE headers.
git-svn-id: trunk@11480 -
2008-07-28 20:29:25 +00:00
Jonas Maebe
cadcfa76d8 * optimized TLinkedList.clear so it can use regvars for everything in
its loop (helps a lot on ppc)

git-svn-id: trunk@8354 -
2007-09-02 16:16:25 +00:00
florian
a3d906f1ca - removed several ;;
git-svn-id: trunk@7498 -
2007-05-28 15:59:17 +00:00
peter
06698d6e1b * explicitly use shortstring for TFPHashList
git-svn-id: trunk@6303 -
2007-02-02 18:58:29 +00:00
tom_at_work
106fe68ce6 * renamed TStringList to TCmdStrList, in general use TCmdStr instead of shortstrings to fix bug #6351
git-svn-id: trunk@6215 -
2007-01-26 22:29:39 +00:00
peter
a526430509 * add TFPHashList.FindIndexOf
git-svn-id: trunk@5906 -
2007-01-11 21:52:32 +00:00
micha
d9c91a9663 fix TFPList.QuickSort duplicate in compiler cclasses (rtl is also broken)
git-svn-id: trunk@5525 -
2006-12-02 08:03:21 +00:00
peter
129ab85aad * tfphashlist.delete needs to rehash after updating all indexes
git-svn-id: trunk@5362 -
2006-11-13 21:17:59 +00:00
peter
45621c892e * set vs_initialised for typed consts
* delete old symbol when absolute is used

git-svn-id: trunk@5351 -
2006-11-13 07:42:48 +00:00
peter
99662d0bff * fixed insertlistcopy to not reverse the list
git-svn-id: trunk@5288 -
2006-11-08 17:06:26 +00:00
peter
e17b424e28 * refactor procsym procdef list
git-svn-id: trunk@5210 -
2006-11-03 18:44:46 +00:00
peter
47c16e33c1 * disable inline for 2.0.x
git-svn-id: trunk@5206 -
2006-11-03 17:06:57 +00:00
peter
4df4a4f7d1 * dynamic growth of blocks in tdynamicarray
* revert to old expand algorithms for fplist 

git-svn-id: trunk@5204 -
2006-11-03 13:44:44 +00:00
peter
658c46b903 * remove tdictionary and tindexarray
* symtables based on TFPHashObjectList and TFPObjectList
  * rename torddef.typ to torddef.ordtype
  * rename tfloatdef.typ to tfloatdef.floattype
  * rename tdef.deftype to tdef.typ
  * remove obsolete browser code, browcol is kept so the ide
    can still be compiled

git-svn-id: trunk@5192 -
2006-11-03 00:30:30 +00:00
peter
05183ac829 * AsmSymbolDict changed to FPHashObjectList
git-svn-id: trunk@5139 -
2006-11-01 00:22:13 +00:00
peter
ff6c1fa285 * remove tdirectorycache that is now in cfileutils
git-svn-id: trunk@5109 -
2006-10-31 09:07:01 +00:00
peter
cb246eb781 * Remove dos,strings units, use SysUtils instead
* replace split* functions with Extract* functions
  * Add Directory caching

git-svn-id: trunk@5102 -
2006-10-30 23:29:35 +00:00
micha
d704af7216 fix compilation for {$T+} linux/win
git-svn-id: trunk@4794 -
2006-10-04 20:43:55 +00:00
olle
05d6f0e94d macos: added a fake sysutils for use by compiler, and fixed some tests
git-svn-id: trunk@4549 -
2006-09-03 22:30:37 +00:00
peter
bf1c390027 * refactor import library generation
* support variable imports in internal linker

git-svn-id: trunk@4544 -
2006-09-03 19:22:31 +00:00
peter
6dd5ee65f5 * FCachedStr added to TFPHashObject for easier debugging
git-svn-id: trunk@3990 -
2006-06-28 20:26:42 +00:00
marco
2a5332e3bd * Link ordering working FreeBSD implementation
git-svn-id: trunk@3894 -
2006-06-19 14:17:45 +00:00
marco
179451dcfd * Initial linkordering subsystem. Not active (need t_* mods which I want in a different revision to ease merging)
git-svn-id: trunk@3788 -
2006-06-04 12:44:48 +00:00
peter
945cb29f24 * TFPHashList.Pack now also packs the items
* Free ObjRelocations

git-svn-id: trunk@3153 -
2006-04-05 12:36:17 +00:00
peter
7923a81cfd * range check error
git-svn-id: trunk@3134 -
2006-04-03 07:51:34 +00:00
peter
1a3cf9650e * prevent overflow in fphash
git-svn-id: trunk@3130 -
2006-04-02 20:48:36 +00:00
peter
fc6e4adf74 Merged revisions 3068,3070,3114 via svnmerge from
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler

r3068 | peter | 2006-03-28 15:02:06 +0100 (Tue, 28 Mar 2006) | 2 lines

  * Add new TFPHashList and TFPHashObjectList

r3070 | peter | 2006-03-29 07:39:04 +0100 (Wed, 29 Mar 2006) | 2 lines

  * fix compile

r3114 | peter | 2006-04-01 23:47:50 +0100 (Sat, 01 Apr 2006) | 3 lines

  * remove debug writelns
  * enable vtable optimizer with -Xv

git-svn-id: trunk@3116 -
2006-04-02 00:13:03 +00:00
peter
38c0ae73da Merged revisions 2775,2788-2789 via svnmerge from
http://svn.freepascal.org/svn/fpc/branches/linker/compiler

........
r2775 | peter | 2006-03-05 22:43:30 +0100 (Sun, 05 Mar 2006) | 2 lines

  * merge ppu changes to keep ppus the same

........
r2788 | peter | 2006-03-06 12:59:14 +0100 (Mon, 06 Mar 2006) | 2 lines

  * Add TFPList and TFPObjectList

........
r2789 | peter | 2006-03-06 13:01:37 +0100 (Mon, 06 Mar 2006) | 2 lines

  * fix powerpc

........

git-svn-id: trunk@2790 -
2006-03-06 12:04:44 +00:00
peter
785550d7e3 Merged revisions 2669,2673,2677,2683,2696,2699-2702,2704,2708,2712-2715,2718,2722-2723,2728-2730,2740,2769 via svnmerge from
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler

........
r2669 | peter | 2006-02-23 09:31:21 +0100 (Thu, 23 Feb 2006) | 2 lines

  * add compiler dir

........
r2673 | peter | 2006-02-23 17:08:56 +0100 (Thu, 23 Feb 2006) | 2 lines

  * enabled more code

........
r2677 | peter | 2006-02-24 17:46:29 +0100 (Fri, 24 Feb 2006) | 2 lines

  * pe stub and headers

........
r2683 | peter | 2006-02-25 23:13:24 +0100 (Sat, 25 Feb 2006) | 2 lines

  * section options cleanup

........
r2696 | peter | 2006-02-26 20:27:41 +0100 (Sun, 26 Feb 2006) | 2 lines

  * fixed typecasts

........
r2699 | peter | 2006-02-26 23:04:32 +0100 (Sun, 26 Feb 2006) | 2 lines

  * simple linking works

........
r2700 | peter | 2006-02-27 09:44:50 +0100 (Mon, 27 Feb 2006) | 2 lines

  * internal linker script

........
r2701 | peter | 2006-02-27 12:05:12 +0100 (Mon, 27 Feb 2006) | 2 lines

  * make elf working again

........
r2702 | peter | 2006-02-27 14:04:43 +0100 (Mon, 27 Feb 2006) | 3 lines

  * disable dwarf for smartlinking with .a
  * fix section start in new .a file

........
r2704 | peter | 2006-02-27 18:30:43 +0100 (Mon, 27 Feb 2006) | 2 lines

  * stab section fixes

........
r2708 | peter | 2006-02-28 19:29:17 +0100 (Tue, 28 Feb 2006) | 2 lines

  * basic work to merge stabs sections

........
r2712 | peter | 2006-02-28 23:17:48 +0100 (Tue, 28 Feb 2006) | 2 lines

  * unload tmodules before linking

........
r2713 | peter | 2006-02-28 23:18:51 +0100 (Tue, 28 Feb 2006) | 2 lines

  * fixed stabs linking

........
r2714 | peter | 2006-02-28 23:19:19 +0100 (Tue, 28 Feb 2006) | 2 lines

  * show code and data size

........
r2715 | peter | 2006-02-28 23:25:35 +0100 (Tue, 28 Feb 2006) | 2 lines

  * unload .stabs from objdata after it is merged

........
r2718 | peter | 2006-03-01 12:24:38 +0100 (Wed, 01 Mar 2006) | 3 lines

  * memsize/datasize cleanup
  * check for exports/resources when adding module to linker

........
r2722 | peter | 2006-03-03 09:12:20 +0100 (Fri, 03 Mar 2006) | 2 lines

  * new TObjSymbol splitted from TAsmSymbol

........
r2723 | peter | 2006-03-03 14:08:55 +0100 (Fri, 03 Mar 2006) | 2 lines

  * coff fixes after recent objsymbol changes

........
r2728 | peter | 2006-03-03 22:43:04 +0100 (Fri, 03 Mar 2006) | 2 lines

  * fixed coff writer

........
r2729 | peter | 2006-03-04 01:10:32 +0100 (Sat, 04 Mar 2006) | 2 lines

  * fix read-only opening

........
r2730 | peter | 2006-03-04 01:11:16 +0100 (Sat, 04 Mar 2006) | 2 lines

  * Read edata from DLLs, basic work

........
r2740 | peter | 2006-03-04 21:13:43 +0100 (Sat, 04 Mar 2006) | 3 lines

  * deletedef added
  * don't remove defs from index when we are already clearing everything

........
r2769 | peter | 2006-03-05 21:42:33 +0100 (Sun, 05 Mar 2006) | 4 lines

  * moved TObj classes to ogbase
  * ObjSection.SymbolRefs and SymbolDefines list
  * DLL importing

........

git-svn-id: trunk@2771 -
2006-03-05 21:10:37 +00:00
michael
7449f99d5f + Removed all compatibility defines from compiler
git-svn-id: trunk@335 -
2005-06-09 21:14:22 +00:00
fpc
790a4fe2d3 * log and id tags removed
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3 initial import
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
Tomas Hajny
5f59b0f6b9 * fix for SIGSEGV due to access to uninitialized pointers in TList 2005-05-12 21:40:42 +00:00
Jonas Maebe
6578fb25bb - removed unused variables 2005-03-25 23:03:04 +00:00
peter
abb3f82ceb * getheapstatus fixes 2005-03-04 16:49:22 +00:00
marco
daf59fbd7e * getFPCheapstatus (no, FPC HEAP, not FP CHEAP!) 2005-02-28 15:38:38 +00:00
peter
e417e34496 * truncate log 2005-02-14 17:13:06 +00:00
peter
a263b1d40e * GetHeapStatus added, removed MaxAvail,MemAvail,HeapSize 2004-11-22 19:34:58 +00:00
peter
e740a66636 * tparaitem removed, use tparavarsym instead
* parameter order is now calculated from paranr value in tparavarsym
2004-11-15 23:35:30 +00:00
mazen
581b52422c - remove $IFDEF DELPHI and related code
- remove $IFDEF FPCPROCVAR and related code
2004-10-15 09:14:16 +00:00
peter
ec720a5800 * insertlistbefore added 2004-10-04 20:43:28 +00:00
peter
c1303f5759 * stringlist.find case insensitive 2004-09-13 20:26:26 +00:00
florian
8a9758c5e2 * logs truncated 2004-06-20 08:55:28 +00:00
florian
588e2c38bf * dwarf branch merged 2004-06-16 20:07:06 +00:00
peter
7fc9369945 * allow setting of name in dictionary always. Otherwise it is never
possible to create an item with a name and rename before insert
    this is used in the symtable to hide the current symbol
2004-05-24 17:30:09 +00:00
peter
0ce74fb1bc * count fixes for tlinkedlist 2004-05-23 14:31:31 +00:00
peter
3f222312e2 * add TList to cclasses, remove classes dependency from t_win32 2004-04-28 18:02:54 +00:00
daniel
7a6b6f4bd4 * Some minor stuff
* Managed to eliminate speed effects of string compression
2004-01-15 15:16:17 +00:00
daniel
4a4b8f2a72 * Experiment: Compress strings to save memory
Did not save a single byte of mem; clearly the core size is boosted by
    temporary memory usage...
2004-01-11 23:56:19 +00:00
peter
4a1ecb07d1 * splitted buildderef and buildderefimpl to fix interface crc
calculation
2003-10-23 14:44:07 +00:00
peter
6878c55c80 * write derefdata in a separate ppu entry 2003-10-22 20:39:59 +00:00
florian
1df13c788c * fixed some MMX<->SSE
* started to fix ppc, needs an overhaul
  + stabs info improve for spilling, not sure if it works correctly/completly
  - MMX_SUPPORT removed from Makefile.fpc
2003-10-11 16:06:42 +00:00
peter
409b982075 * insertbefore added 2003-09-29 20:52:50 +00:00
marco
88e866dcb7 * (Peter) patch to fix snapshot 2003-09-24 13:02:10 +00:00
peter
65f03c3f7e * insertlistafter added 2003-06-09 12:19:34 +00:00
florian
3f5541e996 + some front end stuff for vs_hidden added 2002-12-15 19:34:31 +00:00
carl
53d90a34ab - remove some unused defines 2002-11-24 18:18:04 +00:00
carl
67486c96c3 * fixes for Delphi 6 compilation
(warning : Some features do not work under Delphi)
2002-10-05 12:43:23 +00:00
peter
a540ff122c * tdicationary.replace added to replace and item in a dictionary. This
is only allowed for the same name
  * varsyms are inserted in symtable before the types are parsed. This
    fixes the long standing "var longint : longint" bug
  - consume_idlist and idstringlist removed. The loops are inserted
    at the callers place and uses the symtable for duplicate id checking
2002-09-09 17:34:14 +00:00
peter
20af604613 * memdebug enhancements 2002-09-05 19:29:42 +00:00
peter
ac71268ce6 * saving of asmsymbols in ppu supported
* asmsymbollist global is removed and moved into a new class
    tasmlibrarydata that will hold the info of a .a file which
    corresponds with a single module. Added librarydata to tmodule
    to keep the library info stored for the module. In the future the
    objectfiles will also be stored to the tasmlibrarydata class
  * all getlabel/newasmsymbol and friends are moved to the new class
2002-08-11 13:24:10 +00:00
carl
528d042442 + fix incorrect comment in insertlistcopy 2002-08-09 19:08:53 +00:00
peter
4285e99853 * internal linker
* reorganized aasm layer
2002-07-01 18:46:20 +00:00
Jonas Maebe
9319168ca4 * tdictionary.rename() returns nil if the original object wasn't found
(reported by Sergey Korshunoff <seyko@comail.ru>)
2002-06-17 13:56: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
faf78ea813 * overloading supported in child classes
* fixed parsing of classes with private and virtual and overloaded
    so it is compatible with delphi
2001-11-18 18:43:13 +00:00
Jonas Maebe
9b628f6409 * reduced memory usage by about 10% and increased speed by about 15% 2001-11-05 14:16:25 +00:00
peter
351fdd970e * fixed dynamicarray.seek() with pos equals multiple of $10000 2001-05-04 19:50:04 +00:00
peter
a7cf57524e * symtable change to classes
* range check generation and errors fixed, make cycle DEBUG=1 works
  * memory leaks fixed
2001-04-13 01:22:06 +00:00
peter
6eb671f761 * fixed some memory leaks 2001-03-13 18:45:06 +00:00
peter
668e90ef91 * fixed tdynamicarray.readstream 2001-03-05 21:40:01 +00:00
peter
bd64ad0539 * 'classified' tdictionary, but leave it within an define 2000-12-29 21:57:27 +00:00
peter
32b9cdb7cf + new tlinkedlist class (merge of old tstringqueue,tcontainer and
tlinkedlist objects)
2000-12-25 00:07:25 +00:00
peter
0c0c01980f + cstreams unit
* dynamicarray object to class
2000-12-24 12:25:31 +00:00