1e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 23484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// Use of this source code is governed by a BSD-style license that can be 33484964a86451e86dcf04be9bd8c0d76ee04f081rossberg@chromium.org// found in the LICENSE file. 4e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 5e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org#ifndef V8_HYDROGEN_INFER_TYPES_H_ 6e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org#define V8_HYDROGEN_INFER_TYPES_H_ 7e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 8196eb601290dc49c3754da728dc58700dff2de1bmachenbach@chromium.org#include "src/hydrogen.h" 9e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 10e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.orgnamespace v8 { 11e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.orgnamespace internal { 12e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 13e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 14e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.orgclass HInferTypesPhase : public HPhase { 15e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org public: 16e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org explicit HInferTypesPhase(HGraph* graph) 17e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org : HPhase("H_Inferring types", graph), worklist_(8, zone()), 18e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org in_worklist_(graph->GetMaximumValueID(), zone()) { } 19e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 20e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org void Run() { 21e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org InferTypes(0, graph()->blocks()->length() - 1); 22e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org } 23e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 24e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org private: 25e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org void InferTypes(int from_inclusive, int to_inclusive); 26e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 27e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org ZoneList<HValue*> worklist_; 28e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org BitVector in_worklist_; 29e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 30e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org DISALLOW_COPY_AND_ASSIGN(HInferTypesPhase); 31e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org}; 32e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 33e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 34e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org} } // namespace v8::internal 35e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org 36e0e1b0d3e70c933d36ed381d511e9fda39f2a751mstarzinger@chromium.org#endif // V8_HYDROGEN_INFER_TYPES_H_ 37