public abstract class com.oracle.truffle.js.builtins.math.RoundNode 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.RoundNode
super_class: com.oracle.truffle.js.builtins.math.MathOperation
{
private final com.oracle.truffle.api.profiles.ConditionProfile shiftProfile;
descriptor: Lcom/oracle/truffle/api/profiles/ConditionProfile;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private final com.oracle.truffle.api.profiles.BranchProfile negativeLongBitsProfile;
descriptor: Lcom/oracle/truffle/api/profiles/BranchProfile;
flags: (0x0012) ACC_PRIVATE, ACC_FINAL
private static final int EXP_BIAS;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 1023
private static final int SIGNIFICAND_WIDTH;
descriptor: I
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 53
private static final long EXP_BIT_MASK;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 9218868437227405312
private static final long SIGNIF_BIT_MASK;
descriptor: J
flags: (0x001a) ACC_PRIVATE, ACC_STATIC, ACC_FINAL
ConstantValue: 4503599627370495
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/builtins/math/RoundNode;
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.builtins.math.RoundNode.$assertionsDisabled:Z
3: return
LocalVariableTable:
Start End Slot Name Signature
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: (0x0000)
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
invokestatic com.oracle.truffle.api.profiles.ConditionProfile.createBinaryProfile:()Lcom/oracle/truffle/api/profiles/ConditionProfile;
putfield com.oracle.truffle.js.builtins.math.RoundNode.shiftProfile:Lcom/oracle/truffle/api/profiles/ConditionProfile;
2: aload 0
invokestatic com.oracle.truffle.api.profiles.BranchProfile.create:()Lcom/oracle/truffle/api/profiles/BranchProfile;
putfield com.oracle.truffle.js.builtins.math.RoundNode.negativeLongBitsProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
3: return
end local 2 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 4 0 this Lcom/oracle/truffle/js/builtins/math/RoundNode;
0 4 1 context Lcom/oracle/truffle/js/runtime/JSContext;
0 4 2 builtin Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
MethodParameters:
Name Flags
context
builtin
public static com.oracle.truffle.js.builtins.math.RoundNode create(com.oracle.truffle.js.runtime.JSContext, com.oracle.truffle.js.nodes.function.JSBuiltin, com.oracle.truffle.js.nodes.JavaScriptNode[]);
descriptor: (Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;[Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/builtins/math/RoundNode;
flags: (0x0009) ACC_PUBLIC, ACC_STATIC
Code:
stack=3, locals=3, args_size=3
0: new java.lang.Error
dup
ldc "Unresolved compilation problem: \n\tRoundNodeGen cannot be resolved\n"
invokespecial java.lang.Error.<init>:(Ljava/lang/String;)V
athrow
LocalVariableTable:
Start End Slot Name Signature
MethodParameters:
Name Flags
context
builtin
arguments
protected static com.oracle.truffle.js.nodes.JavaScriptNode[] createCast(com.oracle.truffle.js.nodes.JavaScriptNode[]);
descriptor: ([Lcom/oracle/truffle/js/nodes/JavaScriptNode;)[Lcom/oracle/truffle/js/nodes/JavaScriptNode;
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=4, locals=1, args_size=1
start local 0 0: aload 0
iconst_0
aload 0
iconst_0
aaload
invokestatic com.oracle.truffle.js.nodes.cast.JSToNumberNode.create:(Lcom/oracle/truffle/js/nodes/JavaScriptNode;)Lcom/oracle/truffle/js/nodes/JavaScriptNode;
aastore
1: aload 0
areturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 argumentNodes [Lcom/oracle/truffle/js/nodes/JavaScriptNode;
MethodParameters:
Name Flags
argumentNodes
protected static boolean isCornercase(double);
descriptor: (D)Z
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: dload 0
invokestatic java.lang.Double.isNaN:(D)Z
ifne 1
dload 0
invokestatic com.oracle.truffle.js.runtime.JSRuntime.isNegativeZero:(D)Z
ifne 1
iconst_0
ireturn
StackMap locals:
StackMap stack:
1: iconst_1
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 2 0 d D
MethodParameters:
Name Flags
d
protected static int roundInt(int);
descriptor: (I)I
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=1, locals=1, args_size=1
start local 0 0: iload 0
ireturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 a I
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization()
MethodParameters:
Name Flags
a
protected static double roundCornercase(double);
descriptor: (D)D
flags: (0x000c) ACC_PROTECTED, ACC_STATIC
Code:
stack=2, locals=2, args_size=1
start local 0 0: dload 0
dreturn
end local 0 LocalVariableTable:
Start End Slot Name Signature
0 1 0 value D
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"isCornercase(value)"})
MethodParameters:
Name Flags
value
private long round(double);
descriptor: (D)J
flags: (0x0002) ACC_PRIVATE
Code:
stack=5, locals=11, args_size=2
start local 0 start local 1 0: dload 1
invokestatic java.lang.Double.doubleToRawLongBits:(D)J
lstore 3
start local 3 1: lload 3
ldc 9218868437227405312
land
bipush 52
lshr
lstore 5
start local 5 2: ldc 1074
lload 5
lsub
lstore 7
start local 7 3: aload 0
getfield com.oracle.truffle.js.builtins.math.RoundNode.shiftProfile:Lcom/oracle/truffle/api/profiles/ConditionProfile;
lload 7
ldc -64
land
lconst_0
lcmp
ifne 4
iconst_1
goto 5
StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double long long long
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
4: iconst_0
StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double long long long
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
5: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
ifeq 11
6: lload 3
ldc 4503599627370495
land
ldc 4503599627370496
lor
lstore 9
start local 9 7: lload 3
lconst_0
lcmp
ifge 10
8: aload 0
getfield com.oracle.truffle.js.builtins.math.RoundNode.negativeLongBitsProfile:Lcom/oracle/truffle/api/profiles/BranchProfile;
invokevirtual com.oracle.truffle.api.profiles.BranchProfile.enter:()V
9: lload 9
lneg
lstore 9
10: StackMap locals: long
StackMap stack:
lload 9
lload 7
l2i
lshr
lconst_1
ladd
iconst_1
lshr
lreturn
end local 9 11: StackMap locals:
StackMap stack:
dload 1
d2l
lreturn
end local 7 end local 5 end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 12 0 this Lcom/oracle/truffle/js/builtins/math/RoundNode;
0 12 1 a D
1 12 3 longBits J
2 12 5 biasedExp J
3 12 7 shift J
7 11 9 r J
MethodParameters:
Name Flags
a
protected int roundDoubleInt(double);
descriptor: (D)I
flags: (0x0004) ACC_PROTECTED
Code:
stack=4, locals=5, args_size=2
start local 0 start local 1 0: aload 0
dload 1
invokevirtual com.oracle.truffle.js.builtins.math.RoundNode.round:(D)J
lstore 3
start local 3 1: lload 3
lconst_0
lcmp
ifne 4
dload 1
dconst_0
dcmpg
ifge 4
2: invokestatic com.oracle.truffle.api.CompilerDirectives.transferToInterpreterAndInvalidate:()V
3: new java.lang.ArithmeticException
dup
invokespecial java.lang.ArithmeticException.<init>:()V
athrow
4: StackMap locals: long
StackMap stack:
getstatic com.oracle.truffle.js.builtins.math.RoundNode.$assertionsDisabled:Z
ifne 5
lload 3
invokestatic com.oracle.truffle.js.runtime.JSRuntime.longIsRepresentableAsInt:(J)Z
ifne 5
new java.lang.AssertionError
dup
invokespecial java.lang.AssertionError.<init>:()V
athrow
5: StackMap locals:
StackMap stack:
lload 3
l2i
ireturn
end local 3 end local 1 end local 0 LocalVariableTable:
Start End Slot Name Signature
0 6 0 this Lcom/oracle/truffle/js/builtins/math/RoundNode;
0 6 1 value D
1 6 3 longValue J
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"!isCornercase(value)", "isDoubleInInt32Range(value)"}, rewriteOn = {Ljava/lang/ArithmeticException;})
MethodParameters:
Name Flags
value
protected double roundDouble(double, com.oracle.truffle.api.profiles.ConditionProfile, com.oracle.truffle.api.profiles.ConditionProfile);
descriptor: (DLcom/oracle/truffle/api/profiles/ConditionProfile;Lcom/oracle/truffle/api/profiles/ConditionProfile;)D
flags: (0x0004) ACC_PROTECTED
Code:
stack=5, locals=7, args_size=4
start local 0 start local 1 start local 3 start local 4 0: aload 0
dload 1
invokevirtual com.oracle.truffle.js.builtins.math.RoundNode.round:(D)J
lstore 5
start local 5 1: aload 3
lload 5
ldc -9223372036854775808
lcmp
ifeq 2
lload 5
ldc 9223372036854775807
lcmp
ifeq 2
iconst_0
goto 3
StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile long
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile
2: iconst_1
StackMap locals: com.oracle.truffle.js.builtins.math.RoundNode double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile long
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
dreturn
5: StackMap locals:
StackMap stack:
aload 4
lload 5
lconst_0
lcmp
ifne 6
dload 1
dconst_0
dcmpg
ifge 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.RoundNode double com.oracle.truffle.api.profiles.ConditionProfile com.oracle.truffle.api.profiles.ConditionProfile long
StackMap stack: com.oracle.truffle.api.profiles.ConditionProfile int
7: invokevirtual com.oracle.truffle.api.profiles.ConditionProfile.profile:(Z)Z
ifeq 9
8: ldc -0.0
dreturn
9: StackMap locals:
StackMap stack:
lload 5
l2d
dreturn
end local 5 end local 4 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/RoundNode;
0 10 1 value D
0 10 3 profileA Lcom/oracle/truffle/api/profiles/ConditionProfile;
0 10 4 profileB Lcom/oracle/truffle/api/profiles/ConditionProfile;
1 10 5 longValue J
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization(guards = {"!isCornercase(value)"}, replaces = {"roundDoubleInt"})
RuntimeInvisibleParameterAnnotations:
0:
1:
com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
2:
com.oracle.truffle.api.dsl.Cached(value = "createBinaryProfile()")
MethodParameters:
Name Flags
value
profileA
profileB
}
SourceFile: "RoundNode.java"