< prev index next >

src/hotspot/share/opto/compile.hpp

BarrierSetC2_enhancements

BarrierSetC2

341     // Jump-table                                                                                                                    
342     Constant  add_jump_table(MachConstantNode* n);                                                                                   
343     void     fill_jump_table(CodeBuffer& cb, MachConstantNode* n, GrowableArray<Label*> labels) const;                               
344   };                                                                                                                                 
345 
346  private:                                                                                                                            
347   // Fixed parameters to this compilation.                                                                                           
348   const int             _compile_id;                                                                                                 
349   const bool            _save_argument_registers; // save/restore arg regs for trampolines                                           
350   const bool            _subsume_loads;         // Load can be matched as part of a larger op.                                       
351   const bool            _do_escape_analysis;    // Do escape analysis.                                                               
352   const bool            _eliminate_boxing;      // Do boxing elimination.                                                            
353   ciMethod*             _method;                // The method being compiled.                                                        
354   int                   _entry_bci;             // entry bci for osr methods.                                                        
355   const TypeFunc*       _tf;                    // My kind of signature                                                              
356   InlineTree*           _ilt;                   // Ditto (temporary).                                                                
357   address               _stub_function;         // VM entry for stub being compiled, or NULL                                         
358   const char*           _stub_name;             // Name of stub or adapter being compiled, or NULL                                   
359   address               _stub_entry_point;      // Compile code entry for generated stub, or NULL                                    
360 
                                                                                                                                     
                                                                                                                                     
                                                                                                                                     
361   // Control of this compilation.                                                                                                    
362   int                   _num_loop_opts;         // Number of iterations for doing loop optimiztions                                  
363   int                   _max_inline_size;       // Max inline size for this compilation                                              
364   int                   _freq_inline_size;      // Max hot method inline size for this compilation                                   
365   int                   _fixed_slots;           // count of frame slots not allocated by the register                                
366                                                 // allocator i.e. locks, original deopt pc, etc.                                     
367   uintx                 _max_node_limit;        // Max unique node count during a single compilation.                                
368   // For deopt                                                                                                                       
369   int                   _orig_pc_slot;                                                                                               
370   int                   _orig_pc_slot_offset_in_bytes;                                                                               
371 
372   int                   _major_progress;        // Count of something big happening                                                  
373   bool                  _inlining_progress;     // progress doing incremental inlining?                                              
374   bool                  _inlining_incrementally;// Are we doing incremental inlining (post parse)                                    
375   bool                  _has_loops;             // True if the method _may_ have some loops                                          
376   bool                  _has_split_ifs;         // True if the method _may_ have some split-if                                       
377   bool                  _has_unsafe_access;     // True if the method _may_ produce faults in unsafe loads or stores.                
378   bool                  _has_stringbuilder;     // True StringBuffers or StringBuilders are allocated                                
379   bool                  _has_boxed_value;       // True if a boxed object is allocated                                               

