45476eb591
fix handling of volatile longs and doubles on PowerPC
...
We were miscompiling methods which contained getfield, getstatic,
putfield, or putstatic instructions for volatile 64-bit primitives on
32-bit PowerPC due to not noticing that values in registers are clobbered
across function calls.
The solution is to create a separate Compiler::Operand instance for each
object monitor reference before and after the function call to avoid
confusing the compiler. To avoid duplicate entries in the constant pool,
we add code look for and, if found, reuse any existing entry for the same
constant.
2010-01-27 17:46:04 -07:00
20c1ea08e6
remove a test from Misc.java since it's been moved to Strings.java
2009-08-14 08:53:33 -06:00
8410e1d683
ensure reads and writes of volatile 64-bit fields are atomic
2009-03-03 18:02:11 -07:00
a1ec71423e
Merge branch 'master' into powerpc
...
Conflicts:
makefile
src/assembler.h
src/binaryToMacho.cpp
src/compile.cpp
src/compiler.cpp
src/x86.cpp
2009-02-09 16:22:01 -07:00
29616c4abc
freeze target site when using temporary in maybeMove
2009-02-08 18:58:33 -07:00
54ad7c4e98
tolerate ConstantValue attributes on non-static fields, since the compiler ensures that they are initialized in any constructors for that class (i.e., the VM does not need to do anything special to initialize them)
2009-01-10 12:25:52 -07:00
b23f7374e9
don't steal sites in pickJunctionSite
2008-12-20 17:45:52 -07:00
d50febe088
various control-flow related bugfixes
2008-12-11 18:09:36 -07:00
cae5202be0
split Misc.java into four separate files
2008-11-10 17:07:15 -07:00
e0e827596e
make Long.parseLong more efficient
2008-08-29 11:37:53 -06:00
a016eeaba0
fix Long.toString for Long.MIN_VALUE case
2008-07-13 17:54:44 -06:00
107ac01304
fix addCR and subtractCR for cases of 64-bit constants on amd64
2008-07-02 08:52:35 -06:00
e9c37f5ffd
add more tests of operations on longs to Misc.java
2008-06-12 11:00:43 -06:00
fc8c5a2ea9
fix a few bugs revealed by ProGuard optimizations, including too-early constant propagation during array loads and stores
2008-06-10 08:49:13 -06:00
3326aafdac
various 32-bit fixes
2008-05-22 11:15:18 -06:00
21cb1c3c8f
remove Event::validate, since it is no longer needed and actually causes trouble
2008-05-20 16:47:53 -06:00
36dbf1ad14
fix another local variable caching bug
2008-05-20 15:24:10 -06:00
d604efd8f5
fix local variable caching bug
2008-05-20 13:11:42 -06:00
c9f06933e2
test long addition and subtraction in Misc, as well as multidimensional array creation
2008-05-18 09:45:52 -06:00
b6b84af123
various bugfixes
2008-05-17 21:32:14 -06:00
7f72a6469d
more register marshalling bugfixes; simple swt apps now run on amd64
2008-05-15 17:19:23 -06:00
bbd1ee5540
various register marshalling bugfixes
2008-05-15 14:00:57 -06:00
bf08cc4c53
fix array bounds checks
2008-04-30 11:47:25 -06:00
918193fa60
fix 32-bit right unsigned shifts on amd64
2008-04-30 11:15:21 -06:00
e2b24263a2
various bugfixes
2008-04-30 09:44:17 -06:00
1b5f14d847
re-enable tests in Misc and get them working
2008-04-28 09:53:48 -06:00
d6c3b2327f
bugfixes; enums test now succeeds
2008-04-20 13:35:36 -06:00
525f733171
Merge branch 'master' into compiler
...
Conflicts:
src/compile.cpp
src/compiler.cpp
src/compiler.h
2008-04-13 13:48:20 -06:00
907382bcee
fix broken field alignment in parseFieldTable which caused longs to overlap other fields on 32-bit systems in certain cases
2008-03-31 18:34:57 -06:00
9e2e614a15
various fixes to get invokevirtual working
2008-03-10 16:37:21 -06:00
d654c943f3
various bugfixes and tweaks in new compiler, primarily related to duplicating stack operands
2008-02-17 13:57:40 -07:00
b9fa7179d9
more work on new compiler; addition now works
2008-02-11 17:20:32 -07:00
88a8e74a53
fix register to memory mov1 implementation
2008-01-18 15:01:50 -07:00
f0d556b0ec
fix handling of call target resolution for non-virtual calls
2008-01-11 15:16:24 -07:00
a9a0252209
add another test to Misc.java
2008-01-10 15:47:54 -07:00
4c938d496e
fix 64-bit bitshifts on 32-bit systems
2008-01-10 13:47:55 -07:00
5d65e7c220
handle synchronized methods properly in JIT mode
2007-12-27 17:02:05 -07:00
796a64a426
lots of JIT bugfixes and cleanups
2007-12-15 17:24:15 -07:00
b2147c2c99
lots of JIT bugfixes and a few new instructions
2007-12-12 15:19:13 -07:00
fab77e4d96
don't call prologue and epilogue from compileDefault, since we want the original rbp and rsp values
2007-12-11 18:19:03 -07:00
33b2a4a1e8
support absolute operands on virtual stack and absolute to memory movs
2007-12-11 17:27:04 -07:00
d70e3aaefb
JIT progress: new, invokespecial, etc.
2007-12-11 16:52:28 -07:00
fdeafe46fd
2+2 test now works with new JIT code
2007-12-11 14:26:59 -07:00
19d36cc463
implement impdep1 instruction for lazily loading bootstrap classes
2007-11-05 08:29:43 -07:00
6c0e0c37e2
snapshot
2007-11-05 07:28:46 -07:00
514be2dc87
snapshot
2007-11-04 16:10:33 -07:00
94e9bd0fd2
clean up bootstrap type generation to eliminate redundancy (broken)
2007-11-04 14:15:28 -07:00
5dfba99545
rename Instructions.java to Misc.java
2007-10-24 15:06:02 -06:00