rgrig/topl — Issue #12: instrumented constructors fail JVM verification
Author: rgrig
Created: 2012-02-29 15:10:30+00:00
State: open

This does not happen on my desktop, but it does on my laptop.

I have a guess as to why the JVM complains. At the beginning of method `` the first local has type `uninitializedThis`. This is stored into an array of Object. According to the spec both `unintializedThis` and `Object` are subtypes of `reference`, but are not one a subtype of the other.

This means that there is a bug in Barista's symbolic execution that makes it too permissive.

It should also be noted that in Java source code the call `super()` must come before anything else. That is, `uninitializedThis` becomes a specific class name before it is used for anything else.

The solution for TOPL is, probably, to insert the call after `invokespecial`. But I have to think a little whether this is OK.

CC @yoff