Mercurial > hg > graal-jvmci-8
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) { |