Description: rtti unit and ffi package, and invoke related mods (interface rtti)

This file as text.
(active) Revisions in this set:
5153a288dc63937a3b79d305f72cab94e5ab99e3,788d976f3a2d89bbf59721280c4d6dc193f6624b,c17dafc2f932c23033c990232e776f374b19cc81
e060a43d70c9ce31b6134a5e374c907fc74706d4,de15025a4760b8abda8b57606c426d958c00c37a,affa9f9d9ca31c0e28cb61b084617ae4b3d6875c
8cd1f1973bfcf432f87e5df74beb23cd45b03c93,55dfb59631a5e666c3d6e527aebad5086aeb359a,a60ab40237581e8ea583b159308438cd62554d3f
a3a39e164040751afc38637a02a5624063048be0,73acb4d1c134f218af71d06adbf3a980202647d0,1a67ffdd22de1d5e5ebe07a328db8806d9831ebb
d6d3e171ceabb0e194e8ecd5de51b6cfdc1922a3,0c464605483132ac901f4004aa69a8d33555b671,707e05d131eae05c11007aa6cd58a64baf73e938
33f6adfab6658afd26b1738bfc9b7b69bb9890a7,00a418f589341d6ed9f3ba4ee80f6e6d552aa541,2dc771b7baba950cc451ff4c1c4cdae9c770cd23
7e1607e095b2c271a636993186e26a5d32fbf06f,9dcd897ce630bf5d3e9b94f9e47b5c9c26726db8,d813edef7239c683355be089ff9b089599bb3c4b
7bcdc2b37fb9f3e81657e2e06e5b56502b629fc2,0ba689de84df28a0a690aa5607ee83df7bba26b4,f383cf4deb29c6ba3d89c830bd40fc1e6632e98c
bc46d8f33a4caacf63a81a8b4bba8afa0ed4ab5c,f9567ff50e62cc7487455323ca5331745f270dd9,322d91758cf08e72cb41949a60a383e7dab69620
f1059679a17d87904455790fe16110cd51c1692f,caaed25f182e46f839ce4af7756f82bace100942,bf37616514079e814312ee72de65262d2b869194
00f4aeb39b84e5a291310697064904d10e6d0313,f74a6abccfb416d7235a46258d28001320ff306e,52ed79c7f3e943129171327dda6d651d83649a35
6e324989ebd805b8c5963bbf3f97df7c895b1e27,21f57606a6e99c3135dcabf9d7cd45c590d6248f,6bf7e4c0d3b2c300790ab5bf8f9fd7ee2d14fa1e
811fb284335d6abad7ada6559e717eae0cf57942,cb2fa0d2c1f3711d62a17b3f4e2a4796390527c4,c7426a37ef17dc736fa542767a2c7406e201919b
d0fe59feda4b322ea698b48e5614f9e7d8814645,a9ff6272f6825c7df2ccc21cd0448211b04d565c,54b8de47f0b2792cf8888774524c98655ccdf6ee

Clicking a revision will expand files
 


* it's more correct for GetPropAttribute to return a TCustomAttribute instead of a TObject
Commit consists out of
  • M rtl/objpas/typinfo.pp


* use a Word instead of a Byte for the attribute index (after all the compiler writes a Word to the count field)
Commit consists out of
  • M rtl/objpas/typinfo.pp


* fix TClassData by including the AttributeTable at the right location
Commit consists out of
  • M rtl/objpas/typinfo.pp


* rename TAttributeData to the more appropriate TAttributeTable
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp
  • M rtl/objpas/typinfo.pp
  • M tests/test/tcustomattr1.pp
  • M tests/test/tcustomattr10.pp
  • M tests/test/tcustomattr11.pp
  • M tests/test/tcustomattr4.pp
  • M tests/test/tcustomattr9.pp


* streamline retrieval of attributes (both in TypInfo and RTTI units)
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp
  • M rtl/objpas/typinfo.pp


* to be on the safe side: don't include AttributeTable fields when cycling
Commit consists out of
  • M rtl/objpas/typinfo.pp


- remove unneeded local variable
Commit consists out of
  • M rtl/objpas/typinfo.pp


* TRttiDataCommon is required outside of the RTTI and DynArray include files as well
Commit consists out of
  • M rtl/inc/system.inc


* handle records with managed fields correctly after attribute merge fixes
Commit consists out of
  • M rtl/inc/rtti.inc


* i8086 compilation fix after changeset 42390
Commit consists out of
  • M rtl/objpas/typinfo.pp


