diff graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/BasicLocations.java @ 18795:e9cbe1618733

Truffle: refactor size calculation in location allocator to visitor pattern
author Andreas Woess <andreas.woess@jku.at>
date Wed, 07 Jan 2015 15:11:38 +0100
parents 2c3666f44855
children
line wrap: on
line diff
--- a/graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/BasicLocations.java	Mon Jan 05 19:01:01 2015 +0100
+++ b/graal/com.oracle.truffle.object.basic/src/com/oracle/truffle/object/basic/BasicLocations.java	Wed Jan 07 15:11:38 2015 +0100
@@ -164,6 +164,11 @@
         public int objectArrayCount() {
             return OBJECT_SIZE;
         }
+
+        @Override
+        public final void accept(LocationVisitor locationVisitor) {
+            locationVisitor.visitObjectArray(index, OBJECT_SIZE);
+        }
     }
 
     public static class ObjectFieldLocation extends MethodHandleFieldLocation implements ObjectLocation {
@@ -209,6 +214,11 @@
         public int objectFieldCount() {
             return OBJECT_SIZE;
         }
+
+        @Override
+        public final void accept(LocationVisitor locationVisitor) {
+            locationVisitor.visitObjectField(getIndex(), OBJECT_SIZE);
+        }
     }
 
     public abstract static class SimpleObjectFieldLocation extends FieldLocation implements ObjectLocation {
@@ -240,6 +250,11 @@
         public int objectFieldCount() {
             return OBJECT_SIZE;
         }
+
+        @Override
+        public final void accept(LocationVisitor locationVisitor) {
+            locationVisitor.visitObjectField(getIndex(), OBJECT_SIZE);
+        }
     }
 
     public static class LongArrayLocation extends ArrayLocation implements InternalLongLocation {
@@ -302,7 +317,7 @@
             return value instanceof Long || (allowInt && value instanceof Integer);
         }
 
-        public Class<Long> getType() {
+        public final Class<Long> getType() {
             return long.class;
         }
 
@@ -310,6 +325,11 @@
         public int primitiveArrayCount() {
             return LONG_SIZE;
         }
+
+        @Override
+        public final void accept(LocationVisitor locationVisitor) {
+            locationVisitor.visitPrimitiveArray(getIndex(), LONG_SIZE);
+        }
     }
 
     public static class LongFieldLocation extends MethodHandleFieldLocation implements InternalLongLocation {
@@ -385,9 +405,14 @@
             return LONG_SIZE;
         }
 
-        public Class<Long> getType() {
+        public final Class<Long> getType() {
             return long.class;
         }
+
+        @Override
+        public final void accept(LocationVisitor locationVisitor) {
+            locationVisitor.visitPrimitiveField(getIndex(), LONG_SIZE);
+        }
     }
 
     public static class LongLocationDecorator extends PrimitiveLocationDecorator implements InternalLongLocation {
@@ -480,9 +505,14 @@
             return LONG_SIZE;
         }
 
-        public Class<Long> getType() {
+        public final Class<Long> getType() {
             return long.class;
         }
+
+        @Override
+        public final void accept(LocationVisitor locationVisitor) {
+            locationVisitor.visitPrimitiveField(getIndex(), LONG_SIZE);
+        }
     }
 
     public abstract static class PrimitiveLocationDecorator extends LocationImpl {
@@ -521,6 +551,11 @@
         public final int primitiveArrayCount() {
             return ((LocationImpl) longLocation).primitiveArrayCount();
         }
+
+        @Override
+        public final void accept(LocationVisitor locationVisitor) {
+            ((LocationImpl) longLocation).accept(locationVisitor);
+        }
     }
 
     public static class IntLocationDecorator extends PrimitiveLocationDecorator implements IntLocation {