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; |