changeset 2544:84a2012f8cd1

Fixes to barriers.
author Thomas Wuerthinger <thomas@wuerthinger.net>
date Wed, 27 Apr 2011 21:29:17 +0200
parents c58a301eb2d7
children bb050fe2901d
files graal/GraalRuntime/src/com/oracle/graal/runtime/HotSpotXirGenerator.java
diffstat 1 files changed, 3 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- 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);