* fixes TInterfaceRawData to match TTypeData
Commit consists out of
  • M rtl/objpas/typinfo.pp


* fix alignment of ParamList
* fix test for architectures using aligned rtti
Commit consists out of
  • M rtl/objpas/typinfo.pp
  • M tests/webtbs/tw12038.pp


Try to fix alignment issues in RTTI code for 64-bit targets which require proper alignment
Commit consists out of
  • M rtl/inc/rtti.inc


* m68k has slightly different alignment requirements, so that aligntoptr might result in incorrect addresses for a record's element entries, thus we introduce a separate AlignTypeData function that handles this correctly
Commit consists out of
  • M rtl/inc/rtti.inc
  • M rtl/inc/system.inc


* check for CPUM68k instead of M68K; the latter should only be defined when building the compiler, so I wonder how that ever worked...
Commit consists out of
  • M rtl/objpas/typinfo.pp


* fix for Mantis 0035982: free created attributes once the type is freed
+ added test
Commit consists out of
  • M .gitattributes
  • M packages/rtl-objpas/src/inc/rtti.pp
  • A tests/webtbs/tw35982.pp


* also correctly align the pointer for the record elements inside FPC_COPY
Commit consists out of
  • M rtl/inc/rtti.inc


* TClassData also needs alignment dummies
Commit consists out of
  • M rtl/objpas/typinfo.pp


* correct alignment for the property table
Commit consists out of
  • M rtl/objpas/typinfo.pp


* fix for Mantis 0036196: free a property's attributes when the property is destroyed
+ added test
Commit consists out of
  • M .gitattributes
  • M packages/rtl-objpas/src/inc/rtti.pp
  • A tests/webtbs/tw36196.pp


* also advance the error code in the case of success
Commit consists out of
  • M tests/test/trtti17.pp


* implement interface thunk for RISC V 32- and 64-bit
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


* fix test compilation with Delphi
Commit consists out of
  • M packages/rtl-objpas/tests/tests.rtti.pas
  • M packages/rtl-objpas/tests/tests.rtti.util.pas


* fix for Mantis 0038381: apply patch by Bi0T1N to add two Delphi compatible overloads for TValue.Make
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp
  • M packages/rtl-objpas/tests/tests.rtti.pas


* x86_64 Win64 callback implementation: fix building the argument array if the result is passed as a parameter
Commit consists out of
  • M packages/rtl-objpas/src/x86_64/invoke.inc


* TMethodImplementation.HandleCallback: fix building the argument array if the result is passed in a parameter
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


+ add Handle property to access the TypeInfo pointer of the TRttiType
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


* move initialization of TValue to a separate method to avoid duplicate implementations
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


+ add Rtti types for static and dynamic arrays
+ added tests
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp
  • M packages/rtl-objpas/tests/tests.rtti.pas


+ add TValue.FromArray to create a TValue type for a static or dynamic array from an array of TValues
+ added test
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp
  • M packages/rtl-objpas/tests/tests.rtti.pas


* i386 invoke implementation: check the correct argument in the second pass
Commit consists out of
  • M packages/rtl-objpas/src/i386/invoke.inc


* fixup
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


* fix gitlab 0039506: add assignment operator overloads for all string types so that assignments of constant strings can be handled correctly
+ added adjusted/extended test (the test isn't enabled by default however as it requires libffi on most platforms)
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp
  • A tests/webtbs/tw39506.pp


* Delphi compatibility: Add conversion between TValue from/to variant and TVarRec
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp
  • M packages/rtl-objpas/tests/testrunner.rtlobjpas.pp
  • A packages/rtl-objpas/tests/tests.value.pas


* GetAttribute call
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp
  • M packages/rtl-objpas/tests/tests.rtti.pas
  • M packages/rtl-objpas/tests/tests.rtti.types.pas


* use the VWideChar field to retrieve the WideChar value instead of VChar to fix usage on big endian systems
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


* correctly retrieve the type of the Variant
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


* rename tests for TValue from tests.value to tests.rtti.value, cause they're still part of the tests related to the RTTI unit
Commit consists out of
  • M packages/rtl-objpas/tests/testrunner.rtlobjpas.pp
  • R099 packages/rtl-objpas/tests/tests.value.pas packages/rtl-objpas/tests/tests.rtti.value.pas


* (Try)Cast
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


--amend
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


* Add IsInstanceOf
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp


* Make IInterface methods virtual, as in Delphi
Commit consists out of
  • M packages/rtl-objpas/src/inc/rtti.pp