src/cpu/x86/vm/templateInterpreter_x86_64.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/cpu/x86/vm/templateInterpreter_x86_64.cpp Tue Oct 22 15:01:21 2013
--- new/src/cpu/x86/vm/templateInterpreter_x86_64.cpp Tue Oct 22 15:01:21 2013
*** 164,174 ****
--- 164,174 ----
__ dispatch_next(state);
return entry;
}
! address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) {
address entry = __ pc();
// Restore stack bottom in case i2c adjusted stack
__ movptr(rsp, Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize));
// and NULL it as marker that esp is now tos until next java call
*** 181,212 ****
--- 181,200 ----
Register mdp = rbx;
Register tmp = rcx;
__ profile_return_type(mdp, rax, tmp);
}
! Label L_got_cache, L_giant_index;
if (EnableInvokeDynamic) {
! __ cmpb(Address(r13, 0), Bytecodes::_invokedynamic);
__ jcc(Assembler::equal, L_giant_index);
}
! __ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u2));
! __ bind(L_got_cache);
__ movl(rbx, Address(rbx, rcx,
Address::times_ptr,
in_bytes(ConstantPoolCache::base_offset()) +
3 * wordSize));
__ andl(rbx, 0xFF);
__ lea(rsp, Address(rsp, rbx, Address::times_8));
! const Register cache = rbx;
+ const Register index = rcx;
! __ get_cache_and_index_at_bcp(cache, index, 1, index_size);
+
+ const Register flags = cache;
! __ movl(flags, Address(cache, index, Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()));
! __ andl(flags, ConstantPoolCacheEntry::parameter_size_mask);
+ __ lea(rsp, Address(rsp, flags, Interpreter::stackElementScale()));
__ dispatch_next(state, step);
// out of the main line of code...
if (EnableInvokeDynamic) {
__ bind(L_giant_index);
__ get_cache_and_index_at_bcp(rbx, rcx, 1, sizeof(u4));
__ jmp(L_got_cache);
}
return entry;
}
address TemplateInterpreterGenerator::generate_deopt_entry_for(TosState state,
src/cpu/x86/vm/templateInterpreter_x86_64.cpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File