341     // Jump-table
342     Constant  add_jump_table(MachConstantNode* n);
343     void     fill_jump_table(CodeBuffer& cb, MachConstantNode* n, GrowableArray<Label*> labels) const;
344   };
345 
346  private:
347   // Fixed parameters to this compilation.
348   const int             _compile_id;
349   const bool            _save_argument_registers; // save/restore arg regs for trampolines
350   const bool            _subsume_loads;         // Load can be matched as part of a larger op.
351   const bool            _do_escape_analysis;    // Do escape analysis.
352   const bool            _eliminate_boxing;      // Do boxing elimination.
353   ciMethod*             _method;                // The method being compiled.
354   int                   _entry_bci;             // entry bci for osr methods.
355   const TypeFunc*       _tf;                    // My kind of signature
356   InlineTree*           _ilt;                   // Ditto (temporary).
357   address               _stub_function;         // VM entry for stub being compiled, or NULL
358   const char*           _stub_name;             // Name of stub or adapter being compiled, or NULL
359   address               _stub_entry_point;      // Compile code entry for generated stub, or NULL
360 
361   // For GC
362   void*                 _barrier_set_state;
363 
364   // Control of this compilation.
365   int                   _num_loop_opts;         // Number of iterations for doing loop optimiztions
366   int                   _max_inline_size;       // Max inline size for this compilation
367   int                   _freq_inline_size;      // Max hot method inline size for this compilation
368   int                   _fixed_slots;           // count of frame slots not allocated by the register
369                                                 // allocator i.e. locks, original deopt pc, etc.
370   uintx                 _max_node_limit;        // Max unique node count during a single compilation.
371   // For deopt
372   int                   _orig_pc_slot;
373   int                   _orig_pc_slot_offset_in_bytes;
374 
375   int                   _major_progress;        // Count of something big happening
376   bool                  _inlining_progress;     // progress doing incremental inlining?
377   bool                  _inlining_incrementally;// Are we doing incremental inlining (post parse)
378   bool                  _has_loops;             // True if the method _may_ have some loops
379   bool                  _has_split_ifs;         // True if the method _may_ have some split-if
380   bool                  _has_unsafe_access;     // True if the method _may_ produce faults in unsafe loads or stores.
381   bool                  _has_stringbuilder;     // True StringBuffers or StringBuilders are allocated
382   bool                  _has_boxed_value;       // True if a boxed object is allocated

512   void cleanup_expensive_nodes(PhaseIterGVN &igvn);                                                                                  
513   // Use for sorting expensive nodes to bring similar nodes together                                                                 
514   static int cmp_expensive_nodes(Node** n1, Node** n2);                                                                              
515   // Expensive nodes list already sorted?                                                                                            
516   bool expensive_nodes_sorted() const;                                                                                               
517   // Remove the speculative part of types and clean up the graph                                                                     
518   void remove_speculative_types(PhaseIterGVN &igvn);                                                                                 
519 
520   void* _replay_inline_data; // Pointer to data loaded from file                                                                     
521 
522   void print_inlining_init();                                                                                                        
523   void print_inlining_reinit();                                                                                                      
524   void print_inlining_commit();                                                                                                      
525   void print_inlining_push();                                                                                                        
526   PrintInliningBuffer& print_inlining_current();                                                                                     
527 
528   void log_late_inline_failure(CallGenerator* cg, const char* msg);                                                                  
529 
530  public:                                                                                                                             
531 
                                                                                                                                     
                                                                                                                                     
532   outputStream* print_inlining_stream() const {                                                                                      
533     assert(print_inlining() || print_intrinsics(), "PrintInlining off?");                                                            
534     return _print_inlining_stream;                                                                                                   
535   }                                                                                                                                  
536 
537   void print_inlining_update(CallGenerator* cg);                                                                                     
538   void print_inlining_update_delayed(CallGenerator* cg);                                                                             
539   void print_inlining_move_to(CallGenerator* cg);                                                                                    
540   void print_inlining_assert_ready();                                                                                                
541   void print_inlining_reset();                                                                                                       
542 
543   void print_inlining(ciMethod* method, int inline_level, int bci, const char* msg = NULL) {                                         
544     stringStream ss;                                                                                                                 
545     CompileTask::print_inlining_inner(&ss, method, inline_level, bci, msg);                                                          
546     print_inlining_stream()->print("%s", ss.as_string());                                                                            
547   }                                                                                                                                  
548 
549 #ifndef PRODUCT                                                                                                                      
550   IdealGraphPrinter* printer() { return _printer; }                                                                                  

