public abstract class com.oracle.truffle.js.builtins.math.PowNode extends com.oracle.truffle.js.builtins.math.MathOperation
minor version: 0
major version: 59
flags: flags: (0x0421) ACC_PUBLIC, ACC_SUPER, ACC_ABSTRACT
this_class: com.oracle.truffle.js.builtins.math.PowNode
super_class: com.oracle.truffle.js.builtins.math.MathOperation
{
private boolean hasSeenOne;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
private boolean hasSeenTwo;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
private boolean hasSeenThree;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
private boolean hasSeenZeroPointFive;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
private boolean hasSeenOnePointFive;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
private boolean hasSeenTwoPointFive;
descriptor: Z
flags: (0x0002) ACC_PRIVATE
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$CompilationFinal()
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=3, 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.builtins.math.MathOperation.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
1: aload 0
iconst_0
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenOne:Z
2: aload 0
iconst_0
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenTwo:Z
3: aload 0
iconst_0
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenThree:Z
4: aload 0
iconst_0
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenZeroPointFive:Z
5: aload 0
iconst_0
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenOnePointFive:Z
6: aload 0
iconst_0
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenTwoPointFive:Z
7: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 8 0 this Lcom/oracle/truffle/js/builtins/math/PowNode;
0 8 1 context Lcom/oracle/truffle/js/runtime/JSContext;
0 8 2 builtin Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
MethodParameters:
Name Flags
context
builtin
public abstract double execute(java.lang.Object, java.lang.Object);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;)D
flags: (0x0401) ACC_PUBLIC, ACC_ABSTRACT
MethodParameters:
Name Flags
a
b
protected com.oracle.truffle.js.builtins.math.PowNode create(com.oracle.truffle.js.runtime.JSContext);
descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;)Lcom/oracle/truffle/js/builtins/math/PowNode;
flags: (0x0004) ACC_PROTECTED
Code:
stack=3, locals=2, args_size=2
start local 0 0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tPowNodeGen cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 this Lcom/oracle/truffle/js/builtins/math/PowNode;
MethodParameters:
Name Flags
context
protected double pow(double, double);
descriptor: (DD)D
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=5, args_size=3
start local 0 start local 1 start local 3 0: aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenOne:Z
ifeq 2
dload 3
dconst_1
dcmpl
ifne 2
1: dload 1
dreturn
2: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenTwo:Z
ifeq 4
dload 3
ldc 2.0
dcmpl
ifne 4
3: dload 1
dload 1
dmul
dreturn
4: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenThree:Z
ifeq 6
dload 3
ldc 3.0
dcmpl
ifne 6
5: dload 1
dload 1
dmul
dload 1
dmul
dreturn
6: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenZeroPointFive:Z
ifne 7
aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenOnePointFive:Z
ifne 7
aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenTwoPointFive:Z
ifeq 9
StackMap locals:
StackMap stack:
7: dload 1
dconst_0
dcmpg
iflt 8
dload 1
ldc -0.0
dcmpl
ifne 9
8: StackMap locals:
StackMap stack:
dload 1
dload 3
invokestatic com.oracle.truffle.js.builtins.math.PowNode.powIntl:(DD)D
dreturn
9: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenZeroPointFive:Z
ifeq 11
dload 3
ldc 0.5
dcmpl
ifne 11
10: dload 1
invokestatic java.lang.Math.sqrt:(D)D
dreturn
11: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenOnePointFive:Z
ifeq 13
dload 3
ldc 1.5
dcmpl
ifne 13
12: dload 1
dload 1
invokestatic java.lang.Math.sqrt:(D)D
dmul
dreturn
13: StackMap locals:
StackMap stack:
aload 0
getfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenTwoPointFive:Z
ifeq 15
dload 3
ldc 2.5
dcmpl
ifne 15
14: dload 1
dload 1
dmul
dload 1
invokestatic java.lang.Math.sqrt:(D)D
dmul
dreturn
15: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
16: dload 3
dconst_1
dcmpl
ifne 19
17: aload 0
iconst_1
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenOne:Z
18: goto 35
StackMap locals:
StackMap stack:
19: dload 3
ldc 2.0
dcmpl
ifne 22
20: aload 0
iconst_1
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenTwo:Z
21: goto 35
StackMap locals:
StackMap stack:
22: dload 3
ldc 3.0
dcmpl
ifne 25
23: aload 0
iconst_1
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenThree:Z
24: goto 35
StackMap locals:
StackMap stack:
25: dload 3
ldc 0.5
dcmpl
ifne 28
26: aload 0
iconst_1
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenZeroPointFive:Z
27: goto 35
StackMap locals:
StackMap stack:
28: dload 3
ldc 1.5
dcmpl
ifne 31
29: aload 0
iconst_1
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenOnePointFive:Z
30: goto 35
StackMap locals:
StackMap stack:
31: dload 3
ldc 2.5
dcmpl
ifne 34
32: aload 0
iconst_1
putfield com.oracle.truffle.js.builtins.math.PowNode.hasSeenTwoPointFive:Z
33: goto 35
34: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.js.nodes.JSNodeUtil.slowPathException:()Lcom/oracle/truffle/api/nodes/SlowPathException;
athrow
35: StackMap locals:
StackMap stack:
aload 0
dload 1
dload 3
invokevirtual com.oracle.truffle.js.builtins.math.PowNode.pow:(DD)D
dreturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 36 0 this Lcom/oracle/truffle/js/builtins/math/PowNode;
0 36 1 a D
0 36 3 b D
Exceptions:
throws com.oracle.truffle.api.nodes.SlowPathException
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(rewriteOn = {Lcom/oracle/truffle/api/nodes/SlowPathException;})
MethodParameters:
Name Flags
a
b
private static double positivePow(double, int);
descriptor: (DI)D
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=8, args_size=2
start local 0 start local 2 0: iload 2
istore 3
start local 3 1: dconst_1
dstore 4
start local 4 2: dload 0
dstore 6
start local 6 3: goto 8
4: StackMap locals: int double double
StackMap stack:
iload 3
iconst_1
iand
iconst_1
if_icmpne 6
5: dload 4
dload 6
dmul
dstore 4
6: StackMap locals:
StackMap stack:
iload 3
iconst_1
ishr
istore 3
7: dload 6
dload 6
dmul
dstore 6
8: StackMap locals:
StackMap stack:
iload 3
ifgt 4
9: dload 4
dreturn
end local 6 end local 4 end local 3 end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 operand D
0 10 2 castExponent I
1 10 3 exponent I
2 10 4 result D
3 10 6 base D
MethodParameters:
Name Flags
operand
castExponent
protected double pow2(double, double);
descriptor: (DD)D
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=5, args_size=3
start local 0 start local 1 start local 3 0: dload 3
iconst_1
invokestatic com.oracle.truffle.js.runtime.JSRuntime.doubleIsRepresentableAsInt:(DZ)Z
ifeq 2
dload 3
dconst_0
dcmpl
ifle 2
1: dload 1
dload 3
d2i
invokestatic com.oracle.truffle.js.builtins.math.PowNode.positivePow:(DI)D
dreturn
2: StackMap locals:
StackMap stack:
invokestatic com.oracle.truffle.js.nodes.JSNodeUtil.slowPathException:()Lcom/oracle/truffle/api/nodes/SlowPathException;
athrow
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 3 0 this Lcom/oracle/truffle/js/builtins/math/PowNode;
0 3 1 a D
0 3 3 b D
Exceptions:
throws com.oracle.truffle.api.nodes.SlowPathException
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(rewriteOn = {Lcom/oracle/truffle/api/nodes/SlowPathException;})
MethodParameters:
Name Flags
a
b
protected double pow3(double, double, com.oracle.truffle.api.profiles.ConditionProfile, com.oracle.truffle.api.profiles.ConditionProfile);
descriptor: (DDLcom/oracle/truffle/api/profiles/ConditionProfile;Lcom/oracle/truffle/api/profiles/ConditionProfile;)D
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=8, args_size=5
start local 0 start local 1 start local 3 start local 5 start local 6 0: dload 3
d2i
istore 7
start local 7 1: aload 5
dload 3
iconst_1
invokestatic com.oracle.truffle.js.runtime.JSRuntime.doubleIsRepresentableAsInt:(DZ)Z
ifeq 2
dload 3
dconst_0
dcmpl
ifle 2
iconst_1
goto 3
StackMap locals: com.oracle.truffle.js.builtins.math.PowNode double double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile int
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
2: iconst_0
StackMap locals: com.oracle.truffle.js.builtins.math.PowNode double double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile int
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
3: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
ifeq 5
4: dload 1
iload 7
invokestatic com.oracle.truffle.js.builtins.math.PowNode.positivePow:(DI)D
dreturn
5: StackMap locals:
StackMap stack:
aload 6
iload 7
i2d
ldc 0.5
dadd
dload 3
dcmpl
ifne 6
dload 3
dconst_0
dcmpl
ifle 6
dload 1
dconst_0
dcmpl
ifle 6
dload 1
ldc -0.0
dcmpl
ifeq 6
iconst_1
goto 7
StackMap locals:
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
6: iconst_0
StackMap locals: com.oracle.truffle.js.builtins.math.PowNode double double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile int
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
7: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
ifeq 9
8: dload 1
iload 7
invokestatic com.oracle.truffle.js.builtins.math.PowNode.positivePow:(DI)D
dload 1
invokestatic java.lang.Math.sqrt:(D)D
dmul
dreturn
9: StackMap locals:
StackMap stack:
dload 1
dload 3
invokestatic com.oracle.truffle.js.builtins.math.PowNode.powIntl:(DD)D
dreturn
end local 7 end local 6 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 10 0 this Lcom/oracle/truffle/js/builtins/math/PowNode;
0 10 1 a D
0 10 3 b D
0 10 5 branch1 Lcom/oracle/truffle/api/profiles/ConditionProfile;
0 10 6 branch2 Lcom/oracle/truffle/api/profiles/ConditionProfile;
1 10 7 ib I
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization()
RuntimeInvisibleAnnotations:
com.oracle.truffle.js.runtime.SuppressFBWarnings(value = {"FE_FLOATING_POINT_EQUALITY"}, justification = "not necessary in this case")
RuntimeInvisibleTypeAnnotations:
METHOD_RETURN
com.oracle.truffle.js.runtime.SuppressFBWarnings(value = {"FE_FLOATING_POINT_EQUALITY"}, justification = "not necessary in this case")
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
3:
com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
MethodParameters:
Name Flags
a
b
branch1
branch2
protected java.lang.Object pow(java.lang.Object, java.lang.Object, com.oracle.truffle.js.builtins.math.PowNode);
descriptor: (Ljava/lang/Object;Ljava/lang/Object;Lcom/oracle/truffle/js/builtins/math/PowNode;)Ljava/lang/Object;
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 3
aload 0
aload 1
invokevirtual com.oracle.truffle.js.builtins.math.PowNode.toDouble:(Ljava/lang/Object;)D
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
aload 0
aload 2
invokevirtual com.oracle.truffle.js.builtins.math.PowNode.toDouble:(Ljava/lang/Object;)D
invokestatic java.lang.Double.valueOf:(D)Ljava/lang/Double;
invokevirtual com.oracle.truffle.js.builtins.math.PowNode.execute:(Ljava/lang/Object;Ljava/lang/Object;)D
invokestatic com.oracle.truffle.js.runtime.JSRuntime.doubleToNarrowestNumber:(D)Ljava/lang/Number;
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/js/builtins/math/PowNode;
0 1 1 a Ljava/lang/Object;
0 1 2 b Ljava/lang/Object;
0 1 3 powNode Lcom/oracle/truffle/js/builtins/math/PowNode;
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization()
RuntimeInvisibleParameterAnnotations:
0:
1:
2:
com.oracle.truffle.api.dsl.Cached(value = "create(getContext())")
MethodParameters:
Name Flags
a
b
powNode
private static double powIntl(double, double);
descriptor: (DD)D
flags: (0x000a) ACC_PRIVATE, ACC_STATIC
Code:
stack=4, locals=4, args_size=2
start local 0 start local 2 0: dload 0
dload 2
invokestatic java.lang.Math.pow:(DD)D
dreturn
end local 2 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 a D
0 1 2 b D
RuntimeVisibleAnnotations:
com.oracle.truffle.api.CompilerDirectives$TruffleBoundary()
MethodParameters:
Name Flags
a
b
}
SourceFile: "PowNode.java"
InnerClasses:
public abstract CompilationFinal = com.oracle.truffle.api.CompilerDirectives$CompilationFinal of com.oracle.truffle.api.CompilerDirectives
public abstract TruffleBoundary = com.oracle.truffle.api.CompilerDirectives$TruffleBoundary of com.oracle.truffle.api.CompilerDirectives