Commit Graph

34588 Commits

Author SHA1 Message Date
Jonas Maebe
0ee702b3a2 * tprocdef.mangledname now gets an extra boolean parameter indicating
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 -
2011-08-20 07:22:00 +00:00
Jonas Maebe
0e16369906 * moved gen_proc_symbol() and gen_proc_symbol_end() from ncgutil to hlcgobj
git-svn-id: branches/jvmbackend@18287 -
2011-08-20 07:21:52 +00:00
Jonas Maebe
f67919e9f5 + odt_javaclass, odt_interfacejava objectdef types
+ 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 -
2011-08-20 07:21:46 +00:00
Jonas Maebe
fdeebb482b * basic jvm "cpu" info file (no special cpu or fpu types, no
cpu-specific optimisations)

git-svn-id: branches/jvmbackend@18285 -
2011-08-20 07:21:41 +00:00
Jonas Maebe
d18cda2939 + support for tt_regallocator/tt_freeregallocator temps; these will be used
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 -
2011-08-20 07:21:36 +00:00
Jonas Maebe
e3e4d365c8 * converted the parts of tcgloadnode.pass_generate_code() and
tcgassignmentnode.pass_generate_code() for simple symbols and
    for simple assignments from tcgobj to thlcgobj

git-svn-id: branches/jvmbackend@18283 -
2011-08-20 07:21:31 +00:00
Jonas Maebe
1e96eab55d * made ttgobj.alloctemp/freetemp protected, and alloctemp also virtual
* 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 -
2011-08-20 07:21:26 +00:00
Jonas Maebe
2cb4514c07 * converted all non-x86-specific and non-32bit-specific code to use hlcgobj
git-svn-id: branches/jvmbackend@18281 -
2011-08-20 07:21:21 +00:00
Jonas Maebe
72e9cfee24 * create/destroy also the high level code generator for all architectures,
so it can be used in generic code

git-svn-id: branches/jvmbackend@18280 -
2011-08-20 07:21:16 +00:00
Jonas Maebe
db203431b2 + hlcgobj: high level code generator class. It has basically the same
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 -
2011-08-20 07:21:09 +00:00
Jonas Maebe
d885bb66a0 + branch for jvm code generator backend
git-svn-id: branches/jvmbackend@18276 -
2011-08-19 21:21:36 +00:00
Jonas Maebe
baf2a3f1fb * fixed copy/paste error that didn't disable default inline support when
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 -
2011-08-18 18:12:09 +00:00
Jonas Maebe
cbb3e5700d * now also includes univint directory for Darwin if necessary, not sure
why it wasn't in the version committed int r18251

git-svn-id: trunk@18264 -
2011-08-18 18:09:33 +00:00
Jonas Maebe
8c7f1e1013 * only transform multiplication nodes to sqr, not any kind of addnode
(fix for 18252)

git-svn-id: trunk@18263 -
2011-08-18 12:47:41 +00:00
Jonas Maebe
3abfec476a * fixed range checke errors after aint->tcgint change
git-svn-id: trunk@18262 -
2011-08-18 11:53:34 +00:00
Jonas Maebe
3b9e1a4398 * fixed wrong class cast in r18226
git-svn-id: trunk@18261 -
2011-08-18 11:53:02 +00:00
sekelsenmat
658be2b0b7 fpvectorial: Adds multiline support for text, adds a new translate function to entities
git-svn-id: trunk@18260 -
2011-08-18 11:41:22 +00:00
marco
4c64519f31 * fix for yet another -j 2 issue. This time fcl-passrc dependency on fcl-base
git-svn-id: trunk@18259 -
2011-08-18 10:18:29 +00:00
sekelsenmat
cc8854b0bc fpvectorial: Removes unused Z coordinates and makes the entity classes smarter, adds support for searching for elements
git-svn-id: trunk@18258 -
2011-08-18 09:13:47 +00:00
Jonas Maebe
b5fc32750b * check whether both left and right are reals rather than twice whether left
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 -
2011-08-18 09:12:13 +00:00
florian
41f25c2b21 * fixes cmem.malloc et al. for windows as proposed by Ludo Brands, resolves #15571
git-svn-id: trunk@18256 -
2011-08-18 08:47:44 +00:00
florian
859757003f * fix SafeLoadLibrary: fixed defines, sse control word should be stored as well
git-svn-id: trunk@18255 -
2011-08-18 08:37:15 +00:00
Jonas Maebe
6748a9a238 * fixed forcing setelementn on the correct side in add nodes
(pass_left_right() can switch the sides, so putting it in the
     correct location before calling that method is useless)

git-svn-id: trunk@18254 -
2011-08-17 20:12:47 +00:00
florian
275c6092e5 * avoid range check errors for empty ansistrings written/read from ppus
git-svn-id: trunk@18253 -
2011-08-17 19:01:03 +00:00
florian
e796a878ca * convert <real x>*<real x> into sqr(<real x>), it might reduces register
pressure and/or memory accesses without a drawback

