Jonas Maebe
13cf0e031e
* removed unused variables
...
* char -> ansichar
git-svn-id: branches/jvmbackend@18568 -
2011-08-20 08:11:17 +00:00
Jonas Maebe
87f812c778
* fixed typo in comment
...
git-svn-id: branches/jvmbackend@18567 -
2011-08-20 08:11:12 +00:00
Jonas Maebe
db1d22aeae
* fixed header comments
...
git-svn-id: branches/jvmbackend@18566 -
2011-08-20 08:11:08 +00:00
Jonas Maebe
eb40756d35
* zero-extend byte/word field loads (get/putstatic sign-extends)
...
* move the incstack() from a load before the potential "and" to
zero-extend, so that the maximum stack height get calculated
properly
git-svn-id: branches/jvmbackend@18565 -
2011-08-20 08:11:03 +00:00
Jonas Maebe
baad29373e
+ ansistr_to_shortstr and vice versa stub helpers
...
git-svn-id: branches/jvmbackend@18564 -
2011-08-20 08:10:54 +00:00
Jonas Maebe
6374b473ff
* convert string constants passed to JLString to unicode
...
git-svn-id: branches/jvmbackend@18563 -
2011-08-20 08:10:46 +00:00
Jonas Maebe
446d91eaab
+ ansistring support. Items of note:
...
o support for ansistring constants. It's done via a detour because the
JVM only supports UTF-16 string constants (no array of byte or anything
like that): store every ansicharacter in the lower 8 bits of an
UTF-16 constant string, and at run time copy the characters to an
ansistring. The alternative is to generate code that stores every
character separately to an array.
o the base ansistring support is implemented in a class called
AnsistringClass, and an ansistring is simply an instance of this
class under the hood
o the compiler currently does generate nil pointers as empty
ansistrings unlike for unicodestrings, where we always
explicitly generate an empty string. The reason is that
unicodestrings are the same as JLString and hence common
for Java interoperation, while ansistrings are unlikely to
be used in interaction with external Java code
* fixed indentation
git-svn-id: branches/jvmbackend@18562 -
2011-08-20 08:10:39 +00:00
Jonas Maebe
aa1f299a17
+ added hook for "individual value to open array of one element"-conversion,
...
so it can be intercepted by the JVM backend (it has to create an actual
array)
+ JVM support for the elem_2_open_array hook
git-svn-id: branches/jvmbackend@18561 -
2011-08-20 08:10:31 +00:00
Jonas Maebe
8248e6762f
* support opcode+operands > 255 characters (e.g. when loading string constants)
...
git-svn-id: branches/jvmbackend@18560 -
2011-08-20 08:10:26 +00:00
Jonas Maebe
0fa1c9bbdd
* escape #127 under all circumstances (it's not printable)
...
git-svn-id: branches/jvmbackend@18559 -
2011-08-20 08:10:21 +00:00
Jonas Maebe
b370314194
* fixed typecasting to/from classrefdef
...
git-svn-id: branches/jvmbackend@18558 -
2011-08-20 08:10:16 +00:00
Jonas Maebe
84640fe7f0
+ support for non-static class methods on the JVM target
...
git-svn-id: branches/jvmbackend@18557 -
2011-08-20 08:10:11 +00:00
Jonas Maebe
9de14768bb
* free temp location allocated for function result if not used
...
* don't free function result space on stack twice if the result
is not used but a the same time has already been stored in a
temporary funcretnode location
git-svn-id: branches/jvmbackend@18556 -
2011-08-20 08:10:05 +00:00
Jonas Maebe
60f8254d63
* don't internalerror when converting to an open array and passing as
...
var/out parameter (these conversions are replaced by another
construct on non-JVM targets, so didn't cause a problem there)
git-svn-id: branches/jvmbackend@18555 -
2011-08-20 08:10:00 +00:00
Jonas Maebe
704753d3e8
* change the resultdef of nf_load_procvar typeconversion nodes from
...
voidpointerdef to java_jlobject (they're generated by generic code
in nmem; avoids an ifdef for the jvm target there)
git-svn-id: branches/jvmbackend@18554 -
2011-08-20 08:09:55 +00:00
Jonas Maebe
aaff356c6d
* moved $methodpointer type construction from psystem to pdecobj for JVM,
...
because java_jlobject needs to be available
git-svn-id: branches/jvmbackend@18553 -
2011-08-20 08:09:50 +00:00
Jonas Maebe
58d7a86252
+ stubbed formal const/var/out support
...
git-svn-id: branches/jvmbackend@18552 -
2011-08-20 08:09:45 +00:00
Jonas Maebe
d7e78b9f95
* correct parameter encoding of formaldef (add array type for formal const,
...
remove double array type for formal var/out)
git-svn-id: branches/jvmbackend@18551 -
2011-08-20 08:09:40 +00:00
Jonas Maebe
2ed430de8c
* refactored and fixed procvar typeconversion checking
...
git-svn-id: branches/jvmbackend@18550 -
2011-08-20 08:09:35 +00:00
Jonas Maebe
d74aef86b4
- removed a useless condition in the check to determine whether or not
...
we have to generate an as-node for a type conversion
git-svn-id: branches/jvmbackend@18549 -
2011-08-20 08:09:31 +00:00
Jonas Maebe
1b0b6a9d6d
* also print method implementation when reusing a forward definition
...
git-svn-id: branches/jvmbackend@18548 -
2011-08-20 08:09:26 +00:00
Jonas Maebe
f187128428
* allow addrnodes for procdef (and procvardef in TP/Delphi mode), and
...
for JVM implicit pointer types (-> JLObject)
git-svn-id: branches/jvmbackend@18547 -
2011-08-20 08:09:21 +00:00
Jonas Maebe
17db9ed895
* allow some more valid type conversions
...
git-svn-id: branches/jvmbackend@18546 -
2011-08-20 08:09:16 +00:00
Jonas Maebe
b60e50b2b0
- reverted 679f3968901f0d565644d59e046eb25d5402f027, because it requires
...
support for concat_multi for ansistrings to prevent compilation
problems there
git-svn-id: branches/jvmbackend@18545 -
2011-08-20 08:09:10 +00:00
Jonas Maebe
54bb881a1b
* print an error for invalid type conversions
...
git-svn-id: branches/jvmbackend@18544 -
2011-08-20 08:09:05 +00:00
Jonas Maebe
63962043a5
* fixed fake nested procedures support
...
git-svn-id: branches/jvmbackend@18543 -
2011-08-20 08:09:00 +00:00
Jonas Maebe
000c502c9c
+ fake shortstring temp support
...
git-svn-id: branches/jvmbackend@18542 -
2011-08-20 08:08:54 +00:00
Jonas Maebe
1c1fe26ebd
* refactored isstringconv/isrecordconv
...
* fixed checking of array element compatibility (also have to check
for both strings/records)
git-svn-id: branches/jvmbackend@18541 -
2011-08-20 08:08:49 +00:00
Jonas Maebe
8ec1ba797d
* put single quotes around identifiers so they cannot be confused with
...
opcodes by Jasmin
git-svn-id: branches/jvmbackend@18540 -
2011-08-20 08:08:44 +00:00
Jonas Maebe
4dfdcfd139
* fixed uninitialised var-parameters in isstringconv
...
git-svn-id: branches/jvmbackend@18539 -
2011-08-20 08:08:39 +00:00
Jonas Maebe
bdb6cf5561
* fixed uninitialised var-parameters in isrecordconv
...
git-svn-id: branches/jvmbackend@18538 -
2011-08-20 08:08:34 +00:00
Jonas Maebe
278a581666
+ jdk15 unit with jdk 1.5 header translation
...
git-svn-id: branches/jvmbackend@18537 -
2011-08-20 08:08:21 +00:00
Jonas Maebe
4cd9908339
* don't mangle local variable and parameter names using the method name,
...
since those names are only used for debug info. Only the names of
staticvarsyms in local symtables (typed constants, variable initialisers)
have to be mangled like that since they'll become fields in the global
scope
git-svn-id: branches/jvmbackend@18536 -
2011-08-20 08:08:10 +00:00
Jonas Maebe
e403ddca0c
* enabled generic multi-string concatenation optimization now that var
...
parameters for strings work (although they're not as efficient as
function results for the JVM target)
git-svn-id: branches/jvmbackend@18535 -
2011-08-20 08:08:05 +00:00
Jonas Maebe
1795eff237
+ support for emiting "signature" attributes for fields and methods; these
...
are JVM annotations used by Java's generics support. They cannot be used
for FPC's generics support, but they are useful in other cases
* emit classrefdefs as java.lang.Class, with a signature annotation that
indicates which class they actually refer to
git-svn-id: branches/jvmbackend@18534 -
2011-08-20 08:08:00 +00:00
Jonas Maebe
2610cea230
- removed orphan helpers
...
git-svn-id: branches/jvmbackend@18533 -
2011-08-20 08:07:54 +00:00
Jonas Maebe
6614f3220c
* check implementedinterfaces also when going from a Java class to
...
a Java interface
git-svn-id: branches/jvmbackend@18532 -
2011-08-20 08:07:50 +00:00
Jonas Maebe
cd42bdc42f
* load implementedinterfaces for odt_javaclass
...
git-svn-id: branches/jvmbackend@18531 -
2011-08-20 08:07:45 +00:00
Jonas Maebe
4298992619
* fixed checkcast operations for unicodestrings: replace the definition
...
with java_jlstring in that case, because we have to insert the type
without L prefix and ; suffix for that opcode (which is not done for
objectdefs/recorddefs)
git-svn-id: branches/jvmbackend@18530 -
2011-08-20 08:07:40 +00:00
Jonas Maebe
b8f6c42ec7
* don't insert checkcast operations for types that are considered to be
...
te_equal
git-svn-id: branches/jvmbackend@18529 -
2011-08-20 08:07:35 +00:00
Jonas Maebe
e8ec2c45af
* fixed invokeinterface usage: must also specify the number of stack
...
slots used by the call
git-svn-id: branches/jvmbackend@18528 -
2011-08-20 08:07:30 +00:00
Jonas Maebe
c9537e3347
+ support for non-array/record var parameter on the JVM target using
...
copy-in/out
git-svn-id: branches/jvmbackend@18527 -
2011-08-20 08:07:24 +00:00
Jonas Maebe
e7eb34e3a6
* make current_except_loc also valid while processing the default exception
...
block, since it can contain an anonymous "raise" statement to reraise
the exception
git-svn-id: branches/jvmbackend@18526 -
2011-08-20 08:07:17 +00:00
Jonas Maebe
f75a5895d8
* fixed crash for global constants after previous change
...
git-svn-id: branches/jvmbackend@18525 -
2011-08-20 08:07:12 +00:00
Jonas Maebe
a6e196bfd6
* don't write local constants of procedures, because their names may clash
...
(the JVM doesn't have a concept of local constants, so they were made
global)
git-svn-id: branches/jvmbackend@18524 -
2011-08-20 08:07:07 +00:00
Jonas Maebe
845f50448c
+ support for qword div/mod via helper (the JVM only supports signed
...
64 bit division natively)
git-svn-id: branches/jvmbackend@18523 -
2011-08-20 08:07:02 +00:00
Jonas Maebe
be1ff9ff92
* fixed handling of OP_SHL,OP_SHR,OP_SAR in op_ref_stack (second operand
...
is always a 32 bit int)
git-svn-id: branches/jvmbackend@18522 -
2011-08-20 08:06:57 +00:00
Jonas Maebe
2bb13723ae
* don't use raw bitcasts for tc_int_2_real type conversions
...
git-svn-id: branches/jvmbackend@18521 -
2011-08-20 08:06:49 +00:00
Jonas Maebe
6a6ab5beac
* converted SAR code to hlcgobj
...
git-svn-id: branches/jvmbackend@18520 -
2011-08-20 08:06:44 +00:00
Jonas Maebe
dbaaf1c3cd
* fixed copy/paste errors in a_op_reg_ref() from a_op_ref_reg()
...
git-svn-id: branches/jvmbackend@18519 -
2011-08-20 08:06:39 +00:00