public abstract class com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode extends com.oracle.truffle.js.nodes.array.ArrayLengthNode$ArrayLengthWriteNode
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode
super_class: com.oracle.truffle.js.nodes.array.ArrayLengthNode$ArrayLengthWriteNode
{
private final boolean strict;
descriptor: Z
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
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/js/nodes/array/ArrayLengthNode;
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.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>(boolean);
descriptor: (Z)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
invokespecial com.oracle.truffle.js.nodes.array.ArrayLengthNode$ArrayLengthWriteNode.<init>:()V
1: aload 0
iload 1
putfield com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.strict:Z
2: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/js/nodes/array/ArrayLengthNode$SetArrayLengthNode;
0 3 1 strict Z
MethodParameters:
Name Flags
strict
protected void doCached(com.oracle.truffle.api.object.DynamicObject, int, com.oracle.truffle.js.runtime.array.ScriptArray, com.oracle.truffle.js.runtime.array.ScriptArray$ProfileHolder);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;ILcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)V
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: getstatic com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.$assertionsDisabled:Z
ifne 1
iload 2
ifge 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 3
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.isSealed:()Z
ifeq 4
2: aload 0
aload 1
iload 2
aload 3
aload 4
invokevirtual com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.setLengthSealed:(Lcom/oracle/truffle/api/object/DynamicObject;ILcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)V
3: return
4: StackMap locals:
StackMap stack:
aload 1
aload 3
aload 1
iload 2
i2l
aload 0
getfield com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.strict:Z
aload 4
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.setLength:(Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
invokestatic com.oracle.truffle.js.runtime.builtins.JSAbstractArray.arraySetArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/array/ScriptArray;)V
5: return
end local 4 end local 3 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/js/nodes/array/ArrayLengthNode$SetArrayLengthNode;
0 6 1 arrayObj Lcom/oracle/truffle/api/object/DynamicObject;
0 6 2 length I
0 6 3 arrayType Lcom/oracle/truffle/js/runtime/array/ScriptArray;
0 6 4 setLengthProfile Lcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"arrayType.isInstance(getArrayType(arrayObj))", "arrayType.isStatelessType()"}, limit = "MAX_TYPE_COUNT")
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached(value = "getArrayType(arrayObj)")
3:
com.oracle.truffle.api.dsl.Cached(value = "createSetLengthProfile()")
MethodParameters:
Name Flags
arrayObj
length
arrayType
setLengthProfile
protected void doGeneric(com.oracle.truffle.api.object.DynamicObject, int, com.oracle.truffle.api.profiles.ConditionProfile, com.oracle.truffle.js.runtime.array.ScriptArray$ProfileHolder);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;ILcom/oracle/truffle/api/profiles/ConditionProfile;Lcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=7, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: getstatic com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.$assertionsDisabled:Z
ifne 1
iload 2
ifge 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 1
invokestatic com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
astore 5
start local 5 2: aload 3
aload 5
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.isSealed:()Z
invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
ifeq 5
3: aload 0
aload 1
iload 2
aload 5
aload 4
invokevirtual com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.setLengthSealed:(Lcom/oracle/truffle/api/object/DynamicObject;ILcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)V
4: return
5: StackMap locals: com.oracle.truffle.js.runtime.array.ScriptArray
StackMap stack:
aload 1
aload 5
aload 1
iload 2
i2l
aload 0
getfield com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.strict:Z
aload 4
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.setLength:(Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
invokestatic com.oracle.truffle.js.runtime.builtins.JSAbstractArray.arraySetArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/array/ScriptArray;)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/js/nodes/array/ArrayLengthNode$SetArrayLengthNode;
0 7 1 arrayObj Lcom/oracle/truffle/api/object/DynamicObject;
0 7 2 length I
0 7 3 sealedProfile Lcom/oracle/truffle/api/profiles/ConditionProfile;
0 7 4 setLengthProfile Lcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;
2 7 5 arrayType Lcom/oracle/truffle/js/runtime/array/ScriptArray;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(replaces = {"doCached"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
3:
com.oracle.truffle.api.dsl.Cached(value = "createSetLengthProfile()")
MethodParameters:
Name Flags
arrayObj
length
sealedProfile
setLengthProfile
private void setLengthSealed(com.oracle.truffle.api.object.DynamicObject, int, com.oracle.truffle.js.runtime.array.ScriptArray, com.oracle.truffle.js.runtime.array.ScriptArray$ProfileHolder);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;ILcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 3 start local 4 0: aload 3
aload 1
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.lastElementIndex:(Lcom/oracle/truffle/api/object/DynamicObject;)J
lconst_1
ladd
lstore 5
start local 5 1: iload 2
i2l
lload 5
lcmp
ifge 6
2: aload 3
aload 1
lload 5
aload 0
getfield com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.strict:Z
aload 4
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.setLength:(Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
astore 7
start local 7 3: aload 1
aload 7
invokestatic com.oracle.truffle.js.runtime.builtins.JSAbstractArray.arraySetArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/array/ScriptArray;)V
4: aload 7
aload 1
lload 5
lconst_1
lsub
aload 0
getfield com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.strict:Z
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.canDeleteElement:(Lcom/oracle/truffle/api/object/DynamicObject;JZ)Z
pop
5: return
end local 7 6: StackMap locals: long
StackMap stack:
aload 1
aload 3
aload 1
iload 2
i2l
aload 0
getfield com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode.strict:Z
aload 4
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.setLength:(Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
invokestatic com.oracle.truffle.js.runtime.builtins.JSAbstractArray.arraySetArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;Lcom/oracle/truffle/js/runtime/array/ScriptArray;)V
7: 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 8 0 this Lcom/oracle/truffle/js/nodes/array/ArrayLengthNode$SetArrayLengthNode;
0 8 1 arrayObj Lcom/oracle/truffle/api/object/DynamicObject;
0 8 2 length I
0 8 3 arrayType Lcom/oracle/truffle/js/runtime/array/ScriptArray;
0 8 4 setLengthProfile Lcom/oracle/truffle/js/runtime/array/ScriptArray$ProfileHolder;
1 8 5 minLength J
3 6 7 array Lcom/oracle/truffle/js/runtime/array/ScriptArray;
MethodParameters:
Name Flags
arrayObj
length
arrayType
setLengthProfile
}
SourceFile: "ArrayLengthNode.java"
NestHost: com.oracle.truffle.js.nodes.array.ArrayLengthNode
InnerClasses:
public abstract ArrayLengthWriteNode = com.oracle.truffle.js.nodes.array.ArrayLengthNode$ArrayLengthWriteNode of com.oracle.truffle.js.nodes.array.ArrayLengthNode
public abstract SetArrayLengthNode = com.oracle.truffle.js.nodes.array.ArrayLengthNode$SetArrayLengthNode of com.oracle.truffle.js.nodes.array.ArrayLengthNode
public abstract ProfileHolder = com.oracle.truffle.js.runtime.array.ScriptArray$ProfileHolder of com.oracle.truffle.js.runtime.array.ScriptArray