comparison c1x4hotspotsrc/HotSpotVM/src/com/sun/hotspot/c1x/HotSpotXirGenerator.java @ 1453:d603bdbec024

Enable monitorenter/monitorexit runtime calls.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Fri, 12 Nov 2010 18:34:07 +0100
parents 9b22e3e5df8e
children 2c754f3a2722
comparison
equal deleted inserted replaced
1452:9b22e3e5df8e 1453:d603bdbec024
305 if (is(NULL_CHECK, flags)) { 305 if (is(NULL_CHECK, flags)) {
306 asm.nop(1); 306 asm.nop(1);
307 asm.mark(MARK_IMPLICIT_NULL); 307 asm.mark(MARK_IMPLICIT_NULL);
308 asm.pload(CiKind.Word, asm.createTemp("temp", CiKind.Word), object, true); 308 asm.pload(CiKind.Word, asm.createTemp("temp", CiKind.Word), object, true);
309 } 309 }
310 /* 310
311 useRegisters(asm, AMD64.rbx, AMD64.rsi, AMD64.rdx); 311 useRegisters(asm, AMD64.rbx, AMD64.rsi, AMD64.rdx);
312 useRegisters(asm, AMD64.rax); 312 useRegisters(asm, AMD64.rax);
313 asm.callRuntime(config.monitorEnterStub, null, object, lock); 313 asm.callRuntime(config.monitorEnterStub, null, object, lock);
314 */ 314
315 return asm.finishTemplate("monitorEnter"); 315 return asm.finishTemplate("monitorEnter");
316 } 316 }
317 }; 317 };
318 318
319 private SimpleTemplates monitorExitTemplates = new SimpleTemplates(NULL_CHECK) { 319 private SimpleTemplates monitorExitTemplates = new SimpleTemplates(NULL_CHECK) {
321 @Override 321 @Override
322 protected XirTemplate create(CiXirAssembler asm, long flags) { 322 protected XirTemplate create(CiXirAssembler asm, long flags) {
323 asm.restart(CiKind.Void); 323 asm.restart(CiKind.Void);
324 XirParameter object = asm.createInputParameter("object", CiKind.Object); 324 XirParameter object = asm.createInputParameter("object", CiKind.Object);
325 XirParameter lock = asm.createInputParameter("lock", CiKind.Word); 325 XirParameter lock = asm.createInputParameter("lock", CiKind.Word);
326 /* 326
327 useRegisters(asm, AMD64.rbx, AMD64.rsi, AMD64.rdx); 327 useRegisters(asm, AMD64.rbx, AMD64.rsi, AMD64.rdx);
328 useRegisters(asm, AMD64.rax); 328 useRegisters(asm, AMD64.rax);
329 asm.callRuntime(config.monitorExitStub, null, object, lock); 329 asm.callRuntime(config.monitorExitStub, null, object, lock);
330 */ 330
331 return asm.finishTemplate("monitorExit"); 331 return asm.finishTemplate("monitorExit");
332 } 332 }
333 }; 333 };
334 334
335 private KindTemplates getFieldTemplates = new KindTemplates(NULL_CHECK, UNRESOLVED) { 335 private KindTemplates getFieldTemplates = new KindTemplates(NULL_CHECK, UNRESOLVED) {