1fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 27979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// Redistribution and use in source and binary forms, with or without 37979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// modification, are permitted provided that the following conditions are 47979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// met: 57979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// 67979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// * Redistributions of source code must retain the above copyright 77979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// notice, this list of conditions and the following disclaimer. 87979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// * Redistributions in binary form must reproduce the above 97979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// copyright notice, this list of conditions and the following 107979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// disclaimer in the documentation and/or other materials provided 117979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// with the distribution. 127979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// * Neither the name of Google Inc. nor the names of its 137979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// contributors may be used to endorse or promote products derived 147979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// from this software without specific prior written permission. 157979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// 167979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 177979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 187979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 197979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 207979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 217979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 227979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 237979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 247979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 257979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 267979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 277979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 28fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org#ifndef V8_HYDROGEN_BCH_H_ 29fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org#define V8_HYDROGEN_BCH_H_ 307979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 31fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org#include "hydrogen.h" 327979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 33fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgnamespace v8 { 34fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgnamespace internal { 357979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 367979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 37fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.orgclass HBoundsCheckHoistingPhase : public HPhase { 38fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org public: 39fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org explicit HBoundsCheckHoistingPhase(HGraph* graph) 40fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org : HPhase("H_Bounds checks hoisting", graph) { } 41fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 42fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org void Run() { 43fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org HoistRedundantBoundsChecks(); 44fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org } 45fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 46fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org private: 47fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org void HoistRedundantBoundsChecks(); 48fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 49fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org DISALLOW_COPY_AND_ASSIGN(HBoundsCheckHoistingPhase); 50fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org}; 51fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org 527979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 53fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org} } // namespace v8::internal 547979bbb1df2eaff193e85d44c8da1ffa1525b7fcfschneider@chromium.org 55fb732b17922ea75830be4db6b80534c4827d8a55jkummerow@chromium.org#endif // V8_HYDROGEN_BCE_H_ 56