Mercurial > hg > graal-jvmci-8
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) { |