From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 119164 invoked by alias); 29 Aug 2017 20:31:29 -0000 Mailing-List: contact kawa-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: kawa-owner@sourceware.org Received: (qmail 119151 invoked by uid 89); 29 Aug 2017 20:31:29 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00,RCVD_IN_DNSWL_LOW,SPF_PASS autolearn=ham version=3.3.2 spammy= X-HELO: aibo.runbox.com Received: from aibo.runbox.com (HELO aibo.runbox.com) (91.220.196.211) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Tue, 29 Aug 2017 20:31:27 +0000 Received: from [10.9.9.210] (helo=mailfront10.runbox.com) by mailtransmit03.runbox with esmtp (Exim 4.86_2) (envelope-from ) id 1dmnAS-00073N-Dg; Tue, 29 Aug 2017 22:31:24 +0200 Received: from 70-36-239-209.dsl.dynamic.fusionbroadband.com ([70.36.239.209] helo=localhost.localdomain) by mailfront10.runbox.com with esmtpsa (uid:757155 ) (TLS1.2:DHE_RSA_AES_128_CBC_SHA1:128) (Exim 4.82) id 1dmn9y-0005QG-OZ; Tue, 29 Aug 2017 22:30:55 +0200 Subject: Re: "Uncaught translation error" when transforming Kawa-compiled classes with dex To: Kay Zheng Cc: Kawa mailing list References: From: Per Bothner Message-ID: <2581b42d-a431-badb-bed4-dd44631ae4bb@bothner.com> Date: Tue, 29 Aug 2017 20:31:00 -0000 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 MIME-Version: 1.0 In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-IsSubscribed: yes X-SW-Source: 2017-q3/txt/msg00013.txt.bz2 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/