On 29.08.2011 00:56, Jonas Maebe wrote:
On 28 Aug 2011, at 23:01, Jonas Maebe wrote:
The org.freepascal.rtl.system class verifies fine here, and the FpcBitSet stuff
also works fine. Maybe the methods of java.util.BitSet (on which
org.freepascal.rtl.FpcBitSet is based) have different signatures in the Android
version compared to the Java version. Since the FPC RTL shipped with the
snapshot is compiled against the JDK bindings, that would explain the problems.
Now I see: the Android VM apparently also looks at the debug information and
checks whether it's appropriate everywhere. The compiler currently says for
each local variable and parameter that it's located in a particular stack slot
from start to finish of the method. However, if it's only used in part of the
method, the stack slot may be reused by temporary values with different types
(or because of SSA, it may migrate from one stack slot to another, because
virtual registers are also mapped to stack slots). This is what the Android VM
verifier is complaining about.
You may be able to work around the issue for now by compiling without debugging
information (-g-), but you'll also have to recompile the RTL without debug
information. I believe Florian has been working recently on tracking the
location of variables/parameters throughout the code of a procedure, so it may
be possible to fix it with the help of that information.
Without debug information it works. Next step: creating one of the
Android classes from within FPC compiled code. :)
Regards,
Sven
_______________________________________________
fpc-devel maillist - fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel