public abstract class com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode extends com.oracle.truffle.js.nodes.function.JSBuiltinNode
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode
super_class: com.oracle.truffle.js.nodes.function.JSBuiltinNode
{
private com.oracle.truffle.js.nodes.cast.JSToObjectNode templateToObjectNode;
descriptor: Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.cast.JSToObjectNode rawToObjectNode;
descriptor: Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.access.PropertyGetNode getRawNode;
descriptor: Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.array.JSGetLengthNode getRawLengthNode;
descriptor: Lcom/oracle/truffle/js/nodes/array/JSGetLengthNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.cast.JSToStringNode segToStringNode;
descriptor: Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.cast.JSToStringNode subToStringNode;
descriptor: Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private com.oracle.truffle.js.nodes.access.ReadElementNode readRawElementNode;
descriptor: Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.nodes.Node$Child()
private final com.oracle.truffle.api.profiles.ConditionProfile emptyProf;
descriptor: Lcom/oracle/truffle/api/profiles/ConditionProfile;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
public void <init>(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.function.JSBuiltin);
descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
flags: (0x0001) ACC_PUBLIC
Code:
stack=4, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 0
aload 1
aload 2
invokespecial com.oracle.truffle.js.nodes.function.JSBuiltinNode.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
1: aload 0
invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.emptyProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
2: aload 0
aload 1
invokestatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.createToObject:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.templateToObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
3: aload 0
aload 1
invokestatic com.oracle.truffle.js.nodes.cast.JSToObjectNode.createToObject:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.rawToObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
4: aload 0
ldc "raw"
iconst_0
aload 1
invokestatic com.oracle.truffle.js.nodes.access.PropertyGetNode.create:(Ljava/lang/Object;ZLcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
5: aload 0
aload 1
invokestatic com.oracle.truffle.js.nodes.array.JSGetLengthNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/array/JSGetLengthNode;
putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawLengthNode:Lcom/oracle/truffle/js/nodes/array/JSGetLengthNode;
6: aload 0
invokestatic com.oracle.truffle.js.nodes.cast.JSToStringNode.create:()Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.segToStringNode:Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
7: aload 0
invokestatic com.oracle.truffle.js.nodes.cast.JSToStringNode.create:()Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.subToStringNode:Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
8: aload 0
aload 1
invokestatic com.oracle.truffle.js.nodes.access.ReadElementNode.create:(Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
putfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.readRawElementNode:Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
9: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/truffle/js/builtins/StringFunctionBuiltins$StringRawNode;
0 10 1 context Lcom/oracle/truffle/js/runtime/JSContext;
0 10 2 builtin Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
MethodParameters:
Name Flags
context
builtin
protected java.lang.String raw(java.lang.Object, java.lang.Object[]);
descriptor: (Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/String;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=12, args_size=3
start local 0 start local 1 start local 2 0: aload 2
arraylength
istore 3
start local 3 1: aload 0
getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.templateToObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
aload 1
invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
astore 4
start local 4 2: aload 0
getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.rawToObjectNode:Lcom/oracle/truffle/js/nodes/cast/JSToObjectNode;
aload 0
getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawNode:Lcom/oracle/truffle/js/nodes/access/PropertyGetNode;
aload 4
invokevirtual com.oracle.truffle.js.nodes.access.PropertyGetNode.getValue:(Ljava/lang/Object;)Ljava/lang/Object;
invokevirtual com.oracle.truffle.js.nodes.cast.JSToObjectNode.execute:(Ljava/lang/Object;)Ljava/lang/Object;
astore 5
start local 5 3: aload 0
aload 5
invokevirtual com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawLength:(Ljava/lang/Object;)I
istore 6
start local 6 4: aload 0
getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.emptyProf:Lcom/oracle/truffle/api/profiles/ConditionProfile;
iload 6
ifgt 5
iconst_1
goto 6
StackMap locals: com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode java.lang.Object java.lang.Object[] int java.lang.Object java.lang.Object int
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
5: iconst_0
StackMap locals: com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode java.lang.Object java.lang.Object[] int java.lang.Object java.lang.Object int
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
6: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
ifeq 8
7: ldc ""
areturn
8: StackMap locals:
StackMap stack:
new java.lang.StringBuilder
dup
invokespecial java.lang.StringBuilder.<init>:()V
astore 7
start local 7 9: iconst_0
istore 8
start local 8 10: StackMap locals: java.lang.StringBuilder int
StackMap stack:
aload 0
getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.readRawElementNode:Lcom/oracle/truffle/js/nodes/access/ReadElementNode;
aload 5
iload 8
invokevirtual com.oracle.truffle.js.nodes.access.ReadElementNode.executeWithTargetAndIndex:(Ljava/lang/Object;I)Ljava/lang/Object;
astore 9
start local 9 11: aload 0
getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.segToStringNode:Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
aload 9
invokevirtual com.oracle.truffle.js.nodes.cast.JSToStringNode.executeString:(Ljava/lang/Object;)Ljava/lang/String;
astore 10
start local 10 12: aload 0
aload 7
aload 10
invokevirtual com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.appendChecked:(Ljava/lang/StringBuilder;Ljava/lang/String;)V
13: iload 8
iconst_1
iadd
iload 6
if_icmpne 15
14: goto 19
15: StackMap locals: java.lang.Object java.lang.String
StackMap stack:
iload 8
iload 3
if_icmpge 18
16: aload 0
getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.subToStringNode:Lcom/oracle/truffle/js/nodes/cast/JSToStringNode;
aload 2
iload 8
aaload
invokevirtual com.oracle.truffle.js.nodes.cast.JSToStringNode.executeString:(Ljava/lang/Object;)Ljava/lang/String;
astore 11
start local 11 17: aload 0
aload 7
aload 11
invokevirtual com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.appendChecked:(Ljava/lang/StringBuilder;Ljava/lang/String;)V
end local 11 end local 10 end local 9 18: StackMap locals:
StackMap stack:
iinc 8 1
goto 10
end local 8 19: StackMap locals:
StackMap stack:
aload 7
invokestatic com.oracle.truffle.js.runtime.Boundaries.builderToString:(Ljava/lang/StringBuilder;)Ljava/lang/String;
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 20 0 this Lcom/oracle/truffle/js/builtins/StringFunctionBuiltins$StringRawNode;
0 20 1 template Ljava/lang/Object;
0 20 2 substitutions [Ljava/lang/Object;
1 20 3 numberOfSubstitutions I
2 20 4 cooked Ljava/lang/Object;
3 20 5 raw Ljava/lang/Object;
4 20 6 literalSegments I
9 20 7 result Ljava/lang/StringBuilder;
10 19 8 i I
11 18 9 rawElement Ljava/lang/Object;
12 18 10 nextSeg Ljava/lang/String;
17 18 11 nextSub Ljava/lang/String;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization()
MethodParameters:
Name Flags
template
substitutions
private int getRawLength(java.lang.Object);
descriptor: (Ljava/lang/Object;)I
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=4, args_size=2
start local 0 start local 1 0: aload 0
getfield com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getRawLengthNode:Lcom/oracle/truffle/js/nodes/array/JSGetLengthNode;
aload 1
invokevirtual com.oracle.truffle.js.nodes.array.JSGetLengthNode.executeLong:(Ljava/lang/Object;)J
lstore 2
start local 2 1: lload 2
invokestatic java.lang.Math.toIntExact:(J)I
2: ireturn
3: StackMap locals: com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode java.lang.Object long
StackMap stack: java.lang.ArithmeticException
pop
4: iconst_0
ireturn
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/js/builtins/StringFunctionBuiltins$StringRawNode;
0 5 1 raw Ljava/lang/Object;
1 5 2 length J
Exception table:
from to target type
1 2 3 Class java.lang.ArithmeticException
MethodParameters:
Name Flags
raw
private void appendChecked(java.lang.StringBuilder, java.lang.String);
descriptor: (Ljava/lang/StringBuilder;Ljava/lang/String;)V
flags: (0x0002) ACC_PRIVATE
Code:
stack=2, locals=3, args_size=3
start local 0 start local 1 start local 2 0: aload 1
invokevirtual java.lang.StringBuilder.length:()I
aload 2
invokevirtual java.lang.String.length:()I
iadd
aload 0
invokevirtual com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode.getContext:()Lcom/oracle/truffle/js/runtime/JSContext;
invokevirtual com.oracle.truffle.js.runtime.JSContext.getStringLengthLimit:()I
if_icmple 3
1: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreter:()V
2: invokestatic com.oracle.truffle.js.runtime.Errors.createRangeErrorInvalidStringLength:()Lcom/oracle/truffle/js/runtime/JSException;
athrow
3: StackMap locals:
StackMap stack:
aload 1
aload 2
invokestatic com.oracle.truffle.js.runtime.Boundaries.builderAppend:(Ljava/lang/StringBuilder;Ljava/lang/String;)V
4: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 5 0 this Lcom/oracle/truffle/js/builtins/StringFunctionBuiltins$StringRawNode;
0 5 1 result Ljava/lang/StringBuilder;
0 5 2 str Ljava/lang/String;
MethodParameters:
Name Flags
result
str
}
SourceFile: "StringFunctionBuiltins.java"
NestHost: com.oracle.truffle.js.builtins.StringFunctionBuiltins
InnerClasses:
public abstract Child = com.oracle.truffle.api.nodes.Node$Child of com.oracle.truffle.api.nodes.Node
public abstract StringRawNode = com.oracle.truffle.js.builtins.StringFunctionBuiltins$StringRawNode of com.oracle.truffle.js.builtins.StringFunctionBuiltins