// In order to implement set_locals for compiled vframes we must // store updated locals in a data structure that contains enough // information to recognize equality with a vframe and to store // any updated locals.
class StackValueCollection;
class jvmtiDeferredLocalVariableSet : public CHeapObj<mtCompiler> { friendclass compiledVFrame;
private:
Method* _method; int _bci;
intptr_t* _id; int _vframe_id;
GrowableArray<jvmtiDeferredLocalVariable*>* _locals; bool _objects_are_deoptimized;
void update_value(StackValueCollection* locals, BasicType type, int index, jvalue value);
// Relocking has to be deferred if the lock owning thread is currently waiting on the monitor. staticint get_and_reset_relock_count_after_wait(JavaThread* jt); staticvoid inc_relock_count_after_wait(JavaThread* thread);
// Delete deferred updates for the compiled frame with id 'frame_id' on the // given thread's stack. The thread's JvmtiDeferredUpdates instance will be // deleted too if no updates remain. staticvoid delete_updates_for_frame(JavaThread* jt, intptr_t* frame_id);
// Number of deferred updates int count() const { return _deferred_locals_updates.length() + (_relock_count_after_wait > 0 ? 1 : 0);
}
};
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.