public abstract class com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode extends com.oracle.truffle.js.nodes.array.JSArrayElementIndexNode
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode
super_class: com.oracle.truffle.js.nodes.array.JSArrayElementIndexNode
{
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/JSArrayLastElementIndexNode;
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.JSArrayLastElementIndexNode.$assertionsDisabled:Z
return
LocalVariableTable:
Start End Slot Name Signature
protected void <init>(com.oracle.truffle.js.runtime.JSContext);
descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)V
flags: (0x0004) ACC_PROTECTED
Code:
stack=2, locals=2, args_size=2
start local 0 start local 1 0: aload 0
aload 1
invokespecial com.oracle.truffle.js.nodes.array.JSArrayElementIndexNode.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;)V
1: return
end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 2 1 context Lcom/oracle/truffle/js/runtime/JSContext;
MethodParameters:
Name Flags
context
public static com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode create(com.oracle.truffle.js.runtime.JSContext);
descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=1, args_size=1
0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tJSArrayLastElementIndexNodeGen cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
context
public final long executeLong(java.lang.Object, long);
descriptor: (Ljava/lang/Object;J)J
flags: (0x0011) ACC_PUBLIC, ACC_FINAL
Code:
stack=6, locals=4, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
lload 2
aload 0
aload 1
invokevirtual com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.isArray:(Ljava/lang/Object;)Z
invokevirtual com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.executeLong:(Ljava/lang/Object;JZ)J
lreturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 1 1 object Ljava/lang/Object;
0 1 2 length J
MethodParameters:
Name Flags
object
length
public abstract long executeLong(java.lang.Object, long, boolean);
descriptor: (Ljava/lang/Object;JZ)J
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
MethodParameters:
Name Flags
object
length
isArray
public long doWithoutHolesCached(com.oracle.truffle.api.object.DynamicObject, long, boolean, com.oracle.truffle.js.runtime.array.ScriptArray);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/runtime/array/ScriptArray;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=6, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: getstatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.$assertionsDisabled:Z
ifne 2
aload 1
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.isSupportedArray:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
ifeq 1
aload 5
aload 1
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
if_acmpeq 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 5
aload 1
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.lastElementIndex:(Lcom/oracle/truffle/api/object/DynamicObject;)J
lreturn
end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 3 1 object Lcom/oracle/truffle/api/object/DynamicObject;
0 3 2 length J
0 3 4 isArray Z
0 3 5 cachedArrayType Lcom/oracle/truffle/js/runtime/array/ScriptArray;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"isArray", "!hasPrototypeElements(object)", "getArrayType(object) == cachedArrayType", "!cachedArrayType.hasHoles(object)"}, limit = "MAX_CACHED_ARRAY_TYPES")
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
3:
com.oracle.truffle.api.dsl.Cached(value = "getArrayTypeIfArray(object, isArray)")
MethodParameters:
Name Flags
object
length
isArray
cachedArrayType
public long doWithoutHolesUncached(com.oracle.truffle.api.object.DynamicObject, long, boolean);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JZ)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=2, locals=5, args_size=4
start local 0 start local 1 start local 2 start local 4 0: getstatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.$assertionsDisabled:Z
ifne 1
aload 1
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.isSupportedArray:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
ifne 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.JSArrayLastElementIndexNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
aload 1
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.lastElementIndex:(Lcom/oracle/truffle/api/object/DynamicObject;)J
lreturn
end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 2 1 object Lcom/oracle/truffle/api/object/DynamicObject;
0 2 2 length J
0 2 4 isArray Z
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"isArray", "!hasPrototypeElements(object)", "!hasHoles(object)"}, replaces = {"doWithoutHolesCached"})
MethodParameters:
Name Flags
object
length
isArray
public long doWithHolesCached(com.oracle.truffle.api.object.DynamicObject, long, boolean, com.oracle.truffle.js.runtime.array.ScriptArray, com.oracle.truffle.js.nodes.array.JSArrayPreviousElementIndexNode, com.oracle.truffle.api.profiles.ConditionProfile);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/nodes/array/JSArrayPreviousElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=8, args_size=7
start local 0 start local 1 start local 2 start local 4 start local 5 start local 6 start local 7 0: getstatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.$assertionsDisabled:Z
ifne 2
aload 1
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.isSupportedArray:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
ifeq 1
aload 5
aload 1
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
if_acmpeq 2
StackMap locals:
StackMap stack:
1: new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
2: StackMap locals:
StackMap stack:
aload 0
aload 1
lload 2
aload 5
aload 6
aload 7
iload 4
invokevirtual com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.holesArrayImpl:(Lcom/oracle/truffle/api/object/DynamicObject;JLcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/nodes/array/JSArrayPreviousElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;Z)J
lreturn
end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 3 1 object Lcom/oracle/truffle/api/object/DynamicObject;
0 3 2 length J
0 3 4 isArray Z
0 3 5 cachedArrayType Lcom/oracle/truffle/js/runtime/array/ScriptArray;
0 3 6 previousElementIndexNode Lcom/oracle/truffle/js/nodes/array/JSArrayPreviousElementIndexNode;
0 3 7 isLengthMinusOne Lcom/oracle/truffle/api/profiles/ConditionProfile;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"isArray", "!hasPrototypeElements(object)", "getArrayType(object) == cachedArrayType", "cachedArrayType.hasHoles(object)"}, limit = "MAX_CACHED_ARRAY_TYPES")
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
3:
com.oracle.truffle.api.dsl.Cached(value = "getArrayTypeIfArray(object, isArray)")
4:
com.oracle.truffle.api.dsl.Cached(value = "create(context)")
5:
com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
MethodParameters:
Name Flags
object
length
isArray
cachedArrayType
previousElementIndexNode
isLengthMinusOne
public long doWithHolesUncached(com.oracle.truffle.api.object.DynamicObject, long, boolean, com.oracle.truffle.js.nodes.array.JSArrayPreviousElementIndexNode, com.oracle.truffle.api.profiles.ConditionProfile, com.oracle.truffle.api.profiles.ValueProfile);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/nodes/array/JSArrayPreviousElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;Lcom/oracle/truffle/api/profiles/ValueProfile;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=8, locals=9, args_size=7
start local 0 start local 1 start local 2 start local 4 start local 5 start local 6 start local 7 0: getstatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.$assertionsDisabled:Z
ifne 1
aload 1
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.isSupportedArray:(Lcom/oracle/truffle/api/object/DynamicObject;)Z
ifne 1
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
1: StackMap locals:
StackMap stack:
aload 7
aload 1
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.getArrayType:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/js/runtime/array/ScriptArray;
invokevirtual com.oracle.truffle.api.profiles.ValueProfile.profile:(Ljava/lang/Object;)Ljava/lang/Object;
checkcast com.oracle.truffle.js.runtime.array.ScriptArray
astore 8
start local 8 2: aload 0
aload 1
lload 2
aload 8
aload 5
aload 6
iload 4
invokevirtual com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.holesArrayImpl:(Lcom/oracle/truffle/api/object/DynamicObject;JLcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/nodes/array/JSArrayPreviousElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;Z)J
lreturn
end local 8 end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 3 1 object Lcom/oracle/truffle/api/object/DynamicObject;
0 3 2 length J
0 3 4 isArray Z
0 3 5 previousElementIndexNode Lcom/oracle/truffle/js/nodes/array/JSArrayPreviousElementIndexNode;
0 3 6 isLengthMinusOne Lcom/oracle/truffle/api/profiles/ConditionProfile;
0 3 7 arrayTypeProfile Lcom/oracle/truffle/api/profiles/ValueProfile;
2 3 8 arrayType Lcom/oracle/truffle/js/runtime/array/ScriptArray;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"isArray", "hasPrototypeElements(object) || hasHoles(object)"}, replaces = {"doWithHolesCached"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
3:
com.oracle.truffle.api.dsl.Cached(value = "create(context)")
4:
com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
5:
com.oracle.truffle.api.dsl.Cached(value = "createClassProfile()")
MethodParameters:
Name Flags
object
length
isArray
previousElementIndexNode
isLengthMinusOne
arrayTypeProfile
private long holesArrayImpl(com.oracle.truffle.api.object.DynamicObject, long, com.oracle.truffle.js.runtime.array.ScriptArray, com.oracle.truffle.js.nodes.array.JSArrayPreviousElementIndexNode, com.oracle.truffle.api.profiles.ConditionProfile, boolean);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JLcom/oracle/truffle/js/runtime/array/ScriptArray;Lcom/oracle/truffle/js/nodes/array/JSArrayPreviousElementIndexNode;Lcom/oracle/truffle/api/profiles/ConditionProfile;Z)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=7, locals=13, args_size=7
start local 0 start local 1 start local 2 start local 4 start local 5 start local 6 start local 7 0: aload 4
aload 1
invokevirtual com.oracle.truffle.js.runtime.array.ScriptArray.lastElementIndex:(Lcom/oracle/truffle/api/object/DynamicObject;)J
lstore 8
start local 8 1: aload 6
lload 8
lload 2
lconst_1
lsub
lcmp
ifne 2
iconst_1
goto 3
StackMap locals: com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode com.oracle.truffle.api.object.DynamicObject long com.oracle.truffle.js.runtime.array.ScriptArray com.oracle.truffle.js.nodes.array.JSArrayPreviousElementIndexNode com.oracle.truffle.api.profiles.ConditionProfile int long
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
2: iconst_0
StackMap locals: com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode com.oracle.truffle.api.object.DynamicObject long com.oracle.truffle.js.runtime.array.ScriptArray com.oracle.truffle.js.nodes.array.JSArrayPreviousElementIndexNode com.oracle.truffle.api.profiles.ConditionProfile int long
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
3: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
ifeq 5
4: lload 8
lreturn
5: StackMap locals:
StackMap stack:
aload 1
astore 10
start local 10 6: goto 13
7: StackMap locals: com.oracle.truffle.api.object.DynamicObject
StackMap stack:
aload 5
aload 10
lload 2
invokevirtual com.oracle.truffle.js.nodes.array.JSArrayPreviousElementIndexNode.executeLong:(Ljava/lang/Object;J)J
lstore 11
start local 11 8: lload 8
lload 11
invokestatic java.lang.Math.max:(JJ)J
lstore 8
9: lload 8
lload 2
lconst_1
lsub
lcmp
iflt 11
10: lload 2
lconst_1
lsub
lreturn
11: StackMap locals: long
StackMap stack:
aload 0
getfield com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.context:Lcom/oracle/truffle/js/runtime/JSContext;
invokevirtual com.oracle.truffle.js.runtime.JSContext.getArrayPrototypeNoElementsAssumption:()Lcom/oracle/truffle/api/Assumption;
invokeinterface com.oracle.truffle.api.Assumption.isValid:()Z
ifne 14
12: aload 10
invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getPrototype:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 10
end local 11 13: StackMap locals:
StackMap stack:
aload 10
getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
if_acmpne 7
14: StackMap locals:
StackMap stack:
lload 8
lreturn
end local 10 end local 8 end local 7 end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 15 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 15 1 object Lcom/oracle/truffle/api/object/DynamicObject;
0 15 2 length J
0 15 4 array Lcom/oracle/truffle/js/runtime/array/ScriptArray;
0 15 5 previousElementIndexNode Lcom/oracle/truffle/js/nodes/array/JSArrayPreviousElementIndexNode;
0 15 6 isLengthMinusOne Lcom/oracle/truffle/api/profiles/ConditionProfile;
0 15 7 isArray Z
1 15 8 lastIndex J
6 15 10 prototype Lcom/oracle/truffle/api/object/DynamicObject;
8 13 11 candidate J
MethodParameters:
Name Flags
object
length
array
previousElementIndexNode
isLengthMinusOne
isArray
public long doObjectViaEnumeration(com.oracle.truffle.api.object.DynamicObject, long, boolean, com.oracle.truffle.js.nodes.access.JSHasPropertyNode);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: lload 2
lconst_1
lsub
lstore 6
start local 6 1: aload 5
aload 1
lload 6
invokevirtual com.oracle.truffle.js.nodes.access.JSHasPropertyNode.executeBoolean:(Ljava/lang/Object;J)Z
ifeq 3
2: lload 6
lreturn
3: StackMap locals: long
StackMap stack:
aload 1
lload 6
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.doObjectViaEnumerationIntl:(Lcom/oracle/truffle/api/object/DynamicObject;J)J
lreturn
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 4 1 object Lcom/oracle/truffle/api/object/DynamicObject;
0 4 2 length J
0 4 4 isArray Z
0 4 5 hasPropertyNode Lcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;
1 4 6 lengthMinusOne J
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"!isArray", "isSuitableForEnumBasedProcessingUsingOwnKeys(object, length)"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
3:
com.oracle.truffle.api.dsl.Cached(value = "create()")
MethodParameters:
Name Flags
object
length
isArray
hasPropertyNode
public long doObjectViaFullEnumeration(com.oracle.truffle.api.object.DynamicObject, long, boolean, com.oracle.truffle.js.nodes.access.JSHasPropertyNode);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;JZLcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: lload 2
lconst_1
lsub
lstore 6
start local 6 1: aload 5
aload 1
lload 6
invokevirtual com.oracle.truffle.js.nodes.access.JSHasPropertyNode.executeBoolean:(Ljava/lang/Object;J)Z
ifeq 3
2: lload 6
lreturn
3: StackMap locals: long
StackMap stack:
aload 1
lload 6
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.doObjectViaFullEnumerationIntl:(Lcom/oracle/truffle/api/object/DynamicObject;J)J
lreturn
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 4 1 object Lcom/oracle/truffle/api/object/DynamicObject;
0 4 2 length J
0 4 4 isArray Z
0 4 5 hasPropertyNode Lcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;
1 4 6 lengthMinusOne J
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"!isArray", "!isSuitableForEnumBasedProcessingUsingOwnKeys(object, length)", "isSuitableForEnumBasedProcessing(object, length)"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
3:
com.oracle.truffle.api.dsl.Cached(value = "create()")
MethodParameters:
Name Flags
object
length
isArray
hasPropertyNode
public long doObject(java.lang.Object, long, boolean, com.oracle.truffle.js.nodes.access.JSHasPropertyNode);
descriptor: (Ljava/lang/Object;JZLcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;)J
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=8, args_size=5
start local 0 start local 1 start local 2 start local 4 start local 5 0: lload 2
lconst_1
lsub
lstore 6
start local 6 1: goto 3
2: StackMap locals: long
StackMap stack:
lload 6
lconst_1
lsub
lstore 6
3: StackMap locals:
StackMap stack:
aload 5
aload 1
lload 6
invokevirtual com.oracle.truffle.js.nodes.access.JSHasPropertyNode.executeBoolean:(Ljava/lang/Object;J)Z
ifne 4
lload 6
lconst_0
lcmp
ifgt 2
4: StackMap locals:
StackMap stack:
lload 6
lreturn
end local 6 end local 5 end local 4 end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/js/nodes/array/JSArrayLastElementIndexNode;
0 5 1 object Ljava/lang/Object;
0 5 2 length J
0 5 4 isArray Z
0 5 5 hasPropertyNode Lcom/oracle/truffle/js/nodes/access/JSHasPropertyNode;
1 5 6 index J
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"!isArray", "!isSuitableForEnumBasedProcessing(object, length)"})
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
3:
com.oracle.truffle.api.dsl.Cached(value = "create()")
MethodParameters:
Name Flags
object
length
isArray
hasPropertyNode
private static long doObjectViaEnumerationIntl(com.oracle.truffle.api.object.DynamicObject, long);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;J)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=9, args_size=2
start local 0 start local 1 0: ldc -1
lstore 3
start local 3 1: aload 0
invokestatic com.oracle.truffle.js.runtime.objects.JSObject.ownPropertyKeys:(Lcom/oracle/truffle/api/object/DynamicObject;)Ljava/util/List;
invokeinterface java.util.List.iterator:()Ljava/util/Iterator;
astore 6
goto 9
StackMap locals: com.oracle.truffle.api.object.DynamicObject long long top java.util.Iterator
StackMap stack:
2: aload 6
invokeinterface java.util.Iterator.next:()Ljava/lang/Object;
astore 5
start local 5 3: aload 5
ifnonnull 5
4: goto 9
5: StackMap locals: com.oracle.truffle.api.object.DynamicObject long long java.lang.Object java.util.Iterator
StackMap stack:
aload 5
instanceof java.lang.String
ifeq 9
6: aload 5
checkcast java.lang.String
invokestatic com.oracle.truffle.js.runtime.JSRuntime.propertyNameToIntegerIndex:(Ljava/lang/String;)J
lstore 7
start local 7 7: lload 7
lload 1
lcmp
ifge 9
lload 7
lload 3
lcmp
ifle 9
8: lload 7
lstore 3
end local 7 end local 5 9: StackMap locals: com.oracle.truffle.api.object.DynamicObject long long top java.util.Iterator
StackMap stack:
aload 6
invokeinterface java.util.Iterator.hasNext:()Z
ifne 2
10: lload 3
lreturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 11 0 object Lcom/oracle/truffle/api/object/DynamicObject;
0 11 1 lengthMinusOne J
1 11 3 result J
3 9 5 key Ljava/lang/Object;
7 9 7 candidate J
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
object
lengthMinusOne
private static long doObjectViaFullEnumerationIntl(com.oracle.truffle.api.object.DynamicObject, long);
descriptor: (Lcom/oracle/truffle/api/object/DynamicObject;J)J
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=5, locals=6, args_size=2
start local 0 start local 1 0: ldc -1
lstore 3
start local 3 1: aload 0
astore 5
start local 5 2: StackMap locals: long com.oracle.truffle.api.object.DynamicObject
StackMap stack:
lload 3
aload 5
lload 1
invokestatic com.oracle.truffle.js.nodes.array.JSArrayLastElementIndexNode.doObjectViaEnumerationIntl:(Lcom/oracle/truffle/api/object/DynamicObject;J)J
invokestatic java.lang.Math.max:(JJ)J
lstore 3
3: aload 5
invokestatic com.oracle.truffle.js.runtime.objects.JSObject.getPrototype:(Lcom/oracle/truffle/api/object/DynamicObject;)Lcom/oracle/truffle/api/object/DynamicObject;
astore 5
4: aload 5
getstatic com.oracle.truffle.js.runtime.objects.Null.instance:Lcom/oracle/truffle/js/runtime/objects/JSDynamicObject;
if_acmpne 2
5: lload 3
lreturn
end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 object Lcom/oracle/truffle/api/object/DynamicObject;
0 6 1 length J
1 6 3 result J
2 6 5 chainObject Lcom/oracle/truffle/api/object/DynamicObject;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
object
length
}
SourceFile: "JSArrayLastElementIndexNode.java"
InnerClasses:
public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives