< prev index next >

src/hotspot/share/opto/loopnode.hpp

Print this page

        

*** 74,84 **** HasAtomicPostLoop=4096, HasRangeChecks=8192, IsMultiversioned=16384, StripMined=32768, SubwordLoop=65536, ! ProfileTripFailed=131072}; char _unswitch_count; enum { _unswitch_max=3 }; char _postloop_flags; enum { LoopNotRCEChecked = 0, LoopRCEChecked = 1, RCEPostLoop = 2 }; --- 74,85 ---- HasAtomicPostLoop=4096, HasRangeChecks=8192, IsMultiversioned=16384, StripMined=32768, SubwordLoop=65536, ! ProfileTripFailed=131072, ! FlattenedArrays=262144}; char _unswitch_count; enum { _unswitch_max=3 }; char _postloop_flags; enum { LoopNotRCEChecked = 0, LoopRCEChecked = 1, RCEPostLoop = 2 };
*** 99,108 **** --- 100,110 ---- void set_partial_peel_loop() { _loop_flags |= PartialPeelLoop; } bool partial_peel_has_failed() const { return _loop_flags & PartialPeelFailed; } bool is_strip_mined() const { return _loop_flags & StripMined; } bool is_profile_trip_failed() const { return _loop_flags & ProfileTripFailed; } bool is_subword_loop() const { return _loop_flags & SubwordLoop; } + bool is_flattened_arrays() const { return _loop_flags & FlattenedArrays; } void mark_partial_peel_failed() { _loop_flags |= PartialPeelFailed; } void mark_has_reductions() { _loop_flags |= HasReductions; } void mark_was_slp() { _loop_flags |= WasSlpAnalyzed; } void mark_passed_slp() { _loop_flags |= PassedSlpAnalysis; }
*** 113,122 **** --- 115,125 ---- void mark_is_multiversioned() { _loop_flags |= IsMultiversioned; } void mark_strip_mined() { _loop_flags |= StripMined; } void clear_strip_mined() { _loop_flags &= ~StripMined; } void mark_profile_trip_failed() { _loop_flags |= ProfileTripFailed; } void mark_subword_loop() { _loop_flags |= SubwordLoop; } + void mark_flattened_arrays() { _loop_flags |= FlattenedArrays; } int unswitch_max() { return _unswitch_max; } int unswitch_count() { return _unswitch_count; } int has_been_range_checked() const { return _postloop_flags & LoopRCEChecked; }
*** 1222,1232 **** // insert a clone of the test that selects which version to // execute. void do_unswitching (IdealLoopTree *loop, Node_List &old_new); // Find candidate "if" for unswitching ! IfNode* find_unswitching_candidate(const IdealLoopTree *loop) const; // Range Check Elimination uses this function! // Constrain the main loop iterations so the affine function: // low_limit <= scale_con * I + offset < upper_limit // always holds true. That is, either increase the number of iterations in --- 1225,1235 ---- // insert a clone of the test that selects which version to // execute. void do_unswitching (IdealLoopTree *loop, Node_List &old_new); // Find candidate "if" for unswitching ! IfNode* find_unswitching_candidate(const IdealLoopTree *loop, Node_List& flattened_checks) const; // Range Check Elimination uses this function! // Constrain the main loop iterations so the affine function: // low_limit <= scale_con * I + offset < upper_limit // always holds true. That is, either increase the number of iterations in
< prev index next >