357 int _orig_pc_slot_offset_in_bytes;
358
359 int _major_progress; // Count of something big happening
360 bool _inlining_progress; // progress doing incremental inlining?
361 bool _inlining_incrementally;// Are we doing incremental inlining (post parse)
362 bool _has_loops; // True if the method _may_ have some loops
363 bool _has_split_ifs; // True if the method _may_ have some split-if
364 bool _has_unsafe_access; // True if the method _may_ produce faults in unsafe loads or stores.
365 bool _has_stringbuilder; // True StringBuffers or StringBuilders are allocated
366 bool _has_boxed_value; // True if a boxed object is allocated
367 int _max_vector_size; // Maximum size of generated vectors
368 uint _trap_hist[trapHistLength]; // Cumulative traps
369 bool _trap_can_recompile; // Have we emitted a recompiling trap?
370 uint _decompile_count; // Cumulative decompilation counts.
371 bool _do_inlining; // True if we intend to do inlining
372 bool _do_scheduling; // True if we intend to do scheduling
373 bool _do_freq_based_layout; // True if we intend to do frequency based block layout
374 bool _do_count_invocations; // True if we generate code to count invocations
375 bool _do_method_data_update; // True if we generate code to update MethodData*s
376 bool _do_vector_loop; // True if allowed to execute loop in parallel iterations
377 bool _age_code; // True if we need to profile code age (decrement the aging counter)
378 int _AliasLevel; // Locally-adjusted version of AliasLevel flag.
379 bool _print_assembly; // True if we should dump assembly code for this compilation
380 bool _print_inlining; // True if we should print inlining for this compilation
381 bool _print_intrinsics; // True if we should print intrinsics for this compilation
382 #ifndef PRODUCT
383 bool _trace_opto_output;
384 bool _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
385 #endif
386 bool _has_irreducible_loop; // Found irreducible loops
387 // JSR 292
388 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
389 RTMState _rtm_state; // State of Restricted Transactional Memory usage
390
391 // Compilation environment.
392 Arena _comp_arena; // Arena with lifetime equivalent to Compile
393 ciEnv* _env; // CI interface
394 CompileLog* _log; // from CompilerThread
395 const char* _failure_reason; // for record_failure/failing pattern
396 GrowableArray<CallGenerator*>* _intrinsics; // List of intrinsics.
634 void set_max_vector_size(int s) { _max_vector_size = s; }
635 void set_trap_count(uint r, uint c) { assert(r < trapHistLength, "oob"); _trap_hist[r] = c; }
636 uint trap_count(uint r) const { assert(r < trapHistLength, "oob"); return _trap_hist[r]; }
637 bool trap_can_recompile() const { return _trap_can_recompile; }
638 void set_trap_can_recompile(bool z) { _trap_can_recompile = z; }
639 uint decompile_count() const { return _decompile_count; }
640 void set_decompile_count(uint c) { _decompile_count = c; }
641 bool allow_range_check_smearing() const;
642 bool do_inlining() const { return _do_inlining; }
643 void set_do_inlining(bool z) { _do_inlining = z; }
644 bool do_scheduling() const { return _do_scheduling; }
645 void set_do_scheduling(bool z) { _do_scheduling = z; }
646 bool do_freq_based_layout() const{ return _do_freq_based_layout; }
647 void set_do_freq_based_layout(bool z){ _do_freq_based_layout = z; }
648 bool do_count_invocations() const{ return _do_count_invocations; }
649 void set_do_count_invocations(bool z){ _do_count_invocations = z; }
650 bool do_method_data_update() const { return _do_method_data_update; }
651 void set_do_method_data_update(bool z) { _do_method_data_update = z; }
652 bool do_vector_loop() const { return _do_vector_loop; }
653 void set_do_vector_loop(bool z) { _do_vector_loop = z; }
654 bool age_code() const { return _age_code; }
655 void set_age_code(bool z) { _age_code = z; }
656 int AliasLevel() const { return _AliasLevel; }
657 bool print_assembly() const { return _print_assembly; }
658 void set_print_assembly(bool z) { _print_assembly = z; }
659 bool print_inlining() const { return _print_inlining; }
660 void set_print_inlining(bool z) { _print_inlining = z; }
661 bool print_intrinsics() const { return _print_intrinsics; }
662 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
663 RTMState rtm_state() const { return _rtm_state; }
664 void set_rtm_state(RTMState s) { _rtm_state = s; }
665 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
666 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
667 uint max_node_limit() const { return (uint)_max_node_limit; }
668 void set_max_node_limit(uint n) { _max_node_limit = n; }
669
670 // check the CompilerOracle for special behaviours for this compile
671 bool method_has_option(const char * option) {
672 return method() != NULL && method()->has_option(option);
673 }
|
357 int _orig_pc_slot_offset_in_bytes;
358
359 int _major_progress; // Count of something big happening
360 bool _inlining_progress; // progress doing incremental inlining?
361 bool _inlining_incrementally;// Are we doing incremental inlining (post parse)
362 bool _has_loops; // True if the method _may_ have some loops
363 bool _has_split_ifs; // True if the method _may_ have some split-if
364 bool _has_unsafe_access; // True if the method _may_ produce faults in unsafe loads or stores.
365 bool _has_stringbuilder; // True StringBuffers or StringBuilders are allocated
366 bool _has_boxed_value; // True if a boxed object is allocated
367 int _max_vector_size; // Maximum size of generated vectors
368 uint _trap_hist[trapHistLength]; // Cumulative traps
369 bool _trap_can_recompile; // Have we emitted a recompiling trap?
370 uint _decompile_count; // Cumulative decompilation counts.
371 bool _do_inlining; // True if we intend to do inlining
372 bool _do_scheduling; // True if we intend to do scheduling
373 bool _do_freq_based_layout; // True if we intend to do frequency based block layout
374 bool _do_count_invocations; // True if we generate code to count invocations
375 bool _do_method_data_update; // True if we generate code to update MethodData*s
376 bool _do_vector_loop; // True if allowed to execute loop in parallel iterations
377 bool _use_cmove; // True if CMove should be used without profitability analysis
378 bool _age_code; // True if we need to profile code age (decrement the aging counter)
379 int _AliasLevel; // Locally-adjusted version of AliasLevel flag.
380 bool _print_assembly; // True if we should dump assembly code for this compilation
381 bool _print_inlining; // True if we should print inlining for this compilation
382 bool _print_intrinsics; // True if we should print intrinsics for this compilation
383 #ifndef PRODUCT
384 bool _trace_opto_output;
385 bool _parsed_irreducible_loop; // True if ciTypeFlow detected irreducible loops during parsing
386 #endif
387 bool _has_irreducible_loop; // Found irreducible loops
388 // JSR 292
389 bool _has_method_handle_invokes; // True if this method has MethodHandle invokes.
390 RTMState _rtm_state; // State of Restricted Transactional Memory usage
391
392 // Compilation environment.
393 Arena _comp_arena; // Arena with lifetime equivalent to Compile
394 ciEnv* _env; // CI interface
395 CompileLog* _log; // from CompilerThread
396 const char* _failure_reason; // for record_failure/failing pattern
397 GrowableArray<CallGenerator*>* _intrinsics; // List of intrinsics.
635 void set_max_vector_size(int s) { _max_vector_size = s; }
636 void set_trap_count(uint r, uint c) { assert(r < trapHistLength, "oob"); _trap_hist[r] = c; }
637 uint trap_count(uint r) const { assert(r < trapHistLength, "oob"); return _trap_hist[r]; }
638 bool trap_can_recompile() const { return _trap_can_recompile; }
639 void set_trap_can_recompile(bool z) { _trap_can_recompile = z; }
640 uint decompile_count() const { return _decompile_count; }
641 void set_decompile_count(uint c) { _decompile_count = c; }
642 bool allow_range_check_smearing() const;
643 bool do_inlining() const { return _do_inlining; }
644 void set_do_inlining(bool z) { _do_inlining = z; }
645 bool do_scheduling() const { return _do_scheduling; }
646 void set_do_scheduling(bool z) { _do_scheduling = z; }
647 bool do_freq_based_layout() const{ return _do_freq_based_layout; }
648 void set_do_freq_based_layout(bool z){ _do_freq_based_layout = z; }
649 bool do_count_invocations() const{ return _do_count_invocations; }
650 void set_do_count_invocations(bool z){ _do_count_invocations = z; }
651 bool do_method_data_update() const { return _do_method_data_update; }
652 void set_do_method_data_update(bool z) { _do_method_data_update = z; }
653 bool do_vector_loop() const { return _do_vector_loop; }
654 void set_do_vector_loop(bool z) { _do_vector_loop = z; }
655 bool use_cmove() const { return _use_cmove; }
656 void set_use_cmove(bool z) { _use_cmove = z; }
657 bool age_code() const { return _age_code; }
658 void set_age_code(bool z) { _age_code = z; }
659 int AliasLevel() const { return _AliasLevel; }
660 bool print_assembly() const { return _print_assembly; }
661 void set_print_assembly(bool z) { _print_assembly = z; }
662 bool print_inlining() const { return _print_inlining; }
663 void set_print_inlining(bool z) { _print_inlining = z; }
664 bool print_intrinsics() const { return _print_intrinsics; }
665 void set_print_intrinsics(bool z) { _print_intrinsics = z; }
666 RTMState rtm_state() const { return _rtm_state; }
667 void set_rtm_state(RTMState s) { _rtm_state = s; }
668 bool use_rtm() const { return (_rtm_state & NoRTM) == 0; }
669 bool profile_rtm() const { return _rtm_state == ProfileRTM; }
670 uint max_node_limit() const { return (uint)_max_node_limit; }
671 void set_max_node_limit(uint n) { _max_node_limit = n; }
672
673 // check the CompilerOracle for special behaviours for this compile
674 bool method_has_option(const char * option) {
675 return method() != NULL && method()->has_option(option);
676 }
|