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