2 * Copyright (C) 2011 Apple Inc. All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
13 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 #include "DFGOSRExit.h"
31 #include "DFGSpeculativeJIT.h"
33 namespace JSC { namespace DFG {
35 OSRExit::OSRExit(JSValueSource jsValueSource, ValueProfile* valueProfile, MacroAssembler::Jump check, SpeculativeJIT* jit, unsigned recoveryIndex)
36 : m_jsValueSource(jsValueSource)
37 , m_valueProfile(valueProfile)
39 , m_nodeIndex(jit->m_compileIndex)
40 , m_codeOrigin(jit->m_codeOriginForOSR)
41 , m_recoveryIndex(recoveryIndex)
42 , m_arguments(jit->m_arguments.size())
43 , m_variables(jit->m_variables.size())
44 , m_lastSetOperand(jit->m_lastSetOperand)
46 ASSERT(m_codeOrigin.isSet());
47 for (unsigned argument = 0; argument < m_arguments.size(); ++argument)
48 m_arguments[argument] = jit->computeValueRecoveryFor(jit->m_arguments[argument]);
49 for (unsigned variable = 0; variable < m_variables.size(); ++variable)
50 m_variables[variable] = jit->computeValueRecoveryFor(jit->m_variables[variable]);
54 void OSRExit::dump(FILE* out) const
56 for (unsigned argument = 0; argument < m_arguments.size(); ++argument)
57 m_arguments[argument].dump(out);
59 for (unsigned variable = 0; variable < m_variables.size(); ++variable)
60 m_variables[variable].dump(out);
64 } } // namespace JSC::DFG
66 #endif // ENABLE(DFG_JIT)