1.1 --- a/src/cpu/x86/vm/frame_x86.cpp Wed Dec 04 14:43:50 2013 +0100 1.2 +++ b/src/cpu/x86/vm/frame_x86.cpp Thu Dec 05 12:35:38 2013 +0100 1.3 @@ -94,13 +94,6 @@ 1.4 // other generic buffer blobs are more problematic so we just assume they are 1.5 // ok. adapter blobs never have a frame complete and are never ok. 1.6 1.7 - // check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc 1.8 - 1.9 - if (!Interpreter::contains(_pc) && _cb->frame_size() <= 0) { 1.10 - //assert(0, "Invalid frame_size"); 1.11 - return false; 1.12 - } 1.13 - 1.14 if (!_cb->is_frame_complete_at(_pc)) { 1.15 if (_cb->is_nmethod() || _cb->is_adapter_blob() || _cb->is_runtime_stub()) { 1.16 return false; 1.17 @@ -144,6 +137,11 @@ 1.18 // must be some sort of compiled/runtime frame 1.19 // fp does not have to be safe (although it could be check for c1?) 1.20 1.21 + // check for a valid frame_size, otherwise we are unlikely to get a valid sender_pc 1.22 + if (_cb->frame_size() <= 0) { 1.23 + return false; 1.24 + } 1.25 + 1.26 sender_sp = _unextended_sp + _cb->frame_size(); 1.27 // On Intel the return_address is always the word on the stack 1.28 sender_pc = (address) *(sender_sp-1);