void SafePointNode::pop_monitor() { // Delete last monitor from debug info debug_only(int num_before_pop = jvms()->nof_monitors()); const int MonitorEdges = (1<<JVMState::logMonitorEdges); int endoff = jvms()->endoff(); int new_endoff = endoff - MonitorEdges; jvms()->set_endoff(new_endoff); while (endoff > new_endoff) del_req(--endoff); assert(jvms()->nof_monitors() == num_before_pop-1, ""); }
void SafePointNode::push_monitor(const FastLockNode *lock) { // Add a FastLockNode, which points to both the original BoxLockNode (the // stack space for the monitor) and the Object being locked. const int MonitorEdges = 2; assert(JVMState::logMonitorEdges == exact_log2(MonitorEdges), "correct MonitorEdges"); assert(req() == jvms()->endoff(), "correct sizing"); if (GenerateSynchronizationCode) { add_req(lock->box_node()); add_req(lock->obj_node()); } else { add_req(NULL); add_req(NULL); } jvms()->set_endoff(req()); }
void MachCallNode::dump_spec(outputStream *st) const { st->print("# "); if (tf() != NULL) tf()->dump_on(st); if (_cnt != COUNT_UNKNOWN) st->print(" C=%f",_cnt); if (jvms() != NULL) jvms()->dump_spec(st); }
Node *SafePointNode::peek_monitor_obj() const { int mon = jvms()->nof_monitors() - 1; assert(mon >= 0, "most have a monitor"); return monitor_obj(jvms(), mon); }
void CallNode::dump_spec() const { tty->print(" "); tf()->dump(); if (jvms() != NULL) jvms()->dump_spec(); }