This is the mail archive of the kawa@sourceware.org mailing list for the Kawa project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Kawa with Android Studio and Gradle


On 07/09/2013 01:13 AM, Per Bothner wrote:
Looking more closely, I notice there is an 'astore 8' (i.e. "pop
object reference from stack and store in register 8") at pc 719,
but the LinNumberTable declares that a boolean variable 'x' is
stored in register 8 starting at pc 468 through 468+578=1046.
Likewise, there is an 'astore 9' at pc 717, though register 9
is supposed to be boolean from pc 519 through 519+527=1046.

The problem is the compilation of "inlined" functions.  If a function
is only called once (not counting tail-calls) it is inlined at the
(non-tail) call-site.  The problem is if there is also a tail-call:
This is implemented by storing the parameters into the parameter
registers and jumping to the start of the function.  If the tail-call
is to a "sibling" function such storing may violate the scoping in
the LocalVarsTable.

I thought I had a fix, but so far it isn't working ...
--
	--Per Bothner
per@bothner.com   http://per.bothner.com/


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]