< prev index next >

src/hotspot/share/opto/callGenerator.cpp

Print this page




 553  public:
 554   LateInlineBoxingCallGenerator(ciMethod* method, CallGenerator* inline_cg) :
 555     LateInlineCallGenerator(method, inline_cg, /*is_pure=*/true) {}
 556 
 557   virtual JVMState* generate(JVMState* jvms) {
 558     Compile *C = Compile::current();
 559 
 560     C->log_inline_id(this);
 561 
 562     C->add_boxing_late_inline(this);
 563 
 564     JVMState* new_jvms =  DirectCallGenerator::generate(jvms);
 565     return new_jvms;
 566   }
 567 };
 568 
 569 CallGenerator* CallGenerator::for_boxing_late_inline(ciMethod* method, CallGenerator* inline_cg) {
 570   return new LateInlineBoxingCallGenerator(method, inline_cg);
 571 }
 572 






















 573 //---------------------------WarmCallGenerator--------------------------------
 574 // Internal class which handles initial deferral of inlining decisions.
 575 class WarmCallGenerator : public CallGenerator {
 576   WarmCallInfo*   _call_info;
 577   CallGenerator*  _if_cold;
 578   CallGenerator*  _if_hot;
 579   bool            _is_virtual;   // caches virtuality of if_cold
 580   bool            _is_inline;    // caches inline-ness of if_hot
 581 
 582 public:
 583   WarmCallGenerator(WarmCallInfo* ci,
 584                     CallGenerator* if_cold,
 585                     CallGenerator* if_hot)
 586     : CallGenerator(if_cold->method())
 587   {
 588     assert(method() == if_hot->method(), "consistent choices");
 589     _call_info  = ci;
 590     _if_cold    = if_cold;
 591     _if_hot     = if_hot;
 592     _is_virtual = if_cold->is_virtual();




 553  public:
 554   LateInlineBoxingCallGenerator(ciMethod* method, CallGenerator* inline_cg) :
 555     LateInlineCallGenerator(method, inline_cg, /*is_pure=*/true) {}
 556 
 557   virtual JVMState* generate(JVMState* jvms) {
 558     Compile *C = Compile::current();
 559 
 560     C->log_inline_id(this);
 561 
 562     C->add_boxing_late_inline(this);
 563 
 564     JVMState* new_jvms = DirectCallGenerator::generate(jvms);
 565     return new_jvms;
 566   }
 567 };
 568 
 569 CallGenerator* CallGenerator::for_boxing_late_inline(ciMethod* method, CallGenerator* inline_cg) {
 570   return new LateInlineBoxingCallGenerator(method, inline_cg);
 571 }
 572 
 573 class LateInlineVectorReboxingCallGenerator : public LateInlineCallGenerator {
 574 
 575  public:
 576   LateInlineVectorReboxingCallGenerator(ciMethod* method, CallGenerator* inline_cg) :
 577     LateInlineCallGenerator(method, inline_cg, /*is_pure=*/true) {}
 578 
 579   virtual JVMState* generate(JVMState* jvms) {
 580     Compile *C = Compile::current();
 581 
 582     C->log_inline_id(this);
 583 
 584     C->add_vector_reboxing_late_inline(this);
 585 
 586     JVMState* new_jvms = DirectCallGenerator::generate(jvms);
 587     return new_jvms;
 588   }
 589 };
 590 
 591 //   static CallGenerator* for_vector_reboxing_late_inline(ciMethod* m, CallGenerator* inline_cg);
 592 CallGenerator* CallGenerator::for_vector_reboxing_late_inline(ciMethod* method, CallGenerator* inline_cg) {
 593   return new LateInlineVectorReboxingCallGenerator(method, inline_cg);
 594 }
 595 //---------------------------WarmCallGenerator--------------------------------
 596 // Internal class which handles initial deferral of inlining decisions.
 597 class WarmCallGenerator : public CallGenerator {
 598   WarmCallInfo*   _call_info;
 599   CallGenerator*  _if_cold;
 600   CallGenerator*  _if_hot;
 601   bool            _is_virtual;   // caches virtuality of if_cold
 602   bool            _is_inline;    // caches inline-ness of if_hot
 603 
 604 public:
 605   WarmCallGenerator(WarmCallInfo* ci,
 606                     CallGenerator* if_cold,
 607                     CallGenerator* if_hot)
 608     : CallGenerator(if_cold->method())
 609   {
 610     assert(method() == if_hot->method(), "consistent choices");
 611     _call_info  = ci;
 612     _if_cold    = if_cold;
 613     _if_hot     = if_hot;
 614     _is_virtual = if_cold->is_virtual();


< prev index next >