Mercurial > hg > shark > hotspot
changeset 2222:cf905f6ef379
Just as broken :(
author | Gary Benson <gbenson@redhat.com> |
---|---|
date | Wed, 16 Feb 2011 14:05:03 +0000 |
parents | cafe64e5bd30 |
children | c1d2626ae66c |
files | src/cpu/zero/vm/cppInterpreter_zero.cpp |
diffstat | 1 files changed, 17 insertions(+), 3 deletions(-) [+] |
line wrap: on
line diff
--- a/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Feb 16 13:53:11 2011 +0000 +++ b/src/cpu/zero/vm/cppInterpreter_zero.cpp Wed Feb 16 14:05:03 2011 +0000 @@ -613,6 +613,9 @@ #define VMSLOTS_SLOT(offset) ((intptr_t*)&vmslot0[-(offset)]) #define VMSLOTS_OBJECT(offset) ((oop)vmslot0[-(offset)]) +#define SET_VMSLOTS_OBJECT(value, offset) \ + (*((oop *)&vmslot0[-(offset)]) = (value)) + int CppInterpreter::method_handle_entry(methodOop method, intptr_t UNUSED, TRAPS) { JavaThread *thread = (JavaThread *) THREAD; @@ -678,19 +681,30 @@ break; stack->alloc(arg_slots * wordSize); + for (int i = -1; i < vmslots; i++) + tty->print_cr("a) VMSLOTS_OBJECT(%d) = %p", i, VMSLOTS_OBJECT(i)); + // Shuffle everything up - Unimplemented(); + int arg_slot = sun_dyn_BoundMethodHandle::vmargslot(method_handle); + for (int i = vmslots - 1; i >= arg_slot; i--) { + Unimplemented(); + } + vmslots += arg_slots; // Store bound argument into new stack slot oop arg = sun_dyn_BoundMethodHandle::argument(method_handle); + tty->print_cr("\narg = %p\n", arg); if (arg_type == T_OBJECT) { assert(arg_slots == 1, "should be"); - //SET_LOCALS_OBJECT(arg, max_locals - arg_slots); - Unimplemented(); + SET_VMSLOTS_OBJECT(arg, arg_slot); } else { Unimplemented(); } + + for (int i = -1; i < vmslots; i++) + tty->print_cr("b) VMSLOTS_OBJECT(%d) = %p", i, VMSLOTS_OBJECT(i)); + // Continue if (direct_to_method) {