Example #1
0
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, "");
}
Example #2
0
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());
}
Example #3
0
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);
}
Example #4
0
Node *SafePointNode::peek_monitor_obj() const {
    int mon = jvms()->nof_monitors() - 1;
    assert(mon >= 0, "most have a monitor");
    return monitor_obj(jvms(), mon);
}
Example #5
0
void CallNode::dump_spec() const {
    tty->print(" ");
    tf()->dump();
    if (jvms() != NULL)  jvms()->dump_spec();
}