fpc/rtl/inc
svenbarth 7a5bac9cd3 Rework the interface table of VMTs to get rid of FPC_EMPTYINTF.
Previously we had the following approach:
- classes that implemented interfaces had an interface table
- classes that didn't implement an interface, but inherited from a class that did had a Nil entry
- classes that didn't implement any interface (including their parents) had a reference to FPC_EMPTYINTF (this was to optimize lookups)

Now the approach is as follows:
- classes that implement an interface or have a parent that implements an interface have an interface table; if the class itself doesn't implement an interface then the count will be 0
- classes that don't implement an interface at all (neither them nor their parents) have a Nil interface table

This way FPC_EMPTYINTF can be removed without sacrificing at least the optimization for classes without any interface. For classes that have parents with interfaces there will be a small speed penalty due to an additional lookup for the counter.

git-svn-id: trunk@34087 -
2016-07-08 15:34:55 +00:00
..
aliases.inc
astrings.inc Convert Insert() and Delete() to intrinsics in preparation for dynamic array support for these two procedures. 2016-06-03 21:25:49 +00:00
blockrtl.pp
cgeneric.inc
cgenmath.inc * Changed signature of frexp() to match one in Math unit, so eventually a duplicate implementation in Math can be removed. Currently this frexp() remains private to unit System. 2016-03-06 00:43:54 +00:00
cgenstr.inc
charset.pp
cmem.pp
compproc.inc * declare fpc_zeromem and fpc_fillmem as inline to avoid one call 2016-06-15 20:16:16 +00:00
ctypes.pp
currh.inc
dos.inc * use a farpointer on i8086 in the getintvec and setintvec generic "do nothing" 2015-09-29 13:16:56 +00:00
dosh.inc
dynarr.inc Merge RTTI changes from packages branch (including adjustments that were required due to changes in trunk since then). These changes favor source backwards compatibility in contrast to Delphi compatibility. Binary compatiblity is however drastically broken due to the indirect references that are platform independant! 2016-06-10 17:01:51 +00:00
dynarrh.inc Merge RTTI changes from packages branch (including adjustments that were required due to changes in trunk since then). These changes favor source backwards compatibility in contrast to Delphi compatibility. Binary compatiblity is however drastically broken due to the indirect references that are platform independant! 2016-06-10 17:01:51 +00:00
dynlib.inc * changed the return type of GetProcAddress in the generic dynlibs interface to 2015-09-29 16:30:27 +00:00
dynlibh.inc * changed the return type of GetProcAddress in the generic dynlibs interface to 2015-09-29 16:30:27 +00:00
dynlibs.pas + added unit dynlibs to the win16 rtl 2015-10-01 13:10:40 +00:00
except.inc
excepth.inc
exeinfo.pp * Remove sysutils in _USES clause, to avoid exception handling importation, 2016-04-27 13:13:31 +00:00
extpas.pp o basic extended pascal support: 2015-11-15 15:13:36 +00:00
extres.inc
fexpand.inc
file.inc
filerec.inc
flt_conv.inc
flt_core.inc * changed first parameter of gen_digits_32/64() from 'out' to 'var', as that 2016-03-07 19:59:02 +00:00
flt_pack.inc
fpextres.pp
fpintres.pp
gencurr.inc
generic.inc * generic implementation of fpc_pchar_length uses IndexByte instead of a simple while loop 2016-04-12 18:11:27 +00:00
genmath.inc * Changed signature of frexp() to match one in Math unit, so eventually a duplicate implementation in Math can be removed. Currently this frexp() remains private to unit System. 2016-03-06 00:43:54 +00:00
genset.inc
genstr.inc
genstrs.inc
getopts.pp
heap.inc Trial to clarify heap for i8086 issues: 2016-06-13 22:26:03 +00:00
heaph.inc Use FPC_NO_DEFAULT_MEMORYMANAGER define to guard SysGetmem/SysFreemem function definitions, also used for msdos OS 2016-05-11 14:32:02 +00:00
heaptrc.pp Fix CRC calculation for i8086 compact memory model 2016-07-05 22:06:18 +00:00
innr.inc innr.inc: 2016-06-04 08:58:38 +00:00
int64.inc
intres.inc Fix usage of external resources on systems besides Darwin by moving the variable referencing FPC_RESLOCATION fon non-indirect entry information systems from system.inc back into intres.inc 2016-06-14 12:18:36 +00:00
iso7185.pp
lineinfo.pp * Patch from Denis Kozlov to fix bug ID #28288 2016-01-10 20:02:08 +00:00
llvmintr.inc * create a separate type and def for the LLVM "i1" type, because reusing 2016-05-20 20:51:44 +00:00
lnfodwrf.pp * the size of DW_FORM_ref_addr entries depends on the DWARF version 2016-04-10 19:46:05 +00:00
lstrings.pp
macpas.pp
makefile.inc
mathh.inc
objc1.inc
objc.pp
objcbase.pp
objcnf.inc
objpas.inc Rework the interface table of VMTs to get rid of FPC_EMPTYINTF. 2016-07-08 15:34:55 +00:00
objpash.inc - removed "packed" and dummy field (that was required because of 2015-11-21 12:36:03 +00:00
pagemem.pp
readme
real2str.inc
resh.inc * Patch from Luiz Americo to add const to some string params (Bug ID 30197) 2016-05-27 19:11:48 +00:00
rtti.inc Merge RTTI changes from packages branch (including adjustments that were required due to changes in trunk since then). These changes favor source backwards compatibility in contrast to Delphi compatibility. Binary compatiblity is however drastically broken due to the indirect references that are platform independant! 2016-06-10 17:01:51 +00:00
rttih.inc
sfpu128.pp
sfpux80.pp
softfpu.pp * softfpu patch by Max Nazhalov: Small fixes to softfpu.pp complementing r27215 2016-06-05 21:16:01 +00:00
sstrings.inc Convert Insert() and Delete() to intrinsics in preparation for dynamic array support for these two procedures. 2016-06-03 21:25:49 +00:00
strings.pp - do not set the parameter to nil in strings.strdispose, because it's not a var 2015-10-12 14:28:46 +00:00
stringsi.inc
sysres.inc * Patch from Luiz Americo to add const to some string params (Bug ID 30197) 2016-05-27 19:11:48 +00:00
system.fpd * Change some types from integer to sizeint (bug ID 29789) 2016-03-06 15:01:07 +00:00
system.inc Fix usage of external resources on systems besides Darwin by moving the variable referencing FPC_RESLOCATION fon non-indirect entry information systems from system.inc back into intres.inc 2016-06-14 12:18:36 +00:00
systemh.inc Convert Insert() and Delete() to intrinsics in preparation for dynamic array support for these two procedures. 2016-06-03 21:25:49 +00:00
text.inc * Removed unused vars in RTL. 2015-09-17 16:48:53 +00:00
textrec.inc
thread.inc Use FPC_NO_DEFAULT_HEAP to turn out RelocateHeap or MemoryManager.InitThread functions, used for msdos OS 2016-05-11 14:34:55 +00:00
threadh.inc * use 16-bit offsets for threadvars on CPUs with 16-bit address space 2015-10-11 12:16:26 +00:00
threadvr.inc A unit's threadvar list needs to be indirectly referenced by the THREADVARLIST as well. 2016-07-01 14:18:28 +00:00
tinyheap.inc Trial to clarify heap for i8086 issues: 2016-06-13 22:26:03 +00:00
tnyheaph.inc Trial to clarify heap for i8086 issues: 2016-06-13 22:26:03 +00:00
typefile.inc * Removed unused vars in RTL. 2015-09-17 16:48:53 +00:00
typshrd.inc * Some fixes from Ondrej Pokorny (bug ID 29538) 2016-02-06 15:03:28 +00:00
typshrdh.inc * Some fixes from Ondrej Pokorny (bug ID 29538) 2016-02-06 15:03:28 +00:00
ufloat128.pp
ustringh.inc Convert Insert() and Delete() to intrinsics in preparation for dynamic array support for these two procedures. 2016-06-03 21:25:49 +00:00
ustrings.inc Convert Insert() and Delete() to intrinsics in preparation for dynamic array support for these two procedures. 2016-06-03 21:25:49 +00:00
uuchar.pp * Fixed string conversion warnings in RTL. 2015-09-17 17:25:57 +00:00
varerror.inc
variant.inc - removed FPC_HASINTERNALOLEVARIANT2VARIANTCAST-related checks, FPC 2.6.4 2015-09-15 11:51:38 +00:00
varianth.inc - removed FPC_HASINTERNALOLEVARIANT2VARIANTCAST-related checks, FPC 2.6.4 2015-09-15 11:51:38 +00:00
wstringh.inc Convert Insert() and Delete() to intrinsics in preparation for dynamic array support for these two procedures. 2016-06-03 21:25:49 +00:00
wstrings.inc Convert Insert() and Delete() to intrinsics in preparation for dynamic array support for these two procedures. 2016-06-03 21:25:49 +00:00

This directory contains only RTL parts independent
of the processor and of the operating system.

The include files contain the following:

astrings.pp     AnsiStrings implementation.
except.inc      Delphi styled exception support.
file.inc        Untyped file support routines.
filerec.inc     Untyped file record definition.
heap.inc        Runtime heap manager .
heaph.inc       Declarations of Heap functions.
innr.inc        Internal function delcarations.
int64.inc       Support for 64-bit integer arithmetic.
lstrings.pp     LongStrings routine implementation.
mathh.inc       Declarations of mathematical functions.
real2str.inc    Routine to convert floating point numbers to strings.
rtti.inc        Delphi like runtime type information
sstrings.inc    ShortStrings (TP/BP pascal like strings) implementation.
system.inc      OS and Processor independent implementation part of system unit.
systemh.inc     Interface part of the system unit.
text.inc        Text file support routines.
textrec.inc     Definition of Textrec record.
typefile.inc    Text file record definition.
generic.inc     Processor independant implementation of assembler procs on i386
                (to allow easy porting to new processors).
genset.inc      Processor independant implementation of set handling
genmath.inc     Processor independant implementation of mathematical routines
genrrti.inc     Processor independant implementation of runtime type information routines

The unit files are:

ucomplex.pp     Complex functions using operator overloading
getopts.pp      Pascal implementation of the GNU Getops
objects.pp      Turbo Pascal like implementation of objects unit
heaptrc.pp      Runtime memory leak tracer and tests for memory integrity.