hotspot/src/cpu/x86/vm/templateInterpreterGenerator_x86.cpp
changeset 46369 3bf4544bec14
parent 44406 a46a6c4d1dd9
parent 46338 e84b501fa52e
equal deleted inserted replaced
44470:d10b1eca0b45 46369:3bf4544bec14
   169   // throw exception
   169   // throw exception
   170   __ jump(ExternalAddress(Interpreter::throw_exception_entry()));
   170   __ jump(ExternalAddress(Interpreter::throw_exception_entry()));
   171   return entry;
   171   return entry;
   172 }
   172 }
   173 
   173 
   174 
       
   175 address TemplateInterpreterGenerator::generate_continuation_for(TosState state) {
       
   176   address entry = __ pc();
       
   177   // NULL last_sp until next java call
       
   178   __ movptr(Address(rbp, frame::interpreter_frame_last_sp_offset * wordSize), (int32_t)NULL_WORD);
       
   179   __ dispatch_next(state);
       
   180   return entry;
       
   181 }
       
   182 
       
   183 
       
   184 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) {
   174 address TemplateInterpreterGenerator::generate_return_entry_for(TosState state, int step, size_t index_size) {
   185   address entry = __ pc();
   175   address entry = __ pc();
   186 
   176 
   187 #ifndef _LP64
   177 #ifndef _LP64
   188 #ifdef COMPILER2
   178 #ifdef COMPILER2
   228 
   218 
   229   const Register flags = cache;
   219   const Register flags = cache;
   230   __ movl(flags, Address(cache, index, Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()));
   220   __ movl(flags, Address(cache, index, Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()));
   231   __ andl(flags, ConstantPoolCacheEntry::parameter_size_mask);
   221   __ andl(flags, ConstantPoolCacheEntry::parameter_size_mask);
   232   __ lea(rsp, Address(rsp, flags, Interpreter::stackElementScale()));
   222   __ lea(rsp, Address(rsp, flags, Interpreter::stackElementScale()));
       
   223 
       
   224    const Register java_thread = NOT_LP64(rcx) LP64_ONLY(r15_thread);
       
   225    if (JvmtiExport::can_pop_frame()) {
       
   226      NOT_LP64(__ get_thread(java_thread));
       
   227      __ check_and_handle_popframe(java_thread);
       
   228    }
       
   229    if (JvmtiExport::can_force_early_return()) {
       
   230      NOT_LP64(__ get_thread(java_thread));
       
   231      __ check_and_handle_earlyret(java_thread);
       
   232    }
       
   233 
   233   __ dispatch_next(state, step);
   234   __ dispatch_next(state, step);
   234 
   235 
   235   return entry;
   236   return entry;
   236 }
   237 }
   237 
   238