Re: ASM 6.1-beta released

[email protected] Thu, 11 Jan 2018 16:37:11 +0100 (CET)
Newsgroups gmane.comp.java.objectweb.asm
Message-ID <[email protected]>
Hi Kumar,

----- Mail original -----
> De: "Kumar Srinivasan" <[email protected]>
> À: "Hannes Wallnöfer" <[email protected]>, "Eric Bruneton" <[email protected]>, "Remi Forax"
> <[email protected]>
> Cc: "asm" <[email protected]>
> Envoyé: Jeudi 11 Janvier 2018 15:41:25
> Objet: Re: [asm] ASM 6.1-beta released

> Hello All,
> 
> Thanks Hannes, for the quick analysis.
> 
> Remi and co. it would be best if you hold off declaring victory on ASM
> 6.1 until the entire JDK testing is completed, will need more time, likely end of
> next week.
> 
> Thanks
> Kumar

Don't worry, we know that this release is a little special because unlike the others, a lot of code was rewritten to a more modern form so bugs may have been introduced.
We hope these changes will help us to shallow huge changes like the introduction of value types/parameterized types in future releases.

cheers,
Rémi

> 
>> Hi all,
>>
>> It looks like this is a Nashorn bug exposed by ASM Type.getType(String) method
>> having become stricter in what it accepts.
>>
>> We are passing an internal class name instead of a type descriptor to above
>> method i.e. a string without leading ‚L' of the form „jdk/nashorn/internal/…“.
>> This was ok with the old version of ASM although it returned a method type,
>> while now it correctly throws IllegalArgumentException.
>>
>> I’m filing  a bug for Nashorn.
>>
>> Hannes
>>
>>
>>> Am 11.01.2018 um 02:41 schrieb Kumar Srinivasan <[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 reported
>>>>>>>>> https://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 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
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>
>>>>


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