Github user mgaido91 commented on the issue:

    https://github.com/apache/spark/pull/19916
  
    thanks for your answer @kiszk. I included the code in a main function and 
run it with the command I showed in the previous comment.
    The loop is not eliminated, I checked the java bytecode as said, and the 
only difference between the two loops is an additional operation `checkcast`.
    
    For reference I can report here the bytecode:
    ```
             0: new           #2                  // class java/lang/Integer
             3: dup
             4: iconst_1
             5: invokespecial #3                  // Method 
java/lang/Integer."<init>":(I)V
             8: astore_1
             9: invokestatic  #4                  // Method 
java/lang/System.currentTimeMillis:()J
            12: lstore_2
            13: lconst_0
            14: lstore        4
            16: lload         4
            18: ldc2_w        #5                  // long 1000000000l
            21: lcmp
            22: ifge          48
            25: aload_1
            26: checkcast     #2                  // class java/lang/Integer
            29: invokevirtual #7                  // Method 
java/lang/Integer.intValue:()I
            32: iconst_1
            33: iadd
            34: invokestatic  #8                  // Method 
java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
            37: astore        6
            39: lload         4
            41: lconst_1
            42: ladd
            43: lstore        4
            45: goto          16
            48: invokestatic  #4                  // Method 
java/lang/System.currentTimeMillis:()J
            51: lstore        4
            53: getstatic     #9                  // Field 
java/lang/System.out:Ljava/io/PrintStream;
            56: new           #10                 // class 
java/lang/StringBuilder
            59: dup
            60: invokespecial #11                 // Method 
java/lang/StringBuilder."<init>":()V
            63: ldc           #12                 // String Time for casting:
            65: invokevirtual #13                 // Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
            68: lload         4
            70: lload_2
            71: lsub
            72: invokevirtual #14                 // Method 
java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
            75: invokevirtual #15                 // Method 
java/lang/StringBuilder.toString:()Ljava/lang/String;
            78: invokevirtual #16                 // Method 
java/io/PrintStream.println:(Ljava/lang/String;)V
            81: invokestatic  #4                  // Method 
java/lang/System.currentTimeMillis:()J
            84: lstore        6
            86: aload_1
            87: checkcast     #2                  // class java/lang/Integer
            90: astore        8
            92: lconst_0
            93: lstore        9
            95: lload         9
            97: ldc2_w        #5                  // long 1000000000l
           100: lcmp
           101: ifge          125
           104: aload         8
           106: invokevirtual #7                  // Method 
java/lang/Integer.intValue:()I
           109: iconst_1
           110: iadd
           111: invokestatic  #8                  // Method 
java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
           114: astore        11
           116: lload         9
           118: lconst_1
           119: ladd
           120: lstore        9
           122: goto          95
           125: invokestatic  #4                  // Method 
java/lang/System.currentTimeMillis:()J
           128: lstore        9
           130: getstatic     #9                  // Field 
java/lang/System.out:Ljava/io/PrintStream;
           133: new           #10                 // class 
java/lang/StringBuilder
           136: dup
           137: invokespecial #11                 // Method 
java/lang/StringBuilder."<init>":()V
           140: ldc           #17                 // String Time without 
casting:
           142: invokevirtual #13                 // Method 
java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
           145: lload         9
           147: lload         6
           149: lsub
           150: invokevirtual #14                 // Method 
java/lang/StringBuilder.append:(J)Ljava/lang/StringBuilder;
           153: invokevirtual #15                 // Method 
java/lang/StringBuilder.toString:()Ljava/lang/String;
           156: invokevirtual #16                 // Method 
java/io/PrintStream.println:(Ljava/lang/String;)V
           159: return
    ```
    
    Did I answer properly to your questions?


---

---------------------------------------------------------------------
To unsubscribe, e-mail: reviews-unsubscr...@spark.apache.org
For additional commands, e-mail: reviews-h...@spark.apache.org

Reply via email to