src/share/vm/c1/c1_LinearScan.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File 6972540 Sdiff src/share/vm/c1

src/share/vm/c1/c1_LinearScan.cpp

Print this page




2001 }
2002 
2003 LIR_Opr LinearScan::calc_operand_for_interval(const Interval* interval) {
2004   int assigned_reg = interval->assigned_reg();
2005   BasicType type = interval->type();
2006 
2007   if (assigned_reg >= nof_regs) {
2008     // stack slot
2009     assert(interval->assigned_regHi() == any_reg, "must not have hi register");
2010     return LIR_OprFact::stack(assigned_reg - nof_regs, type);
2011 
2012   } else {
2013     // register
2014     switch (type) {
2015       case T_OBJECT: {
2016         assert(assigned_reg >= pd_first_cpu_reg && assigned_reg <= pd_last_cpu_reg, "no cpu register");
2017         assert(interval->assigned_regHi() == any_reg, "must not have hi register");
2018         return LIR_OprFact::single_cpu_oop(assigned_reg);
2019       }
2020 






2021 #ifdef __SOFTFP__
2022       case T_FLOAT:  // fall through
2023 #endif // __SOFTFP__
2024       case T_INT: {
2025         assert(assigned_reg >= pd_first_cpu_reg && assigned_reg <= pd_last_cpu_reg, "no cpu register");
2026         assert(interval->assigned_regHi() == any_reg, "must not have hi register");
2027         return LIR_OprFact::single_cpu(assigned_reg);
2028       }
2029 
2030 #ifdef __SOFTFP__
2031       case T_DOUBLE:  // fall through
2032 #endif // __SOFTFP__
2033       case T_LONG: {
2034         int assigned_regHi = interval->assigned_regHi();
2035         assert(assigned_reg >= pd_first_cpu_reg && assigned_reg <= pd_last_cpu_reg, "no cpu register");
2036         assert(num_physical_regs(T_LONG) == 1 ||
2037                (assigned_regHi >= pd_first_cpu_reg && assigned_regHi <= pd_last_cpu_reg), "no cpu register");
2038 
2039         assert(assigned_reg != assigned_regHi, "invalid allocation");
2040         assert(num_physical_regs(T_LONG) == 1 || assigned_reg < assigned_regHi,




2001 }
2002 
2003 LIR_Opr LinearScan::calc_operand_for_interval(const Interval* interval) {
2004   int assigned_reg = interval->assigned_reg();
2005   BasicType type = interval->type();
2006 
2007   if (assigned_reg >= nof_regs) {
2008     // stack slot
2009     assert(interval->assigned_regHi() == any_reg, "must not have hi register");
2010     return LIR_OprFact::stack(assigned_reg - nof_regs, type);
2011 
2012   } else {
2013     // register
2014     switch (type) {
2015       case T_OBJECT: {
2016         assert(assigned_reg >= pd_first_cpu_reg && assigned_reg <= pd_last_cpu_reg, "no cpu register");
2017         assert(interval->assigned_regHi() == any_reg, "must not have hi register");
2018         return LIR_OprFact::single_cpu_oop(assigned_reg);
2019       }
2020 
2021       case T_ADDRESS: {
2022         assert(assigned_reg >= pd_first_cpu_reg && assigned_reg <= pd_last_cpu_reg, "no cpu register");
2023         assert(interval->assigned_regHi() == any_reg, "must not have hi register");
2024         return LIR_OprFact::single_cpu_address(assigned_reg);
2025       }
2026 
2027 #ifdef __SOFTFP__
2028       case T_FLOAT:  // fall through
2029 #endif // __SOFTFP__
2030       case T_INT: {
2031         assert(assigned_reg >= pd_first_cpu_reg && assigned_reg <= pd_last_cpu_reg, "no cpu register");
2032         assert(interval->assigned_regHi() == any_reg, "must not have hi register");
2033         return LIR_OprFact::single_cpu(assigned_reg);
2034       }
2035 
2036 #ifdef __SOFTFP__
2037       case T_DOUBLE:  // fall through
2038 #endif // __SOFTFP__
2039       case T_LONG: {
2040         int assigned_regHi = interval->assigned_regHi();
2041         assert(assigned_reg >= pd_first_cpu_reg && assigned_reg <= pd_last_cpu_reg, "no cpu register");
2042         assert(num_physical_regs(T_LONG) == 1 ||
2043                (assigned_regHi >= pd_first_cpu_reg && assigned_regHi <= pd_last_cpu_reg), "no cpu register");
2044 
2045         assert(assigned_reg != assigned_regHi, "invalid allocation");
2046         assert(num_physical_regs(T_LONG) == 1 || assigned_reg < assigned_regHi,


src/share/vm/c1/c1_LinearScan.cpp
Index Unified diffs Context diffs Sdiffs Wdiffs Patch New Old Previous File Next File