229 void move_to_phi(PhiResolver* resolver, Value cur_val, Value sux_val);
230 void move_to_phi(ValueStack* cur_state);
231
232 // code emission
233 void do_ArithmeticOp_Long (ArithmeticOp* x);
234 void do_ArithmeticOp_Int (ArithmeticOp* x);
235 void do_ArithmeticOp_FPU (ArithmeticOp* x);
236
237 // platform dependent
238 LIR_Opr getThreadPointer();
239
240 void do_RegisterFinalizer(Intrinsic* x);
241 void do_getClass(Intrinsic* x);
242 void do_currentThread(Intrinsic* x);
243 void do_MathIntrinsic(Intrinsic* x);
244 void do_ArrayCopy(Intrinsic* x);
245 void do_CompareAndSwap(Intrinsic* x, ValueType* type);
246 void do_AttemptUpdate(Intrinsic* x);
247 void do_NIOCheckIndex(Intrinsic* x);
248 void do_FPIntrinsics(Intrinsic* x);
249
250 void do_UnsafePrefetch(UnsafePrefetch* x, bool is_store);
251
252 LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
253 LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
254
255 // convenience functions
256 LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
257 LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
258
259 // GC Barriers
260
261 // generic interface
262
263 void pre_barrier(LIR_Opr addr_opr, bool patch, CodeEmitInfo* info);
264 void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
265
266 // specific implementations
267 // pre barriers
268
269 void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, bool patch, CodeEmitInfo* info);
270
271 // post barriers
272
273 void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
274 void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
275
276
277 static LIR_Opr result_register_for(ValueType* type, bool callee = false);
278
279 ciObject* get_jobject_constant(Value value);
280
281 LIRItemList* invoke_visit_arguments(Invoke* x);
282 void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
283
284 void trace_block_entry(BlockBegin* block);
285
286 // volatile field operations are never patchable because a klass
287 // must be loaded to know it's volatile which means that the offset
288 // it always known as well.
289 void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);
|
229 void move_to_phi(PhiResolver* resolver, Value cur_val, Value sux_val);
230 void move_to_phi(ValueStack* cur_state);
231
232 // code emission
233 void do_ArithmeticOp_Long (ArithmeticOp* x);
234 void do_ArithmeticOp_Int (ArithmeticOp* x);
235 void do_ArithmeticOp_FPU (ArithmeticOp* x);
236
237 // platform dependent
238 LIR_Opr getThreadPointer();
239
240 void do_RegisterFinalizer(Intrinsic* x);
241 void do_getClass(Intrinsic* x);
242 void do_currentThread(Intrinsic* x);
243 void do_MathIntrinsic(Intrinsic* x);
244 void do_ArrayCopy(Intrinsic* x);
245 void do_CompareAndSwap(Intrinsic* x, ValueType* type);
246 void do_AttemptUpdate(Intrinsic* x);
247 void do_NIOCheckIndex(Intrinsic* x);
248 void do_FPIntrinsics(Intrinsic* x);
249 void do_Reference_get(Intrinsic* x);
250
251 void do_UnsafePrefetch(UnsafePrefetch* x, bool is_store);
252
253 LIR_Opr call_runtime(BasicTypeArray* signature, LIRItemList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
254 LIR_Opr call_runtime(BasicTypeArray* signature, LIR_OprList* args, address entry, ValueType* result_type, CodeEmitInfo* info);
255
256 // convenience functions
257 LIR_Opr call_runtime(Value arg1, address entry, ValueType* result_type, CodeEmitInfo* info);
258 LIR_Opr call_runtime(Value arg1, Value arg2, address entry, ValueType* result_type, CodeEmitInfo* info);
259
260 // GC Barriers
261
262 // generic interface
263
264 void pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val, bool do_load, bool patch, CodeEmitInfo* info);
265 void post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
266
267 // specific implementations
268 // pre barriers
269
270 void G1SATBCardTableModRef_pre_barrier(LIR_Opr addr_opr, LIR_Opr pre_val,
271 bool do_load, bool patch, CodeEmitInfo* info);
272
273 // post barriers
274
275 void G1SATBCardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
276 void CardTableModRef_post_barrier(LIR_OprDesc* addr, LIR_OprDesc* new_val);
277
278
279 static LIR_Opr result_register_for(ValueType* type, bool callee = false);
280
281 ciObject* get_jobject_constant(Value value);
282
283 LIRItemList* invoke_visit_arguments(Invoke* x);
284 void invoke_load_arguments(Invoke* x, LIRItemList* args, const LIR_OprList* arg_list);
285
286 void trace_block_entry(BlockBegin* block);
287
288 // volatile field operations are never patchable because a klass
289 // must be loaded to know it's volatile which means that the offset
290 // it always known as well.
291 void volatile_field_store(LIR_Opr value, LIR_Address* address, CodeEmitInfo* info);
|