Run test script :
var x = { a: 2, b:1 };
x.a = Number.POSITIVE_INFINITY;
x.b = 0;
print(x.a/x.b);
with options: -Dnashorn.typeInfo.maxFiles=100 --log=recompile:fine
output :
[recompile] Parameter type specialization of ':program' signature: (Object,Object)Object
[recompile] Failed to calculate version dir namejava.lang.NullPointerException
[recompile] Looking up ':program' type=(ScriptFunction,Object)Object
[recompile] Looking up ':program' type=(ScriptFunction,Object)Object
[recompile] RewriteException [pp=9, type=double, value=Infinityd)]
[recompile] Deoptimizing recompilation (up to bytecode) ':program' signature: (ScriptFunction,Object)Object [2->D] [9->D]
[recompile] Reusable IR generated
[recompile] Generating and installing bytecode from reusable IR...
[recompile] Rest-of compilation [CODE PIPELINE REUSE] ':program' signature: (ScriptFunction,Object)Object [2->D] [9->D]
[recompile] Done.
[recompile] Recompiled ':program' (0x0ea6147e) can still be deoptimized.
[recompile] Looking up invoker...
[recompile] Looking up ':program' type=(ScriptFunction,Object)Object
[recompile] Done: MethodHandle(ScriptFunction,Object)Object
[recompile] Looking up ':program' type=(RewriteException)Object
Infinity