comparison 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
comparison
equal deleted inserted replaced
18794:e688e42b41e3 18795:e9cbe1618733
162 162
163 @Override 163 @Override
164 public int objectArrayCount() { 164 public int objectArrayCount() {
165 return OBJECT_SIZE; 165 return OBJECT_SIZE;
166 } 166 }
167
168 @Override
169 public final void accept(LocationVisitor locationVisitor) {
170 locationVisitor.visitObjectArray(index, OBJECT_SIZE);
171 }
167 } 172 }
168 173
169 public static class ObjectFieldLocation extends MethodHandleFieldLocation implements ObjectLocation { 174 public static class ObjectFieldLocation extends MethodHandleFieldLocation implements ObjectLocation {
170 175
171 public ObjectFieldLocation(int index, MethodHandle getter, MethodHandle setter) { 176 public ObjectFieldLocation(int index, MethodHandle getter, MethodHandle setter) {
207 212
208 @Override 213 @Override
209 public int objectFieldCount() { 214 public int objectFieldCount() {
210 return OBJECT_SIZE; 215 return OBJECT_SIZE;
211 } 216 }
217
218 @Override
219 public final void accept(LocationVisitor locationVisitor) {
220 locationVisitor.visitObjectField(getIndex(), OBJECT_SIZE);
221 }
212 } 222 }
213 223
214 public abstract static class SimpleObjectFieldLocation extends FieldLocation implements ObjectLocation { 224 public abstract static class SimpleObjectFieldLocation extends FieldLocation implements ObjectLocation {
215 225
216 public SimpleObjectFieldLocation(int index) { 226 public SimpleObjectFieldLocation(int index) {
237 } 247 }
238 248
239 @Override 249 @Override
240 public int objectFieldCount() { 250 public int objectFieldCount() {
241 return OBJECT_SIZE; 251 return OBJECT_SIZE;
252 }
253
254 @Override
255 public final void accept(LocationVisitor locationVisitor) {
256 locationVisitor.visitObjectField(getIndex(), OBJECT_SIZE);
242 } 257 }
243 } 258 }
244 259
245 public static class LongArrayLocation extends ArrayLocation implements InternalLongLocation { 260 public static class LongArrayLocation extends ArrayLocation implements InternalLongLocation {
246 protected final boolean allowInt; 261 protected final boolean allowInt;
300 @Override 315 @Override
301 public final boolean canStore(Object value) { 316 public final boolean canStore(Object value) {
302 return value instanceof Long || (allowInt && value instanceof Integer); 317 return value instanceof Long || (allowInt && value instanceof Integer);
303 } 318 }
304 319
305 public Class<Long> getType() { 320 public final Class<Long> getType() {
306 return long.class; 321 return long.class;
307 } 322 }
308 323
309 @Override 324 @Override
310 public int primitiveArrayCount() { 325 public int primitiveArrayCount() {
311 return LONG_SIZE; 326 return LONG_SIZE;
327 }
328
329 @Override
330 public final void accept(LocationVisitor locationVisitor) {
331 locationVisitor.visitPrimitiveArray(getIndex(), LONG_SIZE);
312 } 332 }
313 } 333 }
314 334
315 public static class LongFieldLocation extends MethodHandleFieldLocation implements InternalLongLocation { 335 public static class LongFieldLocation extends MethodHandleFieldLocation implements InternalLongLocation {
316 public LongFieldLocation(int index, MethodHandle getter, MethodHandle setter) { 336 public LongFieldLocation(int index, MethodHandle getter, MethodHandle setter) {
383 @Override 403 @Override
384 public final int primitiveFieldCount() { 404 public final int primitiveFieldCount() {
385 return LONG_SIZE; 405 return LONG_SIZE;
386 } 406 }
387 407
388 public Class<Long> getType() { 408 public final Class<Long> getType() {
389 return long.class; 409 return long.class;
410 }
411
412 @Override
413 public final void accept(LocationVisitor locationVisitor) {
414 locationVisitor.visitPrimitiveField(getIndex(), LONG_SIZE);
390 } 415 }
391 } 416 }
392 417
393 public static class LongLocationDecorator extends PrimitiveLocationDecorator implements InternalLongLocation { 418 public static class LongLocationDecorator extends PrimitiveLocationDecorator implements InternalLongLocation {
394 protected final boolean allowInt; 419 protected final boolean allowInt;
478 @Override 503 @Override
479 public final int primitiveFieldCount() { 504 public final int primitiveFieldCount() {
480 return LONG_SIZE; 505 return LONG_SIZE;
481 } 506 }
482 507
483 public Class<Long> getType() { 508 public final Class<Long> getType() {
484 return long.class; 509 return long.class;
510 }
511
512 @Override
513 public final void accept(LocationVisitor locationVisitor) {
514 locationVisitor.visitPrimitiveField(getIndex(), LONG_SIZE);
485 } 515 }
486 } 516 }
487 517
488 public abstract static class PrimitiveLocationDecorator extends LocationImpl { 518 public abstract static class PrimitiveLocationDecorator extends LocationImpl {
489 private final InternalLongLocation longLocation; 519 private final InternalLongLocation longLocation;
518 } 548 }
519 549
520 @Override 550 @Override
521 public final int primitiveArrayCount() { 551 public final int primitiveArrayCount() {
522 return ((LocationImpl) longLocation).primitiveArrayCount(); 552 return ((LocationImpl) longLocation).primitiveArrayCount();
553 }
554
555 @Override
556 public final void accept(LocationVisitor locationVisitor) {
557 ((LocationImpl) longLocation).accept(locationVisitor);
523 } 558 }
524 } 559 }
525 560
526 public static class IntLocationDecorator extends PrimitiveLocationDecorator implements IntLocation { 561 public static class IntLocationDecorator extends PrimitiveLocationDecorator implements IntLocation {
527 public IntLocationDecorator(InternalLongLocation longLocation) { 562 public IntLocationDecorator(InternalLongLocation longLocation) {