hotspot/src/cpu/aarch64/vm/frame_aarch64.cpp
changeset 40332 a52d1e719c4d
parent 38133 78b95467b9f1
child 40643 49539fc14e5a
equal deleted inserted replaced
40331:b6c370a546fc 40332:a52d1e719c4d
   108     }
   108     }
   109 
   109 
   110     // Entry frame checks
   110     // Entry frame checks
   111     if (is_entry_frame()) {
   111     if (is_entry_frame()) {
   112       // an entry frame must have a valid fp.
   112       // an entry frame must have a valid fp.
   113 
   113       return fp_safe && is_entry_frame_valid(thread);
   114       if (!fp_safe) return false;
       
   115 
       
   116       // Validate the JavaCallWrapper an entry frame must have
       
   117 
       
   118       address jcw = (address)entry_frame_call_wrapper();
       
   119 
       
   120       bool jcw_safe = (jcw < thread->stack_base()) && ( jcw > fp);
       
   121 
       
   122       return jcw_safe;
       
   123 
       
   124     }
   114     }
   125 
   115 
   126     intptr_t* sender_sp = NULL;
   116     intptr_t* sender_sp = NULL;
   127     intptr_t* sender_unextended_sp = NULL;
   117     intptr_t* sender_unextended_sp = NULL;
   128     address   sender_pc = NULL;
   118     address   sender_pc = NULL;
   208       if (!saved_fp_safe) {
   198       if (!saved_fp_safe) {
   209         return false;
   199         return false;
   210       }
   200       }
   211 
   201 
   212       // construct the potential sender
   202       // construct the potential sender
   213 
       
   214       frame sender(sender_sp, sender_unextended_sp, saved_fp, sender_pc);
   203       frame sender(sender_sp, sender_unextended_sp, saved_fp, sender_pc);
   215 
   204       return sender.is_entry_frame_valid(thread);
   216       // Validate the JavaCallWrapper an entry frame must have
       
   217       address jcw = (address)sender.entry_frame_call_wrapper();
       
   218 
       
   219       bool jcw_safe = (jcw < thread->stack_base()) && ( jcw > (address)sender.fp());
       
   220 
       
   221       return jcw_safe;
       
   222     }
   205     }
   223 
   206 
   224     CompiledMethod* nm = sender_blob->as_compiled_method_or_null();
   207     CompiledMethod* nm = sender_blob->as_compiled_method_or_null();
   225     if (nm != NULL) {
   208     if (nm != NULL) {
   226       if (nm->is_deopt_mh_entry(sender_pc) || nm->is_deopt_entry(sender_pc) ||
   209       if (nm->is_deopt_mh_entry(sender_pc) || nm->is_deopt_entry(sender_pc) ||