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: "Uncaught translation error" when transforming Kawa-compiled classes with dex


On 08/29/2017 01:13 PM, Kay Zheng wrote:

Uncaught translation error:
com.android.dx.cf.code.SimException: local variable type mismatch:
attempt to set or access a value of type int using a local variable of
ty$
e gnu.mapping.CallContext. This is symptomatic of .class
transformation tools that ignore local variable information.
         at com.android.dx.cf.code.BaseMachine.throwLocalMismatch(BaseMachine.java:575)
         at com.android.dx.cf.code.Simulator$SimVisitor.visitLocal(Simulator.java:584)
         at com.android.dx.cf.code.BytecodeArray.parseInstruction(BytecodeArray.java:458)
         at com.android.dx.cf.code.Simulator.simulate(Simulator.java:94)
         at com.android.dx.cf.code.Ropper.processBlock(Ropper.java:787)
         at com.android.dx.cf.code.Ropper.doit(Ropper.java:742)
         at com.android.dx.cf.code.Ropper.convert(Ropper.java:349)
         at com.android.dx.dex.cf.CfTranslator.processMethods(CfTranslator.java:285)
         at com.android.dx.dex.cf.CfTranslator.translate0(CfTranslator.java:141)
         at com.android.dx.dex.cf.CfTranslator.translate(CfTranslator.java:95)
         at com.android.dx.command.dexer.Main.translateClass(Main.java:799)
         at com.android.dx.command.dexer.Main.access$2800(Main.java:88)
         at com.android.dx.command.dexer.Main$ClassTranslatorTask.call(Main.java:1863)
         at com.android.dx.command.dexer.Main$ClassTranslatorTask.call(Main.java:1848)
         at java.util.concurrent.FutureTask.run(FutureTask.java:266)
         at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
         at java.lang.Thread.run(Thread.java:748)
...
...while working on method
stringConcatenateReverse$SlShared$V:(Ljava/lang/Object;Lgnu/lists/LList;)Ljava/lang/Object;
...while processing stringConcatenateReverse$SlShared$V
(Ljava/lang/Object;Lgnu/lists/LList;)Ljava/lang/Object;

I do see a problem.  The method stringConcatenateReverse$SlShared$V in srfi13.class has
the following:

Attribute "LocalVariableTable", length:92, count: 9
  slot#0: name: string-list, type: java.lang.Object (pc: 0 length: 662)
  slot#1: name: maybe-final+end, type: gnu.lists.LList (pc: 0 length: 662)
  slot#2: name: final, type: java.lang.Object (pc: 23 length: 639)
  slot#3: name: end, type: java.lang.Object (pc: 124 length: 538)
  slot#4: name: len, type: java.lang.Object (pc: 300 length: 247)
  slot#5: name: nzlist, type: java.lang.Object (pc: 300 length: 247)
  slot#6: name: lis, type: java.lang.Object (pc: 300 length: 247)
  slot#7: name: $ctx, type: gnu.mapping.CallContext (pc: 300 length: 247)
  slot#7: name: slen, type: int (pc: 340 length: 67)

Notice slot 7 is used for two different variables, of different types - and their
PC ranges overlap.  Hm.

--
	--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]