Mercurial > hg > graal-jvmci-8
comparison src/share/vm/c1/c1_LinearScan.cpp @ 1369:0a43776437b6
6942223: c1 64 bit fixes
Summary: This fixes lir_cmp_l2i on x64 and sparc 64bit, and the debug info generation.
Reviewed-by: never
author | iveresov |
---|---|
date | Thu, 08 Apr 2010 12:13:07 -0700 |
parents | c466efa608d5 |
children | b4776199210f |
comparison
equal
deleted
inserted
replaced
1368:93767e6a2dfd | 1369:0a43776437b6 |
---|---|
2606 | 2606 |
2607 #ifdef X86 | 2607 #ifdef X86 |
2608 } else if (opr->is_double_xmm()) { | 2608 } else if (opr->is_double_xmm()) { |
2609 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation"); | 2609 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi(), "assumed in calculation"); |
2610 VMReg rname_first = opr->as_xmm_double_reg()->as_VMReg(); | 2610 VMReg rname_first = opr->as_xmm_double_reg()->as_VMReg(); |
2611 # ifdef _LP64 | |
2612 first = new LocationValue(Location::new_reg_loc(Location::dbl, rname_first)); | |
2613 second = &_int_0_scope_value; | |
2614 # else | |
2611 first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first)); | 2615 first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first)); |
2612 // %%% This is probably a waste but we'll keep things as they were for now | 2616 // %%% This is probably a waste but we'll keep things as they were for now |
2613 if (true) { | 2617 if (true) { |
2614 VMReg rname_second = rname_first->next(); | 2618 VMReg rname_second = rname_first->next(); |
2615 second = new LocationValue(Location::new_reg_loc(Location::normal, rname_second)); | 2619 second = new LocationValue(Location::new_reg_loc(Location::normal, rname_second)); |
2616 } | 2620 } |
2621 # endif | |
2617 #endif | 2622 #endif |
2618 | 2623 |
2619 } else if (opr->is_double_fpu()) { | 2624 } else if (opr->is_double_fpu()) { |
2620 // On SPARC, fpu_regnrLo/fpu_regnrHi represents the two halves of | 2625 // On SPARC, fpu_regnrLo/fpu_regnrHi represents the two halves of |
2621 // the double as float registers in the native ordering. On X86, | 2626 // the double as float registers in the native ordering. On X86, |
2637 #ifdef SPARC | 2642 #ifdef SPARC |
2638 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi() + 1, "assumed in calculation (only fpu_regnrHi is used)"); | 2643 assert(opr->fpu_regnrLo() == opr->fpu_regnrHi() + 1, "assumed in calculation (only fpu_regnrHi is used)"); |
2639 #endif | 2644 #endif |
2640 | 2645 |
2641 VMReg rname_first = frame_map()->fpu_regname(opr->fpu_regnrHi()); | 2646 VMReg rname_first = frame_map()->fpu_regname(opr->fpu_regnrHi()); |
2642 | 2647 #ifdef _LP64 |
2648 first = new LocationValue(Location::new_reg_loc(Location::dbl, rname_first)); | |
2649 second = &_int_0_scope_value; | |
2650 #else | |
2643 first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first)); | 2651 first = new LocationValue(Location::new_reg_loc(Location::normal, rname_first)); |
2644 // %%% This is probably a waste but we'll keep things as they were for now | 2652 // %%% This is probably a waste but we'll keep things as they were for now |
2645 if (true) { | 2653 if (true) { |
2646 VMReg rname_second = rname_first->next(); | 2654 VMReg rname_second = rname_first->next(); |
2647 second = new LocationValue(Location::new_reg_loc(Location::normal, rname_second)); | 2655 second = new LocationValue(Location::new_reg_loc(Location::normal, rname_second)); |
2648 } | 2656 } |
2657 #endif | |
2649 | 2658 |
2650 } else { | 2659 } else { |
2651 ShouldNotReachHere(); | 2660 ShouldNotReachHere(); |
2652 first = NULL; | 2661 first = NULL; |
2653 second = NULL; | 2662 second = NULL; |