public abstract class com.oracle.truffle.js.builtins.math.HypotNode 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.HypotNode
super_class: com.oracle.truffle.js.builtins.math.MathOperation
{
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 // com.oracle.truffle.js.builtins.math.HypotNode this
start local 1 // com.oracle.truffle.js.runtime.JSContext context
start local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
0: .line 49
aload 0 /* this */
aload 1 /* context */
aload 2 /* builtin */
invokespecial com.oracle.truffle.js.builtins.math.MathOperation.<init>:(Lcom/oracle/truffle/js/runtime/JSContext;Lcom/oracle/truffle/js/nodes/function/JSBuiltin;)V
1: .line 50
return
end local 2 // com.oracle.truffle.js.nodes.function.JSBuiltin builtin
end local 1 // com.oracle.truffle.js.runtime.JSContext context
end local 0 // com.oracle.truffle.js.builtins.math.HypotNode this
LocalVariableTable:
Start End Slot Name Signature
0 2 0 this Lcom/oracle/truffle/js/builtins/math/HypotNode;
0 2 1 context Lcom/oracle/truffle/js/runtime/JSContext;
0 2 2 builtin Lcom/oracle/truffle/js/nodes/function/JSBuiltin;
MethodParameters:
Name Flags
context
builtin
protected double hypot(java.lang.Object[]);
descriptor: ([Ljava/lang/Object;)D
flags: (0x0084) ACC_PROTECTED, ACC_VARARGS
Code:
stack=4, locals=24, args_size=2
start local 0 // com.oracle.truffle.js.builtins.math.HypotNode this
start local 1 // java.lang.Object[] args
0: .line 54
aload 1 /* args */
arraylength
istore 2 /* length */
start local 2 // int length
1: .line 55
iload 2 /* length */
newarray 7
astore 3 /* values */
start local 3 // double[] values
2: .line 56
iconst_0
istore 4 /* isInfinite */
start local 4 // boolean isInfinite
3: .line 57
dconst_0
dstore 5 /* max */
start local 5 // double max
4: .line 58
iconst_0
istore 7 /* i */
start local 7 // int i
5: goto 14
6: .line 59
StackMap locals: com.oracle.truffle.js.builtins.math.HypotNode java.lang.Object[] int double[] int double int
StackMap stack:
aload 0 /* this */
aload 1 /* args */
iload 7 /* i */
aaload
invokevirtual com.oracle.truffle.js.builtins.math.HypotNode.toDouble:(Ljava/lang/Object;)D
dstore 8 /* value */
start local 8 // double value
7: .line 60
iload 4 /* isInfinite */
ifne 8
dload 8 /* value */
invokestatic java.lang.Double.isInfinite:(D)Z
ifne 8
iconst_0
goto 9
StackMap locals: double
StackMap stack:
8: iconst_1
StackMap locals:
StackMap stack: int
9: istore 4 /* isInfinite */
10: .line 61
dload 8 /* value */
dload 5 /* max */
dcmpl
ifle 12
11: .line 62
dload 8 /* value */
dstore 5 /* max */
12: .line 64
StackMap locals:
StackMap stack:
aload 3 /* values */
iload 7 /* i */
dload 8 /* value */
dastore
end local 8 // double value
13: .line 58
iinc 7 /* i */ 1
StackMap locals:
StackMap stack:
14: iload 7 /* i */
iload 2 /* length */
if_icmplt 6
end local 7 // int i
15: .line 66
iload 4 /* isInfinite */
ifeq 17
16: .line 67
ldc Infinity
dreturn
17: .line 71
StackMap locals:
StackMap stack:
dload 5 /* max */
dconst_0
dcmpl
ifne 19
18: .line 72
dconst_1
dstore 5 /* max */
19: .line 75
StackMap locals:
StackMap stack:
dconst_0
dstore 7 /* sum */
start local 7 // double sum
20: .line 76
dconst_0
dstore 9 /* compensation */
start local 9 // double compensation
21: .line 77
aload 3 /* values */
dup
astore 15
arraylength
istore 14
iconst_0
istore 13
goto 30
StackMap locals: com.oracle.truffle.js.builtins.math.HypotNode java.lang.Object[] int double[] int double double double top top int int double[]
StackMap stack:
22: aload 15
iload 13
daload
dstore 11 /* value */
start local 11 // double value
23: .line 79
dload 11 /* value */
dload 5 /* max */
ddiv
dstore 16 /* normalizedValue */
start local 16 // double normalizedValue
24: .line 80
dload 16 /* normalizedValue */
dload 16 /* normalizedValue */
dmul
dstore 18 /* square */
start local 18 // double square
25: .line 83
dload 18 /* square */
dload 9 /* compensation */
dsub
dstore 20 /* compensatedValue */
start local 20 // double compensatedValue
26: .line 84
dload 7 /* sum */
dload 20 /* compensatedValue */
dadd
dstore 22 /* nextSum */
start local 22 // double nextSum
27: .line 85
dload 22 /* nextSum */
dload 7 /* sum */
dsub
dload 20 /* compensatedValue */
dsub
dstore 9 /* compensation */
28: .line 86
dload 22 /* nextSum */
dstore 7 /* sum */
end local 22 // double nextSum
end local 20 // double compensatedValue
end local 18 // double square
end local 16 // double normalizedValue
end local 11 // double value
29: .line 77
iinc 13 1
StackMap locals:
StackMap stack:
30: iload 13
iload 14
if_icmplt 22
31: .line 89
dload 7 /* sum */
invokestatic java.lang.Math.sqrt:(D)D
dload 5 /* max */
dmul
dreturn
end local 9 // double compensation
end local 7 // double sum
end local 5 // double max
end local 4 // boolean isInfinite
end local 3 // double[] values
end local 2 // int length
end local 1 // java.lang.Object[] args
end local 0 // com.oracle.truffle.js.builtins.math.HypotNode this
LocalVariableTable:
Start End Slot Name Signature
0 32 0 this Lcom/oracle/truffle/js/builtins/math/HypotNode;
0 32 1 args [Ljava/lang/Object;
1 32 2 length I
2 32 3 values [D
3 32 4 isInfinite Z
4 32 5 max D
5 15 7 i I
7 13 8 value D
20 32 7 sum D
21 32 9 compensation D
23 29 11 value D
24 29 16 normalizedValue D
25 29 18 square D
26 29 20 compensatedValue D
27 29 22 nextSum D
RuntimeVisibleAnnotations:
com.oracle.truffle.api.dsl.Specialization()
MethodParameters:
Name Flags
args
}
SourceFile: "HypotNode.java"