Commit Graph

52005 Commits

Author SHA1 Message Date
svenbarth
57db4b47e1 - remove unneeded type declaration
git-svn-id: trunk@37421 -
2017-10-07 21:44:51 +00:00
svenbarth
1ae344394a + add data record for easier access to a class' data
git-svn-id: trunk@37420 -
2017-10-07 21:40:42 +00:00
florian
3d3298f64d * write absolute references correctly on avr, resolves #32040
git-svn-id: trunk@37419 -
2017-10-07 21:09:20 +00:00
svenbarth
d9bc656852 * use new pool functionality for property instances
* extended test

git-svn-id: trunk@37418 -
2017-10-07 17:32:28 +00:00
svenbarth
1cbb4266d7 * rework Rtti pool so that non-types (e.g. properties, etc.) can be stored as well based on their handle
git-svn-id: trunk@37417 -
2017-10-07 16:36:48 +00:00
svenbarth
f8d919970a * since the property data is different for records, classes and interfaces they need to be handled by the concrete Rtti type (currently only TRttiInstanceType) and not the general TRttiType type
git-svn-id: trunk@37416 -
2017-10-07 15:40:38 +00:00
svenbarth
29eb742ded * move aligntoptr() and aligntoqword() further up so they can be used by other code as well
git-svn-id: trunk@37415 -
2017-10-07 15:33:22 +00:00
svenbarth
49fc13ea73 * move Handle property to TRttiObject (Delphi compatible and is probably also used for the caching mechanism)
git-svn-id: trunk@37414 -
2017-10-07 15:10:23 +00:00
svenbarth
4489163620 * declare TRttiObject as abstract
git-svn-id: trunk@37413 -
2017-10-07 15:05:22 +00:00
svenbarth
c35f694fb8 - remove unused local type
git-svn-id: trunk@37412 -
2017-10-07 14:59:33 +00:00
florian
4cf2a2672a changes to fix #32043
* changed most of the variables in the assembler readers used to store constants from aint to tcgint 
  as aint has only the size of the accumular while some CPUs (AVR) allow larger constants in instructions
+ allow access to absolute symbols with address type in inline assembler
* allow absolute addresses in avr inline assembler
+ tests

git-svn-id: trunk@37411 -
2017-10-06 21:07:19 +00:00
nickysn
8ba4de3885 + test lea with non-native address sizes (16-bit on i386, 32-bit on x86_64)
git-svn-id: trunk@37410 -
2017-10-06 15:46:03 +00:00
nickysn
92a52a9f4d + implemented support for instructions with non-native address size on i8086
(16-bit and 32-bit), i386 (16-bit and 32-bit) and x86_64 (32-bit and 64-bit).
  Known bug: 32-bit addresses with an offset have their offset truncated to its
  low 16-bits on i8086

git-svn-id: trunk@37409 -
2017-10-06 15:27:14 +00:00
svenbarth
bfd37969ad * move TRttiStructuredType and TRttiInstanceType further down as they need access to TRttiMember and its children
git-svn-id: trunk@37408 -
2017-10-06 13:10:01 +00:00
nickysn
8589b946fc * different versions (behind cpu specific ifdefs) of process_ea_ref renamed
process_ea_ref_64_32, process_ea_ref_32 and process_ea_ref_16, indicating
  the address size they support; this is done, so that in the future, we can
  mix them all on the same x86 architecture and support multiple address sizes

git-svn-id: trunk@37407 -
2017-10-05 22:15:26 +00:00
Mattias Gaertner
5534acd097 fcl-passrc: resolver: fixed with-do-inherited
git-svn-id: trunk@37406 -
2017-10-05 22:14:41 +00:00
Mattias Gaertner
40717326bc fcl-passrc: resolver: error message on array of const
git-svn-id: trunk@37405 -
2017-10-05 21:57:31 +00:00
Mattias Gaertner
facd1f5002 fcl-passrc: resolver: class-of constant
git-svn-id: trunk@37404 -
2017-10-05 21:49:36 +00:00
Mattias Gaertner
a7265432eb fcl-passrc: resolver: allow different arg names in override methods
git-svn-id: trunk@37403 -
2017-10-05 21:35:09 +00:00
svenbarth
0c8f670ee0 + add TRttiPointerType
* extend Rtti test

git-svn-id: trunk@37402 -
2017-10-05 21:10:30 +00:00
svenbarth
5c85e94919 + add TRttiNamedObject.Handle property of which the getter needs to be overridden in each sub class
git-svn-id: trunk@37401 -
2017-10-05 21:06:47 +00:00
nickysn
31c9214884 * replaced R_SUBADDR with the appropriate size (R_SUBW, R_SUBD or R_SUBQ) in
the cpu specific process_ea_ref function

