comparison src/share/vm/prims/jvmtiImpl.cpp @ 22918:9cfc607cb03e

8013942: JSR 292: assert(type() == T_OBJECT) failed: type check Summary: A dead scope of the local needs to be identified Reviewed-by: coleenp, vlivanov, mgronlun
author sspitsyn
date Thu, 26 Mar 2015 23:17:09 -0700
parents 78bbf4d43a14
children dd9cc155639c
comparison
equal deleted inserted replaced
22917:e982379a7119 22918:9cfc607cb03e
23 */ 23 */
24 24
25 #include "precompiled.hpp" 25 #include "precompiled.hpp"
26 #include "classfile/systemDictionary.hpp" 26 #include "classfile/systemDictionary.hpp"
27 #include "interpreter/interpreter.hpp" 27 #include "interpreter/interpreter.hpp"
28 #include "interpreter/oopMapCache.hpp"
28 #include "jvmtifiles/jvmtiEnv.hpp" 29 #include "jvmtifiles/jvmtiEnv.hpp"
29 #include "memory/resourceArea.hpp" 30 #include "memory/resourceArea.hpp"
30 #include "oops/instanceKlass.hpp" 31 #include "oops/instanceKlass.hpp"
31 #include "prims/jvmtiAgentThread.hpp" 32 #include "prims/jvmtiAgentThread.hpp"
32 #include "prims/jvmtiEventController.inline.hpp" 33 #include "prims/jvmtiEventController.inline.hpp"
742 } 743 }
743 return true; 744 return true;
744 } 745 }
745 746
746 void VM_GetOrSetLocal::doit() { 747 void VM_GetOrSetLocal::doit() {
748 InterpreterOopMap oop_mask;
749 _jvf->method()->mask_for(_jvf->bci(), &oop_mask);
750 if (oop_mask.is_dead(_index)) {
751 // The local can be invalid and uninitialized in the scope of current bci
752 _result = JVMTI_ERROR_INVALID_SLOT;
753 return;
754 }
747 if (_set) { 755 if (_set) {
748 // Force deoptimization of frame if compiled because it's 756 // Force deoptimization of frame if compiled because it's
749 // possible the compiler emitted some locals as constant values, 757 // possible the compiler emitted some locals as constant values,
750 // meaning they are not mutable. 758 // meaning they are not mutable.
751 if (can_be_deoptimized(_jvf)) { 759 if (can_be_deoptimized(_jvf)) {