Crash in Compile::find_intrinsic

John Rose john.r.rose at oracle.com
Fri Jan 7 11:42:36 PST 2011


On Jan 7, 2011, at 2:48 AM, Christian Thalinger wrote:

> Wait a second...  I doubt this is a false negative in VerifyMethodHandles.  The MethodHandleWalker can't find a raw retype conversion function and that's why it crashes.  Maybe it is a false negative but then we are missing some conversion logic in the walker too.

Right, I had forgotten!  The bytecode won't verify; that's why raw retypes are different from normal ones.

In the case of a retype-raw, the Java code promises that what's on the stack will not break the verifier's invariants, even though the types don't match.  For spinning bytecodes, do this:
 - ref to primitive:  discard ref, push zero
 - primitive to ref:  discard primitive, push null
 - primitive to boolean: narrow to int, isolate lowest bit (push #1, iand)
 - other primitive to narrower primitive: perform extra narrowing operations (l2i, i2*)

-- John


More information about the mlvm-dev mailing list