364f31b785
finish initial sketch of dynamicWind implementation
2009-05-23 19:49:14 -06:00
4305fdc7f3
begin dynamicWind implementation
2009-05-23 16:15:06 -06:00
79558e7e34
fix GCC 4.4 warnings
2009-05-22 18:21:11 -06:00
e165d5f3fd
avoid uninitialized variable warnings in MyProcessor::callWithCurrentContinuation
2009-05-19 18:28:43 -06:00
ecfecf2006
translate local indexes before passing to Frame.stored{Int,Long,Object}
2009-05-18 09:16:17 -06:00
398dec58bb
GC bugfixes
2009-05-17 17:43:48 -06:00
195d95d809
continuation bugfixes
2009-05-16 18:39:08 -06:00
8cb59c9d4c
various bugfixes to get Continuations test working
2009-05-16 02:03:03 -06:00
57cec2d068
various bugfixes
2009-05-14 20:08:01 -06:00
3d1ef68001
various bugfixes
2009-05-12 12:16:55 -06:00
66c4867f18
more work on continuation support
2009-05-05 18:29:05 -06:00
eb3bd25aa1
code cleanup and build fixes
2009-05-04 19:04:17 -06:00
0cd4eb2655
early sketch of continuation support
2009-05-03 14:57:11 -06:00
90dcf084a2
protect object from GC in compileVirtualMethod2; condense frame GC root maps to minimum size needed
2009-04-27 14:46:43 +00:00
fd99691b00
fix CallEvent::popIndex calculation
2009-04-26 21:59:22 -06:00
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
299699f1ff
fix stack unwinding for new calling convention (2nd try)
2009-04-26 16:06:15 -06:00
03653d2dd8
fix stack unwinding and GC root scan for new calling convention
2009-04-26 15:55:35 -06:00
f80fb9b536
refine code for picking target sites to avoid unecessary moves
2009-04-26 12:19:16 -06:00
64b529c915
avoid generating unreachable code after tail calls
2009-04-25 20:54:36 -06:00
bf8fdb6316
visit MyProcessor::virtualThunks during GC
2009-04-25 20:24:04 -06:00
630fde86f7
freeze registers in CallEvent::compile to ensure they are not used as temporaries by the assmebler
2009-04-25 20:07:47 -06:00
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
89221bfcfa
fix handling of virtual calls to native methods
2009-04-25 17:52:08 -06:00
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
5354e36530
fix unsafe stack pointer adjustment in vmInvoke
2009-04-25 17:31:24 -06:00
1ed7c0d94c
adapt native method call code to new calling convention
2009-04-25 11:49:56 -06:00
de84afe2fe
adjust stack if necessary after non-tail-call in case where callee pops arguments
2009-04-25 11:47:41 -06:00
3113ae74eb
various bugfixes
2009-04-22 01:39:25 +00:00
717f359666
implement "callee pops arguments" calling convention and refactor tail call code accordingly
2009-04-19 16:36:11 -06:00
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
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
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
5e740170f2
initial sketch of tail call optimization (non-virtual calls only, so far)
2009-03-31 14:15:08 -06:00
b871f430d0
avoid reading below the stack pointer in vmInvoke, since it upsets valgrind
2009-03-19 08:44:08 -06:00
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
c9400316fd
try harder to find a suitable stack frame site in pickTarget when there are no free registers left
2009-03-16 20:03:59 -06:00
f5c79355f2
set StealRegisterReserveCount to 2 to avoid running out of registers in when shuffling values around on the stack
2009-03-16 18:00:51 -06:00
d1018bf078
update copyright years
2009-03-15 12:02:36 -06:00
0ce644cca2
put new thread into active state in AttachCurrentThread
2009-03-14 18:07:38 -06:00
073b829c79
avoid running out of eligable source registers for writing a single byte to memory on x86
2009-03-14 16:47:26 -06:00
12640219e6
handle b == dst case in andC
2009-03-14 14:34:44 -06:00
8d9409112c
reuse source site as destination site if appropriate in getTarget
2009-03-14 14:17:32 -06:00
54b691f4de
handle b == t case in multiplyR and remainderR
2009-03-14 14:14:49 -06:00
ee2d105f6c
freeze move operand sites prior to calling the assembler so the assembler won't steal them
2009-03-13 20:55:41 -06:00
21fa23d84b
fixed multiplyC bug (all multiplies now delegated to multiplyR)
2009-03-13 18:37:40 -06:00
4c27755a53
fix endianness issue storing and loading longs
2009-03-11 21:07:30 -06:00
49cd2dd9bf
fix powerpc bootimage build (second try)
2009-03-10 19:08:16 -06:00
6c271ac994
fix powerpc bootimage build
2009-03-09 18:52:09 -06:00
c11203b401
pass srcSelectSize instead of srcSize to Architecture::plan in appendMove
2009-03-09 12:31:41 -06:00