src/cpu/x86/vm/templateInterpreter_x86_64.cpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File 8026328 Cdiff src/cpu/x86/vm/templateInterpreter_x86_64.cpp

src/cpu/x86/vm/templateInterpreter_x86_64.cpp

Print this page

        

*** 164,174 **** __ dispatch_next(state); return entry; } ! address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step) { 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 --- 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 **** 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)); __ 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, --- 181,200 ---- Register mdp = rbx; Register tmp = rcx; __ profile_return_type(mdp, rax, tmp); } ! 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); 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