417 case If::beq: l = lir_cond_belowEqual; break;
418 };
419 return l;
420 }
421
422 #ifdef __SOFTFP__
423 void do_soft_float_compare(If *x);
424 #endif // __SOFTFP__
425
426 void init();
427
428 SwitchRangeArray* create_lookup_ranges(TableSwitch* x);
429 SwitchRangeArray* create_lookup_ranges(LookupSwitch* x);
430 void do_SwitchRanges(SwitchRangeArray* x, LIR_Opr value, BlockBegin* default_sux);
431
432 void do_RuntimeCall(address routine, int expected_arguments, Intrinsic* x);
433 #ifdef TRACE_HAVE_INTRINSICS
434 void do_ThreadIDIntrinsic(Intrinsic* x);
435 void do_ClassIDIntrinsic(Intrinsic* x);
436 #endif
437
438 public:
439 Compilation* compilation() const { return _compilation; }
440 FrameMap* frame_map() const { return _compilation->frame_map(); }
441 ciMethod* method() const { return _method; }
442 BlockBegin* block() const { return _block; }
443 IRScope* scope() const { return block()->scope(); }
444
445 int max_virtual_register_number() const { return _virtual_register_number; }
446
447 void block_do(BlockBegin* block);
448
449 // Flags that can be set on vregs
450 enum VregFlag {
451 must_start_in_memory = 0 // needs to be assigned a memory location at beginning, but may then be loaded in a register
452 , callee_saved = 1 // must be in a callee saved register
453 , byte_reg = 2 // must be in a byte register
454 , num_vreg_flags
455
456 };
|
417 case If::beq: l = lir_cond_belowEqual; break;
418 };
419 return l;
420 }
421
422 #ifdef __SOFTFP__
423 void do_soft_float_compare(If *x);
424 #endif // __SOFTFP__
425
426 void init();
427
428 SwitchRangeArray* create_lookup_ranges(TableSwitch* x);
429 SwitchRangeArray* create_lookup_ranges(LookupSwitch* x);
430 void do_SwitchRanges(SwitchRangeArray* x, LIR_Opr value, BlockBegin* default_sux);
431
432 void do_RuntimeCall(address routine, int expected_arguments, Intrinsic* x);
433 #ifdef TRACE_HAVE_INTRINSICS
434 void do_ThreadIDIntrinsic(Intrinsic* x);
435 void do_ClassIDIntrinsic(Intrinsic* x);
436 #endif
437 ciKlass* profile_arg_type(ciMethodData* md, int md_first_offset, int md_offset, intptr_t profiled_k, Value arg, LIR_Opr& mdp, bool not_null, ciKlass* signature_k);
438 void profile_arguments(ProfileCall* x);
439
440 public:
441 Compilation* compilation() const { return _compilation; }
442 FrameMap* frame_map() const { return _compilation->frame_map(); }
443 ciMethod* method() const { return _method; }
444 BlockBegin* block() const { return _block; }
445 IRScope* scope() const { return block()->scope(); }
446
447 int max_virtual_register_number() const { return _virtual_register_number; }
448
449 void block_do(BlockBegin* block);
450
451 // Flags that can be set on vregs
452 enum VregFlag {
453 must_start_in_memory = 0 // needs to be assigned a memory location at beginning, but may then be loaded in a register
454 , callee_saved = 1 // must be in a callee saved register
455 , byte_reg = 2 // must be in a byte register
456 , num_vreg_flags
457
458 };
|