137
138 void emit_move(LIR_Opr src, LIR_Opr dest);
139 void move_to_temp(LIR_Opr src);
140 void move_temp_to(LIR_Opr dest);
141 void move(ResolveNode* src, ResolveNode* dest);
142
143 LIRGenerator* gen() {
144 return _gen;
145 }
146
147 public:
148 PhiResolver(LIRGenerator* _lir_gen, int max_vregs);
149 ~PhiResolver();
150
151 void move(LIR_Opr src, LIR_Opr dest);
152 };
153
154
155 // only the classes below belong in the same file
156 class LIRGenerator: public InstructionVisitor, public BlockClosure {
157
158 private:
159 Compilation* _compilation;
160 ciMethod* _method; // method that we are compiling
161 PhiResolverState _resolver_state;
162 BlockBegin* _block;
163 int _virtual_register_number;
164 Values _instruction_for_operand;
165 BitMap2D _vreg_flags; // flags which can be set on a per-vreg basis
166 LIR_List* _lir;
167 BarrierSet* _bs;
168
169 LIRGenerator* gen() {
170 return this;
171 }
172
173 void print_if_not_loaded(const NewInstance* new_instance) PRODUCT_RETURN;
174
175 #ifdef ASSERT
176 LIR_List* lir(const char * file, int line) const {
177 _lir->set_file_and_line(file, line);
|
137
138 void emit_move(LIR_Opr src, LIR_Opr dest);
139 void move_to_temp(LIR_Opr src);
140 void move_temp_to(LIR_Opr dest);
141 void move(ResolveNode* src, ResolveNode* dest);
142
143 LIRGenerator* gen() {
144 return _gen;
145 }
146
147 public:
148 PhiResolver(LIRGenerator* _lir_gen, int max_vregs);
149 ~PhiResolver();
150
151 void move(LIR_Opr src, LIR_Opr dest);
152 };
153
154
155 // only the classes below belong in the same file
156 class LIRGenerator: public InstructionVisitor, public BlockClosure {
157 friend class ShenandoahBarrierSetC1;
158 private:
159 Compilation* _compilation;
160 ciMethod* _method; // method that we are compiling
161 PhiResolverState _resolver_state;
162 BlockBegin* _block;
163 int _virtual_register_number;
164 Values _instruction_for_operand;
165 BitMap2D _vreg_flags; // flags which can be set on a per-vreg basis
166 LIR_List* _lir;
167 BarrierSet* _bs;
168
169 LIRGenerator* gen() {
170 return this;
171 }
172
173 void print_if_not_loaded(const NewInstance* new_instance) PRODUCT_RETURN;
174
175 #ifdef ASSERT
176 LIR_List* lir(const char * file, int line) const {
177 _lir->set_file_and_line(file, line);
|