Hi Egor,

Thank you for finding this problem. I created a new Jira issue [1] for that.

[1] https://bugs.openjdk.java.net/browse/JDK-8252933

Best regards,
Daniil

On 9/8/20, 8:31 AM, "Egor Ushakov" <egor.usha...@jetbrains.com> wrote:

    Hi Daniil,

    we have some tests checking the number of jdwp packets and they've 
    detected a regression here:
    com.jetbrains.jdi.ObjectReferenceImpl#validateAssignment now always 
    requests referenceType (requiring one more jdwp packet if value is not 
    yet cached),
    previously it happened only for arrays.

    Simple fix like this solves the issue:
    ===================================================================
    --- src/main/java/com/jetbrains/jdi/ObjectReferenceImpl.java (revision 
    d96cab0ec2eeb791cceb7884341c56496cc026b9)
    +++ src/main/java/com/jetbrains/jdi/ObjectReferenceImpl.java (revision 
    10a78a742d17338778e0226990ad0029a71cbf50)
    @@ -647,11 +647,10 @@
               */

              JNITypeParser destSig = new 
    JNITypeParser(destination.signature());
    -        JNITypeParser sourceSig = new JNITypeParser(type().signature());
              if (destSig.isPrimitive()) {
                  throw new InvalidTypeException("Can't assign object value 
    to primitive");
              }
    -        if (destSig.isArray() && !sourceSig.isArray()) {
    +        if (destSig.isArray() && !new 
    JNITypeParser(type().signature()).isArray()) {
                  throw new InvalidTypeException("Can't assign non-array 
    value to an array");
              }
              if (destSig.isVoid()) {

    If possible - please push the fix.

    Thanks,
    Egor

    On 19-May-20 19:32, Daniil Titov wrote:
    > Hi Chris and Serguei,
    >
    > Thank you for reviewing this change.
    >
    > Best regards,
    > Daniil
    >
    > On 5/18/20, 12:41 PM, "Chris Plummer" <chris.plum...@oracle.com> wrote:
    >
    >      Looks good.
    >
    >      thanks,
    >
    >      Chris
    >
    >      On 5/14/20 1:33 PM, Daniil Titov wrote:
    >      > Hi Serguei and Chris,
    >      >
    >      > Please review a new version of the change [1] that addresses your 
comments.
    >      >
    >      > Testing: Mach5 tier1-tier5 tests successfully passed.
    >      >
    >      > Regarding CR for the JDWP spec issues related to missing type 
information  in some of the protocol packet descriptions [3], as Chris has just 
noticed
    >      > we  really don't need it, so I withdrew this CR.
    >      >
    >      > [1] http://cr.openjdk.java.net/~dtitov/8241080/webrev.02
    >      > [2] https://bugs.openjdk.java.net/browse/JDK-8241080
    >      > [3] https://bugs.openjdk.java.net/browse/JDK-8245057
    >      >
    >      > Thank you,
    >      > Daniil
    >      >
    >      >
    >      > From: "serguei.spit...@oracle.com" <serguei.spit...@oracle.com>
    >      > Date: Monday, May 11, 2020 at 11:53 AM
    >      > To: Daniil Titov <daniil.x.ti...@oracle.com>, serviceability-dev 
<serviceability-dev@openjdk.java.net>
    >      > Subject: Re: RFR: 8241080: Consolidate signature parsing code in 
serviceability tools
    >      >
    >      > Hi Daniil,
    >      >
    >      > It looks pretty good in general.
    >      > A couple of nits below.
    >      >
    >      > 
http://cr.openjdk.java.net/~dtitov/8241080/webrev.01/src/jdk.jdwp.agent/share/native/libjdwp/invoker.c.udiff.html
    >      > +    void *cursor;
    >      > +    jbyte argumentTag;
    >      > +    jint argIndex = 0;
    >      > +    jvalue *argument = request->arguments;;
    >      > . . .
    >      >       void *cursor;
    >      >       jint argIndex = 0;
    >      > +    jbyte argumentTag;
    >      >       jvalue *argument = request->arguments;
    >      >
    >      > It is better if the local variables 'cursor' and 'argumentTag' get 
initialized.
    >      > There is double semicolon: "arguments;;"
    >      >
    >      >
    >      > 
http://cr.openjdk.java.net/~dtitov/8241080/webrev.01/src/jdk.jdwp.agent/share/native/libjdwp/signature.h.html
    >      >    43 static inline jbyte basicType(const char *signature) {
    >      >
    >      > It'd be nice to rename it to basicTypeTag() to get it unified with 
other functions below.
    >      >
    >      > It is more safe to run tier5 as well.
    >      >
    >      > Thanks,
    >      > Serguei
    >      >
    >      >
    >      > On 5/9/20 09:29, Daniil Titov wrote:
    >      > Please review a change[1] that centralizes the signature 
processing in serviceability tools to make it capable of being easily 
extensible in the future.
    >      >
    >      > Testing: Mach5 tier1-tier3 tests successfully passed.
    >      >
    >      > [1] http://cr.openjdk.java.net/~dtitov/8241080/webrev.01
    >      > [2] https://bugs.openjdk.java.net/browse/JDK-8241080
    >      >
    >      > Thank you,
    >      > Daniil
    >      >
    >      >
    >      >
    >      >
    >      >
    >      >
    >
    >
    >

    -- 
    Egor Ushakov
    Software Developer
    JetBrains
    
https://urldefense.com/v3/__http://www.jetbrains.com__;!!GqivPVa7Brio!JOhCc9k54KkUPFPbiviF1MS9YfERc-yqYJLt1n1eVlGWDpapPTdxtFv6f9a6PBgP129w$
 
    The Drive to Develop



Reply via email to