< prev index next >

src/hotspot/share/runtime/vframe_hp.hpp

Print this page

        

*** 49,65 **** --- 49,73 ---- static compiledVFrame* cast(vframe* vf) { assert(vf == NULL || vf->is_compiled_frame(), "must be compiled frame"); return (compiledVFrame*) vf; } + void update_deferred_value(BasicType type, int index, jvalue value); + public: // Constructors compiledVFrame(const frame* fr, const RegisterMap* reg_map, JavaThread* thread, CompiledMethod* nm); // Update a local in a compiled frame. Update happens when deopt occurs void update_local(BasicType type, int index, jvalue value); + // Update an expression stack value in a compiled frame. Update happens when deopt occurs + void update_stack(BasicType type, int index, jvalue value); + + // Update a lock value in a compiled frame. Update happens when deopt occurs + void update_monitor(int index, MonitorInfo* value); + // Returns the active nmethod CompiledMethod* code() const; // Returns the scopeDesc ScopeDesc* scope() const { return _scope; }
*** 89,117 **** // information to recognize equality with a vframe and to store // any updated locals. class jvmtiDeferredLocalVariable; class jvmtiDeferredLocalVariableSet : public CHeapObj<mtCompiler> { private: Method* _method; int _bci; intptr_t* _id; int _vframe_id; GrowableArray<jvmtiDeferredLocalVariable*>* _locals; public: // JVM state Method* method() const { return _method; } int bci() const { return _bci; } intptr_t* id() const { return _id; } int vframe_id() const { return _vframe_id; } ! GrowableArray<jvmtiDeferredLocalVariable*>* locals() const { return _locals; } ! void set_local_at(int idx, BasicType typ, jvalue val); // Does the vframe match this jvmtiDeferredLocalVariableSet ! bool matches(vframe* vf); // GC void oops_do(OopClosure* f); // constructor jvmtiDeferredLocalVariableSet(Method* method, int bci, intptr_t* id, int vframe_id); --- 97,133 ---- // information to recognize equality with a vframe and to store // any updated locals. class jvmtiDeferredLocalVariable; class jvmtiDeferredLocalVariableSet : public CHeapObj<mtCompiler> { + friend class compiledVFrame; + private: Method* _method; int _bci; intptr_t* _id; int _vframe_id; GrowableArray<jvmtiDeferredLocalVariable*>* _locals; + void update_value(StackValueCollection* locals, BasicType type, int index, jvalue value); + + void set_value_at(int idx, BasicType typ, jvalue val); + public: // JVM state Method* method() const { return _method; } int bci() const { return _bci; } intptr_t* id() const { return _id; } int vframe_id() const { return _vframe_id; } ! ! void update_locals(StackValueCollection* locals); ! void update_stack(StackValueCollection* locals); ! void update_monitors(GrowableArray<MonitorInfo*>* monitors); // Does the vframe match this jvmtiDeferredLocalVariableSet ! bool matches(const vframe* vf); // GC void oops_do(OopClosure* f); // constructor jvmtiDeferredLocalVariableSet(Method* method, int bci, intptr_t* id, int vframe_id);
< prev index next >