Joel Dice
c2bd828cc1
call the right continuation in callContinuation
2009-05-24 18:58:45 -06:00
Joel Dice
af59c85deb
various bugfixes
2009-05-24 18:22:36 -06:00
Joel Dice
364f31b785
finish initial sketch of dynamicWind implementation
2009-05-23 19:49:14 -06:00
Joel Dice
4305fdc7f3
begin dynamicWind implementation
2009-05-23 16:15:06 -06:00
Joel Dice
e165d5f3fd
avoid uninitialized variable warnings in MyProcessor::callWithCurrentContinuation
2009-05-19 18:28:43 -06:00
Joel Dice
ecfecf2006
translate local indexes before passing to Frame.stored{Int,Long,Object}
2009-05-18 09:16:17 -06:00
Joel Dice
398dec58bb
GC bugfixes
2009-05-17 17:43:48 -06:00
Joel Dice
195d95d809
continuation bugfixes
2009-05-16 18:39:08 -06:00
Joel Dice
8cb59c9d4c
various bugfixes to get Continuations test working
2009-05-16 02:03:03 -06:00
Joel Dice
57cec2d068
various bugfixes
2009-05-14 20:08:01 -06:00
Joel Dice
3d1ef68001
various bugfixes
2009-05-12 12:16:55 -06:00
Joel Dice
66c4867f18
more work on continuation support
2009-05-05 18:29:05 -06:00
Joel Dice
eb3bd25aa1
code cleanup and build fixes
2009-05-04 19:04:17 -06:00
Joel Dice
0cd4eb2655
early sketch of continuation support
2009-05-03 14:57:11 -06:00
Joel Dice
90dcf084a2
protect object from GC in compileVirtualMethod2; condense frame GC root maps to minimum size needed
2009-04-27 14:46:43 +00:00
Joel Dice
50529969f9
fix code to visit GC roots on stack to be compatible with tail calls; avoid generating unreachable jumps
2009-04-26 19:53:42 -06:00
Joel Dice
299699f1ff
fix stack unwinding for new calling convention (2nd try)
2009-04-26 16:06:15 -06:00
Joel Dice
03653d2dd8
fix stack unwinding and GC root scan for new calling convention
2009-04-26 15:55:35 -06:00
Joel Dice
64b529c915
avoid generating unreachable code after tail calls
2009-04-25 20:54:36 -06:00
Joel Dice
bf8fdb6316
visit MyProcessor::virtualThunks during GC
2009-04-25 20:24:04 -06:00
Joel Dice
0245a94ab8
generate code in ReturnEvent if and only if the event is preceded by at least one non-tail-call
2009-04-25 19:51:33 -06:00
Joel Dice
89221bfcfa
fix handling of virtual calls to native methods
2009-04-25 17:52:08 -06:00
Joel Dice
141862470b
fix stack pointer adjustment in invokeNative2; pad frame size using Architecture::frameFootprint in MyProcessor::invoke to conform to new calling convention
2009-04-25 17:33:42 -06:00
Joel Dice
1ed7c0d94c
adapt native method call code to new calling convention
2009-04-25 11:49:56 -06:00
Joel Dice
3113ae74eb
various bugfixes
2009-04-22 01:39:25 +00:00
Joel Dice
717f359666
implement "callee pops arguments" calling convention and refactor tail call code accordingly
2009-04-19 16:36:11 -06:00
Joel Dice
dba72409aa
move use of SingleRead::successor; fix build errors
...
We now use SingleRead::successor in pickTarget, where we use it to
determine the prefered target site for the successor without requiring
the target to conform to that preference. The previous code made the
preference a hard requirement, which is not desirable or even possible
in general.
2009-04-07 18:55:43 -06:00
Joel Dice
35d1c6e068
add SingleRead::successor; fix build errors
...
The SingleRead::successor field is used (when non-null) to further
constrain the SiteMask in SingleRead::intersect based on reads of
successor values (as in the cases of moves and condensed-addressing
combine and translate instructions).
2009-04-06 18:34:12 -06:00
Joel Dice
fea92ed995
more work on tail recursion
...
We now create a unique thunk for each vtable position so as to avoid
relying on using the return address to determine what method is to be
compiled and invoked, since we will not have the correct return address
in the case of a tail call. This required refactoring how executable
memory is allocated in order to keep AOT compilation working. Also, we
must always use the same register to hold the class pointer when
compiling virtual calls, and ensure that the pointer stays there until
the call instruction is executed so we know where to find it in the
thunk.
2009-04-05 15:42:10 -06:00
Joel Dice
5e740170f2
initial sketch of tail call optimization (non-virtual calls only, so far)
2009-03-31 14:15:08 -06:00
Joel Dice
538e23c642
fix order-of-operations bugs in compile.cpp which led to creation of incorrect stack maps
2009-03-18 16:24:13 -06:00
Joel Dice
d1018bf078
update copyright years
2009-03-15 12:02:36 -06:00
Joel Dice
49cd2dd9bf
fix powerpc bootimage build (second try)
2009-03-10 19:08:16 -06:00
Joel Dice
6c271ac994
fix powerpc bootimage build
2009-03-09 18:52:09 -06:00
Joel Dice
89a2739165
sync instruction cache after compiling a method
2009-03-09 08:26:23 -06:00
Joel Dice
8b0f7d790f
don't assume sizeof(bool) == 8
2009-03-07 18:23:28 -07:00
Joel Dice
33ba8d084d
avoid unecessary subtraction in tableswitch
2009-03-06 17:11:14 -07:00
Joel Dice
7388da6282
fix endianness issues when loading values smaller than BytesPerWord from the stack
2009-03-06 10:56:11 -07:00
Joel Dice
6e6035505c
zero heap space ahead of time when allocating raw storage and garbage collecting, not when allocating individual objects
...
This helps us support the Java Memory Model without adding a memory
barrier to every object allocation. It's also potentially more
efficient, since we zero out each heap segment all at once instead of
bit-by-bit with each object allocation.
2009-03-03 20:05:48 -07:00
Joel Dice
8410e1d683
ensure reads and writes of volatile 64-bit fields are atomic
2009-03-03 18:02:11 -07:00
Joel Dice
2ca8132d97
implement support for volatile fields
2009-03-02 20:18:15 -07:00
Joel Dice
8c9d625f8f
add memory barriers where appropriate in compile.cpp
2009-03-02 18:40:06 -07:00
Joel Dice
1192ef939e
fix stack offset calculation for multianewarray on x86
2009-03-01 15:39:52 -07:00
Joel Dice
412348d938
fix stack offset calulation for multianewarray
2009-03-01 10:49:37 -07:00
Joel Dice
d6bd2e7308
make Compiler::store take both a source size and a destination size to avoid endianness issues; change order of Compiler::load parameters to match
2009-02-28 16:17:24 -07:00
Joel Dice
60c4bede39
fix undefined-order-of-operations bug in Frame::dupped
2009-02-28 14:41:05 -07:00
Joel Dice
3e6c30a4b5
always return an 8-byte value (or void) from native functions called from Java
...
This is important on the 32-bit OS X PowerPC ABI, since the location
of the low 32-bits of a return value change depending on whether the
entire value is 64-bits or not.
2009-02-28 14:20:43 -07:00
Joel Dice
f22ce3f996
fix parameter offset calculation in invokeNative2
2009-02-28 12:33:26 -07:00
Joel Dice
4999c08e32
fix stack offset calculation for powerpc
...
This may break x86, in which case we'll iterate until they both work.
2009-02-26 18:54:25 -07:00
Joel Dice
d7d3dd5055
various bugfixes, especially concerning frame allocation and offset calculation
2009-02-25 20:49:42 -07:00