458 void set_method(Method* method) { _method = method; }
459
460 #if INCLUDE_JVMCI
461 // Gets the JVMCI name of this nmethod.
462 const char* jvmci_name();
463
464 // Records the pending failed speculation in the
465 // JVMCI speculation log associated with this nmethod.
466 void update_speculation(JavaThread* thread);
467
468 // Gets the data specific to a JVMCI compiled method.
469 // This returns a non-NULL value iff this nmethod was
470 // compiled by the JVMCI compiler.
471 JVMCINMethodData* jvmci_nmethod_data() const {
472 return jvmci_data_size() == 0 ? NULL : (JVMCINMethodData*) jvmci_data_begin();
473 }
474 #endif
475
476 public:
477 void oops_do(OopClosure* f) { oops_do(f, false); }
478 void oops_do(OopClosure* f, bool allow_zombie);
479
480 bool test_set_oops_do_mark();
481 static void oops_do_marking_prologue();
482 static void oops_do_marking_epilogue();
483 static bool oops_do_marking_is_active() { return _oops_do_mark_nmethods != NULL; }
484 bool test_oops_do_mark() { return _oops_do_mark_link != NULL; }
485
486 private:
487 ScopeDesc* scope_desc_in(address begin, address end);
488
489 address* orig_pc_addr(const frame* fr);
490
491 public:
492 // copying of debugging information
493 void copy_scopes_pcs(PcDesc* pcs, int count);
494 void copy_scopes_data(address buffer, int size);
495
496 // Accessor/mutator for the original pc of a frame before a frame was deopted.
497 address get_original_pc(const frame* fr) { return *orig_pc_addr(fr); }
498 void set_original_pc(const frame* fr, address pc) { *orig_pc_addr(fr) = pc; }
|
458 void set_method(Method* method) { _method = method; }
459
460 #if INCLUDE_JVMCI
461 // Gets the JVMCI name of this nmethod.
462 const char* jvmci_name();
463
464 // Records the pending failed speculation in the
465 // JVMCI speculation log associated with this nmethod.
466 void update_speculation(JavaThread* thread);
467
468 // Gets the data specific to a JVMCI compiled method.
469 // This returns a non-NULL value iff this nmethod was
470 // compiled by the JVMCI compiler.
471 JVMCINMethodData* jvmci_nmethod_data() const {
472 return jvmci_data_size() == 0 ? NULL : (JVMCINMethodData*) jvmci_data_begin();
473 }
474 #endif
475
476 public:
477 void oops_do(OopClosure* f) { oops_do(f, false); }
478 void oops_do(OopClosure* f, bool allow_dead);
479
480 bool test_set_oops_do_mark();
481 static void oops_do_marking_prologue();
482 static void oops_do_marking_epilogue();
483 static bool oops_do_marking_is_active() { return _oops_do_mark_nmethods != NULL; }
484 bool test_oops_do_mark() { return _oops_do_mark_link != NULL; }
485
486 private:
487 ScopeDesc* scope_desc_in(address begin, address end);
488
489 address* orig_pc_addr(const frame* fr);
490
491 public:
492 // copying of debugging information
493 void copy_scopes_pcs(PcDesc* pcs, int count);
494 void copy_scopes_data(address buffer, int size);
495
496 // Accessor/mutator for the original pc of a frame before a frame was deopted.
497 address get_original_pc(const frame* fr) { return *orig_pc_addr(fr); }
498 void set_original_pc(const frame* fr, address pc) { *orig_pc_addr(fr) = pc; }
|