Re: ASM 6.1-beta released

Kumar Srinivasan <[email protected]> Wed, 10 Jan 2018 17:41:19 -0800
Newsgroups gmane.comp.java.objectweb.asm
Organization Java Software - Oracle Corporation
Message-ID <[email protected]>
Hi Eric, Remi,

Heads-up.

I think we have encountered another issue with nashorn. I definitely
need Hannes help on this, I will work with himand file a bug.

Thanks
Kumar


> Hi Eric,
>
> The patch below  works, I am reasonably satisfied, go for integration.
> I will look forward to pulling  the changeset  and have the CI system 
> retest
> everything in its entirety.
>
> Thanks for fixing this quickly!.
>
> Kumar
>
>
>
>> Hi,
>>
>> Thanks for your tests! I've been able to reproduce the issue by comparing the output of ASM 6 and 6.1 beta with COMPUTE_FRAMES on the JDK 8 classes. I found one issue which, one fixed, makes the two outputs identical. Let me know if it also fixes your issues. The fix is the following:
>>
>> diff --git a/asm/src/main/java/org/objectweb/asm/Frame.java b/asm/src/main/java/org/objectweb/asm/Frame.java
>> index 8273b54..f2aaf39 100644
>> --- a/asm/src/main/java/org/objectweb/asm/Frame.java
>> +++ b/asm/src/main/java/org/objectweb/asm/Frame.java
>> @@ -648,7 +648,8 @@
>>             if (abstractType == UNINITIALIZED_THIS) {
>>               return REFERENCE_KIND | symbolTable.addType(symbolTable.getClassName());
>>             } else {
>> -            return REFERENCE_KIND | symbolTable.addType(symbolTable.getType(value).value);
>> +            return REFERENCE_KIND
>> +                | symbolTable.addType(symbolTable.getType(abstractType & VALUE_MASK).value);
>>             }
>>           }
>>         }
>>
>>
>> Eric
>>
>> ----- Mail original -----
>>> De: "Kumar Srinivasan"<[email protected]>
>>> À: "Hannes Wallnöfer"<[email protected]>, "Eric Bruneton"<[email protected]>
>>> Cc: "Evgeny Mandrikov"<[email protected]>, "Remi Forax"<[email protected]>,"“[email protected]”"  <[email protected]>
>>> Envoyé: Mardi 9 Janvier 2018 16:45:21
>>> Objet: Re: [asm] ASM 6.1-beta released
>>>
>>> Hi,
>>>
>>> Filed:https://gitlab.ow2.org/asm/asm/issues/317808
>>>
>>> Kumar
>>>
>>>
>>>> Hi all,
>>>>
>>>> I’m looking at the new problem.
>>>>
>>>> Although many tests fail, it seems to be a single issue with an
>>>> incorrect stack map in a post-processed class. I’ll let you know
>>>> when I find out more.
>>>>
>>>> Hannes
>>>>
>>>>> Am 09.01.2018 um 02:34 schrieb Kumar Srinivasan
>>>>> <[email protected]>:
>>>>>
>>>>>
>>>>> Hi Remi, Evgeny, Eric,
>>>>>
>>>>> [ have included Hannes Wallnoefer, who is handling nashorn related
>>>>> issues]
>>>>>
>>>>> Thanks that seems to fix the issue I was seeing with nasgen.
>>>>>
>>>>> However there are multiple failures most of them are nashorn
>>>>> regresssions,
>>>>> and relating to verification and stackmap frames, attached some
>>>>> output, for
>>>>> reference,  I take it you want the class files ? If so I will try
>>>>> to  provide it tomorrow.
>>>>> Please let me know if you need anything else.
>>>>>
>>>>> Thanks
>>>>> Kumar
>>>>>    [testng] Exception in thread "main" java.lang.VerifyError:
>>>>>    Inconsistent stackmap frames at branch target 49
>>>>>      [testng] Exception Details:
>>>>>      [testng]   Location:
>>>>>      [testng]
>>>>>          jdk/nashorn/internal/objects/Global.newAccessorDescriptor(Ljava/lang/Object;Ljava/lang/Object;ZZ)Ljdk/nashorn/internal/runtime/PropertyDescriptor;
>>>>>      @49: aload_2
>>>>>      [testng]   Reason:
>>>>>      [testng]     Type
>>>>>      'jdk/nashorn/internal/objects/AccessorPropertyDescriptor'
>>>>>      (current frame, locals[5]) is not assignable to
>>>>>      'jdk/nashorn/internal/objects/NativeRegExp' (stack map,
>>>>>      locals[5])
>>>>>      [testng]   Current Frame:
>>>>>      [testng]     bci: @36
>>>>>      [testng]     flags: { }
>>>>>      [testng]     locals: { 'jdk/nashorn/internal/objects/Global',
>>>>>      'java/lang/Object', 'java/lang/Object', integer, integer,
>>>>>      'jdk/nashorn/internal/objects/AccessorPropertyDescriptor' }
>>>>>      [testng]     stack: { 'java/lang/Object' }
>>>>>      [testng]   Stackmap Frame:
>>>>>      [testng]     bci: @49
>>>>>      [testng]     flags: { }
>>>>>      [testng]     locals: { 'jdk/nashorn/internal/objects/Global',
>>>>>      'java/lang/Object', 'java/lang/Object', integer, integer,
>>>>>      'jdk/nashorn/internal/objects/NativeRegExp' }
>>>>>      [testng]     stack: { }
>>>>>      [testng]   Bytecode:
>>>>>      [testng]     0000000: bb03 0359 1d15 042b c700 09b2 02ba a700
>>>>>      [testng]     0000010: 042b 2cc7 0009 b202 baa7 0004 2c2a b703
>>>>>      [testng]     0000020: 063a 052b c700 0d19 0513 0307 03b6 030b
>>>>>      [testng]     0000030: 572c c700 0d19 0513 030c 03b6 030b 5719
>>>>>      [testng]     0000040: 05b0
>>>>>      [testng]   Stackmap Table:
>>>>>      [testng]
>>>>>          full_frame(@17,{Object[#2],Object[#708],Object[#708],Integer,Integer},{Uninitialized[#0],Uninitialized[#0],Integer,Integer})
>>>>>      [testng]
>>>>>          full_frame(@18,{Object[#2],Object[#708],Object[#708],Integer,Integer},{Uninitialized[#0],Uninitialized[#0],Integer,Integer,Object[#708]})
>>>>>      [testng]
>>>>>          full_frame(@28,{Object[#2],Object[#708],Object[#708],Integer,Integer},{Uninitialized[#0],Uninitialized[#0],Integer,Integer,Object[#708]})
>>>>>      [testng]
>>>>>          full_frame(@29,{Object[#2],Object[#708],Object[#708],Integer,Integer},{Uninitialized[#0],Uninitialized[#0],Integer,Integer,Object[#708],Object[#708]})
>>>>>      [testng]     append_frame(@49,Object[#784])
>>>>>      [testng]     same_frame(@63)
>>>>>      [testng]
>>>>>      [testng] 	at
>>>>>      jdk.scripting.nashorn/jdk.nashorn.internal.runtime.Context.newGlobal(Context.java:1240)
>>>>>      [testng] 	at
>>>>>      jdk.scripting.nashorn/jdk.nashorn.internal.runtime.Context.createGlobal(Context.java:1231)
>>>>>      [testng] 	at
>>>>>      jdk.scripting.nashorn/jdk.nashorn.tools.Shell.run(Shell.java:171)
>>>>>      [testng] 	at
>>>>>      jdk.scripting.nashorn/jdk.nashorn.tools.Shell.main(Shell.java:150)
>>>>>      [testng] 	at
>>>>>      jdk.scripting.nashorn/jdk.nashorn.tools.Shell.main(Shell.java:126)
>>>>>      [testng]
>>>>>
>>>>>
>>>>>> Hi Kumar,
>>>>>>
>>>>>> FYI I reportedhttps://gitlab.ow2.org/asm/asm/issues/317805
>>>>>> yesterday
>>>>>> and to me seems that nashorn can be affected affected at least by
>>>>>> this one as following:
>>>>>> org.objectweb.asm.Type.getOpcode(Opcodes.IRETURN)
>>>>>> is used by
>>>>>> org.objectweb.asm.commons.InstructionAdapter#areturn
>>>>>> which in his turn is used by
>>>>>> jdk.nashorn.internal.runtime.linker.JavaAdapterBytecodeGenerator
>>>>>>
>>>>>> Hope this helps.
>>>>>>
>>>>>> Regards,
>>>>>> Evgeny
>>>>>>
>>>>>>
>>>>>> On Mon, Jan 8, 2018 at 7:24 PM Kumar Srinivasan
>>>>>> <[email protected]>  wrote:
>>>>>>
>>>>>> Hi Eric,
>>>>>>
>>>>>> We have encountered a regression in nasgen/nashorn, in our
>>>>>> internal testing,
>>>>>> will file ASM bug when we have more information.
>>>>>>
>>>>>>
>>>>>> Kumar
>>>>>>
>>>>>>> The ASM 6.1-beta version has been released.
>>>>>>>
>>>>>>> Besides a new V10 constant for Java 10 class files, there are no
>>>>>>> new features. However, internally, a lot of changes have been
>>>>>>> made (see below; almost each line of code has changed). These
>>>>>>> extensive changes may have introduced some regressions, so
>>>>>>> please test this version thoroughly and report any bugs found,
>>>>>>> before we release the 6.1 version.
>>>>>>>
>>>>>>> Release notes:
>>>>>>>
>>>>>>> - xml package deprecated
>>>>>>> - project layout changed to Maven style
>>>>>>> - build system changed from Ant to Gradle
>>>>>>> - coding style changed to Google Java style
>>>>>>> - code quality and readability improved a lot
>>>>>>> - code quality tracked with SonarQube
>>>>>>> (http://sonarqube.ow2.org/projects)
>>>>>>> - performance improvements
>>>>>>> - unit tests improved: migrated to JUnit 5, faster, coverage >
>>>>>>> 95%
>>>>>>> - benchmarks improved: now use JMH
>>>>>>> (http://openjdk.java.net/projects/code-tools/jmh)
>>>>>>> - new Gitlab Continuous Integration pipeline
>>>>>>> - small bug fixes related to modules. See
>>>>>>>     *https://gitlab.ow2.org/asm/asm/merge_requests/20/
>>>>>>>     *https://gitlab.ow2.org/asm/asm/merge_requests/19/
>>>>>>> - bug fixes:
>>>>>>>     * #317800: Resizing jump instruction adds invalid stack frame
>>>>>>>     to a class without frames
>>>>>>>
>>>>>>> Backward binary compatibility is preserved, but the behavior at
>>>>>>> runtime has changed in a few areas:
>>>>>>> - ACC_SYNTHETIC flag vs Synthetic attribute, see
>>>>>>> https://gitlab.ow2.org/asm/asm/merge_requests/17
>>>>>>> - numbering of synthetic parameters: see
>>>>>>> https://gitlab.ow2.org/asm/asm/merge_requests/56
>>>>>>> - StringBuffer no longer used in util (Printer.buf deprecated,
>>>>>>> use stringBuilder instead)
>>>>>>>
>>>>>>> The ASM team
>>>>>>>
>>>>>>>
>>>>>> --
>>>>>> You receive this message as a subscriber of [email protected]
>>>>>> mailing list.
>>>>>> To unsubscribe:mailto:[email protected]
>>>>>> For general help:mailto:[email protected]?subject=help
>>>>>> OW2 mailing lists service home page:http://www.ow2.org/wws
>>>>>>
>>>>>>
>>>
>>>
>
>
>


-- 
You receive this message as a subscriber of the [email protected] mailing list.
To unsubscribe: mailto:[email protected]
For general help: mailto:[email protected]?subject=help
OW2 mailing lists service home page: http://www.ow2.org/wws