Mercurial > hg > graal-jvmci-8
comparison src/share/vm/c1x/c1x_CodeInstaller.cpp @ 1453:d603bdbec024
Enable monitorenter/monitorexit runtime calls.
author | Thomas Wuerthinger <wuerthinger@ssw.jku.at> |
---|---|
date | Fri, 12 Nov 2010 18:34:07 +0100 |
parents | 565f45cebac2 |
children | dc114f680d9c |
comparison
equal
deleted
inserted
replaced
1452:9b22e3e5df8e | 1453:d603bdbec024 |
---|---|
325 } else { | 325 } else { |
326 Bytecodes::Code code = Bytecodes::java_code_at(method->bcp_from(bci)); | 326 Bytecodes::Code code = Bytecodes::java_code_at(method->bcp_from(bci)); |
327 reexecute = Interpreter::bytecode_should_reexecute(code); | 327 reexecute = Interpreter::bytecode_should_reexecute(code); |
328 } | 328 } |
329 | 329 |
330 | |
331 if (frame != NULL) { | 330 if (frame != NULL) { |
332 jint local_count = CiDebugInfo_Frame::numLocals(frame); | 331 jint local_count = CiDebugInfo_Frame::numLocals(frame); |
333 jint expression_count = CiDebugInfo_Frame::numStack(frame); | 332 jint expression_count = CiDebugInfo_Frame::numStack(frame); |
334 jint monitor_count = CiDebugInfo_Frame::numLocks(frame); | 333 jint monitor_count = CiDebugInfo_Frame::numLocks(frame); |
335 arrayOop values = (arrayOop) CiDebugInfo_Frame::values(frame); | 334 arrayOop values = (arrayOop) CiDebugInfo_Frame::values(frame); |
348 } else if (i < local_count + expression_count) { | 347 } else if (i < local_count + expression_count) { |
349 expressions->append(value); | 348 expressions->append(value); |
350 } else { | 349 } else { |
351 assert(value->is_location(), "invalid monitor location"); | 350 assert(value->is_location(), "invalid monitor location"); |
352 LocationValue* loc = (LocationValue*)value; | 351 LocationValue* loc = (LocationValue*)value; |
353 LocationValue* obj = new LocationValue(Location::new_stk_loc(Location::oop, loc->location().stack_offset() + HeapWordSize)); | 352 int monitor_offset = loc->location().stack_offset(); |
354 monitors->append(new MonitorValue(obj, Location::new_stk_loc(Location::normal, loc->location().stack_offset()))); | 353 LocationValue* obj = new LocationValue(Location::new_stk_loc(Location::oop, monitor_offset + BasicObjectLock::obj_offset_in_bytes())); |
354 monitors->append(new MonitorValue(obj, Location::new_stk_loc(Location::normal, monitor_offset + BasicObjectLock::lock_offset_in_bytes()))); | |
355 } | 355 } |
356 } | 356 } |
357 DebugToken* locals_token = _debug_recorder->create_scope_values(locals); | 357 DebugToken* locals_token = _debug_recorder->create_scope_values(locals); |
358 DebugToken* expressions_token = _debug_recorder->create_scope_values(expressions); | 358 DebugToken* expressions_token = _debug_recorder->create_scope_values(expressions); |
359 DebugToken* monitors_token = _debug_recorder->create_monitor_values(monitors); | 359 DebugToken* monitors_token = _debug_recorder->create_monitor_values(monitors); |