changeset 18523:57880e95102e

avoid initialization order issues when asserting array scale index invariants
author Doug Simon <doug.simon@oracle.com>
date Wed, 26 Nov 2014 11:29:24 +0100
parents 2fa2460f99b3
children 99e5d0a7600e c538c2c6b7e2
files graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java
diffstat 2 files changed, 14 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Wed Nov 26 10:26:24 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/HotSpotGraalRuntime.java	Wed Nov 26 11:29:24 2014 +0100
@@ -154,9 +154,23 @@
 
         BenchmarkCounters.initialize(toVM);
 
+        assert checkArrayIndexScaleInvariants();
+
         runtimeStartTime = System.nanoTime();
     }
 
+    private boolean checkArrayIndexScaleInvariants() {
+        assert getArrayIndexScale(Kind.Byte) == 1;
+        assert getArrayIndexScale(Kind.Boolean) == 1;
+        assert getArrayIndexScale(Kind.Char) == 2;
+        assert getArrayIndexScale(Kind.Short) == 2;
+        assert getArrayIndexScale(Kind.Int) == 4;
+        assert getArrayIndexScale(Kind.Long) == 8;
+        assert getArrayIndexScale(Kind.Float) == 4;
+        assert getArrayIndexScale(Kind.Double) == 8;
+        return true;
+    }
+
     public static class Options {
 
         // @formatter:off
--- a/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java	Wed Nov 26 10:26:24 2014 +0100
+++ b/graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/replacements/HotSpotReplacementsUtil.java	Wed Nov 26 11:29:24 2014 +0100
@@ -788,17 +788,6 @@
         return config().layoutHelperElementTypePrimitiveInPlace();
     }
 
-    static {
-        assert arrayIndexScale(Kind.Byte) == 1;
-        assert arrayIndexScale(Kind.Boolean) == 1;
-        assert arrayIndexScale(Kind.Char) == 2;
-        assert arrayIndexScale(Kind.Short) == 2;
-        assert arrayIndexScale(Kind.Int) == 4;
-        assert arrayIndexScale(Kind.Long) == 8;
-        assert arrayIndexScale(Kind.Float) == 4;
-        assert arrayIndexScale(Kind.Double) == 8;
-    }
-
     static int computeHashCode(Object x) {
         Word mark = loadWordFromObject(x, markOffset());