git-svn-id: trunk@18252 -
2011-08-17 16:00:16 +00:00
Jonas Maebe
f6fbc17463 * fpdoc depends on fcl-base
* fcl-base depends on univint for Darwin

git-svn-id: trunk@18251 -
2011-08-17 15:31:28 +00:00
sekelsenmat
02d1a26d92 fpvectorial: Adds support for guessing the document size and zoom level
git-svn-id: trunk@18250 -
2011-08-17 14:59:08 +00:00
pierre
8673b93ed5 Add missing regenerated Makefile
git-svn-id: trunk@18249 -
2011-08-17 13:29:49 +00:00
florian
d7708a45f1 * so far windows only
git-svn-id: trunk@18248 -
2011-08-17 13:01:32 +00:00
florian
a9034af414 + added tests for recent stream modifications
git-svn-id: trunk@18247 -
2011-08-17 12:56:57 +00:00
florian
3e4469937c * fix Types.UnionRect as proposed by Piotr Karasinski, resolves #20006
git-svn-id: trunk@18246 -
2011-08-17 12:01:23 +00:00
pierre
09e7570e57 * Avoid warning about unset variable in TestParents
+ Add check after moving current directory to root drive
    for Dos style pathes.

git-svn-id: trunk@18245 -
2011-08-17 11:55:32 +00:00
florian
4c95e9fce5 * commented pdata type as proposed in #20004 by Michalis Kamburelis, resolves #20004
git-svn-id: trunk@18244 -
2011-08-17 11:47:41 +00:00
florian
87696a4b70 * cr*, dr*, tr* registers are 64 bit on x86-64
git-svn-id: trunk@18243 -
2011-08-17 11:42:11 +00:00
pierre
8dc1ce55c1 * Avoid infinite loop on Unix
git-svn-id: trunk@18242 -
2011-08-17 11:22:54 +00:00
florian
79a96ab287 + ttypesym.prettyname
* write names of specialization type syms more pretty

git-svn-id: trunk@18241 -
2011-08-17 11:10:00 +00:00
sekelsenmat
b71d8e6ed6 fpvectorial: Fixes example compilation
git-svn-id: trunk@18240 -
2011-08-17 11:03:06 +00:00
florian
e2f21c0a56 * version update
git-svn-id: trunk@18239 -
2011-08-17 10:57:32 +00:00
florian
ae8c250c3e * fix indention
git-svn-id: trunk@18238 -
2011-08-17 09:20:28 +00:00
florian
9b88297389 * patch by Michalis Kamburelis to keep the ending of TFPSList filled with zeros (space between count and capacity), resolves #20005
git-svn-id: trunk@18237 -
2011-08-17 09:05:58 +00:00
florian
ffde44ea6e * forgotten part of r18233
git-svn-id: trunk@18235 -
2011-08-16 22:44:50 +00:00
florian
d6ad7721e6 * patch by Jeppe Johansen to avoid corruption of frame/stack pointer by pre/post indexed operations, resolves #19679
git-svn-id: trunk@18234 -
2011-08-16 22:43:30 +00:00
florian
2eb39c8843 * patch by Jeppe Johansen to support jumptable generation for case nodes on arm/thumb-2, resolves #19502
git-svn-id: trunk@18233 -
2011-08-16 22:39:00 +00:00
florian
1e1c45c665 * references containing a symbol must be virtually always pc relative on arm
git-svn-id: trunk@18232 -
2011-08-16 22:28:30 +00:00
florian
0cc53cc5df + patch from Benito van der Zander to enable heaptrc to dump leaked or faulty memory blocks (function disabled by default), resolves #19691
git-svn-id: trunk@18231 -
2011-08-16 20:47:15 +00:00
florian
8bc94610c7 + tai_stab.create_ansistr
* write vmt info using create_ansistr, resolves #20003
* replaced move/getmem sequences in dbgstabs.pas by create_ansistr

git-svn-id: trunk@18230 -
2011-08-16 20:27:54 +00:00
florian
84b8733945 - remove accidently commited working directory entry
git-svn-id: trunk@18229 -
2011-08-16 20:18:22 +00:00
pierre
1c2a5f9819 + Update all Makefile's modified by
change in utils/fpcm/fpcmake.ini in prevous commit.

  Adapt also other files to that change:

  * compiler/globals.pas: Replace $FPCTARGET by os_string if
  tf_use_8_3 flag is set for target_info also.

  * tests/Makefile.fpc: Modify TEST_TARGETSUFFIX in the same way
  as TARGETSUFFIX was modified in previous commit.

  * tests/utils/dotest.pp:
    + New variable UseOSOnly, set to true if only target OS name
    should be used for subdirectories.

git-svn-id: trunk@18228 -
2011-08-16 20:10:19 +00:00
pierre
68d61c69e7 * Only use OS_TARGET for TARGET_SUFFIX if target is in LIMIT83fs list
* Update fpcmake.inc

git-svn-id: trunk@18227 -
2011-08-16 20:06:52 +00:00
florian
2f58065873 * don't warn about unsed symbols in generic procedures/methods, resolves #18907
git-svn-id: trunk@18226 -
2011-08-16 19:48:36 +00:00