git-svn-id: trunk@37400 -
2017-10-05 20:39:32 +00:00
Mattias Gaertner
204ef5ac01 pastojs: fixed using type alias
git-svn-id: trunk@37399 -
2017-10-05 13:22:55 +00:00
Mattias Gaertner
a8fed34f99 pastojs: implemented resourcestrings
git-svn-id: trunk@37398 -
2017-10-04 19:43:13 +00:00
Mattias Gaertner
fe27ec2a26 fcl-passrc: resolver: check resourcestring expression
git-svn-id: trunk@37397 -
2017-10-04 19:42:56 +00:00
Mattias Gaertner
a70a1989e5 fcl-passrc: resolver: if varofaliasofclassof=typeofaliasofclassof
git-svn-id: trunk@37396 -
2017-10-04 16:42:43 +00:00
Mattias Gaertner
35f7b9fcf6 pastojs: fixed class-of-aliastype
git-svn-id: trunk@37395 -
2017-10-04 14:46:02 +00:00
Mattias Gaertner
aa1eed7b20 fcl-passrc: resolver: fixed class-of-aliastype
git-svn-id: trunk@37394 -
2017-10-04 14:37:53 +00:00
Mattias Gaertner
5fc3bbba12 pastojs: implemented logical xor
git-svn-id: trunk@37393 -
2017-10-04 12:26:22 +00:00
Mattias Gaertner
203c723bc3 fcl-passrc: resolver+useanalyzer: implemented resourcestring
git-svn-id: trunk@37392 -
2017-10-04 12:21:55 +00:00
Mattias Gaertner
48024645f0 pastojs: fixed property index value path
git-svn-id: trunk@37391 -
2017-10-04 00:53:00 +00:00
florian
cc44328109 * correctly calc case label distance after r36362, resolves #32115 and #32311
git-svn-id: trunk@37390 -
2017-10-03 20:36:09 +00:00
Mattias Gaertner
58454f555a pastojs: implemented funcname:=
git-svn-id: trunk@37389 -
2017-10-03 16:08:59 +00:00
Mattias Gaertner
abd8907939 fcl-passrc: resolver: implemented funcname:=
git-svn-id: trunk@37388 -
2017-10-03 16:07:17 +00:00
svenbarth
5edbdd5a00 * correctly handle non-static functions where the result is passed as a parameter (the order is "Self/VMT, Result, other Args" there)
git-svn-id: trunk@37387 -
2017-10-02 19:40:47 +00:00
svenbarth
98bb449945 * raise an exception if routine to be invoked isn't static, but there's no parameter to be used as Self
git-svn-id: trunk@37386 -
2017-10-02 19:39:37 +00:00
svenbarth
794eb7c122 * ensure that FLock is released in case of an exception
git-svn-id: trunk@37385 -
2017-10-02 18:51:52 +00:00
Mattias Gaertner
1bf758c997 pastojs: fixed RTTI of static arrays
git-svn-id: trunk@37384 -
2017-10-02 16:47:07 +00:00
Mattias Gaertner
e5d4d763b3 pastojs: implemented property with index specifier
git-svn-id: trunk@37383 -
2017-10-02 12:56:29 +00:00
Mattias Gaertner
6148ba8c31 fcl-passrc: resolver: implemented overriding property with index specifier
git-svn-id: trunk@37382 -
2017-10-02 12:56:11 +00:00
florian
99a3855e6b * restored old default values for MajorOperatingSystemVersion, MajorSubsystemVersion and MinorSubsystemVersion, resolves issue #32492
git-svn-id: trunk@37381 -
2017-10-01 21:02:37 +00:00
florian
7817102727 * patch by Christo Crause to implement 8 bit multiplications for "mul-less" avr types, resolves issue #31925
git-svn-id: trunk@37380 -
2017-10-01 20:34:44 +00:00
florian
c0feaf1f1e + allow absolute to absolute symbols, resolves issue #32474
git-svn-id: trunk@37379 -
2017-10-01 19:54:44 +00:00
florian
5b755661d8 + patch by Simon Ameis: adds all the STM32F091* microcontroller units to the list of supported ARM MCUs, resolves issue #32484
git-svn-id: trunk@37378 -
2017-10-01 18:59:01 +00:00
florian
ce7487b7de o patch by J. Gareth "Kit" Moreton, resolves partially issue #32037
o improves readibility of TX86AsmOptimizer.OptPass1MOV and fixes some spelling mistakes
  + Optimization MovAnd2Mov 2
  + extended Optimization MovTestJxx2TestMov and MovTestJxx2ovTestJxx to take care of and as well
  + Peephole Optimization: movq x,%reg -> movd x,%reg

git-svn-id: trunk@37377 -
2017-10-01 18:40:11 +00:00
florian
198c53a908 o patch by J. Gareth "Kit" Moreton, resolves partially issue #32037
* generate instructions with shorter imm on x86-64 if possible

git-svn-id: trunk@37376 -
2017-10-01 18:40:09 +00:00
Mattias Gaertner
01ac3334af fcl-passrc: fixed checking static array constant elements
git-svn-id: trunk@37375 -
2017-10-01 18:19:31 +00:00
florian
75e03a7e62 * avoid unneeded the generation of un-needed shift instructions thlcgobj.in a_load_subsetreg_reg
git-svn-id: trunk@37374 -
2017-10-01 16:13:22 +00:00
florian
6f338bb4b5 + tcgsubscriptnode.pass_generate_code makes use of a_loadmm_reg_intreg to avoid location_force_mem calls
git-svn-id: trunk@37373 -
2017-10-01 16:13:20 +00:00
florian
f0c237a159 + let a_load_loc_reg handle also LOC_*MMREGISTER as we have loadmm_*intreg*
git-svn-id: trunk@37372 -
2017-10-01 16:13:18 +00:00