64 bit registers are represented as a pair of 32 bit registers
in a register64 struct depends on whether or not the ALU can
perform 64 bit operations -- if it can, assume there are 64
bit registers)
git-svn-id: branches/jvmbackend@18295 -
(single, double, string, widestring), basic constructors,
spilling_get_operation_type() implementation
o special: O_MOV_SOURCE/O_MOV_DEST don't make sense for this target,
since it's stack based
git-svn-id: branches/jvmbackend@18294 -
o special things:
* no tasmcond (conditions are currently encoded in opcode names,
may be changed later)
* no actual registers, just a couple of fake ones to indicate
the locals stack and the operands/evaluation stack
* no registers for the return value; they're returned on the
evaluation stack; may be handled like the x87 in the future
git-svn-id: branches/jvmbackend@18291 -
whether the mangled name is for defining a symbol, or for referencing
it later (e.g. for a call or load of its address). The reason is that
on the JVM both cases are different.
+ jvmdef unit to encode types according to the JVM rules
+ tprocdef.jvmmangledname() to encode a procdef's JVM mangled name
(the common part of defining/referencing it; tprocdef.mangledname
afterwards adorns it as required)
git-svn-id: branches/jvmbackend@18288 -
+ it_interfacejava type (not explicitly selectable via -SI nor
{$interfaces xxx}, but default for jvm target)
* disable it_interfacecom/corba for jvm target
+ init_settings for jvm that select it_interfacejava as default interface
type
+ default_class_type constant (in symconst) that is odt_javaclass for the jvm
target and odt_class for other targets (used to determine the meaning of
"type x = class" declarations)
git-svn-id: branches/jvmbackend@18286 -
by the JVM register allocator to store register values in, instead of
tt_noreuse (because almost all registers have to be mapped to temps,
no reusing these temps will blow up the stack frame a lot)
* documented the meaning of the tt_* values
* temp growing direction for jvm is also positive
git-svn-id: branches/jvmbackend@18284 -
* made ttgobj.create virtual, added a "tgobjclass: class of ttgobj = ttgobj"
variable and use that one to instantiate new temp allocators
* created ttgjvm descendant that only allows allocations of 4 or 8 bytes
(rounding allocations < 4 bytes up to 4 bytes), and that divides the
offsets/sizes by 4 so we get stack slot numbers
git-svn-id: branches/jvmbackend@18282 -
interface as cgobj, except that all type parameters are defs instead
of tcgsize. Also includes some procedures from ncgutil (over time,
all of ncgutil will probably integrated here so it can be easily
overridden)
+ hlcg2ll: pass-through implementation of thlcg that forwards everything
either to cgobj or ncgutil, for use by the classic code generator
clients (all current platforms)
+ added "def" field to tcgpara to record the tdef of the parameter
(used by the high level code generator)
git-svn-id: branches/jvmbackend@18279 -
switching from a mode that has it to a mode that doesn't have it (which
meant that all modes had it, since the default FPC mode has it)
* added default inline support to mode macpas to minimize breaking existing
code due to this switch (only TP and ISO modes now don't have it by
default)
git-svn-id: trunk@18265 -
is real before transforming a multiply into an sqr operation (fixes make
cycle after r18252, don't know where or even how it caused a wrong
optimization)
git-svn-id: trunk@18257 -