src/share/vm/c1/c1_LIRGenerator.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File hotspot Sdiff src/share/vm/c1

src/share/vm/c1/c1_LIRGenerator.hpp

Print this page
rev 5240 : 8023657: New type profiling points: arguments to call
Summary: x86 interpreter and c1 type profiling for arguments at calls
Reviewed-by:


 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   };


src/share/vm/c1/c1_LIRGenerator.hpp
Index Unified diffs Context diffs Sdiffs Patch New Old Previous File Next File