# HG changeset patch # User Thomas Wuerthinger # Date 1303932557 -7200 # Node ID 84a2012f8cd1895345086f8499d3e8254e17078c # Parent c58a301eb2d78c9867474e914e3ea71623c87bcc Fixes to barriers. diff -r c58a301eb2d7 -r 84a2012f8cd1 graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotXirGenerator.java --- a/graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotXirGenerator.java Wed Apr 27 21:22:10 2011 +0200 +++ b/graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotXirGenerator.java Wed Apr 27 21:29:17 2011 +0200 @@ -427,7 +427,7 @@ asm.mark(MARK_IMPLICIT_NULL); } asm.pstore(kind, object, fieldOffset, value, is(NULL_CHECK, flags)); - if (is(WRITE_BARRIER, flags)) { + if (is(WRITE_BARRIER, flags) && kind == CiKind.Object) { XirOperand temp = asm.createTemp("temp", CiKind.Word); asm.mov(temp, object); writeBarrier(asm, temp); @@ -876,7 +876,7 @@ XirLabel store = null; XirLabel slowStoreCheck = null; - if (is(STORE_CHECK, flags)) { + if (is(STORE_CHECK, flags) && kind == CiKind.Object) { valueHub = asm.createRegisterTemp("valueHub", CiKind.Word, AMD64.rdi); compHub = asm.createRegisterTemp("compHub", CiKind.Word, AMD64.rsi); temp = asm.createRegisterTemp("temp", CiKind.Word, AMD64.r10); @@ -1078,7 +1078,7 @@ if (kind == CiKind.Object) { verifyPointer(asm, value); } - if (is(WRITE_BARRIER, flags)) { + if (is(WRITE_BARRIER, flags) && kind == CiKind.Object) { asm.lea(temp, array, index, disp, scale); asm.pstore(kind, temp, value, implicitNullException); writeBarrier(asm, temp);