515   void cleanup_expensive_nodes(PhaseIterGVN &igvn);
516   // Use for sorting expensive nodes to bring similar nodes together
517   static int cmp_expensive_nodes(Node** n1, Node** n2);
518   // Expensive nodes list already sorted?
519   bool expensive_nodes_sorted() const;
520   // Remove the speculative part of types and clean up the graph
521   void remove_speculative_types(PhaseIterGVN &igvn);
522 
523   void* _replay_inline_data; // Pointer to data loaded from file
524 
525   void print_inlining_init();
526   void print_inlining_reinit();
527   void print_inlining_commit();
528   void print_inlining_push();
529   PrintInliningBuffer& print_inlining_current();
530 
531   void log_late_inline_failure(CallGenerator* cg, const char* msg);
532 
533  public:
534 
535   void* barrier_set_state() const { return _barrier_set_state; }
536 
537   outputStream* print_inlining_stream() const {
538     assert(print_inlining() || print_intrinsics(), "PrintInlining off?");
539     return _print_inlining_stream;
540   }
541 
542   void print_inlining_update(CallGenerator* cg);
543   void print_inlining_update_delayed(CallGenerator* cg);
544   void print_inlining_move_to(CallGenerator* cg);
545   void print_inlining_assert_ready();
546   void print_inlining_reset();
547 
548   void print_inlining(ciMethod* method, int inline_level, int bci, const char* msg = NULL) {
549     stringStream ss;
550     CompileTask::print_inlining_inner(&ss, method, inline_level, bci, msg);
551     print_inlining_stream()->print("%s", ss.as_string());
552   }
553 
554 #ifndef PRODUCT
555   IdealGraphPrinter* printer() { return _printer; }

1331   // Definitions of pd methods                                                                                                       
1332   static void pd_compiler2_init();                                                                                                   
1333 
1334   // Static parse-time type checking logic for gen_subtype_check:                                                                    
1335   enum { SSC_always_false, SSC_always_true, SSC_easy_test, SSC_full_test };                                                          
1336   int static_subtype_check(ciKlass* superk, ciKlass* subk);                                                                          
1337 
1338   static Node* conv_I2X_index(PhaseGVN* phase, Node* offset, const TypeInt* sizetype,                                                
1339                               // Optional control dependency (for example, on range check)                                           
1340                               Node* ctrl = NULL);                                                                                    
1341 
1342   // Convert integer value to a narrowed long type dependent on ctrl (for example, a range check)                                    
1343   static Node* constrained_convI2L(PhaseGVN* phase, Node* value, const TypeInt* itype, Node* ctrl);                                  
1344 
1345   // Auxiliary method for randomized fuzzing/stressing                                                                               
1346   static bool randomized_select(int count);                                                                                          
1347 
1348   // supporting clone_map                                                                                                            
1349   CloneMap&     clone_map();                                                                                                         
1350   void          set_clone_map(Dict* d);                                                                                              
1351                                                                                                                                      
1352 };                                                                                                                                   
1353 
1354 #endif // SHARE_VM_OPTO_COMPILE_HPP                                                                                                  

1336   // Definitions of pd methods
1337   static void pd_compiler2_init();
1338 
1339   // Static parse-time type checking logic for gen_subtype_check:
1340   enum { SSC_always_false, SSC_always_true, SSC_easy_test, SSC_full_test };
1341   int static_subtype_check(ciKlass* superk, ciKlass* subk);
1342 
1343   static Node* conv_I2X_index(PhaseGVN* phase, Node* offset, const TypeInt* sizetype,
1344                               // Optional control dependency (for example, on range check)
1345                               Node* ctrl = NULL);
1346 
1347   // Convert integer value to a narrowed long type dependent on ctrl (for example, a range check)
1348   static Node* constrained_convI2L(PhaseGVN* phase, Node* value, const TypeInt* itype, Node* ctrl);
1349 
1350   // Auxiliary method for randomized fuzzing/stressing
1351   static bool randomized_select(int count);
1352 
1353   // supporting clone_map
1354   CloneMap&     clone_map();
1355   void          set_clone_map(Dict* d);

1356 };
1357 
1358 #endif // SHARE_VM_OPTO_COMPILE_HPP
< prev index next >