105 #ifdef _LP64
106 if (UseAVX < 3) {
107 last_xmm_reg = pd_first_xmm_reg + (pd_nof_xmm_regs_frame_map / 2) - 1;
108 }
109 #endif
110 if (allocator()->gen()->is_vreg_flag_set(cur->reg_num(), LIRGenerator::byte_reg)) {
111 assert(cur->type() != T_FLOAT && cur->type() != T_DOUBLE, "cpu regs only");
112 _first_reg = pd_first_byte_reg;
113 _last_reg = FrameMap::last_byte_reg();
114 return true;
115 } else if ((UseSSE >= 1 && cur->type() == T_FLOAT) || (UseSSE >= 2 && cur->type() == T_DOUBLE)) {
116 _first_reg = pd_first_xmm_reg;
117 _last_reg = last_xmm_reg;
118 return true;
119 }
120
121 return false;
122 }
123
124
125 class FpuStackAllocator VALUE_OBJ_CLASS_SPEC {
126 private:
127 Compilation* _compilation;
128 LinearScan* _allocator;
129
130 LIR_OpVisitState visitor;
131
132 LIR_List* _lir;
133 int _pos;
134 FpuStackSim _sim;
135 FpuStackSim _temp_sim;
136
137 bool _debug_information_computed;
138
139 LinearScan* allocator() { return _allocator; }
140 Compilation* compilation() const { return _compilation; }
141
142 // unified bailout support
143 void bailout(const char* msg) const { compilation()->bailout(msg); }
144 bool bailed_out() const { return compilation()->bailed_out(); }
145
|
105 #ifdef _LP64
106 if (UseAVX < 3) {
107 last_xmm_reg = pd_first_xmm_reg + (pd_nof_xmm_regs_frame_map / 2) - 1;
108 }
109 #endif
110 if (allocator()->gen()->is_vreg_flag_set(cur->reg_num(), LIRGenerator::byte_reg)) {
111 assert(cur->type() != T_FLOAT && cur->type() != T_DOUBLE, "cpu regs only");
112 _first_reg = pd_first_byte_reg;
113 _last_reg = FrameMap::last_byte_reg();
114 return true;
115 } else if ((UseSSE >= 1 && cur->type() == T_FLOAT) || (UseSSE >= 2 && cur->type() == T_DOUBLE)) {
116 _first_reg = pd_first_xmm_reg;
117 _last_reg = last_xmm_reg;
118 return true;
119 }
120
121 return false;
122 }
123
124
125 class FpuStackAllocator {
126 private:
127 Compilation* _compilation;
128 LinearScan* _allocator;
129
130 LIR_OpVisitState visitor;
131
132 LIR_List* _lir;
133 int _pos;
134 FpuStackSim _sim;
135 FpuStackSim _temp_sim;
136
137 bool _debug_information_computed;
138
139 LinearScan* allocator() { return _allocator; }
140 Compilation* compilation() const { return _compilation; }
141
142 // unified bailout support
143 void bailout(const char* msg) const { compilation()->bailout(msg); }
144 bool bailed_out() const { return compilation()->bailed_out(); }
145
|