inline void vframeStreamCommon::fill_from_interpreter_frame() { methodOop method = _frame.interpreter_frame_method(); intptr_t bcx = _frame.interpreter_frame_bcx(); int bci = method->validate_bci_from_bcx(bcx); // 6379830 AsyncGetCallTrace sometimes feeds us wild frames. if (bci < 0) { found_bad_method_frame(); bci = 0; // pretend it's on the point of entering } _mode = interpreted_mode; _method = method; _bci = bci; }
inline void vframeStreamCommon::fill_from_interpreter_frame() { Method* method = _frame.interpreter_frame_method(); address bcp = _frame.interpreter_frame_bcp(); int bci = method->validate_bci_from_bcp(bcp); // 6379830 AsyncGetCallTrace sometimes feeds us wild frames. // AsyncGetCallTrace interrupts the VM asynchronously. As a result // it is possible to access an interpreter frame for which // no Java-level information is yet available (e.g., becasue // the frame was being created when the VM interrupted it). // In this scenario, pretend that the interpreter is at the point // of entering the method. if (bci < 0) { found_bad_method_frame(); bci = 0; } _mode = interpreted_mode; _method = method; _bci = bci; }