110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// Copyright 2013 the V8 project authors. All rights reserved. 210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// Redistribution and use in source and binary forms, with or without 310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// modification, are permitted provided that the following conditions are 410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// met: 510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// 610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// * Redistributions of source code must retain the above copyright 710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// notice, this list of conditions and the following disclaimer. 810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// * Redistributions in binary form must reproduce the above 910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// copyright notice, this list of conditions and the following 1010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// disclaimer in the documentation and/or other materials provided 1110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// with the distribution. 1210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// * Neither the name of Google Inc. nor the names of its 1310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// contributors may be used to endorse or promote products derived 1410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// from this software without specific prior written permission. 1510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// 1610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 1710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 1810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR 1910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT 2010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 2110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 2210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 2310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 2410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 2510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 2610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 2710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 2810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org#ifndef V8_HYDROGEN_DEOPTIMIZING_MARK_H_ 2910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org#define V8_HYDROGEN_DEOPTIMIZING_MARK_H_ 3010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 3110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org#include "hydrogen.h" 3210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 3310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgnamespace v8 { 3410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgnamespace internal { 3510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 3610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 3710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// Mark all blocks that are dominated by an unconditional soft deoptimize to 3810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org// prevent code motion across those blocks. 3910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.orgclass HPropagateDeoptimizingMarkPhase : public HPhase { 4010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org public: 4110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org explicit HPropagateDeoptimizingMarkPhase(HGraph* graph) 4210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org : HPhase("H_Propagate deoptimizing mark", graph) { } 4310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 4410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org void Run(); 4510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 4610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org private: 4710480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org void MarkAsDeoptimizing(); 4810480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org void NullifyUnreachableInstructions(); 4910480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 5010480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org DISALLOW_COPY_AND_ASSIGN(HPropagateDeoptimizingMarkPhase); 5110480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org}; 5210480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 5310480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 5410480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org} } // namespace v8::internal 5510480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org 5610480471c0db59c51c15e57d2a3489551d61b273jkummerow@chromium.org#endif // V8_HYDROGEN_DEOPTIMIZING_MARK_H_ 57