6757316: load_constant() produces a wrong long constant, with high a low words swapped
Reviewed-by: rasbold, jrose, kvn
This commit is contained in:
parent
552c37000d
commit
40a81c63b8
@ -1210,8 +1210,8 @@ LIR_Opr LIRGenerator::load_constant(LIR_Const* c) {
|
||||
break;
|
||||
case T_LONG:
|
||||
case T_DOUBLE:
|
||||
if (c->as_jint_hi_bits() != other->as_jint_lo_bits()) continue;
|
||||
if (c->as_jint_lo_bits() != other->as_jint_hi_bits()) continue;
|
||||
if (c->as_jint_hi_bits() != other->as_jint_hi_bits()) continue;
|
||||
if (c->as_jint_lo_bits() != other->as_jint_lo_bits()) continue;
|
||||
break;
|
||||
case T_OBJECT:
|
||||
if (c->as_jobject() != other->as_jobject()) continue;
|
||||
|
43
hotspot/test/compiler/6757316/Test6757316.java
Normal file
43
hotspot/test/compiler/6757316/Test6757316.java
Normal file
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* Copyright 2008 Sun Microsystems, Inc. All Rights Reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
|
||||
* CA 95054 USA or visit www.sun.com if you need additional information or
|
||||
* have any questions.
|
||||
*/
|
||||
|
||||
/**
|
||||
* @test
|
||||
* @bug 6757316
|
||||
* @summary load_constant() produces a wrong long constant, with high a low words swapped
|
||||
* @run main/othervm -Xcomp Test6757316
|
||||
*/
|
||||
|
||||
public class Test6757316 {
|
||||
public static void main(String[] args) {
|
||||
long[] arr = {
|
||||
0x11111111aaaaaaaaL,
|
||||
0xaaaaaaaa11111111L,
|
||||
0x11111111aaaaaaaaL,
|
||||
0xaaaaaaaa11111111L
|
||||
};
|
||||
if (arr[0] == arr[1]) {
|
||||
throw new InternalError();
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user