Home | History | Annotate | Download | only in crankshaft
      1 // Copyright 2013 the V8 project authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef V8_CRANKSHAFT_HYDROGEN_UINT32_ANALYSIS_H_
      6 #define V8_CRANKSHAFT_HYDROGEN_UINT32_ANALYSIS_H_
      7 
      8 #include "src/crankshaft/hydrogen.h"
      9 
     10 namespace v8 {
     11 namespace internal {
     12 
     13 
     14 // Discover instructions that can be marked with kUint32 flag allowing
     15 // them to produce full range uint32 values.
     16 class HUint32AnalysisPhase : public HPhase {
     17  public:
     18   explicit HUint32AnalysisPhase(HGraph* graph)
     19       : HPhase("H_Compute safe UInt32 operations", graph), phis_(4, zone()) { }
     20 
     21   void Run();
     22 
     23  private:
     24   INLINE(bool IsSafeUint32Use(HValue* val, HValue* use));
     25   INLINE(bool Uint32UsesAreSafe(HValue* uint32val));
     26   INLINE(bool CheckPhiOperands(HPhi* phi));
     27   INLINE(void UnmarkPhi(HPhi* phi, ZoneList<HPhi*>* worklist));
     28   INLINE(void UnmarkUnsafePhis());
     29 
     30   ZoneList<HPhi*> phis_;
     31 };
     32 
     33 
     34 }  // namespace internal
     35 }  // namespace v8
     36 
     37 #endif  // V8_CRANKSHAFT_HYDROGEN_UINT32_ANALYSIS_H_
     38