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