src/share/vm/opto/callnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File
*** old/src/share/vm/opto/callnode.cpp	Thu Aug 22 18:38:53 2013
--- new/src/share/vm/opto/callnode.cpp	Thu Aug 22 18:38:53 2013

*** 456,466 **** --- 456,466 ---- } } st->print("={"); uint nf = spobj->n_fields(); if (nf > 0) { ! uint first_ind = spobj->first_index(mcall->jvms()); Node* fld_node = mcall->in(first_ind); ciField* cifield; if (iklass != NULL) { st->print(" ["); cifield = iklass->nonstatic_field_at(0);
*** 1061,1071 **** --- 1061,1070 ---- assert((int)grow_by > 0, "sanity"); int monoff = jvms->monoff(); int scloff = jvms->scloff(); int endoff = jvms->endoff(); assert(endoff == (int)req(), "no other states or debug info after me"); assert(jvms->scl_size() == 0, "parsed code should not have scalar objects"); Node* top = Compile::current()->top(); for (uint i = 0; i < grow_by; i++) { ins_req(monoff, top); } jvms->set_monoff(monoff + grow_by);
*** 1077,1112 **** --- 1076,1110 ---- // Add a LockNode, 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"); assert((jvms()->scl_size() == 0), "parsed code should not have scalar objects"); int nextmon = jvms()->scloff(); if (GenerateSynchronizationCode) { ! add_req(lock->box_node()); ! add_req(lock->obj_node()); ! ins_req(nextmon, lock->box_node()); ! ins_req(nextmon+1, lock->obj_node()); } else { Node* top = Compile::current()->top(); ! add_req(top); ! add_req(top); ! ins_req(nextmon, top); ! ins_req(nextmon, top); } ! jvms()->set_scloff(nextmon + MonitorEdges); jvms()->set_endoff(req()); } void SafePointNode::pop_monitor() { // Delete last monitor from debug info assert((jvms()->scl_size() == 0), "parsed code should not have scalar objects"); debug_only(int num_before_pop = jvms()->nof_monitors()); ! const int MonitorEdges = (1<<JVMState::logMonitorEdges); ! const int MonitorEdges = 2; + assert(JVMState::logMonitorEdges == exact_log2(MonitorEdges), "correct MonitorEdges"); int scloff = jvms()->scloff(); int endoff = jvms()->endoff(); int new_scloff = scloff - MonitorEdges; int new_endoff = endoff - MonitorEdges; jvms()->set_scloff(new_scloff); jvms()->set_endoff(new_endoff); ! while (scloff > new_scloff) del_req_ordered(--scloff); assert(jvms()->nof_monitors() == num_before_pop-1, ""); } Node *SafePointNode::peek_monitor_box() const { int mon = jvms()->nof_monitors() - 1;
*** 1167,1183 **** --- 1165,1180 ---- uint SafePointScalarObjectNode::match_edge(uint idx) const { return 0; } SafePointScalarObjectNode* - SafePointScalarObjectNode::clone(int jvms_adj, Dict* sosn_map) const { void* cached = (*sosn_map)[(void*)this]; if (cached != NULL) { return (SafePointScalarObjectNode*)cached; } SafePointScalarObjectNode* res = (SafePointScalarObjectNode*)Node::clone(); res->_first_index += jvms_adj; sosn_map->Insert((void*)this, (void*)res); return res; }

src/share/vm/opto/callnode.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File