public abstract class com.oracle.truffle.object.LayoutStrategy
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.truffle.object.LayoutStrategy
super_class: java.lang.Object
{
static final boolean $assertionsDisabled;
descriptor: Z
flags: (0x1018) ACC_STATIC, ACC_FINAL, ACC_SYNTHETIC
static void <clinit>();
descriptor: ()V
flags: (0x0008) ACC_STATIC
Code:
stack=1, locals=0, args_size=0
0: ldc Lcom/oracle/truffle/object/LayoutStrategy;
invokevirtual java.lang.Class.desiredAssertionStatus:()Z
ifne 1
iconst_1
goto 2
StackMap locals:
StackMap stack:
1: iconst_0
StackMap locals:
StackMap stack: int
2: putstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>();
descriptor: ()V
flags: (0x0004) ACC_PROTECTED
Code:
stack=1, locals=1, args_size=1
start local 0 0: aload 0
invokespecial java.lang.Object.<init>:()V
1: return
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/object/LayoutStrategy;
protected final com.oracle.truffle.api.object.LocationFactory getDefaultLocationFactory();
descriptor: ()Lcom/oracle/truffle/api/object/LocationFactory;
flags: (0x0014) ACC_PROTECTED, ACC_FINAL
Code:
stack=3, locals=1, args_size=1
start local 0 0: aload 0
lconst_0
invokevirtual com.oracle.truffle.object.LayoutStrategy.getDefaultLocationFactory:(J)Lcom/oracle/truffle/api/object/LocationFactory;
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/object/LayoutStrategy;
protected abstract com.oracle.truffle.api.object.LocationFactory getDefaultLocationFactory(long);
descriptor: (J)Lcom/oracle/truffle/api/object/LocationFactory;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
MethodParameters:
Name Flags
putFlags
protected abstract int getLocationOrdinal(com.oracle.truffle.api.object.Location);
descriptor: (Lcom/oracle/truffle/api/object/Location;)I
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
MethodParameters:
Name Flags
location
protected abstract boolean updateShape(com.oracle.truffle.api.object.DynamicObject);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;)Z
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
MethodParameters:
Name Flags
object
protected abstract com.oracle.truffle.object.ShapeImpl ensureValid(com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
MethodParameters:
Name Flags
newShape
protected abstract com.oracle.truffle.object.ShapeImpl ensureSpace(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Location);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0404) ACC_PROTECTED, ACC_ABSTRACT
MethodParameters:
Name Flags
shape
location
public abstract com.oracle.truffle.object.ShapeImpl$BaseAllocator createAllocator(com.oracle.truffle.object.LayoutImpl);
descriptor: (Lcom/oracle/truffle/object/LayoutImpl;)Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
MethodParameters:
Name Flags
shape
public abstract com.oracle.truffle.object.ShapeImpl$BaseAllocator createAllocator(com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
MethodParameters:
Name Flags
shape
protected com.oracle.truffle.object.ShapeImpl defineProperty(com.oracle.truffle.object.ShapeImpl, java.lang.Object, java.lang.Object, int, com.oracle.truffle.api.object.LocationFactory);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=9, locals=8, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
astore 6
start local 6 1: aload 6
invokevirtual com.oracle.truffle.object.ShapeImpl.isValid:()Z
ifne 3
2: aload 0
aload 6
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureValid:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
astore 6
3: StackMap locals: com.oracle.truffle.object.ShapeImpl
StackMap stack:
aload 6
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
astore 7
start local 7 4: aload 0
aload 6
aload 2
aload 3
iload 4
aload 5
aload 7
lconst_0
invokevirtual com.oracle.truffle.object.LayoutStrategy.defineProperty:(Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;Lcom/oracle/truffle/api/object/Property;J)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 5 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 5 2 key Ljava/lang/Object;
0 5 3 value Ljava/lang/Object;
0 5 4 flags I
0 5 5 locationFactory Lcom/oracle/truffle/api/object/LocationFactory;
1 5 6 oldShape Lcom/oracle/truffle/object/ShapeImpl;
4 5 7 existing Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
shape
key
value
flags
locationFactory
protected com.oracle.truffle.object.ShapeImpl defineProperty(com.oracle.truffle.object.ShapeImpl, java.lang.Object, java.lang.Object, int, com.oracle.truffle.api.object.LocationFactory, com.oracle.truffle.api.object.Property, long);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;Lcom/oracle/truffle/api/object/Property;J)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=12, args_size=8
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 start local 7 0: aload 6
ifnonnull 6
1: aload 5
aload 1
aload 3
invokeinterface com.oracle.truffle.api.object.LocationFactory.createLocation:(Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Location;
astore 9
start local 9 2: aload 2
aload 9
iload 4
invokestatic com.oracle.truffle.api.object.Property.create:(Ljava/lang/Object;Lcom/oracle/truffle/api/object/Location;I)Lcom/oracle/truffle/api/object/Property;
astore 10
start local 10 3: lload 7
invokestatic com.oracle.truffle.object.Flags.isSeparateShape:(J)Z
ifeq 5
4: aload 0
aload 1
invokevirtual com.oracle.truffle.object.LayoutStrategy.createSeparateShape:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
aload 10
invokevirtual com.oracle.truffle.object.ShapeImpl.addProperty:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
5: StackMap locals: com.oracle.truffle.api.object.Location com.oracle.truffle.api.object.Property
StackMap stack:
aload 1
aload 10
invokevirtual com.oracle.truffle.object.ShapeImpl.addProperty:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 10 end local 9 6: StackMap locals:
StackMap stack:
aload 6
invokevirtual com.oracle.truffle.api.object.Property.getFlags:()I
iload 4
if_icmpne 10
7: aload 6
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
aload 3
invokevirtual com.oracle.truffle.api.object.Location.canSet:(Ljava/lang/Object;)Z
ifeq 9
8: aload 1
areturn
9: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 6
aload 3
aload 5
lload 7
invokevirtual com.oracle.truffle.object.LayoutStrategy.definePropertyGeneralize:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Lcom/oracle/truffle/api/object/LocationFactory;J)Lcom/oracle/truffle/object/ShapeImpl;
areturn
10: StackMap locals:
StackMap stack:
aload 6
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
astore 9
start local 9 11: aload 9
aload 3
invokevirtual com.oracle.truffle.api.object.Location.canSet:(Ljava/lang/Object;)Z
ifeq 14
12: aload 9
astore 10
start local 10 13: goto 15
end local 10 14: StackMap locals: com.oracle.truffle.api.object.Location
StackMap stack:
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
aload 3
aload 9
lload 7
invokevirtual com.oracle.truffle.object.ShapeImpl$BaseAllocator.locationForValueUpcast:(Ljava/lang/Object;Lcom/oracle/truffle/api/object/Location;J)Lcom/oracle/truffle/api/object/Location;
astore 10
start local 10 15: StackMap locals: com.oracle.truffle.api.object.Location
StackMap stack:
aload 6
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
aload 10
iload 4
invokestatic com.oracle.truffle.api.object.Property.create:(Ljava/lang/Object;Lcom/oracle/truffle/api/object/Location;I)Lcom/oracle/truffle/api/object/Property;
astore 11
start local 11 16: aload 1
aload 6
invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
17: aload 0
aload 1
aload 6
aload 11
invokevirtual com.oracle.truffle.object.LayoutStrategy.replaceProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 11 end local 10 end local 9 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 18 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 18 1 oldShape Lcom/oracle/truffle/object/ShapeImpl;
0 18 2 key Ljava/lang/Object;
0 18 3 value Ljava/lang/Object;
0 18 4 propertyFlags I
0 18 5 locationFactory Lcom/oracle/truffle/api/object/LocationFactory;
0 18 6 existing Lcom/oracle/truffle/api/object/Property;
0 18 7 putFlags J
2 6 9 location Lcom/oracle/truffle/api/object/Location;
3 6 10 property Lcom/oracle/truffle/api/object/Property;
11 18 9 oldLocation Lcom/oracle/truffle/api/object/Location;
13 14 10 newLocation Lcom/oracle/truffle/api/object/Location;
15 18 10 newLocation Lcom/oracle/truffle/api/object/Location;
16 18 11 newProperty Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
oldShape
key
value
propertyFlags
locationFactory
existing
putFlags
protected com.oracle.truffle.object.ShapeImpl definePropertyGeneralize(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property, java.lang.Object, com.oracle.truffle.api.object.LocationFactory, long);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Lcom/oracle/truffle/api/object/LocationFactory;J)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=8, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: lload 5
invokestatic com.oracle.truffle.object.Flags.isSeparateShape:(J)Z
ifeq 4
1: aload 2
aload 4
aload 1
aload 3
invokeinterface com.oracle.truffle.api.object.LocationFactory.createLocation:(Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Location;
invokevirtual com.oracle.truffle.api.object.Property.relocate:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/api/object/Property;
astore 7
start local 7 2: aload 1
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
3: aload 0
aload 1
aload 2
aload 7
invokevirtual com.oracle.truffle.object.LayoutStrategy.separateReplaceProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 7 4: StackMap locals:
StackMap stack:
aload 2
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
invokevirtual com.oracle.truffle.api.object.Location.isValue:()Z
ifeq 8
5: aload 2
aload 4
aload 1
aload 3
invokeinterface com.oracle.truffle.api.object.LocationFactory.createLocation:(Lcom/oracle/truffle/api/object/Shape;Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Location;
invokevirtual com.oracle.truffle.api.object.Property.relocate:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/api/object/Property;
astore 7
start local 7 6: aload 1
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
7: aload 0
aload 1
aload 2
aload 7
invokevirtual com.oracle.truffle.object.LayoutStrategy.directReplaceProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 7 8: StackMap locals:
StackMap stack:
aload 0
aload 2
aload 3
aload 1
aload 1
lload 5
invokevirtual com.oracle.truffle.object.LayoutStrategy.generalizeProperty:(Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;J)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 9 1 oldShape Lcom/oracle/truffle/object/ShapeImpl;
0 9 2 oldProperty Lcom/oracle/truffle/api/object/Property;
0 9 3 value Ljava/lang/Object;
0 9 4 locationFactory Lcom/oracle/truffle/api/object/LocationFactory;
0 9 5 putFlags J
2 4 7 newProperty Lcom/oracle/truffle/api/object/Property;
6 8 7 newProperty Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
oldShape
oldProperty
value
locationFactory
putFlags
protected com.oracle.truffle.object.ShapeImpl generalizeProperty(com.oracle.truffle.api.object.Property, java.lang.Object, com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=5, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 0
aload 1
aload 2
aload 3
aload 4
lconst_0
invokevirtual com.oracle.truffle.object.LayoutStrategy.generalizeProperty:(Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;J)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 1 1 oldProperty Lcom/oracle/truffle/api/object/Property;
0 1 2 value Ljava/lang/Object;
0 1 3 currentShape Lcom/oracle/truffle/object/ShapeImpl;
0 1 4 nextShape Lcom/oracle/truffle/object/ShapeImpl;
RuntimeVisibleAnnotations:
java.lang.Deprecated()
MethodParameters:
Name Flags
oldProperty
value
currentShape
nextShape
protected com.oracle.truffle.object.ShapeImpl generalizeProperty(com.oracle.truffle.api.object.Property, java.lang.Object, com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.ShapeImpl, long);
descriptor: (Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;J)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=10, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 1
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
astore 7
start local 7 1: aload 3
invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
aload 2
aload 7
lload 5
invokevirtual com.oracle.truffle.object.ShapeImpl$BaseAllocator.locationForValueUpcast:(Ljava/lang/Object;Lcom/oracle/truffle/api/object/Location;J)Lcom/oracle/truffle/api/object/Location;
astore 8
start local 8 2: aload 1
aload 8
invokevirtual com.oracle.truffle.api.object.Property.relocate:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/api/object/Property;
astore 9
start local 9 3: aload 4
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
4: aload 0
aload 4
aload 1
aload 9
invokevirtual com.oracle.truffle.object.LayoutStrategy.replaceProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 9 end local 8 end local 7 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 5 1 oldProperty Lcom/oracle/truffle/api/object/Property;
0 5 2 value Ljava/lang/Object;
0 5 3 currentShape Lcom/oracle/truffle/object/ShapeImpl;
0 5 4 nextShape Lcom/oracle/truffle/object/ShapeImpl;
0 5 5 putFlags J
1 5 7 oldLocation Lcom/oracle/truffle/api/object/Location;
2 5 8 newLocation Lcom/oracle/truffle/api/object/Location;
3 5 9 newProperty Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
oldProperty
value
currentShape
nextShape
putFlags
protected void propertySetFallback(com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 4
astore 5
start local 5 1: aload 0
aload 5
aload 1
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
aload 3
aload 1
invokevirtual com.oracle.truffle.api.object.Property.getFlags:()I
aload 0
invokevirtual com.oracle.truffle.object.LayoutStrategy.getDefaultLocationFactory:()Lcom/oracle/truffle/api/object/LocationFactory;
invokevirtual com.oracle.truffle.object.LayoutStrategy.defineProperty:(Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;)Lcom/oracle/truffle/object/ShapeImpl;
astore 6
start local 6 2: aload 6
aload 1
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
astore 7
start local 7 3: aload 7
aload 2
aload 3
aload 5
aload 6
invokevirtual com.oracle.truffle.api.object.Property.setSafe:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/api/object/Shape;Lcom/oracle/truffle/api/object/Shape;)V
4: return
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 5 1 property Lcom/oracle/truffle/api/object/Property;
0 5 2 store Lcom/oracle/truffle/api/object/DynamicObject;
0 5 3 value Ljava/lang/Object;
0 5 4 currentShape Lcom/oracle/truffle/object/ShapeImpl;
1 5 5 oldShape Lcom/oracle/truffle/object/ShapeImpl;
2 5 6 newShape Lcom/oracle/truffle/object/ShapeImpl;
3 5 7 newProperty Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
property
store
value
currentShape
protected void propertySetWithShapeFallback(com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.DynamicObject, java.lang.Object, com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=9, args_size=6
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 0: aload 4
astore 6
start local 6 1: aload 0
aload 1
aload 3
aload 6
aload 5
invokevirtual com.oracle.truffle.object.LayoutStrategy.generalizeProperty:(Lcom/oracle/truffle/api/object/Property;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
astore 7
start local 7 2: aload 7
aload 1
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
astore 8
start local 8 3: aload 8
aload 2
aload 3
aload 6
aload 7
invokevirtual com.oracle.truffle.api.object.Property.setSafe:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/api/object/Shape;Lcom/oracle/truffle/api/object/Shape;)V
4: return
end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 5 1 property Lcom/oracle/truffle/api/object/Property;
0 5 2 store Lcom/oracle/truffle/api/object/DynamicObject;
0 5 3 value Ljava/lang/Object;
0 5 4 currentShape Lcom/oracle/truffle/object/ShapeImpl;
0 5 5 nextShape Lcom/oracle/truffle/object/ShapeImpl;
1 5 6 oldShape Lcom/oracle/truffle/object/ShapeImpl;
2 5 7 newNextShape Lcom/oracle/truffle/object/ShapeImpl;
3 5 8 newProperty Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
property
store
value
currentShape
nextShape
protected void objectDefineProperty(com.oracle.truffle.object.DynamicObjectImpl, java.lang.Object, java.lang.Object, int, com.oracle.truffle.api.object.LocationFactory, com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/object/DynamicObjectImpl;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;Lcom/oracle/truffle/object/ShapeImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=9, locals=11, args_size=7
start local 0 start local 1 start local 2 start local 3 start local 4 start local 5 start local 6 0: aload 6
astore 7
start local 7 1: aload 7
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
astore 8
start local 8 2: aload 0
aload 7
aload 2
aload 3
iload 4
aload 5
aload 8
lconst_0
invokevirtual com.oracle.truffle.object.LayoutStrategy.defineProperty:(Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Ljava/lang/Object;ILcom/oracle/truffle/api/object/LocationFactory;Lcom/oracle/truffle/api/object/Property;J)Lcom/oracle/truffle/object/ShapeImpl;
astore 9
start local 9 3: aload 7
aload 9
if_acmpne 7
4: getstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
ifne 5
aload 8
aload 9
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.api.object.Property com.oracle.truffle.object.ShapeImpl
StackMap stack:
aload 8
aload 1
aload 3
aload 7
invokevirtual com.oracle.truffle.api.object.Property.setSafe:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/api/object/Shape;)V
6: goto 9
7: StackMap locals:
StackMap stack:
aload 9
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
astore 10
start local 10 8: aload 10
aload 1
aload 3
aload 7
aload 9
invokevirtual com.oracle.truffle.api.object.Property.setSafe:(Lcom/oracle/truffle/api/object/DynamicObject;Ljava/lang/Object;Lcom/oracle/truffle/api/object/Shape;Lcom/oracle/truffle/api/object/Shape;)V
end local 10 9: StackMap locals:
StackMap stack:
return
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 10 1 object Lcom/oracle/truffle/object/DynamicObjectImpl;
0 10 2 key Ljava/lang/Object;
0 10 3 value Ljava/lang/Object;
0 10 4 flags I
0 10 5 locationFactory Lcom/oracle/truffle/api/object/LocationFactory;
0 10 6 currentShape Lcom/oracle/truffle/object/ShapeImpl;
1 10 7 oldShape Lcom/oracle/truffle/object/ShapeImpl;
2 10 8 oldProperty Lcom/oracle/truffle/api/object/Property;
3 10 9 newShape Lcom/oracle/truffle/object/ShapeImpl;
8 9 10 newProperty Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
object
key
value
flags
locationFactory
currentShape
protected void objectRemoveProperty(com.oracle.truffle.object.DynamicObjectImpl, com.oracle.truffle.api.object.Property, com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/object/DynamicObjectImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/ShapeImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=6, locals=6, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 3
astore 4
start local 4 1: aload 4
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.removeProperty:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
astore 5
start local 5 2: aload 0
aload 1
aload 4
aload 5
aload 4
aload 5
invokestatic com.oracle.truffle.object.ShapeImpl.findCommonAncestor:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
invokevirtual com.oracle.truffle.object.LayoutStrategy.reshapeAfterDelete:(Lcom/oracle/truffle/object/DynamicObjectImpl;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;)V
3: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 4 1 object Lcom/oracle/truffle/object/DynamicObjectImpl;
0 4 2 property Lcom/oracle/truffle/api/object/Property;
0 4 3 currentShape Lcom/oracle/truffle/object/ShapeImpl;
1 4 4 oldShape Lcom/oracle/truffle/object/ShapeImpl;
2 4 5 newShape Lcom/oracle/truffle/object/ShapeImpl;
MethodParameters:
Name Flags
object
property
currentShape
protected void reshapeAfterDelete(com.oracle.truffle.object.DynamicObjectImpl, com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/object/DynamicObjectImpl;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/ShapeImpl;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.isShared:()Z
ifeq 3
1: aload 1
aload 2
aload 3
invokevirtual com.oracle.truffle.object.DynamicObjectImpl.setShapeAndGrow:(Lcom/oracle/truffle/api/object/Shape;Lcom/oracle/truffle/api/object/Shape;)V
2: return
3: StackMap locals:
StackMap stack:
aload 1
aload 2
invokevirtual com.oracle.truffle.object.DynamicObjectImpl.cloneWithShape:(Lcom/oracle/truffle/api/object/Shape;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 5
start local 5 4: aload 1
aload 3
invokevirtual com.oracle.truffle.object.DynamicObjectImpl.setShapeAndResize:(Lcom/oracle/truffle/api/object/Shape;)V
5: aload 1
aload 5
aload 4
invokevirtual com.oracle.truffle.object.DynamicObjectImpl.copyProperties:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/api/object/Shape;)V
6: return
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 7 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 7 1 object Lcom/oracle/truffle/object/DynamicObjectImpl;
0 7 2 oldShape Lcom/oracle/truffle/object/ShapeImpl;
0 7 3 newShape Lcom/oracle/truffle/object/ShapeImpl;
0 7 4 deletedParentShape Lcom/oracle/truffle/object/ShapeImpl;
4 7 5 original Lcom/oracle/truffle/api/object/DynamicObject;
MethodParameters:
Name Flags
object
oldShape
newShape
deletedParentShape
protected com.oracle.truffle.object.ShapeImpl replaceProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.Property);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
invokevirtual com.oracle.truffle.object.LayoutStrategy.directReplaceProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 1 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 1 2 oldProperty Lcom/oracle/truffle/api/object/Property;
0 1 3 newProperty Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
shape
oldProperty
newProperty
protected com.oracle.truffle.object.ShapeImpl removeProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=6, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.isShared:()Z
istore 3
start local 3 1: new com.oracle.truffle.object.Transition$RemovePropertyTransition
dup
aload 2
iload 3
invokespecial com.oracle.truffle.object.Transition$RemovePropertyTransition.<init>:(Lcom/oracle/truffle/api/object/Property;Z)V
astore 4
start local 4 2: aload 1
aload 4
invokevirtual com.oracle.truffle.object.ShapeImpl.queryTransition:(Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
astore 5
start local 5 3: aload 5
ifnull 5
4: aload 0
aload 5
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureValid:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
5: StackMap locals: int com.oracle.truffle.object.Transition$RemovePropertyTransition com.oracle.truffle.object.ShapeImpl
StackMap stack:
iload 3
ifeq 7
6: aload 1
aload 2
aload 4
invokestatic com.oracle.truffle.object.LayoutStrategy.directRemoveProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/Transition$RemovePropertyTransition;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
7: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
aload 4
invokevirtual com.oracle.truffle.object.LayoutStrategy.indirectRemoveProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/Transition$RemovePropertyTransition;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 8 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 8 2 property Lcom/oracle/truffle/api/object/Property;
1 8 3 direct Z
2 8 4 transition Lcom/oracle/truffle/object/Transition$RemovePropertyTransition;
3 8 5 cachedShape Lcom/oracle/truffle/object/ShapeImpl;
MethodParameters:
Name Flags
shape
property
private com.oracle.truffle.object.ShapeImpl indirectRemoveProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property, com.oracle.truffle.object.Transition$RemovePropertyTransition);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/Transition$RemovePropertyTransition;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0002) ACC_PRIVATE
Code:
stack=4, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
aload 2
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokestatic com.oracle.truffle.object.LayoutStrategy.getShapeFromProperty:(Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
astore 4
start local 4 1: aload 4
ifnonnull 3
2: aconst_null
areturn
3: StackMap locals: com.oracle.truffle.object.ShapeImpl
StackMap stack:
new java.util.ArrayList
dup
invokespecial java.util.ArrayList.<init>:()V
astore 5
start local 5 4: aload 1
astore 6
start local 6 5: goto 12
6: StackMap locals: java.util.List com.oracle.truffle.object.ShapeImpl
StackMap stack:
aload 6
invokevirtual com.oracle.truffle.object.ShapeImpl.getTransitionFromParent:()Lcom/oracle/truffle/object/Transition;
astore 7
start local 7 7: aload 7
instanceof com.oracle.truffle.object.Transition$DirectReplacePropertyTransition
ifeq 10
8: aload 7
checkcast com.oracle.truffle.object.Transition$DirectReplacePropertyTransition
invokevirtual com.oracle.truffle.object.Transition$DirectReplacePropertyTransition.getPropertyBefore:()Lcom/oracle/truffle/api/object/Property;
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
aload 2
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 10
9: goto 11
10: StackMap locals: com.oracle.truffle.object.Transition
StackMap stack:
aload 5
aload 7
invokeinterface java.util.List.add:(Ljava/lang/Object;)Z
pop
end local 7 11: StackMap locals:
StackMap stack:
aload 6
getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
astore 6
StackMap locals:
StackMap stack:
12: aload 6
aload 4
if_acmpne 6
end local 6 13: aload 4
getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
astore 6
start local 6 14: aload 5
aload 5
invokeinterface java.util.List.size:()I
invokeinterface java.util.List.listIterator:(I)Ljava/util/ListIterator;
astore 7
start local 7 15: goto 18
16: StackMap locals: java.util.ListIterator
StackMap stack:
aload 7
invokeinterface java.util.ListIterator.previous:()Ljava/lang/Object;
checkcast com.oracle.truffle.object.Transition
astore 8
start local 8 17: aload 0
aload 6
aload 8
iconst_1
invokevirtual com.oracle.truffle.object.LayoutStrategy.applyTransition:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/Transition;Z)Lcom/oracle/truffle/object/ShapeImpl;
astore 6
end local 8 18: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.ListIterator.hasPrevious:()Z
ifne 16
end local 7 19: aload 1
aload 3
aload 6
invokevirtual com.oracle.truffle.object.ShapeImpl.addIndirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
20: aload 6
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 21 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 21 2 property Lcom/oracle/truffle/api/object/Property;
0 21 3 transition Lcom/oracle/truffle/object/Transition$RemovePropertyTransition;
1 21 4 owningShape Lcom/oracle/truffle/object/ShapeImpl;
4 21 5 transitionList Ljava/util/List<Lcom/oracle/truffle/object/Transition;>;
5 13 6 current Lcom/oracle/truffle/object/ShapeImpl;
7 11 7 transitionFromParent Lcom/oracle/truffle/object/Transition;
14 21 6 newShape Lcom/oracle/truffle/object/ShapeImpl;
15 19 7 iterator Ljava/util/ListIterator<Lcom/oracle/truffle/object/Transition;>;
17 18 8 previous Lcom/oracle/truffle/object/Transition;
MethodParameters:
Name Flags
shape
property
transition
private static com.oracle.truffle.object.ShapeImpl directRemoveProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property, com.oracle.truffle.object.Transition$RemovePropertyTransition);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/object/Transition$RemovePropertyTransition;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=9, locals=5, args_size=3
start local 0 start local 1 start local 2 0: aload 0
invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyMap:()Lcom/oracle/truffle/object/PropertyMap;
aload 1
invokevirtual com.oracle.truffle.object.PropertyMap.removeCopy:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/PropertyMap;
astore 3
start local 3 1: aload 0
aload 0
invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
aload 0
getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
aload 0
aload 0
getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
aload 3
aload 2
aload 0
invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
aload 0
getfield com.oracle.truffle.object.ShapeImpl.flags:I
invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
astore 4
start local 4 2: aload 0
aload 2
aload 4
invokevirtual com.oracle.truffle.object.ShapeImpl.addDirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
3: aload 4
areturn
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 shape Lcom/oracle/truffle/object/ShapeImpl;
0 4 1 property Lcom/oracle/truffle/api/object/Property;
0 4 2 transition Lcom/oracle/truffle/object/Transition$RemovePropertyTransition;
1 4 3 newPropertyMap Lcom/oracle/truffle/object/PropertyMap;
2 4 4 newShape Lcom/oracle/truffle/object/ShapeImpl;
MethodParameters:
Name Flags
shape
property
transition
protected com.oracle.truffle.object.ShapeImpl directReplaceProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.Property);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=4, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 0
aload 1
aload 2
aload 3
iconst_1
invokevirtual com.oracle.truffle.object.LayoutStrategy.directReplaceProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;Z)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 1 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 1 2 oldProperty Lcom/oracle/truffle/api/object/Property;
0 1 3 newProperty Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
shape
oldProperty
newProperty
protected com.oracle.truffle.object.ShapeImpl directReplaceProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.Property, boolean);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;Z)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=9, locals=10, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
ifne 1
aload 2
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
aload 3
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 2
aload 3
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 3
2: aload 1
areturn
3: StackMap locals:
StackMap stack:
aload 1
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
4: new com.oracle.truffle.object.Transition$DirectReplacePropertyTransition
dup
aload 2
aload 3
invokespecial com.oracle.truffle.object.Transition$DirectReplacePropertyTransition.<init>:(Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)V
astore 5
start local 5 5: aload 1
aload 5
invokevirtual com.oracle.truffle.object.ShapeImpl.queryTransition:(Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
astore 6
start local 6 6: aload 6
ifnull 10
7: iload 4
ifeq 8
aload 0
aload 6
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureValid:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
goto 9
StackMap locals: com.oracle.truffle.object.Transition com.oracle.truffle.object.ShapeImpl
StackMap stack:
8: aload 6
StackMap locals:
StackMap stack: com.oracle.truffle.object.ShapeImpl
9: areturn
10: StackMap locals:
StackMap stack:
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyMap:()Lcom/oracle/truffle/object/PropertyMap;
aload 2
aload 3
invokevirtual com.oracle.truffle.object.PropertyMap.replaceCopy:(Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/PropertyMap;
astore 7
start local 7 11: aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
aload 3
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
invokevirtual com.oracle.truffle.object.ShapeImpl$BaseAllocator.addLocation:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
astore 8
start local 8 12: aload 1
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
aload 1
getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
aload 1
aload 1
getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
aload 7
aload 5
aload 8
aload 1
getfield com.oracle.truffle.object.ShapeImpl.flags:I
invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
astore 9
start local 9 13: getstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
ifne 14
aload 3
aload 9
aload 3
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
invokevirtual com.oracle.truffle.api.object.Property.isSame:(Lcom/oracle/truffle/api/object/Property;)Z
ifne 14
new java.lang.AssertionError
dup
aload 9
aload 3
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
14: StackMap locals: com.oracle.truffle.object.PropertyMap com.oracle.truffle.object.ShapeImpl$BaseAllocator com.oracle.truffle.object.ShapeImpl
StackMap stack:
aload 1
aload 5
aload 9
invokevirtual com.oracle.truffle.object.ShapeImpl.addDirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
15: aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.isValid:()Z
ifne 20
16: aload 9
invokevirtual com.oracle.truffle.object.ShapeImpl.invalidateValidAssumption:()V
17: iload 4
ifeq 18
aload 0
aload 9
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureValid:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
goto 19
StackMap locals:
StackMap stack:
18: aload 9
StackMap locals:
StackMap stack: com.oracle.truffle.object.ShapeImpl
19: areturn
20: StackMap locals:
StackMap stack:
aload 9
areturn
end local 9 end local 8 end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 21 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 21 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 21 2 oldProperty Lcom/oracle/truffle/api/object/Property;
0 21 3 newProperty Lcom/oracle/truffle/api/object/Property;
0 21 4 ensureValid Z
5 21 5 replacePropertyTransition Lcom/oracle/truffle/object/Transition;
6 21 6 cachedShape Lcom/oracle/truffle/object/ShapeImpl;
11 21 7 newPropertyMap Lcom/oracle/truffle/object/PropertyMap;
12 21 8 allocator Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
13 21 9 newShape Lcom/oracle/truffle/object/ShapeImpl;
MethodParameters:
Name Flags
shape
oldProperty
newProperty
ensureValid
protected com.oracle.truffle.object.ShapeImpl separateReplaceProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property, com.oracle.truffle.api.object.Property);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=9, locals=9, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 1
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
aload 1
getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
aconst_null
aload 1
getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
invokestatic com.oracle.truffle.object.PropertyMap.empty:()Lcom/oracle/truffle/object/PropertyMap;
aconst_null
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
invokevirtual com.oracle.truffle.object.LayoutImpl.createAllocator:()Lcom/oracle/truffle/api/object/Shape$Allocator;
aload 1
getfield com.oracle.truffle.object.ShapeImpl.flags:I
invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
astore 4
start local 4 1: aload 4
astore 5
start local 5 2: iconst_0
istore 6
start local 6 3: aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyMap:()Lcom/oracle/truffle/object/PropertyMap;
invokevirtual com.oracle.truffle.object.PropertyMap.orderedValueIterator:()Ljava/util/Iterator;
astore 7
start local 7 4: goto 10
5: StackMap locals: com.oracle.truffle.object.LayoutStrategy com.oracle.truffle.object.ShapeImpl com.oracle.truffle.api.object.Property com.oracle.truffle.api.object.Property com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl int java.util.Iterator
StackMap stack:
aload 7
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.api.object.Property
astore 8
start local 8 6: iload 6
ifne 9
aload 8
aload 2
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 9
7: aload 3
astore 8
8: iconst_1
istore 6
9: StackMap locals: com.oracle.truffle.api.object.Property
StackMap stack:
aload 5
aload 3
invokevirtual com.oracle.truffle.object.ShapeImpl.addProperty:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
astore 5
end local 8 10: StackMap locals:
StackMap stack:
aload 7
invokeinterface java.util.Iterator.hasNext:()Z
ifne 5
end local 7 11: getstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
ifne 12
iload 6
ifne 12
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
12: StackMap locals:
StackMap stack:
getstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
ifne 13
aload 5
invokevirtual com.oracle.truffle.object.ShapeImpl.isValid:()Z
ifne 13
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
13: StackMap locals:
StackMap stack:
aload 5
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 14 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 14 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 14 2 oldProperty Lcom/oracle/truffle/api/object/Property;
0 14 3 newProperty Lcom/oracle/truffle/api/object/Property;
1 14 4 newRoot Lcom/oracle/truffle/object/ShapeImpl;
2 14 5 newShape Lcom/oracle/truffle/object/ShapeImpl;
3 14 6 found Z
4 11 7 iterator Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;
6 10 8 p Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
shape
oldProperty
newProperty
protected com.oracle.truffle.object.ShapeImpl createSeparateShape(com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=9, locals=6, args_size=2
start local 0 start local 1 0: aload 1
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
aload 1
getfield com.oracle.truffle.object.ShapeImpl.sharedData:Ljava/lang/Object;
aconst_null
aload 1
getfield com.oracle.truffle.object.ShapeImpl.objectType:Ljava/lang/Object;
invokestatic com.oracle.truffle.object.PropertyMap.empty:()Lcom/oracle/truffle/object/PropertyMap;
aconst_null
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
invokevirtual com.oracle.truffle.object.LayoutImpl.createAllocator:()Lcom/oracle/truffle/api/object/Shape$Allocator;
aload 1
getfield com.oracle.truffle.object.ShapeImpl.flags:I
invokevirtual com.oracle.truffle.object.ShapeImpl.createShape:(Lcom/oracle/truffle/api/object/Layout;Ljava/lang/Object;Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;Lcom/oracle/truffle/object/PropertyMap;Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/api/object/Shape$Allocator;I)Lcom/oracle/truffle/object/ShapeImpl;
astore 2
start local 2 1: aload 2
astore 3
start local 3 2: aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getPropertyMap:()Lcom/oracle/truffle/object/PropertyMap;
invokevirtual com.oracle.truffle.object.PropertyMap.orderedValueIterator:()Ljava/util/Iterator;
astore 4
start local 4 3: goto 6
4: StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl java.util.Iterator
StackMap stack:
aload 4
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
checkcast com.oracle.truffle.api.object.Property
astore 5
start local 5 5: aload 3
aload 5
invokevirtual com.oracle.truffle.object.ShapeImpl.addProperty:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
astore 3
end local 5 6: StackMap locals:
StackMap stack:
aload 4
invokeinterface java.util.Iterator.hasNext:()Z
ifne 4
end local 4 7: getstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
ifne 8
aload 3
invokevirtual com.oracle.truffle.object.ShapeImpl.isValid:()Z
ifne 8
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
8: StackMap locals:
StackMap stack:
aload 3
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 9 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 9 1 shape Lcom/oracle/truffle/object/ShapeImpl;
1 9 2 newRoot Lcom/oracle/truffle/object/ShapeImpl;
2 9 3 newShape Lcom/oracle/truffle/object/ShapeImpl;
3 7 4 iterator Ljava/util/Iterator<Lcom/oracle/truffle/api/object/Property;>;
5 6 5 p Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
shape
protected com.oracle.truffle.object.ShapeImpl addProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
iconst_1
invokevirtual com.oracle.truffle.object.LayoutStrategy.addProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Z)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 1 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 1 2 property Lcom/oracle/truffle/api/object/Property;
MethodParameters:
Name Flags
shape
property
protected com.oracle.truffle.object.ShapeImpl addProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property, boolean);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Z)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: getstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
ifne 1
aload 1
aload 2
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.object.ShapeImpl.hasProperty:(Ljava/lang/Object;)Z
ifeq 1
new java.lang.AssertionError
dup
new java.lang.StringBuilder
dup
ldc "duplicate property "
invokespecial java.lang.StringBuilder.<init>:(Ljava/lang/String;)V
aload 2
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual java.lang.StringBuilder.append:(Ljava/lang/Object;)Ljava/lang/StringBuilder;
invokevirtual java.lang.StringBuilder.toString:()Ljava/lang/String;
invokespecial java.lang.AssertionError.<init>:(Ljava/lang/Object;)V
athrow
1: StackMap locals:
StackMap stack:
new com.oracle.truffle.object.Transition$AddPropertyTransition
dup
aload 2
invokespecial com.oracle.truffle.object.Transition$AddPropertyTransition.<init>:(Lcom/oracle/truffle/api/object/Property;)V
astore 4
start local 4 2: aload 1
aload 4
invokevirtual com.oracle.truffle.object.ShapeImpl.queryTransition:(Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
astore 5
start local 5 3: aload 5
ifnull 7
4: iload 3
ifeq 5
aload 0
aload 5
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureValid:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
goto 6
StackMap locals: com.oracle.truffle.object.Transition$AddPropertyTransition com.oracle.truffle.object.ShapeImpl
StackMap stack:
5: aload 5
StackMap locals:
StackMap stack: com.oracle.truffle.object.ShapeImpl
6: areturn
7: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureSpace:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/object/ShapeImpl;
astore 6
start local 6 8: aload 6
aload 4
invokestatic com.oracle.truffle.object.ShapeImpl.makeShapeWithAddedProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/Transition$AddPropertyTransition;)Lcom/oracle/truffle/object/ShapeImpl;
astore 7
start local 7 9: aload 6
aload 4
aload 7
invokevirtual com.oracle.truffle.object.ShapeImpl.addDirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
10: aload 6
invokevirtual com.oracle.truffle.object.ShapeImpl.isValid:()Z
ifne 15
11: aload 7
invokevirtual com.oracle.truffle.object.ShapeImpl.invalidateValidAssumption:()V
12: iload 3
ifeq 13
aload 0
aload 7
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureValid:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
goto 14
StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl
StackMap stack:
13: aload 7
StackMap locals:
StackMap stack: com.oracle.truffle.object.ShapeImpl
14: areturn
15: StackMap locals:
StackMap stack:
aload 7
areturn
end local 7 end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 16 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 16 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 16 2 property Lcom/oracle/truffle/api/object/Property;
0 16 3 ensureValid Z
2 16 4 addTransition Lcom/oracle/truffle/object/Transition$AddPropertyTransition;
3 16 5 cachedShape Lcom/oracle/truffle/object/ShapeImpl;
8 16 6 oldShape Lcom/oracle/truffle/object/ShapeImpl;
9 16 7 newShape Lcom/oracle/truffle/object/ShapeImpl;
MethodParameters:
Name Flags
shape
property
ensureValid
protected com.oracle.truffle.object.ShapeImpl applyTransition(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.object.Transition, boolean);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/Transition;Z)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=8, args_size=4
start local 0 start local 1 start local 2 start local 3 0: aload 2
instanceof com.oracle.truffle.object.Transition$AddPropertyTransition
ifeq 8
1: aload 2
checkcast com.oracle.truffle.object.Transition$AddPropertyTransition
invokevirtual com.oracle.truffle.object.Transition$AddPropertyTransition.getProperty:()Lcom/oracle/truffle/api/object/Property;
astore 4
start local 4 2: iload 3
ifeq 5
3: aload 1
aload 4
invokevirtual com.oracle.truffle.object.ShapeImpl.append:(Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
astore 5
start local 5 4: goto 7
end local 5 5: StackMap locals: com.oracle.truffle.api.object.Property
StackMap stack:
aload 1
aload 4
invokevirtual com.oracle.truffle.object.ShapeImpl.onPropertyTransition:(Lcom/oracle/truffle/api/object/Property;)V
6: aload 0
aload 1
aload 4
iconst_0
invokevirtual com.oracle.truffle.object.LayoutStrategy.addProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Z)Lcom/oracle/truffle/object/ShapeImpl;
astore 5
start local 5 7: StackMap locals: com.oracle.truffle.object.ShapeImpl
StackMap stack:
aload 5
areturn
end local 5 end local 4 8: StackMap locals:
StackMap stack:
aload 2
instanceof com.oracle.truffle.object.Transition$ObjectTypeTransition
ifeq 10
9: aload 1
aload 2
checkcast com.oracle.truffle.object.Transition$ObjectTypeTransition
invokevirtual com.oracle.truffle.object.Transition$ObjectTypeTransition.getObjectType:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.object.ShapeImpl.setDynamicType:(Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
10: StackMap locals:
StackMap stack:
aload 2
instanceof com.oracle.truffle.object.Transition$ObjectFlagsTransition
ifeq 12
11: aload 1
aload 2
checkcast com.oracle.truffle.object.Transition$ObjectFlagsTransition
invokevirtual com.oracle.truffle.object.Transition$ObjectFlagsTransition.getObjectFlags:()I
invokevirtual com.oracle.truffle.object.ShapeImpl.setFlags:(I)Lcom/oracle/truffle/object/ShapeImpl;
areturn
12: StackMap locals:
StackMap stack:
aload 2
instanceof com.oracle.truffle.object.Transition$ReservePrimitiveArrayTransition
ifeq 14
13: aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.reservePrimitiveExtensionArray:()Lcom/oracle/truffle/object/ShapeImpl;
areturn
14: StackMap locals:
StackMap stack:
aload 2
instanceof com.oracle.truffle.object.Transition$DirectReplacePropertyTransition
ifeq 26
15: aload 2
checkcast com.oracle.truffle.object.Transition$DirectReplacePropertyTransition
invokevirtual com.oracle.truffle.object.Transition$DirectReplacePropertyTransition.getPropertyBefore:()Lcom/oracle/truffle/api/object/Property;
astore 4
start local 4 16: aload 2
checkcast com.oracle.truffle.object.Transition$DirectReplacePropertyTransition
invokevirtual com.oracle.truffle.object.Transition$DirectReplacePropertyTransition.getPropertyAfter:()Lcom/oracle/truffle/api/object/Property;
astore 5
start local 5 17: iload 3
ifeq 25
18: aload 4
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
aload 5
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
invokevirtual com.oracle.truffle.api.object.Location.equals:(Ljava/lang/Object;)Z
istore 6
start local 6 19: aload 1
aload 4
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
invokevirtual com.oracle.truffle.object.ShapeImpl.getProperty:(Ljava/lang/Object;)Lcom/oracle/truffle/api/object/Property;
astore 4
20: iload 6
ifeq 23
21: aload 4
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
astore 7
start local 7 22: goto 24
end local 7 23: StackMap locals: com.oracle.truffle.api.object.Property com.oracle.truffle.api.object.Property int
StackMap stack:
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.allocator:()Lcom/oracle/truffle/object/ShapeImpl$BaseAllocator;
aload 5
invokevirtual com.oracle.truffle.api.object.Property.getLocation:()Lcom/oracle/truffle/api/object/Location;
invokevirtual com.oracle.truffle.object.ShapeImpl$BaseAllocator.moveLocation:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/api/object/Location;
astore 7
start local 7 24: StackMap locals: com.oracle.truffle.api.object.Location
StackMap stack:
aload 5
aload 7
invokevirtual com.oracle.truffle.api.object.Property.relocate:(Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/api/object/Property;
astore 5
end local 7 end local 6 25: StackMap locals:
StackMap stack:
aload 0
aload 1
aload 4
aload 5
iload 3
invokevirtual com.oracle.truffle.object.LayoutStrategy.directReplaceProperty:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;Lcom/oracle/truffle/api/object/Property;Z)Lcom/oracle/truffle/object/ShapeImpl;
areturn
end local 5 end local 4 26: StackMap locals:
StackMap stack:
new java.lang.UnsupportedOperationException
dup
aload 2
invokevirtual java.lang.Object.getClass:()Ljava/lang/Class;
invokevirtual java.lang.Class.getName:()Ljava/lang/String;
invokespecial java.lang.UnsupportedOperationException.<init>:(Ljava/lang/String;)V
athrow
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 27 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 27 1 shape Lcom/oracle/truffle/object/ShapeImpl;
0 27 2 transition Lcom/oracle/truffle/object/Transition;
0 27 3 append Z
2 8 4 property Lcom/oracle/truffle/api/object/Property;
4 5 5 newShape Lcom/oracle/truffle/object/ShapeImpl;
7 8 5 newShape Lcom/oracle/truffle/object/ShapeImpl;
16 26 4 oldProperty Lcom/oracle/truffle/api/object/Property;
17 26 5 newProperty Lcom/oracle/truffle/api/object/Property;
19 25 6 sameLocation Z
22 23 7 newLocation Lcom/oracle/truffle/api/object/Location;
24 25 7 newLocation Lcom/oracle/truffle/api/object/Location;
MethodParameters:
Name Flags
shape
transition
append
protected com.oracle.truffle.object.ShapeImpl addPrimitiveExtensionArray(com.oracle.truffle.object.ShapeImpl);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=7, args_size=2
start local 0 start local 1 0: aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.getLayout:()Lcom/oracle/truffle/object/LayoutImpl;
astore 2
start local 2 1: getstatic com.oracle.truffle.object.LayoutStrategy.$assertionsDisabled:Z
ifne 3
aload 2
invokevirtual com.oracle.truffle.object.LayoutImpl.hasPrimitiveExtensionArray:()Z
ifeq 2
aload 1
invokevirtual com.oracle.truffle.object.ShapeImpl.hasPrimitiveArray:()Z
ifeq 3
StackMap locals: com.oracle.truffle.object.LayoutImpl
StackMap stack:
2: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
3: StackMap locals:
StackMap stack:
new com.oracle.truffle.object.Transition$ReservePrimitiveArrayTransition
dup
invokespecial com.oracle.truffle.object.Transition$ReservePrimitiveArrayTransition.<init>:()V
astore 3
start local 3 4: aload 1
aload 3
invokevirtual com.oracle.truffle.object.ShapeImpl.queryTransition:(Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
astore 4
start local 4 5: aload 4
ifnull 7
6: aload 2
invokevirtual com.oracle.truffle.object.LayoutImpl.getStrategy:()Lcom/oracle/truffle/object/LayoutStrategy;
aload 4
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureValid:(Lcom/oracle/truffle/object/ShapeImpl;)Lcom/oracle/truffle/object/ShapeImpl;
areturn
7: StackMap locals: com.oracle.truffle.object.Transition com.oracle.truffle.object.ShapeImpl
StackMap stack:
aload 0
aload 1
aload 2
invokevirtual com.oracle.truffle.object.LayoutImpl.getPrimitiveArrayLocation:()Lcom/oracle/truffle/api/object/Location;
invokevirtual com.oracle.truffle.object.LayoutStrategy.ensureSpace:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Location;)Lcom/oracle/truffle/object/ShapeImpl;
astore 5
start local 5 8: aload 5
aload 3
invokestatic com.oracle.truffle.object.ShapeImpl.makeShapeWithPrimitiveExtensionArray:(Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/object/Transition;)Lcom/oracle/truffle/object/ShapeImpl;
astore 6
start local 6 9: aload 5
aload 3
aload 6
invokevirtual com.oracle.truffle.object.ShapeImpl.addDirectTransition:(Lcom/oracle/truffle/object/Transition;Lcom/oracle/truffle/object/ShapeImpl;)V
10: aload 6
areturn
end local 6 end local 5 end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 this Lcom/oracle/truffle/object/LayoutStrategy;
0 11 1 shape Lcom/oracle/truffle/object/ShapeImpl;
1 11 2 layout Lcom/oracle/truffle/object/LayoutImpl;
4 11 3 transition Lcom/oracle/truffle/object/Transition;
5 11 4 cachedShape Lcom/oracle/truffle/object/ShapeImpl;
8 11 5 oldShape Lcom/oracle/truffle/object/ShapeImpl;
9 11 6 newShape Lcom/oracle/truffle/object/ShapeImpl;
MethodParameters:
Name Flags
shape
protected static com.oracle.truffle.object.ShapeImpl getShapeFromProperty(com.oracle.truffle.object.ShapeImpl, java.lang.Object);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Ljava/lang/Object;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
astore 2
start local 2 1: aload 0
invokevirtual com.oracle.truffle.object.ShapeImpl.getRoot:()Lcom/oracle/truffle/object/ShapeImpl;
astore 3
start local 3 2: goto 6
3: StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl
StackMap stack:
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getTransitionFromParent:()Lcom/oracle/truffle/object/Transition;
instanceof com.oracle.truffle.object.Transition$AddPropertyTransition
ifeq 5
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getTransitionFromParent:()Lcom/oracle/truffle/object/Transition;
checkcast com.oracle.truffle.object.Transition$AddPropertyTransition
invokevirtual com.oracle.truffle.object.Transition$AddPropertyTransition.getProperty:()Lcom/oracle/truffle/api/object/Property;
invokevirtual com.oracle.truffle.api.object.Property.getKey:()Ljava/lang/Object;
aload 1
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 5
4: aload 2
areturn
5: StackMap locals:
StackMap stack:
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getParent:()Lcom/oracle/truffle/object/ShapeImpl;
astore 2
6: StackMap locals:
StackMap stack:
aload 2
aload 3
if_acmpne 3
7: aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 shape Lcom/oracle/truffle/object/ShapeImpl;
0 8 1 propertyName Ljava/lang/Object;
1 8 2 current Lcom/oracle/truffle/object/ShapeImpl;
2 8 3 root Lcom/oracle/truffle/object/ShapeImpl;
MethodParameters:
Name Flags
shape
propertyName
protected static com.oracle.truffle.object.ShapeImpl getShapeFromProperty(com.oracle.truffle.object.ShapeImpl, com.oracle.truffle.api.object.Property);
descriptor: (Lcom/oracle/truffle/object/ShapeImpl;Lcom/oracle/truffle/api/object/Property;)Lcom/oracle/truffle/object/ShapeImpl;
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
astore 2
start local 2 1: aload 0
invokevirtual com.oracle.truffle.object.ShapeImpl.getRoot:()Lcom/oracle/truffle/object/ShapeImpl;
astore 3
start local 3 2: goto 6
3: StackMap locals: com.oracle.truffle.object.ShapeImpl com.oracle.truffle.object.ShapeImpl
StackMap stack:
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getTransitionFromParent:()Lcom/oracle/truffle/object/Transition;
instanceof com.oracle.truffle.object.Transition$AddPropertyTransition
ifeq 5
aload 2
invokevirtual com.oracle.truffle.object.ShapeImpl.getTransitionFromParent:()Lcom/oracle/truffle/object/Transition;
checkcast com.oracle.truffle.object.Transition$AddPropertyTransition
invokevirtual com.oracle.truffle.object.Transition$AddPropertyTransition.getProperty:()Lcom/oracle/truffle/api/object/Property;
aload 1
invokevirtual java.lang.Object.equals:(Ljava/lang/Object;)Z
ifeq 5
4: aload 2
areturn
5: StackMap locals:
StackMap stack:
aload 2
getfield com.oracle.truffle.object.ShapeImpl.parent:Lcom/oracle/truffle/object/ShapeImpl;
astore 2
6: StackMap locals:
StackMap stack:
aload 2
aload 3
if_acmpne 3
7: aconst_null
areturn
end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 shape Lcom/oracle/truffle/object/ShapeImpl;
0 8 1 prop Lcom/oracle/truffle/api/object/Property;
1 8 2 current Lcom/oracle/truffle/object/ShapeImpl;
2 8 3 root Lcom/oracle/truffle/object/ShapeImpl;
RuntimeVisibleAnnotations:
java.lang.Deprecated()
MethodParameters:
Name Flags
shape
prop
}
SourceFile: "LayoutStrategy.java"
InnerClasses:
public abstract Allocator = com.oracle.truffle.api.object.Shape$Allocator of com.oracle.truffle.api.object.Shape
public abstract BaseAllocator = com.oracle.truffle.object.ShapeImpl$BaseAllocator of com.oracle.truffle.object.ShapeImpl
public final AddPropertyTransition = com.oracle.truffle.object.Transition$AddPropertyTransition of com.oracle.truffle.object.Transition
public final DirectReplacePropertyTransition = com.oracle.truffle.object.Transition$DirectReplacePropertyTransition of com.oracle.truffle.object.Transition
final ObjectFlagsTransition = com.oracle.truffle.object.Transition$ObjectFlagsTransition of com.oracle.truffle.object.Transition
public final ObjectTypeTransition = com.oracle.truffle.object.Transition$ObjectTypeTransition of com.oracle.truffle.object.Transition
public final RemovePropertyTransition = com.oracle.truffle.object.Transition$RemovePropertyTransition of com.oracle.truffle.object.Transition
public final ReservePrimitiveArrayTransition = com.oracle.truffle.object.Transition$ReservePrimitiveArrayTransition of com.oracle.truffle.object.Transition