src/cpu/x86/vm/frame_x86.cpp

changeset 6163
c586f8a7322f
parent 5784
190899198332
child 6680
78bbf4d43a14
     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);

mercurial