src/share/vm/opto/output.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/output.cpp Tue Dec 2 23:49:28 2008
--- new/src/share/vm/opto/output.cpp Tue Dec 2 23:49:28 2008
*** 847,860 ****
--- 847,858 ----
GrowableArray<MonitorValue*> *monarray = new GrowableArray<MonitorValue*>(num_mon);
// Loop over monitors and insert into array
for(idx = 0; idx < num_mon; idx++) {
// Grab the node that defines this monitor
! Node* box_node = sfn->monitor_box(jvms, idx);
! Node* obj_node;
box_node = sfn->monitor_box(jvms, idx);
obj_node = sfn->monitor_obj(jvms, idx);
! Node* obj_node = sfn->monitor_obj(jvms, idx);
// Create ScopeValue for object
ScopeValue *scval = NULL;
if( obj_node->is_SafePointScalarObject() ) {
*** 888,897 ****
--- 886,896 ----
scval = new ConstantOopWriteValue(tp->is_instptr()->const_oop()->encoding());
}
OptoReg::Name box_reg = BoxLockNode::stack_slot(box_node);
Location basic_lock = Location::new_stk_loc(Location::normal,_regalloc->reg2offset(box_reg));
+ while( !box_node->is_BoxLock() ) box_node = box_node->in(1);
monarray->append(new MonitorValue(scval, basic_lock, box_node->as_BoxLock()->is_eliminated()));
}
// We dump the object pool first, since deoptimization reads it in first.
debug_info()->dump_object_pool(objs);
src/share/vm/opto/output.cpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File