--- old/src/share/vm/opto/loopnode.hpp 2015-06-25 14:11:33.299992700 -0700 +++ new/src/share/vm/opto/loopnode.hpp 2015-06-25 14:11:33.103973100 -0700 @@ -64,7 +64,9 @@ PartialPeelLoop=32, PartialPeelFailed=64, HasReductions=128, - PassedSlpAnalysis=256 }; + WasSlpAnalyzed=256, + PassedSlpAnalysis=512, + NoMoreSlp=1024 }; char _unswitch_count; enum { _unswitch_max=3 }; @@ -80,7 +82,9 @@ int partial_peel_has_failed() const { return _loop_flags & PartialPeelFailed; } 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; } + void mark_no_slp() { _loop_flags |= NoMoreSlp; } int unswitch_max() { return _unswitch_max; } int unswitch_count() { return _unswitch_count; } @@ -212,7 +216,9 @@ int is_main_loop () const { return (_loop_flags&PreMainPostFlagsMask) == Main; } int is_post_loop () const { return (_loop_flags&PreMainPostFlagsMask) == Post; } int is_reduction_loop() const { return (_loop_flags&HasReductions) == HasReductions; } + int was_slp_analyzed () const { return (_loop_flags&WasSlpAnalyzed) == WasSlpAnalyzed; } int has_passed_slp () const { return (_loop_flags&PassedSlpAnalysis) == PassedSlpAnalysis; } + int ignore_slp () const { return (_loop_flags&NoMoreSlp) == NoMoreSlp; } int is_main_no_pre_loop() const { return _loop_flags & MainHasNoPreLoop; } void set_main_no_pre_loop() { _loop_flags |= MainHasNoPreLoop; } @@ -235,6 +241,9 @@ void set_nonexact_trip_count() { _loop_flags &= ~HasExactTripCount; } + void set_notpassed_slp() { + _loop_flags &= ~PassedSlpAnalysis; + } void set_profile_trip_cnt(float ptc) { _profile_trip_cnt = ptc; } float profile_trip_cnt() { return _profile_trip_cnt; }