Warum verhält sich der folgende Code in Java 1.6 und 1.7 anders?

8

Der Code unten

%Vor%

Ausgaben unten in Java 1.7x

%Vor%

Ausgaben unten in Java 1.6x

%Vor%

Gibt es einen Grund für dieses Verhalten?

Auch wenn ich

ändere %Vor%

Es verhält sich in 1.6x und 1.7x genau gleich

    
Puru-- 25.07.2016, 23:04
quelle

1 Antwort

7

Es scheint eines von vielen Beispielen für eine Fehlerfamilie zu sein, die durch die JIT-Compilation verursacht wurde (ich habe diese aufgrund der Ähnlichkeit des Codes ausgewählt, fühle mich frei, andere zu erkunden - sie sind ziemlich interessant!):

Ссылка

  

BEWERTUNG

     

Problem ist mit der Kanonisierung des Loop-Exit-Tests in Vorbereitung   Schleifenumwandlung.

     

do while (++i <= limit)

     

wird

     

do while (++i < limit+1)

     

Dies ist nicht korrekt, wenn limit maxInt ist.

Einige Probleme wurden in 1.7 behoben, die Ihre Ergebnisse erklären könnten.

    
mszymborski 25.07.2016, 23:39
quelle

Tags und Links