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