<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>[208063] trunk/Source</title>
</head>
<body>

<style type="text/css"><!--
#msg dl.meta { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dl.meta dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer, #logmsg { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt;  }
#msg dl a { font-weight: bold}
#msg dl a:link    { color:#fc3; }
#msg dl a:active  { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fa0 solid; padding: 6px; }
#logmsg { background: #ffc; border: 1px #fa0 solid; padding: 1em 1em 0 1em; }
#logmsg p, #logmsg pre, #logmsg blockquote { margin: 0 0 1em 0; }
#logmsg p, #logmsg li, #logmsg dt, #logmsg dd { line-height: 14pt; }
#logmsg h1, #logmsg h2, #logmsg h3, #logmsg h4, #logmsg h5, #logmsg h6 { margin: .5em 0; }
#logmsg h1:first-child, #logmsg h2:first-child, #logmsg h3:first-child, #logmsg h4:first-child, #logmsg h5:first-child, #logmsg h6:first-child { margin-top: 0; }
#logmsg ul, #logmsg ol { padding: 0; list-style-position: inside; margin: 0 0 0 1em; }
#logmsg ul { text-indent: -1em; padding-left: 1em; }#logmsg ol { text-indent: -1.5em; padding-left: 1.5em; }
#logmsg > ul, #logmsg > ol { margin: 0 0 1em 0; }
#logmsg pre { background: #eee; padding: 1em; }
#logmsg blockquote { border: 1px solid #fa0; border-left-width: 10px; padding: 1em 1em 0 1em; background: white;}
#logmsg dl { margin: 0; }
#logmsg dt { font-weight: bold; }
#logmsg dd { margin: 0; padding: 0 0 0.5em 0; }
#logmsg dd:before { content:'\00bb';}
#logmsg table { border-spacing: 0px; border-collapse: collapse; border-top: 4px solid #fa0; border-bottom: 1px solid #fa0; background: #fff; }
#logmsg table th { text-align: left; font-weight: normal; padding: 0.2em 0.5em; border-top: 1px dotted #fa0; }
#logmsg table td { text-align: right; border-top: 1px dotted #fa0; padding: 0.2em 0.5em; }
#logmsg table thead th { text-align: center; border-bottom: 1px solid #fa0; }
#logmsg table th.Corner { text-align: left; }
#logmsg hr { border: none 0; border-top: 2px dashed #fa0; height: 1px; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff  {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<div id="msg">
<dl class="meta">
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/208063">208063</a></dd>
<dt>Author</dt> <dd>ggaren@apple.com</dd>
<dt>Date</dt> <dd>2016-10-28 13:04:56 -0700 (Fri, 28 Oct 2016)</dd>
</dl>

<h3>Log Message</h3>
<pre>One file per class for Executable.h/.cpp
https://bugs.webkit.org/show_bug.cgi?id=164099

Reviewed by Saam Barati.

Source/JavaScriptCore:

* CMakeLists.txt:
* JavaScriptCore.xcodeproj/project.pbxproj:
* Scripts/builtins/builtins_generate_combined_implementation.py:
(BuiltinsCombinedImplementationGenerator.generate_secondary_header_includes):
* Scripts/builtins/builtins_generate_separate_implementation.py:
(BuiltinsSeparateImplementationGenerator.generate_secondary_header_includes):
* builtins/BuiltinExecutables.cpp:
* bytecode/CallVariant.h:
* bytecode/CodeBlock.cpp:
* bytecode/CodeBlock.h:
(JSC::ScriptExecutable::prepareForExecution):
* bytecode/CodeOrigin.cpp:
* bytecode/EvalCodeCache.h:
* bytecode/InlineCallFrame.cpp:
* bytecode/UnlinkedCodeBlock.cpp:
* bytecode/UnlinkedFunctionExecutable.cpp:
* bytecompiler/StaticPropertyAnalysis.h:
* debugger/DebuggerLocation.cpp:
* dfg/DFGCapabilities.h:
* dfg/DFGOSRExitPreparation.cpp:
* dfg/DFGToFTLDeferredCompilationCallback.cpp:
* dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:
* interpreter/StackVisitor.cpp:
* jit/JITThunks.cpp:
* jit/JITToDFGDeferredCompilationCallback.cpp:
* jit/SpecializedThunkJIT.h:
* llint/LLIntOffsetsExtractor.cpp:
* parser/Parser.h:
* runtime/CallData.cpp:
* runtime/ConstructData.cpp:
* runtime/EvalExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
(JSC::ExecutableBase::destroy): Deleted.
(JSC::ExecutableBase::clearCode): Deleted.
(JSC::NativeExecutable::create): Deleted.
(JSC::NativeExecutable::destroy): Deleted.
(JSC::NativeExecutable::createStructure): Deleted.
(JSC::NativeExecutable::finishCreation): Deleted.
(JSC::NativeExecutable::NativeExecutable): Deleted.
(JSC::ScriptExecutable::ScriptExecutable): Deleted.
(JSC::ScriptExecutable::destroy): Deleted.
(JSC::ScriptExecutable::installCode): Deleted.
(JSC::ScriptExecutable::newCodeBlockFor): Deleted.
(JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
(JSC::setupLLInt): Deleted.
(JSC::setupJIT): Deleted.
(JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
(JSC::ProgramExecutable::ProgramExecutable): Deleted.
(JSC::ProgramExecutable::destroy): Deleted.
(JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
(JSC::ModuleProgramExecutable::create): Deleted.
(JSC::ModuleProgramExecutable::destroy): Deleted.
(JSC::FunctionExecutable::FunctionExecutable): Deleted.
(JSC::FunctionExecutable::finishCreation): Deleted.
(JSC::FunctionExecutable::destroy): Deleted.
(JSC::samplingDescription): Deleted.
(JSC::ProgramExecutable::checkSyntax): Deleted.
(JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
(JSC::ProgramExecutable::visitChildren): Deleted.
(JSC::ModuleProgramExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
(JSC::FunctionExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::fromGlobalCode): Deleted.
(JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
(JSC::WebAssemblyExecutable::destroy): Deleted.
(JSC::WebAssemblyExecutable::visitChildren): Deleted.
(JSC::ExecutableBase::dump): Deleted.
(JSC::ExecutableBase::hashFor): Deleted.
(JSC::NativeExecutable::hashFor): Deleted.
(JSC::ScriptExecutable::hashFor): Deleted.
* runtime/EvalExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
(JSC::isCall): Deleted.
(JSC::ExecutableBase::ExecutableBase): Deleted.
(JSC::ExecutableBase::finishCreation): Deleted.
(JSC::ExecutableBase::isEvalExecutable): Deleted.
(JSC::ExecutableBase::isFunctionExecutable): Deleted.
(JSC::ExecutableBase::isProgramExecutable): Deleted.
(JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
(JSC::ExecutableBase::isHostFunction): Deleted.
(JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
(JSC::ExecutableBase::createStructure): Deleted.
(JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
(JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::generatedJITCodeFor): Deleted.
(JSC::ExecutableBase::entrypointFor): Deleted.
(JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
(JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
(JSC::ExecutableBase::hasJITCodeForCall): Deleted.
(JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::hasJITCodeFor): Deleted.
(JSC::ExecutableBase::intrinsic): Deleted.
(JSC::ExecutableBase::intrinsicFor): Deleted.
(JSC::ScriptExecutable::source): Deleted.
(JSC::ScriptExecutable::sourceID): Deleted.
(JSC::ScriptExecutable::sourceURL): Deleted.
(JSC::ScriptExecutable::firstLine): Deleted.
(JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::overrideLineNumber): Deleted.
(JSC::ScriptExecutable::lastLine): Deleted.
(JSC::ScriptExecutable::startColumn): Deleted.
(JSC::ScriptExecutable::endColumn): Deleted.
(JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
(JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
(JSC::ScriptExecutable::usesEval): Deleted.
(JSC::ScriptExecutable::usesArguments): Deleted.
(JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
(JSC::ScriptExecutable::isStrictMode): Deleted.
(JSC::ScriptExecutable::derivedContextType): Deleted.
(JSC::ScriptExecutable::evalContextType): Deleted.
(JSC::ScriptExecutable::ecmaMode): Deleted.
(JSC::ScriptExecutable::setNeverInline): Deleted.
(JSC::ScriptExecutable::setNeverOptimize): Deleted.
(JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
(JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::neverInline): Deleted.
(JSC::ScriptExecutable::neverOptimize): Deleted.
(JSC::ScriptExecutable::neverFTLOptimize): Deleted.
(JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::isInliningCandidate): Deleted.
(JSC::ScriptExecutable::isOkToOptimize): Deleted.
(JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::features): Deleted.
(JSC::ScriptExecutable::recordParse): Deleted.
(JSC::ScriptExecutable::finishCreation): Deleted.
(JSC::ScriptExecutable::prepareForExecution): Deleted.
* runtime/Executable.cpp: Removed.
* runtime/Executable.h: Removed.
* runtime/ExecutableBase.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
(JSC::NativeExecutable::create): Deleted.
(JSC::NativeExecutable::destroy): Deleted.
(JSC::NativeExecutable::createStructure): Deleted.
(JSC::NativeExecutable::finishCreation): Deleted.
(JSC::NativeExecutable::NativeExecutable): Deleted.
(JSC::ScriptExecutable::ScriptExecutable): Deleted.
(JSC::ScriptExecutable::destroy): Deleted.
(JSC::ScriptExecutable::installCode): Deleted.
(JSC::ScriptExecutable::newCodeBlockFor): Deleted.
(JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
(JSC::setupLLInt): Deleted.
(JSC::setupJIT): Deleted.
(JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
(JSC::EvalExecutable::create): Deleted.
(JSC::EvalExecutable::EvalExecutable): Deleted.
(JSC::EvalExecutable::destroy): Deleted.
(JSC::ProgramExecutable::ProgramExecutable): Deleted.
(JSC::ProgramExecutable::destroy): Deleted.
(JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
(JSC::ModuleProgramExecutable::create): Deleted.
(JSC::ModuleProgramExecutable::destroy): Deleted.
(JSC::FunctionExecutable::FunctionExecutable): Deleted.
(JSC::FunctionExecutable::finishCreation): Deleted.
(JSC::FunctionExecutable::destroy): Deleted.
(JSC::samplingDescription): Deleted.
(JSC::EvalExecutable::visitChildren): Deleted.
(JSC::ProgramExecutable::checkSyntax): Deleted.
(JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
(JSC::ProgramExecutable::visitChildren): Deleted.
(JSC::ModuleProgramExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
(JSC::FunctionExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::fromGlobalCode): Deleted.
(JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
(JSC::WebAssemblyExecutable::destroy): Deleted.
(JSC::WebAssemblyExecutable::visitChildren): Deleted.
(JSC::NativeExecutable::hashFor): Deleted.
(JSC::ScriptExecutable::hashFor): Deleted.
* runtime/ExecutableBase.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
(JSC::ScriptExecutable::source): Deleted.
(JSC::ScriptExecutable::sourceID): Deleted.
(JSC::ScriptExecutable::sourceURL): Deleted.
(JSC::ScriptExecutable::firstLine): Deleted.
(JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::overrideLineNumber): Deleted.
(JSC::ScriptExecutable::lastLine): Deleted.
(JSC::ScriptExecutable::startColumn): Deleted.
(JSC::ScriptExecutable::endColumn): Deleted.
(JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
(JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
(JSC::ScriptExecutable::usesEval): Deleted.
(JSC::ScriptExecutable::usesArguments): Deleted.
(JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
(JSC::ScriptExecutable::isStrictMode): Deleted.
(JSC::ScriptExecutable::derivedContextType): Deleted.
(JSC::ScriptExecutable::evalContextType): Deleted.
(JSC::ScriptExecutable::ecmaMode): Deleted.
(JSC::ScriptExecutable::setNeverInline): Deleted.
(JSC::ScriptExecutable::setNeverOptimize): Deleted.
(JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
(JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::neverInline): Deleted.
(JSC::ScriptExecutable::neverOptimize): Deleted.
(JSC::ScriptExecutable::neverFTLOptimize): Deleted.
(JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::isInliningCandidate): Deleted.
(JSC::ScriptExecutable::isOkToOptimize): Deleted.
(JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::features): Deleted.
(JSC::ScriptExecutable::recordParse): Deleted.
(JSC::ScriptExecutable::finishCreation): Deleted.
(JSC::ScriptExecutable::prepareForExecution): Deleted.
* runtime/FunctionExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
(JSC::ExecutableBase::destroy): Deleted.
(JSC::ExecutableBase::clearCode): Deleted.
(JSC::NativeExecutable::create): Deleted.
(JSC::NativeExecutable::destroy): Deleted.
(JSC::NativeExecutable::createStructure): Deleted.
(JSC::NativeExecutable::finishCreation): Deleted.
(JSC::NativeExecutable::NativeExecutable): Deleted.
(JSC::ScriptExecutable::ScriptExecutable): Deleted.
(JSC::ScriptExecutable::destroy): Deleted.
(JSC::ScriptExecutable::installCode): Deleted.
(JSC::ScriptExecutable::newCodeBlockFor): Deleted.
(JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
(JSC::setupLLInt): Deleted.
(JSC::setupJIT): Deleted.
(JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
(JSC::EvalExecutable::create): Deleted.
(JSC::EvalExecutable::EvalExecutable): Deleted.
(JSC::EvalExecutable::destroy): Deleted.
(JSC::ProgramExecutable::ProgramExecutable): Deleted.
(JSC::ProgramExecutable::destroy): Deleted.
(JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
(JSC::ModuleProgramExecutable::create): Deleted.
(JSC::ModuleProgramExecutable::destroy): Deleted.
(JSC::samplingDescription): Deleted.
(JSC::EvalExecutable::visitChildren): Deleted.
(JSC::ProgramExecutable::checkSyntax): Deleted.
(JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
(JSC::ProgramExecutable::visitChildren): Deleted.
(JSC::ModuleProgramExecutable::visitChildren): Deleted.
(JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
(JSC::WebAssemblyExecutable::destroy): Deleted.
(JSC::WebAssemblyExecutable::visitChildren): Deleted.
(JSC::ExecutableBase::dump): Deleted.
(JSC::ExecutableBase::hashFor): Deleted.
(JSC::NativeExecutable::hashFor): Deleted.
(JSC::ScriptExecutable::hashFor): Deleted.
* runtime/FunctionExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
(JSC::isCall): Deleted.
(JSC::ExecutableBase::ExecutableBase): Deleted.
(JSC::ExecutableBase::finishCreation): Deleted.
(JSC::ExecutableBase::isEvalExecutable): Deleted.
(JSC::ExecutableBase::isFunctionExecutable): Deleted.
(JSC::ExecutableBase::isProgramExecutable): Deleted.
(JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
(JSC::ExecutableBase::isHostFunction): Deleted.
(JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
(JSC::ExecutableBase::createStructure): Deleted.
(JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
(JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::generatedJITCodeFor): Deleted.
(JSC::ExecutableBase::entrypointFor): Deleted.
(JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
(JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
(JSC::ExecutableBase::hasJITCodeForCall): Deleted.
(JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::hasJITCodeFor): Deleted.
(JSC::ExecutableBase::intrinsic): Deleted.
(JSC::ExecutableBase::intrinsicFor): Deleted.
(JSC::ScriptExecutable::source): Deleted.
(JSC::ScriptExecutable::sourceID): Deleted.
(JSC::ScriptExecutable::sourceURL): Deleted.
(JSC::ScriptExecutable::firstLine): Deleted.
(JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::overrideLineNumber): Deleted.
(JSC::ScriptExecutable::lastLine): Deleted.
(JSC::ScriptExecutable::startColumn): Deleted.
(JSC::ScriptExecutable::endColumn): Deleted.
(JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
(JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
(JSC::ScriptExecutable::usesEval): Deleted.
(JSC::ScriptExecutable::usesArguments): Deleted.
(JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
(JSC::ScriptExecutable::isStrictMode): Deleted.
(JSC::ScriptExecutable::derivedContextType): Deleted.
(JSC::ScriptExecutable::evalContextType): Deleted.
(JSC::ScriptExecutable::ecmaMode): Deleted.
(JSC::ScriptExecutable::setNeverInline): Deleted.
(JSC::ScriptExecutable::setNeverOptimize): Deleted.
(JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
(JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::neverInline): Deleted.
(JSC::ScriptExecutable::neverOptimize): Deleted.
(JSC::ScriptExecutable::neverFTLOptimize): Deleted.
(JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::isInliningCandidate): Deleted.
(JSC::ScriptExecutable::isOkToOptimize): Deleted.
(JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::features): Deleted.
(JSC::ScriptExecutable::recordParse): Deleted.
(JSC::ScriptExecutable::finishCreation): Deleted.
(JSC::ScriptExecutable::prepareForExecution): Deleted.
* runtime/FunctionExecutableDump.h:
* runtime/JSArray.cpp:
* runtime/JSFunctionInlines.h:
* runtime/JSModuleRecord.cpp:
* runtime/JSObject.cpp:
* runtime/Lookup.cpp:
* runtime/ModuleProgramExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
(JSC::ExecutableBase::destroy): Deleted.
(JSC::ExecutableBase::clearCode): Deleted.
(JSC::NativeExecutable::create): Deleted.
(JSC::NativeExecutable::destroy): Deleted.
(JSC::NativeExecutable::createStructure): Deleted.
(JSC::NativeExecutable::finishCreation): Deleted.
(JSC::NativeExecutable::NativeExecutable): Deleted.
(JSC::ScriptExecutable::ScriptExecutable): Deleted.
(JSC::ScriptExecutable::destroy): Deleted.
(JSC::ScriptExecutable::installCode): Deleted.
(JSC::ScriptExecutable::newCodeBlockFor): Deleted.
(JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
(JSC::setupLLInt): Deleted.
(JSC::setupJIT): Deleted.
(JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
(JSC::EvalExecutable::create): Deleted.
(JSC::EvalExecutable::EvalExecutable): Deleted.
(JSC::EvalExecutable::destroy): Deleted.
(JSC::ProgramExecutable::ProgramExecutable): Deleted.
(JSC::ProgramExecutable::destroy): Deleted.
(JSC::FunctionExecutable::FunctionExecutable): Deleted.
(JSC::FunctionExecutable::finishCreation): Deleted.
(JSC::FunctionExecutable::destroy): Deleted.
(JSC::samplingDescription): Deleted.
(JSC::EvalExecutable::visitChildren): Deleted.
(JSC::ProgramExecutable::checkSyntax): Deleted.
(JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
(JSC::ProgramExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
(JSC::FunctionExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::fromGlobalCode): Deleted.
(JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
(JSC::WebAssemblyExecutable::destroy): Deleted.
(JSC::WebAssemblyExecutable::visitChildren): Deleted.
(JSC::ExecutableBase::dump): Deleted.
(JSC::ExecutableBase::hashFor): Deleted.
(JSC::NativeExecutable::hashFor): Deleted.
(JSC::ScriptExecutable::hashFor): Deleted.
* runtime/ModuleProgramExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
(JSC::isCall): Deleted.
(JSC::ExecutableBase::ExecutableBase): Deleted.
(JSC::ExecutableBase::finishCreation): Deleted.
(JSC::ExecutableBase::isEvalExecutable): Deleted.
(JSC::ExecutableBase::isFunctionExecutable): Deleted.
(JSC::ExecutableBase::isProgramExecutable): Deleted.
(JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
(JSC::ExecutableBase::isHostFunction): Deleted.
(JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
(JSC::ExecutableBase::createStructure): Deleted.
(JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
(JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::generatedJITCodeFor): Deleted.
(JSC::ExecutableBase::entrypointFor): Deleted.
(JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
(JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
(JSC::ExecutableBase::hasJITCodeForCall): Deleted.
(JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::hasJITCodeFor): Deleted.
(JSC::ExecutableBase::intrinsic): Deleted.
(JSC::ExecutableBase::intrinsicFor): Deleted.
(JSC::ScriptExecutable::source): Deleted.
(JSC::ScriptExecutable::sourceID): Deleted.
(JSC::ScriptExecutable::sourceURL): Deleted.
(JSC::ScriptExecutable::firstLine): Deleted.
(JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::overrideLineNumber): Deleted.
(JSC::ScriptExecutable::lastLine): Deleted.
(JSC::ScriptExecutable::startColumn): Deleted.
(JSC::ScriptExecutable::endColumn): Deleted.
(JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
(JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
(JSC::ScriptExecutable::usesEval): Deleted.
(JSC::ScriptExecutable::usesArguments): Deleted.
(JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
(JSC::ScriptExecutable::isStrictMode): Deleted.
(JSC::ScriptExecutable::derivedContextType): Deleted.
(JSC::ScriptExecutable::evalContextType): Deleted.
(JSC::ScriptExecutable::ecmaMode): Deleted.
(JSC::ScriptExecutable::setNeverInline): Deleted.
(JSC::ScriptExecutable::setNeverOptimize): Deleted.
(JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
(JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::neverInline): Deleted.
(JSC::ScriptExecutable::neverOptimize): Deleted.
(JSC::ScriptExecutable::neverFTLOptimize): Deleted.
(JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::isInliningCandidate): Deleted.
(JSC::ScriptExecutable::isOkToOptimize): Deleted.
(JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::features): Deleted.
(JSC::ScriptExecutable::recordParse): Deleted.
(JSC::ScriptExecutable::finishCreation): Deleted.
(JSC::ScriptExecutable::prepareForExecution): Deleted.
* runtime/NativeExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
(JSC::ExecutableBase::destroy): Deleted.
(JSC::ExecutableBase::clearCode): Deleted.
(JSC::ScriptExecutable::ScriptExecutable): Deleted.
(JSC::ScriptExecutable::destroy): Deleted.
(JSC::ScriptExecutable::installCode): Deleted.
(JSC::ScriptExecutable::newCodeBlockFor): Deleted.
(JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
(JSC::setupLLInt): Deleted.
(JSC::setupJIT): Deleted.
(JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
(JSC::EvalExecutable::create): Deleted.
(JSC::EvalExecutable::EvalExecutable): Deleted.
(JSC::EvalExecutable::destroy): Deleted.
(JSC::ProgramExecutable::ProgramExecutable): Deleted.
(JSC::ProgramExecutable::destroy): Deleted.
(JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
(JSC::ModuleProgramExecutable::create): Deleted.
(JSC::ModuleProgramExecutable::destroy): Deleted.
(JSC::FunctionExecutable::FunctionExecutable): Deleted.
(JSC::FunctionExecutable::finishCreation): Deleted.
(JSC::FunctionExecutable::destroy): Deleted.
(JSC::samplingDescription): Deleted.
(JSC::EvalExecutable::visitChildren): Deleted.
(JSC::ProgramExecutable::checkSyntax): Deleted.
(JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
(JSC::ProgramExecutable::visitChildren): Deleted.
(JSC::ModuleProgramExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
(JSC::FunctionExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::fromGlobalCode): Deleted.
(JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
(JSC::WebAssemblyExecutable::destroy): Deleted.
(JSC::WebAssemblyExecutable::visitChildren): Deleted.
(JSC::ExecutableBase::dump): Deleted.
(JSC::ExecutableBase::hashFor): Deleted.
(JSC::ScriptExecutable::hashFor): Deleted.
* runtime/NativeExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
(JSC::isCall): Deleted.
(JSC::ExecutableBase::ExecutableBase): Deleted.
(JSC::ExecutableBase::finishCreation): Deleted.
(JSC::ExecutableBase::isEvalExecutable): Deleted.
(JSC::ExecutableBase::isFunctionExecutable): Deleted.
(JSC::ExecutableBase::isProgramExecutable): Deleted.
(JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
(JSC::ExecutableBase::isHostFunction): Deleted.
(JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
(JSC::ExecutableBase::createStructure): Deleted.
(JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
(JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::generatedJITCodeFor): Deleted.
(JSC::ExecutableBase::entrypointFor): Deleted.
(JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
(JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
(JSC::ExecutableBase::hasJITCodeForCall): Deleted.
(JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::hasJITCodeFor): Deleted.
(JSC::ExecutableBase::intrinsic): Deleted.
(JSC::ExecutableBase::intrinsicFor): Deleted.
(JSC::ScriptExecutable::source): Deleted.
(JSC::ScriptExecutable::sourceID): Deleted.
(JSC::ScriptExecutable::sourceURL): Deleted.
(JSC::ScriptExecutable::firstLine): Deleted.
(JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::overrideLineNumber): Deleted.
(JSC::ScriptExecutable::lastLine): Deleted.
(JSC::ScriptExecutable::startColumn): Deleted.
(JSC::ScriptExecutable::endColumn): Deleted.
(JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
(JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
(JSC::ScriptExecutable::usesEval): Deleted.
(JSC::ScriptExecutable::usesArguments): Deleted.
(JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
(JSC::ScriptExecutable::isStrictMode): Deleted.
(JSC::ScriptExecutable::derivedContextType): Deleted.
(JSC::ScriptExecutable::evalContextType): Deleted.
(JSC::ScriptExecutable::ecmaMode): Deleted.
(JSC::ScriptExecutable::setNeverInline): Deleted.
(JSC::ScriptExecutable::setNeverOptimize): Deleted.
(JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
(JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::neverInline): Deleted.
(JSC::ScriptExecutable::neverOptimize): Deleted.
(JSC::ScriptExecutable::neverFTLOptimize): Deleted.
(JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::isInliningCandidate): Deleted.
(JSC::ScriptExecutable::isOkToOptimize): Deleted.
(JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::features): Deleted.
(JSC::ScriptExecutable::recordParse): Deleted.
(JSC::ScriptExecutable::finishCreation): Deleted.
(JSC::ScriptExecutable::prepareForExecution): Deleted.
* runtime/ProgramExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
(JSC::ExecutableBase::destroy): Deleted.
(JSC::ExecutableBase::clearCode): Deleted.
(JSC::NativeExecutable::create): Deleted.
(JSC::NativeExecutable::destroy): Deleted.
(JSC::NativeExecutable::createStructure): Deleted.
(JSC::NativeExecutable::finishCreation): Deleted.
(JSC::NativeExecutable::NativeExecutable): Deleted.
(JSC::ScriptExecutable::ScriptExecutable): Deleted.
(JSC::ScriptExecutable::destroy): Deleted.
(JSC::ScriptExecutable::installCode): Deleted.
(JSC::ScriptExecutable::newCodeBlockFor): Deleted.
(JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
(JSC::setupLLInt): Deleted.
(JSC::setupJIT): Deleted.
(JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
(JSC::EvalExecutable::create): Deleted.
(JSC::EvalExecutable::EvalExecutable): Deleted.
(JSC::EvalExecutable::destroy): Deleted.
(JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
(JSC::ModuleProgramExecutable::create): Deleted.
(JSC::ModuleProgramExecutable::destroy): Deleted.
(JSC::FunctionExecutable::FunctionExecutable): Deleted.
(JSC::FunctionExecutable::finishCreation): Deleted.
(JSC::FunctionExecutable::destroy): Deleted.
(JSC::samplingDescription): Deleted.
(JSC::EvalExecutable::visitChildren): Deleted.
(JSC::ModuleProgramExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
(JSC::FunctionExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::fromGlobalCode): Deleted.
(JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
(JSC::WebAssemblyExecutable::destroy): Deleted.
(JSC::WebAssemblyExecutable::visitChildren): Deleted.
(JSC::ExecutableBase::dump): Deleted.
(JSC::ExecutableBase::hashFor): Deleted.
(JSC::NativeExecutable::hashFor): Deleted.
(JSC::ScriptExecutable::hashFor): Deleted.
* runtime/ProgramExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
(JSC::isCall): Deleted.
(JSC::ExecutableBase::ExecutableBase): Deleted.
(JSC::ExecutableBase::finishCreation): Deleted.
(JSC::ExecutableBase::isEvalExecutable): Deleted.
(JSC::ExecutableBase::isFunctionExecutable): Deleted.
(JSC::ExecutableBase::isProgramExecutable): Deleted.
(JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
(JSC::ExecutableBase::isHostFunction): Deleted.
(JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
(JSC::ExecutableBase::createStructure): Deleted.
(JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
(JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::generatedJITCodeFor): Deleted.
(JSC::ExecutableBase::entrypointFor): Deleted.
(JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
(JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
(JSC::ExecutableBase::hasJITCodeForCall): Deleted.
(JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::hasJITCodeFor): Deleted.
(JSC::ExecutableBase::intrinsic): Deleted.
(JSC::ExecutableBase::intrinsicFor): Deleted.
(JSC::ScriptExecutable::source): Deleted.
(JSC::ScriptExecutable::sourceID): Deleted.
(JSC::ScriptExecutable::sourceURL): Deleted.
(JSC::ScriptExecutable::firstLine): Deleted.
(JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::overrideLineNumber): Deleted.
(JSC::ScriptExecutable::lastLine): Deleted.
(JSC::ScriptExecutable::startColumn): Deleted.
(JSC::ScriptExecutable::endColumn): Deleted.
(JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
(JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
(JSC::ScriptExecutable::usesEval): Deleted.
(JSC::ScriptExecutable::usesArguments): Deleted.
(JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
(JSC::ScriptExecutable::isStrictMode): Deleted.
(JSC::ScriptExecutable::derivedContextType): Deleted.
(JSC::ScriptExecutable::evalContextType): Deleted.
(JSC::ScriptExecutable::ecmaMode): Deleted.
(JSC::ScriptExecutable::setNeverInline): Deleted.
(JSC::ScriptExecutable::setNeverOptimize): Deleted.
(JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
(JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::neverInline): Deleted.
(JSC::ScriptExecutable::neverOptimize): Deleted.
(JSC::ScriptExecutable::neverFTLOptimize): Deleted.
(JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::isInliningCandidate): Deleted.
(JSC::ScriptExecutable::isOkToOptimize): Deleted.
(JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::features): Deleted.
(JSC::ScriptExecutable::recordParse): Deleted.
(JSC::ScriptExecutable::finishCreation): Deleted.
(JSC::ScriptExecutable::prepareForExecution): Deleted.
* runtime/SamplingProfiler.cpp:
* runtime/ScriptExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
(JSC::ExecutableBase::destroy): Deleted.
(JSC::ExecutableBase::clearCode): Deleted.
(JSC::NativeExecutable::create): Deleted.
(JSC::NativeExecutable::destroy): Deleted.
(JSC::NativeExecutable::createStructure): Deleted.
(JSC::NativeExecutable::finishCreation): Deleted.
(JSC::NativeExecutable::NativeExecutable): Deleted.
(JSC::EvalExecutable::create): Deleted.
(JSC::EvalExecutable::EvalExecutable): Deleted.
(JSC::EvalExecutable::destroy): Deleted.
(JSC::ProgramExecutable::ProgramExecutable): Deleted.
(JSC::ProgramExecutable::destroy): Deleted.
(JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
(JSC::ModuleProgramExecutable::create): Deleted.
(JSC::ModuleProgramExecutable::destroy): Deleted.
(JSC::FunctionExecutable::FunctionExecutable): Deleted.
(JSC::FunctionExecutable::finishCreation): Deleted.
(JSC::FunctionExecutable::destroy): Deleted.
(JSC::samplingDescription): Deleted.
(JSC::EvalExecutable::visitChildren): Deleted.
(JSC::ProgramExecutable::checkSyntax): Deleted.
(JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
(JSC::ProgramExecutable::visitChildren): Deleted.
(JSC::ModuleProgramExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
(JSC::FunctionExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::fromGlobalCode): Deleted.
(JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
(JSC::WebAssemblyExecutable::destroy): Deleted.
(JSC::WebAssemblyExecutable::visitChildren): Deleted.
(JSC::ExecutableBase::dump): Deleted.
(JSC::ExecutableBase::hashFor): Deleted.
(JSC::NativeExecutable::hashFor): Deleted.
* runtime/ScriptExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
(): Deleted.
(JSC::isCall): Deleted.
(JSC::ExecutableBase::ExecutableBase): Deleted.
(JSC::ExecutableBase::finishCreation): Deleted.
(JSC::ExecutableBase::isEvalExecutable): Deleted.
(JSC::ExecutableBase::isFunctionExecutable): Deleted.
(JSC::ExecutableBase::isProgramExecutable): Deleted.
(JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
(JSC::ExecutableBase::isHostFunction): Deleted.
(JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
(JSC::ExecutableBase::createStructure): Deleted.
(JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
(JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::generatedJITCodeFor): Deleted.
(JSC::ExecutableBase::entrypointFor): Deleted.
(JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
(JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
(JSC::ExecutableBase::hasJITCodeForCall): Deleted.
(JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::hasJITCodeFor): Deleted.
(JSC::ExecutableBase::intrinsic): Deleted.
(JSC::ExecutableBase::intrinsicFor): Deleted.
(JSC::ScriptExecutable::prepareForExecution): Deleted.
* runtime/StringConstructor.cpp:
* runtime/StringPrototype.cpp:
* runtime/WebAssemblyExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
(JSC::ExecutableBase::destroy): Deleted.
(JSC::ExecutableBase::clearCode): Deleted.
(JSC::NativeExecutable::create): Deleted.
(JSC::NativeExecutable::destroy): Deleted.
(JSC::NativeExecutable::createStructure): Deleted.
(JSC::NativeExecutable::finishCreation): Deleted.
(JSC::NativeExecutable::NativeExecutable): Deleted.
(JSC::ScriptExecutable::ScriptExecutable): Deleted.
(JSC::ScriptExecutable::destroy): Deleted.
(JSC::ScriptExecutable::installCode): Deleted.
(JSC::ScriptExecutable::newCodeBlockFor): Deleted.
(JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
(JSC::setupLLInt): Deleted.
(JSC::setupJIT): Deleted.
(JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
(JSC::EvalExecutable::create): Deleted.
(JSC::EvalExecutable::EvalExecutable): Deleted.
(JSC::EvalExecutable::destroy): Deleted.
(JSC::ProgramExecutable::ProgramExecutable): Deleted.
(JSC::ProgramExecutable::destroy): Deleted.
(JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
(JSC::ModuleProgramExecutable::create): Deleted.
(JSC::ModuleProgramExecutable::destroy): Deleted.
(JSC::FunctionExecutable::FunctionExecutable): Deleted.
(JSC::FunctionExecutable::finishCreation): Deleted.
(JSC::FunctionExecutable::destroy): Deleted.
(JSC::samplingDescription): Deleted.
(JSC::EvalExecutable::visitChildren): Deleted.
(JSC::ProgramExecutable::checkSyntax): Deleted.
(JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
(JSC::ProgramExecutable::visitChildren): Deleted.
(JSC::ModuleProgramExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
(JSC::FunctionExecutable::visitChildren): Deleted.
(JSC::FunctionExecutable::fromGlobalCode): Deleted.
(JSC::ExecutableBase::dump): Deleted.
(JSC::ExecutableBase::hashFor): Deleted.
(JSC::NativeExecutable::hashFor): Deleted.
(JSC::ScriptExecutable::hashFor): Deleted.
* runtime/WebAssemblyExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
(JSC::isCall): Deleted.
(JSC::ExecutableBase::ExecutableBase): Deleted.
(JSC::ExecutableBase::finishCreation): Deleted.
(JSC::ExecutableBase::isEvalExecutable): Deleted.
(JSC::ExecutableBase::isFunctionExecutable): Deleted.
(JSC::ExecutableBase::isProgramExecutable): Deleted.
(JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
(JSC::ExecutableBase::isHostFunction): Deleted.
(JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
(JSC::ExecutableBase::createStructure): Deleted.
(JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
(JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::generatedJITCodeFor): Deleted.
(JSC::ExecutableBase::entrypointFor): Deleted.
(JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
(JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
(JSC::ExecutableBase::hasJITCodeForCall): Deleted.
(JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
(JSC::ExecutableBase::hasJITCodeFor): Deleted.
(JSC::ExecutableBase::intrinsic): Deleted.
(JSC::ExecutableBase::intrinsicFor): Deleted.
(JSC::ScriptExecutable::source): Deleted.
(JSC::ScriptExecutable::sourceID): Deleted.
(JSC::ScriptExecutable::sourceURL): Deleted.
(JSC::ScriptExecutable::firstLine): Deleted.
(JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
(JSC::ScriptExecutable::overrideLineNumber): Deleted.
(JSC::ScriptExecutable::lastLine): Deleted.
(JSC::ScriptExecutable::startColumn): Deleted.
(JSC::ScriptExecutable::endColumn): Deleted.
(JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
(JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
(JSC::ScriptExecutable::usesEval): Deleted.
(JSC::ScriptExecutable::usesArguments): Deleted.
(JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
(JSC::ScriptExecutable::isStrictMode): Deleted.
(JSC::ScriptExecutable::derivedContextType): Deleted.
(JSC::ScriptExecutable::evalContextType): Deleted.
(JSC::ScriptExecutable::ecmaMode): Deleted.
(JSC::ScriptExecutable::setNeverInline): Deleted.
(JSC::ScriptExecutable::setNeverOptimize): Deleted.
(JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
(JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::neverInline): Deleted.
(JSC::ScriptExecutable::neverOptimize): Deleted.
(JSC::ScriptExecutable::neverFTLOptimize): Deleted.
(JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::isInliningCandidate): Deleted.
(JSC::ScriptExecutable::isOkToOptimize): Deleted.
(JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
(JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
(JSC::ScriptExecutable::features): Deleted.
(JSC::ScriptExecutable::recordParse): Deleted.
(JSC::ScriptExecutable::finishCreation): Deleted.
(JSC::ScriptExecutable::prepareForExecution): Deleted.

Source/WebCore:

* ForwardingHeaders/runtime/Executable.h: Removed.
* ForwardingHeaders/runtime/FunctionExecutable.h: Copied from Source/WebCore/ForwardingHeaders/runtime/Executable.h.
* bindings/js/JSLazyEventListener.cpp:
* bindings/js/JSMainThreadExecStateInstrumentation.h:</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreCMakeListstxt">trunk/Source/JavaScriptCore/CMakeLists.txt</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj">trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_combined_implementationpy">trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py</a></li>
<li><a href="#trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_separate_implementationpy">trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py</a></li>
<li><a href="#trunkSourceJavaScriptCorebuiltinsBuiltinExecutablescpp">trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCallVarianth">trunk/Source/JavaScriptCore/bytecode/CallVariant.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockh">trunk/Source/JavaScriptCore/bytecode/CodeBlock.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeOrigincpp">trunk/Source/JavaScriptCore/bytecode/CodeOrigin.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeEvalCodeCacheh">trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeInlineCallFramecpp">trunk/Source/JavaScriptCore/bytecode/InlineCallFrame.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutablecpp">trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecompilerStaticPropertyAnalysish">trunk/Source/JavaScriptCore/bytecompiler/StaticPropertyAnalysis.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggerLocationcpp">trunk/Source/JavaScriptCore/debugger/DebuggerLocation.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGCapabilitiesh">trunk/Source/JavaScriptCore/dfg/DFGCapabilities.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGOSRExitPreparationcpp">trunk/Source/JavaScriptCore/dfg/DFGOSRExitPreparation.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGToFTLDeferredCompilationCallbackcpp">trunk/Source/JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGToFTLForOSREntryDeferredCompilationCallbackcpp">trunk/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterStackVisitorcpp">trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITThunkscpp">trunk/Source/JavaScriptCore/jit/JITThunks.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITToDFGDeferredCompilationCallbackcpp">trunk/Source/JavaScriptCore/jit/JITToDFGDeferredCompilationCallback.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitSpecializedThunkJITh">trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntOffsetsExtractorcpp">trunk/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreparserParserh">trunk/Source/JavaScriptCore/parser/Parser.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCallDatacpp">trunk/Source/JavaScriptCore/runtime/CallData.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeConstructDatacpp">trunk/Source/JavaScriptCore/runtime/ConstructData.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionExecutableDumph">trunk/Source/JavaScriptCore/runtime/FunctionExecutableDump.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArraycpp">trunk/Source/JavaScriptCore/runtime/JSArray.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFunctionInlinesh">trunk/Source/JavaScriptCore/runtime/JSFunctionInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSModuleRecordcpp">trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjectcpp">trunk/Source/JavaScriptCore/runtime/JSObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeLookupcpp">trunk/Source/JavaScriptCore/runtime/Lookup.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSamplingProfilercpp">trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringConstructorcpp">trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringPrototypecpp">trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSLazyEventListenercpp">trunk/Source/WebCore/bindings/js/JSLazyEventListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMainThreadExecStateInstrumentationh">trunk/Source/WebCore/bindings/js/JSMainThreadExecStateInstrumentation.h</a></li>
</ul>

<h3>Added Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeEvalExecutablecpp">trunk/Source/JavaScriptCore/runtime/EvalExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeEvalExecutableh">trunk/Source/JavaScriptCore/runtime/EvalExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutableBasecpp">trunk/Source/JavaScriptCore/runtime/ExecutableBase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutableBaseh">trunk/Source/JavaScriptCore/runtime/ExecutableBase.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionExecutablecpp">trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionExecutableh">trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeModuleProgramExecutablecpp">trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeModuleProgramExecutableh">trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNativeExecutablecpp">trunk/Source/JavaScriptCore/runtime/NativeExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNativeExecutableh">trunk/Source/JavaScriptCore/runtime/NativeExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeProgramExecutablecpp">trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeProgramExecutableh">trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeScriptExecutablecpp">trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeScriptExecutableh">trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWebAssemblyExecutablecpp">trunk/Source/JavaScriptCore/runtime/WebAssemblyExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWebAssemblyExecutableh">trunk/Source/JavaScriptCore/runtime/WebAssemblyExecutable.h</a></li>
<li><a href="#trunkSourceWebCoreForwardingHeadersruntimeFunctionExecutableh">trunk/Source/WebCore/ForwardingHeaders/runtime/FunctionExecutable.h</a></li>
</ul>

<h3>Removed Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutablecpp">trunk/Source/JavaScriptCore/runtime/Executable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutableh">trunk/Source/JavaScriptCore/runtime/Executable.h</a></li>
<li><a href="#trunkSourceWebCoreForwardingHeadersruntimeExecutableh">trunk/Source/WebCore/ForwardingHeaders/runtime/Executable.h</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreCMakeListstxt"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/CMakeLists.txt (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/CMakeLists.txt        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/CMakeLists.txt        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -674,13 +674,15 @@
</span><span class="cx">     runtime/ErrorHandlingScope.cpp
</span><span class="cx">     runtime/ErrorInstance.cpp
</span><span class="cx">     runtime/ErrorPrototype.cpp
</span><ins>+    runtime/EvalExecutable.cpp
</ins><span class="cx">     runtime/Exception.cpp
</span><span class="cx">     runtime/ExceptionEventLocation.cpp
</span><span class="cx">     runtime/ExceptionFuzz.cpp
</span><span class="cx">     runtime/ExceptionHelpers.cpp
</span><span class="cx">     runtime/ExceptionScope.cpp
</span><del>-    runtime/Executable.cpp
</del><ins>+    runtime/ExecutableBase.cpp
</ins><span class="cx">     runtime/FunctionConstructor.cpp
</span><ins>+    runtime/FunctionExecutable.cpp
</ins><span class="cx">     runtime/FunctionExecutableDump.cpp
</span><span class="cx">     runtime/FunctionHasExecutedCache.cpp
</span><span class="cx">     runtime/FunctionPrototype.cpp
</span><span class="lines">@@ -785,8 +787,10 @@
</span><span class="cx">     runtime/MathObject.cpp
</span><span class="cx">     runtime/MemoryStatistics.cpp
</span><span class="cx">     runtime/ModuleLoaderPrototype.cpp
</span><ins>+    runtime/ModuleProgramExecutable.cpp
</ins><span class="cx">     runtime/NativeErrorConstructor.cpp
</span><span class="cx">     runtime/NativeErrorPrototype.cpp
</span><ins>+    runtime/NativeExecutable.cpp
</ins><span class="cx">     runtime/NativeStdFunctionCell.cpp
</span><span class="cx">     runtime/NullGetterFunction.cpp
</span><span class="cx">     runtime/NullSetterFunction.cpp
</span><span class="lines">@@ -797,6 +801,7 @@
</span><span class="cx">     runtime/ObjectPrototype.cpp
</span><span class="cx">     runtime/Operations.cpp
</span><span class="cx">     runtime/Options.cpp
</span><ins>+    runtime/ProgramExecutable.cpp
</ins><span class="cx">     runtime/PropertyDescriptor.cpp
</span><span class="cx">     runtime/PropertySlot.cpp
</span><span class="cx">     runtime/PropertyTable.cpp
</span><span class="lines">@@ -818,6 +823,7 @@
</span><span class="cx">     runtime/ScopeOffset.cpp
</span><span class="cx">     runtime/ScopedArguments.cpp
</span><span class="cx">     runtime/ScopedArgumentsTable.cpp
</span><ins>+    runtime/ScriptExecutable.cpp
</ins><span class="cx">     runtime/SetConstructor.cpp
</span><span class="cx">     runtime/SetIteratorPrototype.cpp
</span><span class="cx">     runtime/SetPrototype.cpp
</span><span class="lines">@@ -840,9 +846,9 @@
</span><span class="cx">     runtime/SymbolObject.cpp
</span><span class="cx">     runtime/SymbolPrototype.cpp
</span><span class="cx">     runtime/SymbolTable.cpp
</span><del>-    runtime/ThrowScope.cpp
</del><span class="cx">     runtime/TemplateRegistry.cpp
</span><span class="cx">     runtime/TestRunnerUtils.cpp
</span><ins>+    runtime/ThrowScope.cpp
</ins><span class="cx">     runtime/TypeLocationCache.cpp
</span><span class="cx">     runtime/TypeProfiler.cpp
</span><span class="cx">     runtime/TypeProfilerLog.cpp
</span><span class="lines">@@ -859,6 +865,7 @@
</span><span class="cx">     runtime/WeakMapPrototype.cpp
</span><span class="cx">     runtime/WeakSetConstructor.cpp
</span><span class="cx">     runtime/WeakSetPrototype.cpp
</span><ins>+    runtime/WebAssemblyExecutable.cpp
</ins><span class="cx"> 
</span><span class="cx">     tools/CodeProfile.cpp
</span><span class="cx">     tools/CodeProfiling.cpp
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -1,3 +1,764 @@
</span><ins>+2016-10-27  Geoffrey Garen  &lt;ggaren@apple.com&gt;
+
+        One file per class for Executable.h/.cpp
+        https://bugs.webkit.org/show_bug.cgi?id=164099
+
+        Reviewed by Saam Barati.
+
+        * CMakeLists.txt:
+        * JavaScriptCore.xcodeproj/project.pbxproj:
+        * Scripts/builtins/builtins_generate_combined_implementation.py:
+        (BuiltinsCombinedImplementationGenerator.generate_secondary_header_includes):
+        * Scripts/builtins/builtins_generate_separate_implementation.py:
+        (BuiltinsSeparateImplementationGenerator.generate_secondary_header_includes):
+        * builtins/BuiltinExecutables.cpp:
+        * bytecode/CallVariant.h:
+        * bytecode/CodeBlock.cpp:
+        * bytecode/CodeBlock.h:
+        (JSC::ScriptExecutable::prepareForExecution):
+        * bytecode/CodeOrigin.cpp:
+        * bytecode/EvalCodeCache.h:
+        * bytecode/InlineCallFrame.cpp:
+        * bytecode/UnlinkedCodeBlock.cpp:
+        * bytecode/UnlinkedFunctionExecutable.cpp:
+        * bytecompiler/StaticPropertyAnalysis.h:
+        * debugger/DebuggerLocation.cpp:
+        * dfg/DFGCapabilities.h:
+        * dfg/DFGOSRExitPreparation.cpp:
+        * dfg/DFGToFTLDeferredCompilationCallback.cpp:
+        * dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:
+        * interpreter/StackVisitor.cpp:
+        * jit/JITThunks.cpp:
+        * jit/JITToDFGDeferredCompilationCallback.cpp:
+        * jit/SpecializedThunkJIT.h:
+        * llint/LLIntOffsetsExtractor.cpp:
+        * parser/Parser.h:
+        * runtime/CallData.cpp:
+        * runtime/ConstructData.cpp:
+        * runtime/EvalExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
+        (JSC::ExecutableBase::destroy): Deleted.
+        (JSC::ExecutableBase::clearCode): Deleted.
+        (JSC::NativeExecutable::create): Deleted.
+        (JSC::NativeExecutable::destroy): Deleted.
+        (JSC::NativeExecutable::createStructure): Deleted.
+        (JSC::NativeExecutable::finishCreation): Deleted.
+        (JSC::NativeExecutable::NativeExecutable): Deleted.
+        (JSC::ScriptExecutable::ScriptExecutable): Deleted.
+        (JSC::ScriptExecutable::destroy): Deleted.
+        (JSC::ScriptExecutable::installCode): Deleted.
+        (JSC::ScriptExecutable::newCodeBlockFor): Deleted.
+        (JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
+        (JSC::setupLLInt): Deleted.
+        (JSC::setupJIT): Deleted.
+        (JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
+        (JSC::ProgramExecutable::ProgramExecutable): Deleted.
+        (JSC::ProgramExecutable::destroy): Deleted.
+        (JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
+        (JSC::ModuleProgramExecutable::create): Deleted.
+        (JSC::ModuleProgramExecutable::destroy): Deleted.
+        (JSC::FunctionExecutable::FunctionExecutable): Deleted.
+        (JSC::FunctionExecutable::finishCreation): Deleted.
+        (JSC::FunctionExecutable::destroy): Deleted.
+        (JSC::samplingDescription): Deleted.
+        (JSC::ProgramExecutable::checkSyntax): Deleted.
+        (JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
+        (JSC::ProgramExecutable::visitChildren): Deleted.
+        (JSC::ModuleProgramExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
+        (JSC::FunctionExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::fromGlobalCode): Deleted.
+        (JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
+        (JSC::WebAssemblyExecutable::destroy): Deleted.
+        (JSC::WebAssemblyExecutable::visitChildren): Deleted.
+        (JSC::ExecutableBase::dump): Deleted.
+        (JSC::ExecutableBase::hashFor): Deleted.
+        (JSC::NativeExecutable::hashFor): Deleted.
+        (JSC::ScriptExecutable::hashFor): Deleted.
+        * runtime/EvalExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
+        (JSC::isCall): Deleted.
+        (JSC::ExecutableBase::ExecutableBase): Deleted.
+        (JSC::ExecutableBase::finishCreation): Deleted.
+        (JSC::ExecutableBase::isEvalExecutable): Deleted.
+        (JSC::ExecutableBase::isFunctionExecutable): Deleted.
+        (JSC::ExecutableBase::isProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isHostFunction): Deleted.
+        (JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
+        (JSC::ExecutableBase::createStructure): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeFor): Deleted.
+        (JSC::ExecutableBase::entrypointFor): Deleted.
+        (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
+        (JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::hasJITCodeFor): Deleted.
+        (JSC::ExecutableBase::intrinsic): Deleted.
+        (JSC::ExecutableBase::intrinsicFor): Deleted.
+        (JSC::ScriptExecutable::source): Deleted.
+        (JSC::ScriptExecutable::sourceID): Deleted.
+        (JSC::ScriptExecutable::sourceURL): Deleted.
+        (JSC::ScriptExecutable::firstLine): Deleted.
+        (JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::overrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::lastLine): Deleted.
+        (JSC::ScriptExecutable::startColumn): Deleted.
+        (JSC::ScriptExecutable::endColumn): Deleted.
+        (JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
+        (JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
+        (JSC::ScriptExecutable::usesEval): Deleted.
+        (JSC::ScriptExecutable::usesArguments): Deleted.
+        (JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
+        (JSC::ScriptExecutable::isStrictMode): Deleted.
+        (JSC::ScriptExecutable::derivedContextType): Deleted.
+        (JSC::ScriptExecutable::evalContextType): Deleted.
+        (JSC::ScriptExecutable::ecmaMode): Deleted.
+        (JSC::ScriptExecutable::setNeverInline): Deleted.
+        (JSC::ScriptExecutable::setNeverOptimize): Deleted.
+        (JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::neverInline): Deleted.
+        (JSC::ScriptExecutable::neverOptimize): Deleted.
+        (JSC::ScriptExecutable::neverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::isInliningCandidate): Deleted.
+        (JSC::ScriptExecutable::isOkToOptimize): Deleted.
+        (JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::features): Deleted.
+        (JSC::ScriptExecutable::recordParse): Deleted.
+        (JSC::ScriptExecutable::finishCreation): Deleted.
+        (JSC::ScriptExecutable::prepareForExecution): Deleted.
+        * runtime/Executable.cpp: Removed.
+        * runtime/Executable.h: Removed.
+        * runtime/ExecutableBase.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
+        (JSC::NativeExecutable::create): Deleted.
+        (JSC::NativeExecutable::destroy): Deleted.
+        (JSC::NativeExecutable::createStructure): Deleted.
+        (JSC::NativeExecutable::finishCreation): Deleted.
+        (JSC::NativeExecutable::NativeExecutable): Deleted.
+        (JSC::ScriptExecutable::ScriptExecutable): Deleted.
+        (JSC::ScriptExecutable::destroy): Deleted.
+        (JSC::ScriptExecutable::installCode): Deleted.
+        (JSC::ScriptExecutable::newCodeBlockFor): Deleted.
+        (JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
+        (JSC::setupLLInt): Deleted.
+        (JSC::setupJIT): Deleted.
+        (JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
+        (JSC::EvalExecutable::create): Deleted.
+        (JSC::EvalExecutable::EvalExecutable): Deleted.
+        (JSC::EvalExecutable::destroy): Deleted.
+        (JSC::ProgramExecutable::ProgramExecutable): Deleted.
+        (JSC::ProgramExecutable::destroy): Deleted.
+        (JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
+        (JSC::ModuleProgramExecutable::create): Deleted.
+        (JSC::ModuleProgramExecutable::destroy): Deleted.
+        (JSC::FunctionExecutable::FunctionExecutable): Deleted.
+        (JSC::FunctionExecutable::finishCreation): Deleted.
+        (JSC::FunctionExecutable::destroy): Deleted.
+        (JSC::samplingDescription): Deleted.
+        (JSC::EvalExecutable::visitChildren): Deleted.
+        (JSC::ProgramExecutable::checkSyntax): Deleted.
+        (JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
+        (JSC::ProgramExecutable::visitChildren): Deleted.
+        (JSC::ModuleProgramExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
+        (JSC::FunctionExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::fromGlobalCode): Deleted.
+        (JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
+        (JSC::WebAssemblyExecutable::destroy): Deleted.
+        (JSC::WebAssemblyExecutable::visitChildren): Deleted.
+        (JSC::NativeExecutable::hashFor): Deleted.
+        (JSC::ScriptExecutable::hashFor): Deleted.
+        * runtime/ExecutableBase.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
+        (JSC::ScriptExecutable::source): Deleted.
+        (JSC::ScriptExecutable::sourceID): Deleted.
+        (JSC::ScriptExecutable::sourceURL): Deleted.
+        (JSC::ScriptExecutable::firstLine): Deleted.
+        (JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::overrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::lastLine): Deleted.
+        (JSC::ScriptExecutable::startColumn): Deleted.
+        (JSC::ScriptExecutable::endColumn): Deleted.
+        (JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
+        (JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
+        (JSC::ScriptExecutable::usesEval): Deleted.
+        (JSC::ScriptExecutable::usesArguments): Deleted.
+        (JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
+        (JSC::ScriptExecutable::isStrictMode): Deleted.
+        (JSC::ScriptExecutable::derivedContextType): Deleted.
+        (JSC::ScriptExecutable::evalContextType): Deleted.
+        (JSC::ScriptExecutable::ecmaMode): Deleted.
+        (JSC::ScriptExecutable::setNeverInline): Deleted.
+        (JSC::ScriptExecutable::setNeverOptimize): Deleted.
+        (JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::neverInline): Deleted.
+        (JSC::ScriptExecutable::neverOptimize): Deleted.
+        (JSC::ScriptExecutable::neverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::isInliningCandidate): Deleted.
+        (JSC::ScriptExecutable::isOkToOptimize): Deleted.
+        (JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::features): Deleted.
+        (JSC::ScriptExecutable::recordParse): Deleted.
+        (JSC::ScriptExecutable::finishCreation): Deleted.
+        (JSC::ScriptExecutable::prepareForExecution): Deleted.
+        * runtime/FunctionExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
+        (JSC::ExecutableBase::destroy): Deleted.
+        (JSC::ExecutableBase::clearCode): Deleted.
+        (JSC::NativeExecutable::create): Deleted.
+        (JSC::NativeExecutable::destroy): Deleted.
+        (JSC::NativeExecutable::createStructure): Deleted.
+        (JSC::NativeExecutable::finishCreation): Deleted.
+        (JSC::NativeExecutable::NativeExecutable): Deleted.
+        (JSC::ScriptExecutable::ScriptExecutable): Deleted.
+        (JSC::ScriptExecutable::destroy): Deleted.
+        (JSC::ScriptExecutable::installCode): Deleted.
+        (JSC::ScriptExecutable::newCodeBlockFor): Deleted.
+        (JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
+        (JSC::setupLLInt): Deleted.
+        (JSC::setupJIT): Deleted.
+        (JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
+        (JSC::EvalExecutable::create): Deleted.
+        (JSC::EvalExecutable::EvalExecutable): Deleted.
+        (JSC::EvalExecutable::destroy): Deleted.
+        (JSC::ProgramExecutable::ProgramExecutable): Deleted.
+        (JSC::ProgramExecutable::destroy): Deleted.
+        (JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
+        (JSC::ModuleProgramExecutable::create): Deleted.
+        (JSC::ModuleProgramExecutable::destroy): Deleted.
+        (JSC::samplingDescription): Deleted.
+        (JSC::EvalExecutable::visitChildren): Deleted.
+        (JSC::ProgramExecutable::checkSyntax): Deleted.
+        (JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
+        (JSC::ProgramExecutable::visitChildren): Deleted.
+        (JSC::ModuleProgramExecutable::visitChildren): Deleted.
+        (JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
+        (JSC::WebAssemblyExecutable::destroy): Deleted.
+        (JSC::WebAssemblyExecutable::visitChildren): Deleted.
+        (JSC::ExecutableBase::dump): Deleted.
+        (JSC::ExecutableBase::hashFor): Deleted.
+        (JSC::NativeExecutable::hashFor): Deleted.
+        (JSC::ScriptExecutable::hashFor): Deleted.
+        * runtime/FunctionExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
+        (JSC::isCall): Deleted.
+        (JSC::ExecutableBase::ExecutableBase): Deleted.
+        (JSC::ExecutableBase::finishCreation): Deleted.
+        (JSC::ExecutableBase::isEvalExecutable): Deleted.
+        (JSC::ExecutableBase::isFunctionExecutable): Deleted.
+        (JSC::ExecutableBase::isProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isHostFunction): Deleted.
+        (JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
+        (JSC::ExecutableBase::createStructure): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeFor): Deleted.
+        (JSC::ExecutableBase::entrypointFor): Deleted.
+        (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
+        (JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::hasJITCodeFor): Deleted.
+        (JSC::ExecutableBase::intrinsic): Deleted.
+        (JSC::ExecutableBase::intrinsicFor): Deleted.
+        (JSC::ScriptExecutable::source): Deleted.
+        (JSC::ScriptExecutable::sourceID): Deleted.
+        (JSC::ScriptExecutable::sourceURL): Deleted.
+        (JSC::ScriptExecutable::firstLine): Deleted.
+        (JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::overrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::lastLine): Deleted.
+        (JSC::ScriptExecutable::startColumn): Deleted.
+        (JSC::ScriptExecutable::endColumn): Deleted.
+        (JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
+        (JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
+        (JSC::ScriptExecutable::usesEval): Deleted.
+        (JSC::ScriptExecutable::usesArguments): Deleted.
+        (JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
+        (JSC::ScriptExecutable::isStrictMode): Deleted.
+        (JSC::ScriptExecutable::derivedContextType): Deleted.
+        (JSC::ScriptExecutable::evalContextType): Deleted.
+        (JSC::ScriptExecutable::ecmaMode): Deleted.
+        (JSC::ScriptExecutable::setNeverInline): Deleted.
+        (JSC::ScriptExecutable::setNeverOptimize): Deleted.
+        (JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::neverInline): Deleted.
+        (JSC::ScriptExecutable::neverOptimize): Deleted.
+        (JSC::ScriptExecutable::neverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::isInliningCandidate): Deleted.
+        (JSC::ScriptExecutable::isOkToOptimize): Deleted.
+        (JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::features): Deleted.
+        (JSC::ScriptExecutable::recordParse): Deleted.
+        (JSC::ScriptExecutable::finishCreation): Deleted.
+        (JSC::ScriptExecutable::prepareForExecution): Deleted.
+        * runtime/FunctionExecutableDump.h:
+        * runtime/JSArray.cpp:
+        * runtime/JSFunctionInlines.h:
+        * runtime/JSModuleRecord.cpp:
+        * runtime/JSObject.cpp:
+        * runtime/Lookup.cpp:
+        * runtime/ModuleProgramExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
+        (JSC::ExecutableBase::destroy): Deleted.
+        (JSC::ExecutableBase::clearCode): Deleted.
+        (JSC::NativeExecutable::create): Deleted.
+        (JSC::NativeExecutable::destroy): Deleted.
+        (JSC::NativeExecutable::createStructure): Deleted.
+        (JSC::NativeExecutable::finishCreation): Deleted.
+        (JSC::NativeExecutable::NativeExecutable): Deleted.
+        (JSC::ScriptExecutable::ScriptExecutable): Deleted.
+        (JSC::ScriptExecutable::destroy): Deleted.
+        (JSC::ScriptExecutable::installCode): Deleted.
+        (JSC::ScriptExecutable::newCodeBlockFor): Deleted.
+        (JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
+        (JSC::setupLLInt): Deleted.
+        (JSC::setupJIT): Deleted.
+        (JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
+        (JSC::EvalExecutable::create): Deleted.
+        (JSC::EvalExecutable::EvalExecutable): Deleted.
+        (JSC::EvalExecutable::destroy): Deleted.
+        (JSC::ProgramExecutable::ProgramExecutable): Deleted.
+        (JSC::ProgramExecutable::destroy): Deleted.
+        (JSC::FunctionExecutable::FunctionExecutable): Deleted.
+        (JSC::FunctionExecutable::finishCreation): Deleted.
+        (JSC::FunctionExecutable::destroy): Deleted.
+        (JSC::samplingDescription): Deleted.
+        (JSC::EvalExecutable::visitChildren): Deleted.
+        (JSC::ProgramExecutable::checkSyntax): Deleted.
+        (JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
+        (JSC::ProgramExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
+        (JSC::FunctionExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::fromGlobalCode): Deleted.
+        (JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
+        (JSC::WebAssemblyExecutable::destroy): Deleted.
+        (JSC::WebAssemblyExecutable::visitChildren): Deleted.
+        (JSC::ExecutableBase::dump): Deleted.
+        (JSC::ExecutableBase::hashFor): Deleted.
+        (JSC::NativeExecutable::hashFor): Deleted.
+        (JSC::ScriptExecutable::hashFor): Deleted.
+        * runtime/ModuleProgramExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
+        (JSC::isCall): Deleted.
+        (JSC::ExecutableBase::ExecutableBase): Deleted.
+        (JSC::ExecutableBase::finishCreation): Deleted.
+        (JSC::ExecutableBase::isEvalExecutable): Deleted.
+        (JSC::ExecutableBase::isFunctionExecutable): Deleted.
+        (JSC::ExecutableBase::isProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isHostFunction): Deleted.
+        (JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
+        (JSC::ExecutableBase::createStructure): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeFor): Deleted.
+        (JSC::ExecutableBase::entrypointFor): Deleted.
+        (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
+        (JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::hasJITCodeFor): Deleted.
+        (JSC::ExecutableBase::intrinsic): Deleted.
+        (JSC::ExecutableBase::intrinsicFor): Deleted.
+        (JSC::ScriptExecutable::source): Deleted.
+        (JSC::ScriptExecutable::sourceID): Deleted.
+        (JSC::ScriptExecutable::sourceURL): Deleted.
+        (JSC::ScriptExecutable::firstLine): Deleted.
+        (JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::overrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::lastLine): Deleted.
+        (JSC::ScriptExecutable::startColumn): Deleted.
+        (JSC::ScriptExecutable::endColumn): Deleted.
+        (JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
+        (JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
+        (JSC::ScriptExecutable::usesEval): Deleted.
+        (JSC::ScriptExecutable::usesArguments): Deleted.
+        (JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
+        (JSC::ScriptExecutable::isStrictMode): Deleted.
+        (JSC::ScriptExecutable::derivedContextType): Deleted.
+        (JSC::ScriptExecutable::evalContextType): Deleted.
+        (JSC::ScriptExecutable::ecmaMode): Deleted.
+        (JSC::ScriptExecutable::setNeverInline): Deleted.
+        (JSC::ScriptExecutable::setNeverOptimize): Deleted.
+        (JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::neverInline): Deleted.
+        (JSC::ScriptExecutable::neverOptimize): Deleted.
+        (JSC::ScriptExecutable::neverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::isInliningCandidate): Deleted.
+        (JSC::ScriptExecutable::isOkToOptimize): Deleted.
+        (JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::features): Deleted.
+        (JSC::ScriptExecutable::recordParse): Deleted.
+        (JSC::ScriptExecutable::finishCreation): Deleted.
+        (JSC::ScriptExecutable::prepareForExecution): Deleted.
+        * runtime/NativeExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
+        (JSC::ExecutableBase::destroy): Deleted.
+        (JSC::ExecutableBase::clearCode): Deleted.
+        (JSC::ScriptExecutable::ScriptExecutable): Deleted.
+        (JSC::ScriptExecutable::destroy): Deleted.
+        (JSC::ScriptExecutable::installCode): Deleted.
+        (JSC::ScriptExecutable::newCodeBlockFor): Deleted.
+        (JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
+        (JSC::setupLLInt): Deleted.
+        (JSC::setupJIT): Deleted.
+        (JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
+        (JSC::EvalExecutable::create): Deleted.
+        (JSC::EvalExecutable::EvalExecutable): Deleted.
+        (JSC::EvalExecutable::destroy): Deleted.
+        (JSC::ProgramExecutable::ProgramExecutable): Deleted.
+        (JSC::ProgramExecutable::destroy): Deleted.
+        (JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
+        (JSC::ModuleProgramExecutable::create): Deleted.
+        (JSC::ModuleProgramExecutable::destroy): Deleted.
+        (JSC::FunctionExecutable::FunctionExecutable): Deleted.
+        (JSC::FunctionExecutable::finishCreation): Deleted.
+        (JSC::FunctionExecutable::destroy): Deleted.
+        (JSC::samplingDescription): Deleted.
+        (JSC::EvalExecutable::visitChildren): Deleted.
+        (JSC::ProgramExecutable::checkSyntax): Deleted.
+        (JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
+        (JSC::ProgramExecutable::visitChildren): Deleted.
+        (JSC::ModuleProgramExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
+        (JSC::FunctionExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::fromGlobalCode): Deleted.
+        (JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
+        (JSC::WebAssemblyExecutable::destroy): Deleted.
+        (JSC::WebAssemblyExecutable::visitChildren): Deleted.
+        (JSC::ExecutableBase::dump): Deleted.
+        (JSC::ExecutableBase::hashFor): Deleted.
+        (JSC::ScriptExecutable::hashFor): Deleted.
+        * runtime/NativeExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
+        (JSC::isCall): Deleted.
+        (JSC::ExecutableBase::ExecutableBase): Deleted.
+        (JSC::ExecutableBase::finishCreation): Deleted.
+        (JSC::ExecutableBase::isEvalExecutable): Deleted.
+        (JSC::ExecutableBase::isFunctionExecutable): Deleted.
+        (JSC::ExecutableBase::isProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isHostFunction): Deleted.
+        (JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
+        (JSC::ExecutableBase::createStructure): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeFor): Deleted.
+        (JSC::ExecutableBase::entrypointFor): Deleted.
+        (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
+        (JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::hasJITCodeFor): Deleted.
+        (JSC::ExecutableBase::intrinsic): Deleted.
+        (JSC::ExecutableBase::intrinsicFor): Deleted.
+        (JSC::ScriptExecutable::source): Deleted.
+        (JSC::ScriptExecutable::sourceID): Deleted.
+        (JSC::ScriptExecutable::sourceURL): Deleted.
+        (JSC::ScriptExecutable::firstLine): Deleted.
+        (JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::overrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::lastLine): Deleted.
+        (JSC::ScriptExecutable::startColumn): Deleted.
+        (JSC::ScriptExecutable::endColumn): Deleted.
+        (JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
+        (JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
+        (JSC::ScriptExecutable::usesEval): Deleted.
+        (JSC::ScriptExecutable::usesArguments): Deleted.
+        (JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
+        (JSC::ScriptExecutable::isStrictMode): Deleted.
+        (JSC::ScriptExecutable::derivedContextType): Deleted.
+        (JSC::ScriptExecutable::evalContextType): Deleted.
+        (JSC::ScriptExecutable::ecmaMode): Deleted.
+        (JSC::ScriptExecutable::setNeverInline): Deleted.
+        (JSC::ScriptExecutable::setNeverOptimize): Deleted.
+        (JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::neverInline): Deleted.
+        (JSC::ScriptExecutable::neverOptimize): Deleted.
+        (JSC::ScriptExecutable::neverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::isInliningCandidate): Deleted.
+        (JSC::ScriptExecutable::isOkToOptimize): Deleted.
+        (JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::features): Deleted.
+        (JSC::ScriptExecutable::recordParse): Deleted.
+        (JSC::ScriptExecutable::finishCreation): Deleted.
+        (JSC::ScriptExecutable::prepareForExecution): Deleted.
+        * runtime/ProgramExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
+        (JSC::ExecutableBase::destroy): Deleted.
+        (JSC::ExecutableBase::clearCode): Deleted.
+        (JSC::NativeExecutable::create): Deleted.
+        (JSC::NativeExecutable::destroy): Deleted.
+        (JSC::NativeExecutable::createStructure): Deleted.
+        (JSC::NativeExecutable::finishCreation): Deleted.
+        (JSC::NativeExecutable::NativeExecutable): Deleted.
+        (JSC::ScriptExecutable::ScriptExecutable): Deleted.
+        (JSC::ScriptExecutable::destroy): Deleted.
+        (JSC::ScriptExecutable::installCode): Deleted.
+        (JSC::ScriptExecutable::newCodeBlockFor): Deleted.
+        (JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
+        (JSC::setupLLInt): Deleted.
+        (JSC::setupJIT): Deleted.
+        (JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
+        (JSC::EvalExecutable::create): Deleted.
+        (JSC::EvalExecutable::EvalExecutable): Deleted.
+        (JSC::EvalExecutable::destroy): Deleted.
+        (JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
+        (JSC::ModuleProgramExecutable::create): Deleted.
+        (JSC::ModuleProgramExecutable::destroy): Deleted.
+        (JSC::FunctionExecutable::FunctionExecutable): Deleted.
+        (JSC::FunctionExecutable::finishCreation): Deleted.
+        (JSC::FunctionExecutable::destroy): Deleted.
+        (JSC::samplingDescription): Deleted.
+        (JSC::EvalExecutable::visitChildren): Deleted.
+        (JSC::ModuleProgramExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
+        (JSC::FunctionExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::fromGlobalCode): Deleted.
+        (JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
+        (JSC::WebAssemblyExecutable::destroy): Deleted.
+        (JSC::WebAssemblyExecutable::visitChildren): Deleted.
+        (JSC::ExecutableBase::dump): Deleted.
+        (JSC::ExecutableBase::hashFor): Deleted.
+        (JSC::NativeExecutable::hashFor): Deleted.
+        (JSC::ScriptExecutable::hashFor): Deleted.
+        * runtime/ProgramExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
+        (JSC::isCall): Deleted.
+        (JSC::ExecutableBase::ExecutableBase): Deleted.
+        (JSC::ExecutableBase::finishCreation): Deleted.
+        (JSC::ExecutableBase::isEvalExecutable): Deleted.
+        (JSC::ExecutableBase::isFunctionExecutable): Deleted.
+        (JSC::ExecutableBase::isProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isHostFunction): Deleted.
+        (JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
+        (JSC::ExecutableBase::createStructure): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeFor): Deleted.
+        (JSC::ExecutableBase::entrypointFor): Deleted.
+        (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
+        (JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::hasJITCodeFor): Deleted.
+        (JSC::ExecutableBase::intrinsic): Deleted.
+        (JSC::ExecutableBase::intrinsicFor): Deleted.
+        (JSC::ScriptExecutable::source): Deleted.
+        (JSC::ScriptExecutable::sourceID): Deleted.
+        (JSC::ScriptExecutable::sourceURL): Deleted.
+        (JSC::ScriptExecutable::firstLine): Deleted.
+        (JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::overrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::lastLine): Deleted.
+        (JSC::ScriptExecutable::startColumn): Deleted.
+        (JSC::ScriptExecutable::endColumn): Deleted.
+        (JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
+        (JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
+        (JSC::ScriptExecutable::usesEval): Deleted.
+        (JSC::ScriptExecutable::usesArguments): Deleted.
+        (JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
+        (JSC::ScriptExecutable::isStrictMode): Deleted.
+        (JSC::ScriptExecutable::derivedContextType): Deleted.
+        (JSC::ScriptExecutable::evalContextType): Deleted.
+        (JSC::ScriptExecutable::ecmaMode): Deleted.
+        (JSC::ScriptExecutable::setNeverInline): Deleted.
+        (JSC::ScriptExecutable::setNeverOptimize): Deleted.
+        (JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::neverInline): Deleted.
+        (JSC::ScriptExecutable::neverOptimize): Deleted.
+        (JSC::ScriptExecutable::neverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::isInliningCandidate): Deleted.
+        (JSC::ScriptExecutable::isOkToOptimize): Deleted.
+        (JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::features): Deleted.
+        (JSC::ScriptExecutable::recordParse): Deleted.
+        (JSC::ScriptExecutable::finishCreation): Deleted.
+        (JSC::ScriptExecutable::prepareForExecution): Deleted.
+        * runtime/SamplingProfiler.cpp:
+        * runtime/ScriptExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
+        (JSC::ExecutableBase::destroy): Deleted.
+        (JSC::ExecutableBase::clearCode): Deleted.
+        (JSC::NativeExecutable::create): Deleted.
+        (JSC::NativeExecutable::destroy): Deleted.
+        (JSC::NativeExecutable::createStructure): Deleted.
+        (JSC::NativeExecutable::finishCreation): Deleted.
+        (JSC::NativeExecutable::NativeExecutable): Deleted.
+        (JSC::EvalExecutable::create): Deleted.
+        (JSC::EvalExecutable::EvalExecutable): Deleted.
+        (JSC::EvalExecutable::destroy): Deleted.
+        (JSC::ProgramExecutable::ProgramExecutable): Deleted.
+        (JSC::ProgramExecutable::destroy): Deleted.
+        (JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
+        (JSC::ModuleProgramExecutable::create): Deleted.
+        (JSC::ModuleProgramExecutable::destroy): Deleted.
+        (JSC::FunctionExecutable::FunctionExecutable): Deleted.
+        (JSC::FunctionExecutable::finishCreation): Deleted.
+        (JSC::FunctionExecutable::destroy): Deleted.
+        (JSC::samplingDescription): Deleted.
+        (JSC::EvalExecutable::visitChildren): Deleted.
+        (JSC::ProgramExecutable::checkSyntax): Deleted.
+        (JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
+        (JSC::ProgramExecutable::visitChildren): Deleted.
+        (JSC::ModuleProgramExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
+        (JSC::FunctionExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::fromGlobalCode): Deleted.
+        (JSC::WebAssemblyExecutable::WebAssemblyExecutable): Deleted.
+        (JSC::WebAssemblyExecutable::destroy): Deleted.
+        (JSC::WebAssemblyExecutable::visitChildren): Deleted.
+        (JSC::ExecutableBase::dump): Deleted.
+        (JSC::ExecutableBase::hashFor): Deleted.
+        (JSC::NativeExecutable::hashFor): Deleted.
+        * runtime/ScriptExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
+        (): Deleted.
+        (JSC::isCall): Deleted.
+        (JSC::ExecutableBase::ExecutableBase): Deleted.
+        (JSC::ExecutableBase::finishCreation): Deleted.
+        (JSC::ExecutableBase::isEvalExecutable): Deleted.
+        (JSC::ExecutableBase::isFunctionExecutable): Deleted.
+        (JSC::ExecutableBase::isProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isHostFunction): Deleted.
+        (JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
+        (JSC::ExecutableBase::createStructure): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeFor): Deleted.
+        (JSC::ExecutableBase::entrypointFor): Deleted.
+        (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
+        (JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::hasJITCodeFor): Deleted.
+        (JSC::ExecutableBase::intrinsic): Deleted.
+        (JSC::ExecutableBase::intrinsicFor): Deleted.
+        (JSC::ScriptExecutable::prepareForExecution): Deleted.
+        * runtime/StringConstructor.cpp:
+        * runtime/StringPrototype.cpp:
+        * runtime/WebAssemblyExecutable.cpp: Copied from Source/JavaScriptCore/runtime/Executable.cpp.
+        (JSC::ExecutableBase::destroy): Deleted.
+        (JSC::ExecutableBase::clearCode): Deleted.
+        (JSC::NativeExecutable::create): Deleted.
+        (JSC::NativeExecutable::destroy): Deleted.
+        (JSC::NativeExecutable::createStructure): Deleted.
+        (JSC::NativeExecutable::finishCreation): Deleted.
+        (JSC::NativeExecutable::NativeExecutable): Deleted.
+        (JSC::ScriptExecutable::ScriptExecutable): Deleted.
+        (JSC::ScriptExecutable::destroy): Deleted.
+        (JSC::ScriptExecutable::installCode): Deleted.
+        (JSC::ScriptExecutable::newCodeBlockFor): Deleted.
+        (JSC::ScriptExecutable::newReplacementCodeBlockFor): Deleted.
+        (JSC::setupLLInt): Deleted.
+        (JSC::setupJIT): Deleted.
+        (JSC::ScriptExecutable::prepareForExecutionImpl): Deleted.
+        (JSC::EvalExecutable::create): Deleted.
+        (JSC::EvalExecutable::EvalExecutable): Deleted.
+        (JSC::EvalExecutable::destroy): Deleted.
+        (JSC::ProgramExecutable::ProgramExecutable): Deleted.
+        (JSC::ProgramExecutable::destroy): Deleted.
+        (JSC::ModuleProgramExecutable::ModuleProgramExecutable): Deleted.
+        (JSC::ModuleProgramExecutable::create): Deleted.
+        (JSC::ModuleProgramExecutable::destroy): Deleted.
+        (JSC::FunctionExecutable::FunctionExecutable): Deleted.
+        (JSC::FunctionExecutable::finishCreation): Deleted.
+        (JSC::FunctionExecutable::destroy): Deleted.
+        (JSC::samplingDescription): Deleted.
+        (JSC::EvalExecutable::visitChildren): Deleted.
+        (JSC::ProgramExecutable::checkSyntax): Deleted.
+        (JSC::ProgramExecutable::initializeGlobalProperties): Deleted.
+        (JSC::ProgramExecutable::visitChildren): Deleted.
+        (JSC::ModuleProgramExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::baselineCodeBlockFor): Deleted.
+        (JSC::FunctionExecutable::visitChildren): Deleted.
+        (JSC::FunctionExecutable::fromGlobalCode): Deleted.
+        (JSC::ExecutableBase::dump): Deleted.
+        (JSC::ExecutableBase::hashFor): Deleted.
+        (JSC::NativeExecutable::hashFor): Deleted.
+        (JSC::ScriptExecutable::hashFor): Deleted.
+        * runtime/WebAssemblyExecutable.h: Copied from Source/JavaScriptCore/runtime/Executable.h.
+        (JSC::isCall): Deleted.
+        (JSC::ExecutableBase::ExecutableBase): Deleted.
+        (JSC::ExecutableBase::finishCreation): Deleted.
+        (JSC::ExecutableBase::isEvalExecutable): Deleted.
+        (JSC::ExecutableBase::isFunctionExecutable): Deleted.
+        (JSC::ExecutableBase::isProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isModuleProgramExecutable): Deleted.
+        (JSC::ExecutableBase::isHostFunction): Deleted.
+        (JSC::ExecutableBase::isWebAssemblyExecutable): Deleted.
+        (JSC::ExecutableBase::createStructure): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::generatedJITCodeFor): Deleted.
+        (JSC::ExecutableBase::entrypointFor): Deleted.
+        (JSC::ExecutableBase::offsetOfJITCodeWithArityCheckFor): Deleted.
+        (JSC::ExecutableBase::offsetOfNumParametersFor): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForCall): Deleted.
+        (JSC::ExecutableBase::hasJITCodeForConstruct): Deleted.
+        (JSC::ExecutableBase::hasJITCodeFor): Deleted.
+        (JSC::ExecutableBase::intrinsic): Deleted.
+        (JSC::ExecutableBase::intrinsicFor): Deleted.
+        (JSC::ScriptExecutable::source): Deleted.
+        (JSC::ScriptExecutable::sourceID): Deleted.
+        (JSC::ScriptExecutable::sourceURL): Deleted.
+        (JSC::ScriptExecutable::firstLine): Deleted.
+        (JSC::ScriptExecutable::setOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::hasOverrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::overrideLineNumber): Deleted.
+        (JSC::ScriptExecutable::lastLine): Deleted.
+        (JSC::ScriptExecutable::startColumn): Deleted.
+        (JSC::ScriptExecutable::endColumn): Deleted.
+        (JSC::ScriptExecutable::typeProfilingStartOffset): Deleted.
+        (JSC::ScriptExecutable::typeProfilingEndOffset): Deleted.
+        (JSC::ScriptExecutable::usesEval): Deleted.
+        (JSC::ScriptExecutable::usesArguments): Deleted.
+        (JSC::ScriptExecutable::isArrowFunctionContext): Deleted.
+        (JSC::ScriptExecutable::isStrictMode): Deleted.
+        (JSC::ScriptExecutable::derivedContextType): Deleted.
+        (JSC::ScriptExecutable::evalContextType): Deleted.
+        (JSC::ScriptExecutable::ecmaMode): Deleted.
+        (JSC::ScriptExecutable::setNeverInline): Deleted.
+        (JSC::ScriptExecutable::setNeverOptimize): Deleted.
+        (JSC::ScriptExecutable::setNeverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::setDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::setCanUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::neverInline): Deleted.
+        (JSC::ScriptExecutable::neverOptimize): Deleted.
+        (JSC::ScriptExecutable::neverFTLOptimize): Deleted.
+        (JSC::ScriptExecutable::didTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::isInliningCandidate): Deleted.
+        (JSC::ScriptExecutable::isOkToOptimize): Deleted.
+        (JSC::ScriptExecutable::canUseOSRExitFuzzing): Deleted.
+        (JSC::ScriptExecutable::addressOfDidTryToEnterInLoop): Deleted.
+        (JSC::ScriptExecutable::features): Deleted.
+        (JSC::ScriptExecutable::recordParse): Deleted.
+        (JSC::ScriptExecutable::finishCreation): Deleted.
+        (JSC::ScriptExecutable::prepareForExecution): Deleted.
+
</ins><span class="cx"> 2016-10-20  Caitlin Potter  &lt;caitp@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [JSC] implement runtime for async functions
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreJavaScriptCorexcodeprojprojectpbxproj"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -1074,6 +1074,22 @@
</span><span class="cx">                 146AAB380B66A94400E55F16 /* JSStringRefCF.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146AAB370B66A94400E55F16 /* JSStringRefCF.cpp */; };
</span><span class="cx">                 146B16D812EB5B59001BEC1B /* ConservativeRoots.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146B14DB12EB5B12001BEC1B /* ConservativeRoots.cpp */; };
</span><span class="cx">                 146FE51211A710430087AE66 /* JITCall32_64.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 146FE51111A710430087AE66 /* JITCall32_64.cpp */; };
</span><ins>+                147341CC1DC02D7200AA29BA /* ExecutableBase.h in Headers */ = {isa = PBXBuildFile; fileRef = 147341CB1DC02D7200AA29BA /* ExecutableBase.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                147341CE1DC02D7900AA29BA /* ScriptExecutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 147341CD1DC02D7900AA29BA /* ScriptExecutable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                147341D01DC02DB400AA29BA /* NativeExecutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 147341CF1DC02DB400AA29BA /* NativeExecutable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                147341D21DC02E2E00AA29BA /* EvalExecutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 147341D11DC02E2E00AA29BA /* EvalExecutable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                147341D41DC02E6D00AA29BA /* ProgramExecutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 147341D31DC02E6D00AA29BA /* ProgramExecutable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                147341D61DC02EB900AA29BA /* ModuleProgramExecutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 147341D51DC02EB900AA29BA /* ModuleProgramExecutable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                147341D81DC02F9900AA29BA /* FunctionExecutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 147341D71DC02F9900AA29BA /* FunctionExecutable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                147341DA1DC0300100AA29BA /* WebAssemblyExecutable.h in Headers */ = {isa = PBXBuildFile; fileRef = 147341D91DC0300100AA29BA /* WebAssemblyExecutable.h */; settings = {ATTRIBUTES = (Private, ); }; };
+                147341E21DC2CE9600AA29BA /* EvalExecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 147341DB1DC2CE9600AA29BA /* EvalExecutable.cpp */; };
+                147341E31DC2CE9600AA29BA /* FunctionExecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 147341DC1DC2CE9600AA29BA /* FunctionExecutable.cpp */; };
+                147341E41DC2CE9600AA29BA /* ModuleProgramExecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 147341DD1DC2CE9600AA29BA /* ModuleProgramExecutable.cpp */; };
+                147341E51DC2CE9600AA29BA /* NativeExecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 147341DE1DC2CE9600AA29BA /* NativeExecutable.cpp */; };
+                147341E61DC2CE9600AA29BA /* ProgramExecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 147341DF1DC2CE9600AA29BA /* ProgramExecutable.cpp */; };
+                147341E71DC2CE9600AA29BA /* ScriptExecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 147341E01DC2CE9600AA29BA /* ScriptExecutable.cpp */; };
+                147341E81DC2CE9600AA29BA /* WebAssemblyExecutable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 147341E11DC2CE9600AA29BA /* WebAssemblyExecutable.cpp */; };
+                147341EA1DC2CF2500AA29BA /* ExecutableBase.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 147341E91DC2CF2500AA29BA /* ExecutableBase.cpp */; };
</ins><span class="cx">                 1474C33B16AA2D950062F01D /* PrototypeMap.h in Headers */ = {isa = PBXBuildFile; fileRef = 14D844A316AA2C7000A65AF0 /* PrototypeMap.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 1474C33C16AA2D9B0062F01D /* PrototypeMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 14D844A216AA2C7000A65AF0 /* PrototypeMap.cpp */; };
</span><span class="cx">                 1478297B1379E8A800A7C2A3 /* HandleTypes.h in Headers */ = {isa = PBXBuildFile; fileRef = 146FA5A81378F6B0003627A3 /* HandleTypes.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="lines">@@ -1426,8 +1442,6 @@
</span><span class="cx">                 86C568E011A213EE0007F7F0 /* MacroAssemblerARM.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86C568DD11A213EE0007F7F0 /* MacroAssemblerARM.cpp */; };
</span><span class="cx">                 86C568E111A213EE0007F7F0 /* MacroAssemblerMIPS.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C568DE11A213EE0007F7F0 /* MacroAssemblerMIPS.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><span class="cx">                 86C568E211A213EE0007F7F0 /* MIPSAssembler.h in Headers */ = {isa = PBXBuildFile; fileRef = 86C568DF11A213EE0007F7F0 /* MIPSAssembler.h */; settings = {ATTRIBUTES = (Private, ); }; };
</span><del>-                86CA032E1038E8440028A609 /* Executable.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CA032D1038E8440028A609 /* Executable.cpp */; };
-                86CAFEE31035DDE60028A609 /* Executable.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CAFEE21035DDE60028A609 /* Executable.h */; settings = {ATTRIBUTES = (Private, ); }; };
</del><span class="cx">                 86CC85A10EE79A4700288682 /* JITInlines.h in Headers */ = {isa = PBXBuildFile; fileRef = 86CC85A00EE79A4700288682 /* JITInlines.h */; };
</span><span class="cx">                 86CC85A30EE79B7400288682 /* JITCall.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CC85A20EE79B7400288682 /* JITCall.cpp */; };
</span><span class="cx">                 86CC85C40EE7A89400288682 /* JITPropertyAccess.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */; };
</span><span class="lines">@@ -3385,6 +3399,22 @@
</span><span class="cx">                 146B14DB12EB5B12001BEC1B /* ConservativeRoots.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ConservativeRoots.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 146FA5A81378F6B0003627A3 /* HandleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandleTypes.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 146FE51111A710430087AE66 /* JITCall32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall32_64.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><ins>+                147341CB1DC02D7200AA29BA /* ExecutableBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExecutableBase.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341CD1DC02D7900AA29BA /* ScriptExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptExecutable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341CF1DC02DB400AA29BA /* NativeExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NativeExecutable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341D11DC02E2E00AA29BA /* EvalExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EvalExecutable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341D31DC02E6D00AA29BA /* ProgramExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgramExecutable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341D51DC02EB900AA29BA /* ModuleProgramExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModuleProgramExecutable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341D71DC02F9900AA29BA /* FunctionExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionExecutable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341D91DC0300100AA29BA /* WebAssemblyExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAssemblyExecutable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341DB1DC2CE9600AA29BA /* EvalExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EvalExecutable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341DC1DC2CE9600AA29BA /* FunctionExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionExecutable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341DD1DC2CE9600AA29BA /* ModuleProgramExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModuleProgramExecutable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341DE1DC2CE9600AA29BA /* NativeExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NativeExecutable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341DF1DC2CE9600AA29BA /* ProgramExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProgramExecutable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341E01DC2CE9600AA29BA /* ScriptExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptExecutable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341E11DC2CE9600AA29BA /* WebAssemblyExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebAssemblyExecutable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
+                147341E91DC2CF2500AA29BA /* ExecutableBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutableBase.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</ins><span class="cx">                 147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BatchedTransitionOptimizer.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 147B84620E6DE6B1004775A4 /* PutPropertySlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PutPropertySlot.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 1480DB9B0DDC227F003CFDF2 /* DebuggerCallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebuggerCallFrame.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -3801,8 +3831,6 @@
</span><span class="cx">                 86C568DD11A213EE0007F7F0 /* MacroAssemblerARM.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MacroAssemblerARM.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 86C568DE11A213EE0007F7F0 /* MacroAssemblerMIPS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerMIPS.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 86C568DF11A213EE0007F7F0 /* MIPSAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MIPSAssembler.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><del>-                86CA032D1038E8440028A609 /* Executable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Executable.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
-                86CAFEE21035DDE60028A609 /* Executable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Executable.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</del><span class="cx">                 86CC85A00EE79A4700288682 /* JITInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITInlines.h; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 86CC85A20EE79B7400288682 /* JITCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="cx">                 86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITPropertyAccess.cpp; sourceTree = &quot;&lt;group&gt;&quot;; };
</span><span class="lines">@@ -6004,6 +6032,7 @@
</span><span class="cx">                                 14A1563010966365006FA260 /* DateInstanceCache.h */,
</span><span class="cx">                                 BCD203470E17135E002C7E82 /* DatePrototype.cpp */,
</span><span class="cx">                                 BCD203480E17135E002C7E82 /* DatePrototype.h */,
</span><ins>+                                169948EDE68D4054B01EF797 /* DefinePropertyAttributes.h */,
</ins><span class="cx">                                 0FE0500F1AA9091100D33B33 /* DirectArguments.cpp */,
</span><span class="cx">                                 0FE050101AA9091100D33B33 /* DirectArguments.h */,
</span><span class="cx">                                 0FE0500D1AA9091100D33B33 /* DirectArgumentsOffset.cpp */,
</span><span class="lines">@@ -6023,6 +6052,8 @@
</span><span class="cx">                                 BC02E98B0E183E38000F9297 /* ErrorInstance.h */,
</span><span class="cx">                                 BC02E9060E1839DB000F9297 /* ErrorPrototype.cpp */,
</span><span class="cx">                                 BC02E9070E1839DB000F9297 /* ErrorPrototype.h */,
</span><ins>+                                147341DB1DC2CE9600AA29BA /* EvalExecutable.cpp */,
+                                147341D11DC02E2E00AA29BA /* EvalExecutable.h */,
</ins><span class="cx">                                 FE1C0FFE1B194FD100B53FCA /* Exception.cpp */,
</span><span class="cx">                                 FE1C0FFC1B193E9800B53FCA /* Exception.h */,
</span><span class="cx">                                 FE80C19A1D7768FD008510C0 /* ExceptionEventLocation.cpp */,
</span><span class="lines">@@ -6033,12 +6064,14 @@
</span><span class="cx">                                 A72701B30DADE94900E548D7 /* ExceptionHelpers.h */,
</span><span class="cx">                                 FE6491381D78F3A300A694D4 /* ExceptionScope.cpp */,
</span><span class="cx">                                 FE6491361D78F01300A694D4 /* ExceptionScope.h */,
</span><del>-                                86CA032D1038E8440028A609 /* Executable.cpp */,
-                                86CAFEE21035DDE60028A609 /* Executable.h */,
</del><ins>+                                147341E91DC2CF2500AA29BA /* ExecutableBase.cpp */,
+                                147341CB1DC02D7200AA29BA /* ExecutableBase.h */,
</ins><span class="cx">                                 A7A8AF2917ADB5F3005AB174 /* Float32Array.h */,
</span><span class="cx">                                 A7A8AF2A17ADB5F3005AB174 /* Float64Array.h */,
</span><span class="cx">                                 BC2680C00E16D4E900A06E92 /* FunctionConstructor.cpp */,
</span><span class="cx">                                 BC2680C10E16D4E900A06E92 /* FunctionConstructor.h */,
</span><ins>+                                147341DC1DC2CE9600AA29BA /* FunctionExecutable.cpp */,
+                                147341D71DC02F9900AA29BA /* FunctionExecutable.h */,
</ins><span class="cx">                                 0FB4B52116B6278D003F696B /* FunctionExecutableDump.cpp */,
</span><span class="cx">                                 0FB4B52216B6278D003F696B /* FunctionExecutableDump.h */,
</span><span class="cx">                                 52B310FC1974AE870080857C /* FunctionHasExecutedCache.cpp */,
</span><span class="lines">@@ -6295,10 +6328,14 @@
</span><span class="cx">                                 7C008CE5187631B600955C24 /* Microtask.h */,
</span><span class="cx">                                 E355F3501B7DC85300C50DC5 /* ModuleLoaderPrototype.cpp */,
</span><span class="cx">                                 E355F3511B7DC85300C50DC5 /* ModuleLoaderPrototype.h */,
</span><ins>+                                147341DD1DC2CE9600AA29BA /* ModuleProgramExecutable.cpp */,
+                                147341D51DC02EB900AA29BA /* ModuleProgramExecutable.h */,
</ins><span class="cx">                                 BC02E9080E1839DB000F9297 /* NativeErrorConstructor.cpp */,
</span><span class="cx">                                 BC02E9090E1839DB000F9297 /* NativeErrorConstructor.h */,
</span><span class="cx">                                 BC02E90A0E1839DB000F9297 /* NativeErrorPrototype.cpp */,
</span><span class="cx">                                 BC02E90B0E1839DB000F9297 /* NativeErrorPrototype.h */,
</span><ins>+                                147341DE1DC2CE9600AA29BA /* NativeExecutable.cpp */,
+                                147341CF1DC02DB400AA29BA /* NativeExecutable.h */,
</ins><span class="cx">                                 E33E8D1E1B9013DE00346B52 /* NativeStdFunctionCell.cpp */,
</span><span class="cx">                                 E33E8D1F1B9013DE00346B52 /* NativeStdFunctionCell.h */,
</span><span class="cx">                                 6546F51F1A32A59C006F07D5 /* NullGetterFunction.cpp */,
</span><span class="lines">@@ -6321,6 +6358,8 @@
</span><span class="cx">                                 0FE228EA1436AB2300196C48 /* Options.cpp */,
</span><span class="cx">                                 0FE228EB1436AB2300196C48 /* Options.h */,
</span><span class="cx">                                 868916A9155F285400CB2B9A /* PrivateName.h */,
</span><ins>+                                147341DF1DC2CE9600AA29BA /* ProgramExecutable.cpp */,
+                                147341D31DC02E6D00AA29BA /* ProgramExecutable.h */,
</ins><span class="cx">                                 A7FB60A3103F7DC20017A286 /* PropertyDescriptor.cpp */,
</span><span class="cx">                                 A7FB604B103F5EAB0017A286 /* PropertyDescriptor.h */,
</span><span class="cx">                                 BC95437C0EBA70FD0072B6D3 /* PropertyMapHashTable.h */,
</span><span class="lines">@@ -6377,6 +6416,8 @@
</span><span class="cx">                                 0FE050201AA9095600D33B33 /* ScopedArgumentsTable.h */,
</span><span class="cx">                                 0FE050211AA9095600D33B33 /* ScopeOffset.cpp */,
</span><span class="cx">                                 0FE050221AA9095600D33B33 /* ScopeOffset.h */,
</span><ins>+                                147341E01DC2CE9600AA29BA /* ScriptExecutable.cpp */,
+                                147341CD1DC02D7900AA29BA /* ScriptExecutable.h */,
</ins><span class="cx">                                 A7299DA317D12858005F5FF9 /* SetConstructor.cpp */,
</span><span class="cx">                                 A7299DA417D12858005F5FF9 /* SetConstructor.h */,
</span><span class="cx">                                 A790DD67182F499700588807 /* SetIteratorPrototype.cpp */,
</span><span class="lines">@@ -6478,9 +6519,10 @@
</span><span class="cx">                                 709FB8641AE335C60039D069 /* WeakSetConstructor.h */,
</span><span class="cx">                                 709FB8651AE335C60039D069 /* WeakSetPrototype.cpp */,
</span><span class="cx">                                 709FB8661AE335C60039D069 /* WeakSetPrototype.h */,
</span><ins>+                                147341E11DC2CE9600AA29BA /* WebAssemblyExecutable.cpp */,
+                                147341D91DC0300100AA29BA /* WebAssemblyExecutable.h */,
</ins><span class="cx">                                 A7DCB77912E3D90500911940 /* WriteBarrier.h */,
</span><span class="cx">                                 C2B6D75218A33793004A9301 /* WriteBarrierInlines.h */,
</span><del>-                                169948EDE68D4054B01EF797 /* DefinePropertyAttributes.h */,
</del><span class="cx">                         );
</span><span class="cx">                         path = runtime;
</span><span class="cx">                         sourceTree = &quot;&lt;group&gt;&quot;;
</span><span class="lines">@@ -7556,6 +7598,7 @@
</span><span class="cx">                                 0FEC850C1BDACDAC0080FF74 /* B3Commutativity.h in Headers */,
</span><span class="cx">                                 0FEC850E1BDACDAC0080FF74 /* B3Const32Value.h in Headers */,
</span><span class="cx">                                 0FEC85101BDACDAC0080FF74 /* B3Const64Value.h in Headers */,
</span><ins>+                                147341D41DC02E6D00AA29BA /* ProgramExecutable.h in Headers */,
</ins><span class="cx">                                 0FEC85121BDACDAC0080FF74 /* B3ConstDoubleValue.h in Headers */,
</span><span class="cx">                                 0FEC85B31BDED9570080FF74 /* B3ConstPtrValue.h in Headers */,
</span><span class="cx">                                 0FEC85C11BE167A00080FF74 /* B3Effects.h in Headers */,
</span><span class="lines">@@ -7837,6 +7880,7 @@
</span><span class="cx">                                 A73A535B1799CD5D00170C19 /* DFGLazyJSValue.h in Headers */,
</span><span class="cx">                                 62F2AA381B0BEDE300610C7A /* DFGLazyNode.h in Headers */,
</span><span class="cx">                                 A7D9A29817A0BC7400EE2618 /* DFGLICMPhase.h in Headers */,
</span><ins>+                                147341D21DC02E2E00AA29BA /* EvalExecutable.h in Headers */,
</ins><span class="cx">                                 99D6A1161BEAD34D00E25C37 /* RemoteAutomationTarget.h in Headers */,
</span><span class="cx">                                 79C4B15E1BA2158F00FD592E /* DFGLiveCatchVariablePreservationPhase.h in Headers */,
</span><span class="cx">                                 0F86A26F1D6F7B3300CB0C92 /* GCTypeMap.h in Headers */,
</span><span class="lines">@@ -7944,6 +7988,7 @@
</span><span class="cx">                                 0FFFC96014EF90BD00C72532 /* DFGVirtualRegisterAllocationPhase.h in Headers */,
</span><span class="cx">                                 0FC97F4218202119002C9B26 /* DFGWatchpointCollectionPhase.h in Headers */,
</span><span class="cx">                                 0FDB2CE8174830A2007B3C1B /* DFGWorklist.h in Headers */,
</span><ins>+                                147341DA1DC0300100AA29BA /* WebAssemblyExecutable.h in Headers */,
</ins><span class="cx">                                 0F070A491D543A93006E7232 /* HeapCellInlines.h in Headers */,
</span><span class="cx">                                 0FE050181AA9091100D33B33 /* DirectArguments.h in Headers */,
</span><span class="cx">                                 0FE050161AA9091100D33B33 /* DirectArgumentsOffset.h in Headers */,
</span><span class="lines">@@ -7967,7 +8012,6 @@
</span><span class="cx">                                 FE1C0FFD1B193E9800B53FCA /* Exception.h in Headers */,
</span><span class="cx">                                 0F12DE101979D5FD0006FF4E /* ExceptionFuzz.h in Headers */,
</span><span class="cx">                                 BC18C4000E16F5CD00B34460 /* ExceptionHelpers.h in Headers */,
</span><del>-                                86CAFEE31035DDE60028A609 /* Executable.h in Headers */,
</del><span class="cx">                                 0FF054FA1AC35B4400E5BE57 /* ExecutableAllocationFuzz.h in Headers */,
</span><span class="cx">                                 A766B44F0EE8DCD1009518CA /* ExecutableAllocator.h in Headers */,
</span><span class="cx">                                 14142E531B796EDD00F4BF4B /* ExecutableInfo.h in Headers */,
</span><span class="lines">@@ -7988,6 +8032,7 @@
</span><span class="cx">                                 0F6B8AE51C4EFE1700969052 /* B3FixSSA.h in Headers */,
</span><span class="cx">                                 0FEA0A0A170513DB00BB722C /* FTLCapabilities.h in Headers */,
</span><span class="cx">                                 0FEA0A231709606900BB722C /* FTLCommonValues.h in Headers */,
</span><ins>+                                147341D81DC02F9900AA29BA /* FunctionExecutable.h in Headers */,
</ins><span class="cx">                                 0FEA0A0C170513DB00BB722C /* FTLCompile.h in Headers */,
</span><span class="cx">                                 0F235BD417178E1C00690C7F /* FTLExitArgument.h in Headers */,
</span><span class="cx">                                 AD2FCBF91DB58DAD00B3E736 /* WebAssemblyRuntimeErrorConstructor.h in Headers */,
</span><span class="lines">@@ -8167,6 +8212,7 @@
</span><span class="cx">                                 A1B9E23A1B4E0D6700BC7FED /* IntlCollator.h in Headers */,
</span><span class="cx">                                 A1B9E23C1B4E0D6700BC7FED /* IntlCollatorConstructor.h in Headers */,
</span><span class="cx">                                 A18193E31B4E0CDB00FC1029 /* IntlCollatorConstructor.lut.h in Headers */,
</span><ins>+                                147341CE1DC02D7900AA29BA /* ScriptExecutable.h in Headers */,
</ins><span class="cx">                                 A1B9E23E1B4E0D6700BC7FED /* IntlCollatorPrototype.h in Headers */,
</span><span class="cx">                                 A18193E41B4E0CDB00FC1029 /* IntlCollatorPrototype.lut.h in Headers */,
</span><span class="cx">                                 0FA762051DB9242900B7A2FD /* CollectionScope.h in Headers */,
</span><span class="lines">@@ -8449,6 +8495,7 @@
</span><span class="cx">                                 8612E4CD152389EC00C836BE /* MatchResult.h in Headers */,
</span><span class="cx">                                 4340A4851A9051AF00D73CCA /* MathCommon.h in Headers */,
</span><span class="cx">                                 BC18C43C0E16F5CD00B34460 /* MathObject.h in Headers */,
</span><ins>+                                147341CC1DC02D7200AA29BA /* ExecutableBase.h in Headers */,
</ins><span class="cx">                                 90213E3E123A40C200D422F3 /* MemoryStatistics.h in Headers */,
</span><span class="cx">                                 0FB5467B14F5C7E1002C2989 /* MethodOfGettingAValueProfile.h in Headers */,
</span><span class="cx">                                 7C008CE7187631B600955C24 /* Microtask.h in Headers */,
</span><span class="lines">@@ -8628,6 +8675,7 @@
</span><span class="cx">                                 142E313B134FF0A600AFADB5 /* Strong.h in Headers */,
</span><span class="cx">                                 145722861437E140005FDE26 /* StrongInlines.h in Headers */,
</span><span class="cx">                                 BCDE3AB80E6C82F5001453A7 /* Structure.h in Headers */,
</span><ins>+                                147341D61DC02EB900AA29BA /* ModuleProgramExecutable.h in Headers */,
</ins><span class="cx">                                 7E4EE7090EBB7963005934AA /* StructureChain.h in Headers */,
</span><span class="cx">                                 FE6491371D78F01D00A694D4 /* ExceptionScope.h in Headers */,
</span><span class="cx">                                 2AAAA31218BD49D100394CC8 /* StructureIDBlob.h in Headers */,
</span><span class="lines">@@ -8688,6 +8736,7 @@
</span><span class="cx">                                 A7E5AB391799E4B200D2833D /* UDis86Disassembler.h in Headers */,
</span><span class="cx">                                 79DFCBDB1D88C59600527D03 /* HasOwnPropertyCache.h in Headers */,
</span><span class="cx">                                 A7A8AF4117ADB5F3005AB174 /* Uint16Array.h in Headers */,
</span><ins>+                                147341D01DC02DB400AA29BA /* NativeExecutable.h in Headers */,
</ins><span class="cx">                                 866739D313BFDE710023D87C /* Uint16WithFraction.h in Headers */,
</span><span class="cx">                                 A7A8AF4217ADB5F3005AB174 /* Uint32Array.h in Headers */,
</span><span class="cx">                                 A7A8AF3F17ADB5F3005AB174 /* Uint8Array.h in Headers */,
</span><span class="lines">@@ -9417,6 +9466,7 @@
</span><span class="cx">                                 0F2D4DDD19832D34007D4B19 /* DebuggerScope.cpp in Sources */,
</span><span class="cx">                                 2A7A58EF1808A4C40020BDF7 /* DeferGC.cpp in Sources */,
</span><span class="cx">                                 0FC712DE17CD8779008CC93C /* DeferredCompilationCallback.cpp in Sources */,
</span><ins>+                                147341EA1DC2CF2500AA29BA /* ExecutableBase.cpp in Sources */,
</ins><span class="cx">                                 FE5068671AE25E280009DAB7 /* DeferredSourceDump.cpp in Sources */,
</span><span class="cx">                                 A77A423D17A0BBFD00A8DB81 /* DFGAbstractHeap.cpp in Sources */,
</span><span class="cx">                                 0F55C19417276E4600CEABFD /* DFGAbstractValue.cpp in Sources */,
</span><span class="lines">@@ -9506,6 +9556,7 @@
</span><span class="cx">                                 0F5874ED194FEB1200AAB2C1 /* DFGMayExit.cpp in Sources */,
</span><span class="cx">                                 0F1725FF1B48719A00AC3A55 /* DFGMinifiedGraph.cpp in Sources */,
</span><span class="cx">                                 0F2BDC4D1522818600CD8910 /* DFGMinifiedNode.cpp in Sources */,
</span><ins>+                                147341E51DC2CE9600AA29BA /* NativeExecutable.cpp in Sources */,
</ins><span class="cx">                                 0F8F14351ADF090100ED792C /* DFGMovHintRemovalPhase.cpp in Sources */,
</span><span class="cx">                                 0FF2CD5B1B61A4F8004955A8 /* DFGMultiGetByOffsetData.cpp in Sources */,
</span><span class="cx">                                 A737810D1799EA2E00817533 /* DFGNaturalLoops.cpp in Sources */,
</span><span class="lines">@@ -9535,11 +9586,13 @@
</span><span class="cx">                                 0F392C891B46188400844728 /* DFGOSRExitFuzz.cpp in Sources */,
</span><span class="cx">                                 0FEFC9AA1681A3B300567F53 /* DFGOSRExitJumpPlaceholder.cpp in Sources */,
</span><span class="cx">                                 0F235BED17178E7300690C7F /* DFGOSRExitPreparation.cpp in Sources */,
</span><ins>+                                147341E31DC2CE9600AA29BA /* FunctionExecutable.cpp in Sources */,
</ins><span class="cx">                                 0F6237971AE45CA700D402EA /* DFGPhantomInsertionPhase.cpp in Sources */,
</span><span class="cx">                                 0FFFC95B14EF90AD00C72532 /* DFGPhase.cpp in Sources */,
</span><span class="cx">                                 0F2B9CEA19D0BA7D00B1D1B5 /* DFGPhiChildren.cpp in Sources */,
</span><span class="cx">                                 A78A977A179738B8009DF744 /* DFGPlan.cpp in Sources */,
</span><span class="cx">                                 0FBE0F7416C1DB090082C5E8 /* DFGPredictionInjectionPhase.cpp in Sources */,
</span><ins>+                                147341E81DC2CE9600AA29BA /* WebAssemblyExecutable.cpp in Sources */,
</ins><span class="cx">                                 0FFFC95D14EF90B300C72532 /* DFGPredictionPropagationPhase.cpp in Sources */,
</span><span class="cx">                                 0F3E01AA19D353A500F61B7F /* DFGPrePostNumbering.cpp in Sources */,
</span><span class="cx">                                 0F2B9CEC19D0BA7D00B1D1B5 /* DFGPromotedHeapLocation.cpp in Sources */,
</span><span class="lines">@@ -9550,6 +9603,7 @@
</span><span class="cx">                                 86EC9DD21328DF82002B2AD7 /* DFGSpeculativeJIT.cpp in Sources */,
</span><span class="cx">                                 86880F1F14328BB900B08D42 /* DFGSpeculativeJIT32_64.cpp in Sources */,
</span><span class="cx">                                 86880F4D14353B2100B08D42 /* DFGSpeculativeJIT64.cpp in Sources */,
</span><ins>+                                147341E61DC2CE9600AA29BA /* ProgramExecutable.cpp in Sources */,
</ins><span class="cx">                                 0F682FB219BCB36400FA3BAD /* DFGSSACalculator.cpp in Sources */,
</span><span class="cx">                                 A7D89CFF17A0B8CC00773AD8 /* DFGSSAConversionPhase.cpp in Sources */,
</span><span class="cx">                                 0FC20CB918556A3500C9E954 /* DFGSSALoweringPhase.cpp in Sources */,
</span><span class="lines">@@ -9602,7 +9656,6 @@
</span><span class="cx">                                 0F12DE0F1979D5FD0006FF4E /* ExceptionFuzz.cpp in Sources */,
</span><span class="cx">                                 DCF3D5691CD2946D003D5C65 /* LazyClassStructure.cpp in Sources */,
</span><span class="cx">                                 1429D8780ED21ACD00B89619 /* ExceptionHelpers.cpp in Sources */,
</span><del>-                                86CA032E1038E8440028A609 /* Executable.cpp in Sources */,
</del><span class="cx">                                 0FF054F91AC35B4400E5BE57 /* ExecutableAllocationFuzz.cpp in Sources */,
</span><span class="cx">                                 A7B48F490EE8936F00DCBDB6 /* ExecutableAllocator.cpp in Sources */,
</span><span class="cx">                                 86DB64640F95C6FC00D7D921 /* ExecutableAllocatorFixedVMPool.cpp in Sources */,
</span><span class="lines">@@ -9728,6 +9781,7 @@
</span><span class="cx">                                 DE5A0A001BA3AC3E003D4424 /* IntrinsicEmitter.cpp in Sources */,
</span><span class="cx">                                 70113D4B1A8DB093003848C4 /* IteratorOperations.cpp in Sources */,
</span><span class="cx">                                 70DC3E091B2DF2C700054299 /* IteratorPrototype.cpp in Sources */,
</span><ins>+                                147341E41DC2CE9600AA29BA /* ModuleProgramExecutable.cpp in Sources */,
</ins><span class="cx">                                 A503FA19188E0FB000110F14 /* JavaScriptCallFrame.cpp in Sources */,
</span><span class="cx">                                 79D5CD5A1C1106A900CECA07 /* SamplingProfiler.cpp in Sources */,
</span><span class="cx">                                 1429D92F0ED22D7000B89619 /* JIT.cpp in Sources */,
</span><span class="lines">@@ -9916,6 +9970,7 @@
</span><span class="cx">                                 0FB5467D14F5CFD6002C2989 /* MethodOfGettingAValueProfile.cpp in Sources */,
</span><span class="cx">                                 E3794E751B77EB97005543AE /* ModuleAnalyzer.cpp in Sources */,
</span><span class="cx">                                 E355F3521B7DC85300C50DC5 /* ModuleLoaderPrototype.cpp in Sources */,
</span><ins>+                                147341E21DC2CE9600AA29BA /* EvalExecutable.cpp in Sources */,
</ins><span class="cx">                                 0F338E0B1BF0276C0013C88F /* B3Compilation.cpp in Sources */,
</span><span class="cx">                                 14469DE0107EC7E700650446 /* NativeErrorConstructor.cpp in Sources */,
</span><span class="cx">                                 79160DBD1C8E3EC8008C085A /* ProxyRevoke.cpp in Sources */,
</span><span class="lines">@@ -10057,6 +10112,7 @@
</span><span class="cx">                                 A7386555118697B400540279 /* ThunkGenerators.cpp in Sources */,
</span><span class="cx">                                 0F2D4DE819832DAC007D4B19 /* ToThisStatus.cpp in Sources */,
</span><span class="cx">                                 0F952ABC1B487A7700C367C5 /* TrackedReferences.cpp in Sources */,
</span><ins>+                                147341E71DC2CE9600AA29BA /* ScriptExecutable.cpp in Sources */,
</ins><span class="cx">                                 0F2B670717B6B5AB00A7AE3F /* TypedArrayController.cpp in Sources */,
</span><span class="cx">                                 0F2B670A17B6B5AB00A7AE3F /* TypedArrayType.cpp in Sources */,
</span><span class="cx">                                 52B310FF1975B4240080857C /* TypeLocationCache.cpp in Sources */,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_combined_implementationpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_combined_implementation.py        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx">                 (&quot;JavaScriptCore&quot;, &quot;heap/HeapInlines.h&quot;),
</span><span class="cx">             ),
</span><span class="cx">             ([&quot;JavaScriptCore&quot;, &quot;WebCore&quot;],
</span><del>-                (&quot;JavaScriptCore&quot;, &quot;runtime/Executable.h&quot;),
</del><ins>+                (&quot;JavaScriptCore&quot;, &quot;runtime/UnlinkedFunctionExecutable.h&quot;),
</ins><span class="cx">             ),
</span><span class="cx">             ([&quot;JavaScriptCore&quot;, &quot;WebCore&quot;],
</span><span class="cx">                 (&quot;JavaScriptCore&quot;, &quot;runtime/JSCellInlines.h&quot;),
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreScriptsbuiltinsbuiltins_generate_separate_implementationpy"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/Scripts/builtins/builtins_generate_separate_implementation.py        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -87,9 +87,6 @@
</span><span class="cx">                 (&quot;JavaScriptCore&quot;, &quot;heap/HeapInlines.h&quot;),
</span><span class="cx">             ),
</span><span class="cx">             ([&quot;JavaScriptCore&quot;, &quot;WebCore&quot;],
</span><del>-                (&quot;JavaScriptCore&quot;, &quot;runtime/Executable.h&quot;),
-            ),
-            ([&quot;JavaScriptCore&quot;, &quot;WebCore&quot;],
</del><span class="cx">                 (&quot;JavaScriptCore&quot;, &quot;runtime/JSCellInlines.h&quot;),
</span><span class="cx">             ),
</span><span class="cx">             ([&quot;WebCore&quot;],
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebuiltinsBuiltinExecutablescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/builtins/BuiltinExecutables.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> #include &quot;BuiltinExecutables.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;BuiltinNames.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;Parser.h&quot;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCallVarianth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CallVariant.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CallVariant.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecode/CallVariant.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -25,7 +25,7 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><ins>+#include &quot;FunctionExecutable.h&quot;
</ins><span class="cx"> #include &quot;JSCell.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -70,6 +70,7 @@
</span><span class="cx"> #include &quot;TypeProfiler.h&quot;
</span><span class="cx"> #include &quot;UnlinkedInstructionStream.h&quot;
</span><span class="cx"> #include &quot;VMInlines.h&quot;
</span><ins>+#include &quot;WebAssemblyExecutable.h&quot;
</ins><span class="cx"> #include &lt;wtf/BagToHashMap.h&gt;
</span><span class="cx"> #include &lt;wtf/CommaPrinter.h&gt;
</span><span class="cx"> #include &lt;wtf/SimpleStats.h&gt;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -45,6 +45,7 @@
</span><span class="cx"> #include &quot;EvalCodeCache.h&quot;
</span><span class="cx"> #include &quot;ExecutionCounter.h&quot;
</span><span class="cx"> #include &quot;ExpressionRangeInfo.h&quot;
</span><ins>+#include &quot;FunctionExecutable.h&quot;
</ins><span class="cx"> #include &quot;HandlerInfo.h&quot;
</span><span class="cx"> #include &quot;Instruction.h&quot;
</span><span class="cx"> #include &quot;JITCode.h&quot;
</span><span class="lines">@@ -55,9 +56,11 @@
</span><span class="cx"> #include &quot;LLIntCallLinkInfo.h&quot;
</span><span class="cx"> #include &quot;LLIntPrototypeLoadAdaptiveStructureWatchpoint.h&quot;
</span><span class="cx"> #include &quot;LazyOperandValueProfile.h&quot;
</span><ins>+#include &quot;ModuleProgramExecutable.h&quot;
</ins><span class="cx"> #include &quot;ObjectAllocationProfile.h&quot;
</span><span class="cx"> #include &quot;Options.h&quot;
</span><span class="cx"> #include &quot;ProfilerJettisonReason.h&quot;
</span><ins>+#include &quot;ProgramExecutable.h&quot;
</ins><span class="cx"> #include &quot;PutPropertySlot.h&quot;
</span><span class="cx"> #include &quot;UnconditionalFinalizer.h&quot;
</span><span class="cx"> #include &quot;ValueProfile.h&quot;
</span><span class="lines">@@ -1347,6 +1350,25 @@
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><ins>+template &lt;typename ExecutableType&gt;
+JSObject* ScriptExecutable::prepareForExecution(VM&amp; vm, JSFunction* function, JSScope* scope, CodeSpecializationKind kind, CodeBlock*&amp; resultCodeBlock)
+{
+    if (hasJITCodeFor(kind)) {
+        if (std::is_same&lt;ExecutableType, EvalExecutable&gt;::value)
+            resultCodeBlock = jsCast&lt;CodeBlock*&gt;(jsCast&lt;EvalExecutable*&gt;(this)-&gt;codeBlock());
+        else if (std::is_same&lt;ExecutableType, ProgramExecutable&gt;::value)
+            resultCodeBlock = jsCast&lt;CodeBlock*&gt;(jsCast&lt;ProgramExecutable*&gt;(this)-&gt;codeBlock());
+        else if (std::is_same&lt;ExecutableType, ModuleProgramExecutable&gt;::value)
+            resultCodeBlock = jsCast&lt;CodeBlock*&gt;(jsCast&lt;ModuleProgramExecutable*&gt;(this)-&gt;codeBlock());
+        else if (std::is_same&lt;ExecutableType, FunctionExecutable&gt;::value)
+            resultCodeBlock = jsCast&lt;CodeBlock*&gt;(jsCast&lt;FunctionExecutable*&gt;(this)-&gt;codeBlockFor(kind));
+        else
+            RELEASE_ASSERT_NOT_REACHED();
+        return nullptr;
+    }
+    return prepareForExecutionImpl(vm, function, scope, kind, resultCodeBlock);
+}
+
</ins><span class="cx"> #define CODEBLOCK_LOG_EVENT(codeBlock, summary, details) \
</span><span class="cx">     (codeBlock-&gt;vm()-&gt;logEvent(codeBlock, summary, [&amp;] () { return toCString details; }))
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeOrigincpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeOrigin.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeOrigin.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecode/CodeOrigin.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CallFrame.h&quot;
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;InlineCallFrame.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeEvalCodeCacheh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecode/EvalCodeCache.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -28,7 +28,7 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><ins>+#include &quot;EvalExecutable.h&quot;
</ins><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &quot;JSScope.h&quot;
</span><span class="cx"> #include &quot;Options.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeInlineCallFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/InlineCallFrame.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/InlineCallFrame.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecode/InlineCallFrame.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CallFrame.h&quot;
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include &quot;BytecodeRewriter.h&quot;
</span><span class="cx"> #include &quot;ClassInfo.h&quot;
</span><span class="cx"> #include &quot;CodeCache.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;ExecutableInfo.h&quot;
</span><span class="cx"> #include &quot;FunctionOverrides.h&quot;
</span><span class="cx"> #include &quot;JSString.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeUnlinkedFunctionExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecode/UnlinkedFunctionExecutable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> #include &quot;ClassInfo.h&quot;
</span><span class="cx"> #include &quot;CodeCache.h&quot;
</span><span class="cx"> #include &quot;Debugger.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;ExecutableInfo.h&quot;
</span><span class="cx"> #include &quot;FunctionOverrides.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecompilerStaticPropertyAnalysish"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecompiler/StaticPropertyAnalysis.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecompiler/StaticPropertyAnalysis.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/bytecompiler/StaticPropertyAnalysis.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -25,7 +25,6 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span><span class="cx"> #include &lt;wtf/HashSet.h&gt;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggerLocationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/DebuggerLocation.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/DebuggerLocation.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/debugger/DebuggerLocation.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -26,7 +26,7 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;DebuggerLocation.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><ins>+#include &quot;ScriptExecutable.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGCapabilitiesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGCapabilities.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGCapabilities.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/dfg/DFGCapabilities.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;DFGCommon.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;Intrinsic.h&quot;
</span><span class="cx"> #include &quot;Options.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGOSRExitPreparationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGOSRExitPreparation.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGOSRExitPreparation.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/dfg/DFGOSRExitPreparation.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITCode.h&quot;
</span><span class="cx"> #include &quot;JITWorklist.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGToFTLDeferredCompilationCallbackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;DFGJITCode.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC { namespace DFG {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGToFTLForOSREntryDeferredCompilationCallbackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;DFGJITCode.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;FTLForOSREntryJITCode.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterStackVisitorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ClonedArguments.h&quot;
</span><span class="cx"> #include &quot;DebuggerPrimitives.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;InlineCallFrame.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITThunkscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITThunks.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITThunks.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/jit/JITThunks.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -28,7 +28,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;LLIntData.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITToDFGDeferredCompilationCallbackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITToDFGDeferredCompilationCallback.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITToDFGDeferredCompilationCallback.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/jit/JITToDFGDeferredCompilationCallback.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #if ENABLE(DFG_JIT)
</span><span class="cx"> 
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitSpecializedThunkJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> 
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JIT.h&quot;
</span><span class="cx"> #include &quot;JITInlines.h&quot;
</span><span class="cx"> #include &quot;JSInterfaceJIT.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntOffsetsExtractorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/llint/LLIntOffsetsExtractor.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -30,7 +30,6 @@
</span><span class="cx"> #include &quot;CommonSlowPaths.h&quot;
</span><span class="cx"> #include &quot;DirectArguments.h&quot;
</span><span class="cx"> #include &quot;Exception.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;Heap.h&quot;
</span><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="lines">@@ -46,6 +45,7 @@
</span><span class="cx"> #include &quot;JumpTable.h&quot;
</span><span class="cx"> #include &quot;LLIntOfflineAsmConfig.h&quot;
</span><span class="cx"> #include &quot;MarkedSpace.h&quot;
</span><ins>+#include &quot;NativeExecutable.h&quot;
</ins><span class="cx"> #include &quot;ProtoCallFrame.h&quot;
</span><span class="cx"> #include &quot;ShadowChicken.h&quot;
</span><span class="cx"> #include &quot;Structure.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreparserParserh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/parser/Parser.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/parser/Parser.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/parser/Parser.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -23,7 +23,6 @@
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><span class="cx"> #include &quot;ExceptionHelpers.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;Lexer.h&quot;
</span><span class="cx"> #include &quot;ModuleScopeData.h&quot;
</span><span class="cx"> #include &quot;Nodes.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCallDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CallData.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CallData.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/CallData.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;CallData.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeConstructDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ConstructData.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ConstructData.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/ConstructData.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;ConstructData.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeEvalExecutablecppfromrev207790trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/EvalExecutable.cpp (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.cpp) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/EvalExecutable.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/EvalExecutable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,87 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;BatchedTransitionOptimizer.h&quot;
+#include &quot;CodeBlock.h&quot;
+#include &quot;Debugger.h&quot;
+#include &quot;JIT.h&quot;
+#include &quot;JSCInlines.h&quot;
+#include &quot;LLIntEntrypoint.h&quot;
+#include &quot;Parser.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &quot;VMInlines.h&quot;
+#include &lt;wtf/CommaPrinter.h&gt;
+
+namespace JSC {
+
+const ClassInfo EvalExecutable::s_info = { &quot;EvalExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(EvalExecutable) };
+
+EvalExecutable* EvalExecutable::create(ExecState* exec, const SourceCode&amp; source, bool isInStrictContext, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType, const VariableEnvironment* variablesUnderTDZ)
+{
+    VM&amp; vm = exec-&gt;vm();
+    auto scope = DECLARE_THROW_SCOPE(vm);
+
+    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
+    if (!globalObject-&gt;evalEnabled()) {
+        throwException(exec, scope, createEvalError(exec, globalObject-&gt;evalDisabledErrorMessage()));
+        return 0;
+    }
+
+    EvalExecutable* executable = new (NotNull, allocateCell&lt;EvalExecutable&gt;(*exec-&gt;heap())) EvalExecutable(exec, source, isInStrictContext, derivedContextType, isArrowFunctionContext, evalContextType);
+    executable-&gt;finishCreation(vm);
+
+    UnlinkedEvalCodeBlock* unlinkedEvalCode = globalObject-&gt;createEvalCodeBlock(exec, executable, variablesUnderTDZ);
+    if (!unlinkedEvalCode)
+        return 0;
+
+    executable-&gt;m_unlinkedEvalCodeBlock.set(vm, executable, unlinkedEvalCode);
+
+    return executable;
+}
+
+EvalExecutable::EvalExecutable(ExecState* exec, const SourceCode&amp; source, bool inStrictContext, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType)
+    : ScriptExecutable(exec-&gt;vm().evalExecutableStructure.get(), exec-&gt;vm(), source, inStrictContext, derivedContextType, isArrowFunctionContext, evalContextType, NoIntrinsic)
+{
+    ASSERT(source.provider()-&gt;sourceType() == SourceProviderSourceType::Program);
+}
+
+void EvalExecutable::destroy(JSCell* cell)
+{
+    static_cast&lt;EvalExecutable*&gt;(cell)-&gt;EvalExecutable::~EvalExecutable();
+}
+
+void EvalExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
+{
+    EvalExecutable* thisObject = jsCast&lt;EvalExecutable*&gt;(cell);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    ScriptExecutable::visitChildren(thisObject, visitor);
+    visitor.append(&amp;thisObject-&gt;m_unlinkedEvalCodeBlock);
+    if (thisObject-&gt;m_evalCodeBlock)
+        thisObject-&gt;m_evalCodeBlock-&gt;visitWeakly(visitor);
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeEvalExecutablehfromrev207790trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/EvalExecutable.h (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/EvalExecutable.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/EvalExecutable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,76 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include &quot;ScriptExecutable.h&quot;
+
+namespace JSC {
+
+class EvalExecutable final : public ScriptExecutable {
+    friend class LLIntOffsetsExtractor;
+public:
+    typedef ScriptExecutable Base;
+    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
+
+    static void destroy(JSCell*);
+
+    EvalCodeBlock* codeBlock()
+    {
+        return m_evalCodeBlock.get();
+    }
+
+    static EvalExecutable* create(ExecState*, const SourceCode&amp;, bool isInStrictContext, DerivedContextType, bool isArrowFunctionContext, EvalContextType, const VariableEnvironment*);
+
+    PassRefPtr&lt;JITCode&gt; generatedJITCode()
+    {
+        return generatedJITCodeForCall();
+    }
+
+    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
+    {
+        return Structure::create(vm, globalObject, proto, TypeInfo(EvalExecutableType, StructureFlags), info());
+    }
+        
+    DECLARE_INFO;
+
+    ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, JSParserScriptMode::Classic, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext(), false, evalContextType()); }
+
+    unsigned numVariables() { return m_unlinkedEvalCodeBlock-&gt;numVariables(); }
+    unsigned numberOfFunctionDecls() { return m_unlinkedEvalCodeBlock-&gt;numberOfFunctionDecls(); }
+
+private:
+    friend class ExecutableBase;
+    friend class ScriptExecutable;
+
+    EvalExecutable(ExecState*, const SourceCode&amp;, bool inStrictContext, DerivedContextType, bool isArrowFunctionContext, EvalContextType);
+
+    static void visitChildren(JSCell*, SlotVisitor&amp;);
+
+    WriteBarrier&lt;EvalCodeBlock&gt; m_evalCodeBlock;
+    WriteBarrier&lt;UnlinkedEvalCodeBlock&gt; m_unlinkedEvalCodeBlock;
+};
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/Executable.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Executable.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/Executable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -1,843 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#include &quot;config.h&quot;
-#include &quot;Executable.h&quot;
-
-#include &quot;BatchedTransitionOptimizer.h&quot;
-#include &quot;CodeBlock.h&quot;
-#include &quot;Debugger.h&quot;
-#include &quot;JIT.h&quot;
-#include &quot;JSCInlines.h&quot;
-#include &quot;LLIntEntrypoint.h&quot;
-#include &quot;Parser.h&quot;
-#include &quot;TypeProfiler.h&quot;
-#include &quot;VMInlines.h&quot;
-#include &lt;wtf/CommaPrinter.h&gt;
-
-namespace JSC {
-
-const ClassInfo ExecutableBase::s_info = { &quot;Executable&quot;, 0, 0, CREATE_METHOD_TABLE(ExecutableBase) };
-
-void ExecutableBase::destroy(JSCell* cell)
-{
-    static_cast&lt;ExecutableBase*&gt;(cell)-&gt;ExecutableBase::~ExecutableBase();
-}
-
-void ExecutableBase::clearCode()
-{
-#if ENABLE(JIT)
-    m_jitCodeForCall = nullptr;
-    m_jitCodeForConstruct = nullptr;
-    m_jitCodeForCallWithArityCheck = MacroAssemblerCodePtr();
-    m_jitCodeForConstructWithArityCheck = MacroAssemblerCodePtr();
-#endif
-    m_numParametersForCall = NUM_PARAMETERS_NOT_COMPILED;
-    m_numParametersForConstruct = NUM_PARAMETERS_NOT_COMPILED;
-
-    if (classInfo() == FunctionExecutable::info()) {
-        FunctionExecutable* executable = jsCast&lt;FunctionExecutable*&gt;(this);
-        executable-&gt;m_codeBlockForCall.clear();
-        executable-&gt;m_codeBlockForConstruct.clear();
-        return;
-    }
-
-    if (classInfo() == EvalExecutable::info()) {
-        EvalExecutable* executable = jsCast&lt;EvalExecutable*&gt;(this);
-        executable-&gt;m_evalCodeBlock.clear();
-        executable-&gt;m_unlinkedEvalCodeBlock.clear();
-        return;
-    }
-    
-    if (classInfo() == ProgramExecutable::info()) {
-        ProgramExecutable* executable = jsCast&lt;ProgramExecutable*&gt;(this);
-        executable-&gt;m_programCodeBlock.clear();
-        executable-&gt;m_unlinkedProgramCodeBlock.clear();
-        return;
-    }
-
-    if (classInfo() == ModuleProgramExecutable::info()) {
-        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(this);
-        executable-&gt;m_moduleProgramCodeBlock.clear();
-        executable-&gt;m_unlinkedModuleProgramCodeBlock.clear();
-        executable-&gt;m_moduleEnvironmentSymbolTable.clear();
-        return;
-    }
-    
-#if ENABLE(WEBASSEMBLY)
-    if (classInfo() == WebAssemblyExecutable::info()) {
-        WebAssemblyExecutable* executable = jsCast&lt;WebAssemblyExecutable*&gt;(this);
-        executable-&gt;m_codeBlockForCall.clear();
-        return;
-    }
-#endif
-
-    ASSERT(classInfo() == NativeExecutable::info());
-}
-
-const ClassInfo NativeExecutable::s_info = { &quot;NativeExecutable&quot;, &amp;ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(NativeExecutable) };
-
-NativeExecutable* NativeExecutable::create(VM&amp; vm, PassRefPtr&lt;JITCode&gt; callThunk, NativeFunction function, PassRefPtr&lt;JITCode&gt; constructThunk, NativeFunction constructor, Intrinsic intrinsic, const String&amp; name)
-{
-    NativeExecutable* executable;
-    executable = new (NotNull, allocateCell&lt;NativeExecutable&gt;(vm.heap)) NativeExecutable(vm, function, constructor, intrinsic);
-    executable-&gt;finishCreation(vm, callThunk, constructThunk, name);
-    return executable;
-}
-
-void NativeExecutable::destroy(JSCell* cell)
-{
-    static_cast&lt;NativeExecutable*&gt;(cell)-&gt;NativeExecutable::~NativeExecutable();
-}
-
-Structure* NativeExecutable::createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
-{
-    return Structure::create(vm, globalObject, proto, TypeInfo(CellType, StructureFlags), info());
-}
-
-void NativeExecutable::finishCreation(VM&amp; vm, PassRefPtr&lt;JITCode&gt; callThunk, PassRefPtr&lt;JITCode&gt; constructThunk, const String&amp; name)
-{
-    Base::finishCreation(vm);
-    m_jitCodeForCall = callThunk;
-    m_jitCodeForConstruct = constructThunk;
-    m_jitCodeForCallWithArityCheck = m_jitCodeForCall-&gt;addressForCall(MustCheckArity);
-    m_jitCodeForConstructWithArityCheck = m_jitCodeForConstruct-&gt;addressForCall(MustCheckArity);
-    m_name = name;
-}
-
-NativeExecutable::NativeExecutable(VM&amp; vm, NativeFunction function, NativeFunction constructor, Intrinsic intrinsic)
-    : ExecutableBase(vm, vm.nativeExecutableStructure.get(), NUM_PARAMETERS_IS_HOST, intrinsic)
-    , m_function(function)
-    , m_constructor(constructor)
-{
-}
-
-const ClassInfo ScriptExecutable::s_info = { &quot;ScriptExecutable&quot;, &amp;ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(ScriptExecutable) };
-
-ScriptExecutable::ScriptExecutable(Structure* structure, VM&amp; vm, const SourceCode&amp; source, bool isInStrictContext, DerivedContextType derivedContextType, bool isInArrowFunctionContext, EvalContextType evalContextType, Intrinsic intrinsic)
-    : ExecutableBase(vm, structure, NUM_PARAMETERS_NOT_COMPILED, intrinsic)
-    , m_features(isInStrictContext ? StrictModeFeature : 0)
-    , m_didTryToEnterInLoop(false)
-    , m_hasCapturedVariables(false)
-    , m_neverInline(false)
-    , m_neverOptimize(false)
-    , m_neverFTLOptimize(false)
-    , m_isArrowFunctionContext(isInArrowFunctionContext)
-    , m_canUseOSRExitFuzzing(true)
-    , m_derivedContextType(static_cast&lt;unsigned&gt;(derivedContextType))
-    , m_evalContextType(static_cast&lt;unsigned&gt;(evalContextType))
-    , m_overrideLineNumber(-1)
-    , m_firstLine(-1)
-    , m_lastLine(-1)
-    , m_startColumn(UINT_MAX)
-    , m_endColumn(UINT_MAX)
-    , m_typeProfilingStartOffset(UINT_MAX)
-    , m_typeProfilingEndOffset(UINT_MAX)
-    , m_source(source)
-{
-}
-
-void ScriptExecutable::destroy(JSCell* cell)
-{
-    static_cast&lt;ScriptExecutable*&gt;(cell)-&gt;ScriptExecutable::~ScriptExecutable();
-}
-
-void ScriptExecutable::installCode(CodeBlock* codeBlock)
-{
-    installCode(*codeBlock-&gt;vm(), codeBlock, codeBlock-&gt;codeType(), codeBlock-&gt;specializationKind());
-}
-
-void ScriptExecutable::installCode(VM&amp; vm, CodeBlock* genericCodeBlock, CodeType codeType, CodeSpecializationKind kind)
-{
-    ASSERT(vm.heap.isDeferred());
-    
-    if (genericCodeBlock)
-        CODEBLOCK_LOG_EVENT(genericCodeBlock, &quot;installCode&quot;, ());
-    
-    CodeBlock* oldCodeBlock = nullptr;
-    
-    switch (codeType) {
-    case GlobalCode: {
-        ProgramExecutable* executable = jsCast&lt;ProgramExecutable*&gt;(this);
-        ProgramCodeBlock* codeBlock = static_cast&lt;ProgramCodeBlock*&gt;(genericCodeBlock);
-        
-        ASSERT(kind == CodeForCall);
-        
-        oldCodeBlock = executable-&gt;m_programCodeBlock.get();
-        executable-&gt;m_programCodeBlock.setMayBeNull(vm, this, codeBlock);
-        break;
-    }
-
-    case ModuleCode: {
-        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(this);
-        ModuleProgramCodeBlock* codeBlock = static_cast&lt;ModuleProgramCodeBlock*&gt;(genericCodeBlock);
-
-        ASSERT(kind == CodeForCall);
-
-        oldCodeBlock = executable-&gt;m_moduleProgramCodeBlock.get();
-        executable-&gt;m_moduleProgramCodeBlock.setMayBeNull(vm, this, codeBlock);
-        break;
-    }
-
-    case EvalCode: {
-        EvalExecutable* executable = jsCast&lt;EvalExecutable*&gt;(this);
-        EvalCodeBlock* codeBlock = static_cast&lt;EvalCodeBlock*&gt;(genericCodeBlock);
-        
-        ASSERT(kind == CodeForCall);
-        
-        oldCodeBlock = executable-&gt;m_evalCodeBlock.get();
-        executable-&gt;m_evalCodeBlock.setMayBeNull(vm, this, codeBlock);
-        break;
-    }
-        
-    case FunctionCode: {
-        FunctionExecutable* executable = jsCast&lt;FunctionExecutable*&gt;(this);
-        FunctionCodeBlock* codeBlock = static_cast&lt;FunctionCodeBlock*&gt;(genericCodeBlock);
-        
-        switch (kind) {
-        case CodeForCall:
-            oldCodeBlock = executable-&gt;m_codeBlockForCall.get();
-            executable-&gt;m_codeBlockForCall.setMayBeNull(vm, this, codeBlock);
-            break;
-        case CodeForConstruct:
-            oldCodeBlock = executable-&gt;m_codeBlockForConstruct.get();
-            executable-&gt;m_codeBlockForConstruct.setMayBeNull(vm, this, codeBlock);
-            break;
-        }
-        break;
-    }
-    }
-
-    switch (kind) {
-    case CodeForCall:
-        m_jitCodeForCall = genericCodeBlock ? genericCodeBlock-&gt;jitCode() : nullptr;
-        m_jitCodeForCallWithArityCheck = MacroAssemblerCodePtr();
-        m_numParametersForCall = genericCodeBlock ? genericCodeBlock-&gt;numParameters() : NUM_PARAMETERS_NOT_COMPILED;
-        break;
-    case CodeForConstruct:
-        m_jitCodeForConstruct = genericCodeBlock ? genericCodeBlock-&gt;jitCode() : nullptr;
-        m_jitCodeForConstructWithArityCheck = MacroAssemblerCodePtr();
-        m_numParametersForConstruct = genericCodeBlock ? genericCodeBlock-&gt;numParameters() : NUM_PARAMETERS_NOT_COMPILED;
-        break;
-    }
-
-    if (genericCodeBlock) {
-        RELEASE_ASSERT(genericCodeBlock-&gt;ownerExecutable() == this);
-        RELEASE_ASSERT(JITCode::isExecutableScript(genericCodeBlock-&gt;jitType()));
-        
-        if (Options::verboseOSR())
-            dataLog(&quot;Installing &quot;, *genericCodeBlock, &quot;\n&quot;);
-        
-        if (vm.m_perBytecodeProfiler)
-            vm.m_perBytecodeProfiler-&gt;ensureBytecodesFor(genericCodeBlock);
-        
-        if (Debugger* debugger = genericCodeBlock-&gt;globalObject()-&gt;debugger())
-            debugger-&gt;registerCodeBlock(genericCodeBlock);
-    }
-
-    if (oldCodeBlock)
-        oldCodeBlock-&gt;unlinkIncomingCalls();
-
-    vm.heap.writeBarrier(this);
-}
-
-CodeBlock* ScriptExecutable::newCodeBlockFor(
-    CodeSpecializationKind kind, JSFunction* function, JSScope* scope, JSObject*&amp; exception)
-{
-    VM* vm = scope-&gt;vm();
-    auto throwScope = DECLARE_THROW_SCOPE(*vm);
-
-    ASSERT(vm-&gt;heap.isDeferred());
-    ASSERT(startColumn() != UINT_MAX);
-    ASSERT(endColumn() != UINT_MAX);
-
-    if (classInfo() == EvalExecutable::info()) {
-        EvalExecutable* executable = jsCast&lt;EvalExecutable*&gt;(this);
-        RELEASE_ASSERT(kind == CodeForCall);
-        RELEASE_ASSERT(!executable-&gt;m_evalCodeBlock);
-        RELEASE_ASSERT(!function);
-        return EvalCodeBlock::create(vm,
-            executable, executable-&gt;m_unlinkedEvalCodeBlock.get(), scope,
-            executable-&gt;source().provider());
-    }
-    
-    if (classInfo() == ProgramExecutable::info()) {
-        ProgramExecutable* executable = jsCast&lt;ProgramExecutable*&gt;(this);
-        RELEASE_ASSERT(kind == CodeForCall);
-        RELEASE_ASSERT(!executable-&gt;m_programCodeBlock);
-        RELEASE_ASSERT(!function);
-        return ProgramCodeBlock::create(vm,
-            executable, executable-&gt;m_unlinkedProgramCodeBlock.get(), scope,
-            executable-&gt;source().provider(), executable-&gt;source().startColumn());
-    }
-
-    if (classInfo() == ModuleProgramExecutable::info()) {
-        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(this);
-        RELEASE_ASSERT(kind == CodeForCall);
-        RELEASE_ASSERT(!executable-&gt;m_moduleProgramCodeBlock);
-        RELEASE_ASSERT(!function);
-        return ModuleProgramCodeBlock::create(vm,
-            executable, executable-&gt;m_unlinkedModuleProgramCodeBlock.get(), scope,
-            executable-&gt;source().provider(), executable-&gt;source().startColumn());
-    }
-
-    RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
-    RELEASE_ASSERT(function);
-    FunctionExecutable* executable = jsCast&lt;FunctionExecutable*&gt;(this);
-    RELEASE_ASSERT(!executable-&gt;codeBlockFor(kind));
-    JSGlobalObject* globalObject = scope-&gt;globalObject();
-    ParserError error;
-    DebuggerMode debuggerMode = globalObject-&gt;hasInteractiveDebugger() ? DebuggerOn : DebuggerOff;
-    UnlinkedFunctionCodeBlock* unlinkedCodeBlock = 
-        executable-&gt;m_unlinkedExecutable-&gt;unlinkedCodeBlockFor(
-            *vm, executable-&gt;m_source, kind, debuggerMode, error, 
-            executable-&gt;parseMode());
-    recordParse(
-        executable-&gt;m_unlinkedExecutable-&gt;features(), 
-        executable-&gt;m_unlinkedExecutable-&gt;hasCapturedVariables(), firstLine(), 
-        lastLine(), startColumn(), endColumn()); 
-    if (!unlinkedCodeBlock) {
-        exception = throwException(
-            globalObject-&gt;globalExec(), throwScope,
-            error.toErrorObject(globalObject, executable-&gt;m_source));
-        return nullptr;
-    }
-
-    SourceProvider* provider = executable-&gt;source().provider();
-    unsigned sourceOffset = executable-&gt;source().startOffset();
-    unsigned startColumn = executable-&gt;source().startColumn();
-
-    return FunctionCodeBlock::create(vm,
-        executable, unlinkedCodeBlock, scope, provider, sourceOffset, startColumn);
-}
-
-CodeBlock* ScriptExecutable::newReplacementCodeBlockFor(
-    CodeSpecializationKind kind)
-{
-    if (classInfo() == EvalExecutable::info()) {
-        RELEASE_ASSERT(kind == CodeForCall);
-        EvalExecutable* executable = jsCast&lt;EvalExecutable*&gt;(this);
-        EvalCodeBlock* baseline = static_cast&lt;EvalCodeBlock*&gt;(
-            executable-&gt;m_evalCodeBlock-&gt;baselineVersion());
-        EvalCodeBlock* result = EvalCodeBlock::create(vm(),
-            CodeBlock::CopyParsedBlock, *baseline);
-        result-&gt;setAlternative(*vm(), baseline);
-        return result;
-    }
-    
-    if (classInfo() == ProgramExecutable::info()) {
-        RELEASE_ASSERT(kind == CodeForCall);
-        ProgramExecutable* executable = jsCast&lt;ProgramExecutable*&gt;(this);
-        ProgramCodeBlock* baseline = static_cast&lt;ProgramCodeBlock*&gt;(
-            executable-&gt;m_programCodeBlock-&gt;baselineVersion());
-        ProgramCodeBlock* result = ProgramCodeBlock::create(vm(),
-            CodeBlock::CopyParsedBlock, *baseline);
-        result-&gt;setAlternative(*vm(), baseline);
-        return result;
-    }
-
-    if (classInfo() == ModuleProgramExecutable::info()) {
-        RELEASE_ASSERT(kind == CodeForCall);
-        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(this);
-        ModuleProgramCodeBlock* baseline = static_cast&lt;ModuleProgramCodeBlock*&gt;(
-            executable-&gt;m_moduleProgramCodeBlock-&gt;baselineVersion());
-        ModuleProgramCodeBlock* result = ModuleProgramCodeBlock::create(vm(),
-            CodeBlock::CopyParsedBlock, *baseline);
-        result-&gt;setAlternative(*vm(), baseline);
-        return result;
-    }
-
-    RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
-    FunctionExecutable* executable = jsCast&lt;FunctionExecutable*&gt;(this);
-    FunctionCodeBlock* baseline = static_cast&lt;FunctionCodeBlock*&gt;(
-        executable-&gt;codeBlockFor(kind)-&gt;baselineVersion());
-    FunctionCodeBlock* result = FunctionCodeBlock::create(vm(),
-        CodeBlock::CopyParsedBlock, *baseline);
-    result-&gt;setAlternative(*vm(), baseline);
-    return result;
-}
-
-static void setupLLInt(VM&amp; vm, CodeBlock* codeBlock)
-{
-    LLInt::setEntrypoint(vm, codeBlock);
-}
-
-static void setupJIT(VM&amp; vm, CodeBlock* codeBlock)
-{
-#if ENABLE(JIT)
-    CompilationResult result = JIT::compile(&amp;vm, codeBlock, JITCompilationMustSucceed);
-    RELEASE_ASSERT(result == CompilationSuccessful);
-#else
-    UNUSED_PARAM(vm);
-    UNUSED_PARAM(codeBlock);
-    UNREACHABLE_FOR_PLATFORM();
-#endif
-}
-
-JSObject* ScriptExecutable::prepareForExecutionImpl(
-    VM&amp; vm, JSFunction* function, JSScope* scope, CodeSpecializationKind kind, CodeBlock*&amp; resultCodeBlock)
-{
-    DeferGCForAWhile deferGC(vm.heap);
-
-    if (vm.getAndClearFailNextNewCodeBlock())
-        return createError(scope-&gt;globalObject()-&gt;globalExec(), ASCIILiteral(&quot;Forced Failure&quot;));
-
-    JSObject* exception = 0;
-    CodeBlock* codeBlock = newCodeBlockFor(kind, function, scope, exception);
-    resultCodeBlock = codeBlock;
-    if (!codeBlock) {
-        RELEASE_ASSERT(exception);
-        return exception;
-    }
-    
-    if (Options::validateBytecode())
-        codeBlock-&gt;validate();
-    
-    if (Options::useLLInt())
-        setupLLInt(vm, codeBlock);
-    else
-        setupJIT(vm, codeBlock);
-    
-    installCode(vm, codeBlock, codeBlock-&gt;codeType(), codeBlock-&gt;specializationKind());
-    return nullptr;
-}
-
-const ClassInfo EvalExecutable::s_info = { &quot;EvalExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(EvalExecutable) };
-
-EvalExecutable* EvalExecutable::create(ExecState* exec, const SourceCode&amp; source, bool isInStrictContext, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType, const VariableEnvironment* variablesUnderTDZ)
-{
-    VM&amp; vm = exec-&gt;vm();
-    auto scope = DECLARE_THROW_SCOPE(vm);
-
-    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
-    if (!globalObject-&gt;evalEnabled()) {
-        throwException(exec, scope, createEvalError(exec, globalObject-&gt;evalDisabledErrorMessage()));
-        return 0;
-    }
-
-    EvalExecutable* executable = new (NotNull, allocateCell&lt;EvalExecutable&gt;(*exec-&gt;heap())) EvalExecutable(exec, source, isInStrictContext, derivedContextType, isArrowFunctionContext, evalContextType);
-    executable-&gt;finishCreation(vm);
-
-    UnlinkedEvalCodeBlock* unlinkedEvalCode = globalObject-&gt;createEvalCodeBlock(exec, executable, variablesUnderTDZ);
-    if (!unlinkedEvalCode)
-        return 0;
-
-    executable-&gt;m_unlinkedEvalCodeBlock.set(vm, executable, unlinkedEvalCode);
-
-    return executable;
-}
-
-EvalExecutable::EvalExecutable(ExecState* exec, const SourceCode&amp; source, bool inStrictContext, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType)
-    : ScriptExecutable(exec-&gt;vm().evalExecutableStructure.get(), exec-&gt;vm(), source, inStrictContext, derivedContextType, isArrowFunctionContext, evalContextType, NoIntrinsic)
-{
-    ASSERT(source.provider()-&gt;sourceType() == SourceProviderSourceType::Program);
-}
-
-void EvalExecutable::destroy(JSCell* cell)
-{
-    static_cast&lt;EvalExecutable*&gt;(cell)-&gt;EvalExecutable::~EvalExecutable();
-}
-
-const ClassInfo ProgramExecutable::s_info = { &quot;ProgramExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(ProgramExecutable) };
-
-ProgramExecutable::ProgramExecutable(ExecState* exec, const SourceCode&amp; source)
-    : ScriptExecutable(exec-&gt;vm().programExecutableStructure.get(), exec-&gt;vm(), source, false, DerivedContextType::None, false, EvalContextType::None, NoIntrinsic)
-{
-    ASSERT(source.provider()-&gt;sourceType() == SourceProviderSourceType::Program);
-    m_typeProfilingStartOffset = 0;
-    m_typeProfilingEndOffset = source.length() - 1;
-    if (exec-&gt;vm().typeProfiler() || exec-&gt;vm().controlFlowProfiler())
-        exec-&gt;vm().functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
-}
-
-void ProgramExecutable::destroy(JSCell* cell)
-{
-    static_cast&lt;ProgramExecutable*&gt;(cell)-&gt;ProgramExecutable::~ProgramExecutable();
-}
-
-const ClassInfo ModuleProgramExecutable::s_info = { &quot;ModuleProgramExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(ModuleProgramExecutable) };
-
-ModuleProgramExecutable::ModuleProgramExecutable(ExecState* exec, const SourceCode&amp; source)
-    : ScriptExecutable(exec-&gt;vm().moduleProgramExecutableStructure.get(), exec-&gt;vm(), source, false, DerivedContextType::None, false, EvalContextType::None, NoIntrinsic)
-{
-    ASSERT(source.provider()-&gt;sourceType() == SourceProviderSourceType::Module);
-    m_typeProfilingStartOffset = 0;
-    m_typeProfilingEndOffset = source.length() - 1;
-    if (exec-&gt;vm().typeProfiler() || exec-&gt;vm().controlFlowProfiler())
-        exec-&gt;vm().functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
-}
-
-ModuleProgramExecutable* ModuleProgramExecutable::create(ExecState* exec, const SourceCode&amp; source)
-{
-    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
-    ModuleProgramExecutable* executable = new (NotNull, allocateCell&lt;ModuleProgramExecutable&gt;(*exec-&gt;heap())) ModuleProgramExecutable(exec, source);
-    executable-&gt;finishCreation(exec-&gt;vm());
-
-    UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCode = globalObject-&gt;createModuleProgramCodeBlock(exec, executable);
-    if (!unlinkedModuleProgramCode)
-        return nullptr;
-    executable-&gt;m_unlinkedModuleProgramCodeBlock.set(exec-&gt;vm(), executable, unlinkedModuleProgramCode);
-
-    executable-&gt;m_moduleEnvironmentSymbolTable.set(exec-&gt;vm(), executable, jsCast&lt;SymbolTable*&gt;(unlinkedModuleProgramCode-&gt;constantRegister(unlinkedModuleProgramCode-&gt;moduleEnvironmentSymbolTableConstantRegisterOffset()).get())-&gt;cloneScopePart(exec-&gt;vm()));
-
-    return executable;
-}
-
-void ModuleProgramExecutable::destroy(JSCell* cell)
-{
-    static_cast&lt;ModuleProgramExecutable*&gt;(cell)-&gt;ModuleProgramExecutable::~ModuleProgramExecutable();
-}
-
-const ClassInfo FunctionExecutable::s_info = { &quot;FunctionExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(FunctionExecutable) };
-
-FunctionExecutable::FunctionExecutable(VM&amp; vm, const SourceCode&amp; source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
-    : ScriptExecutable(vm.functionExecutableStructure.get(), vm, source, unlinkedExecutable-&gt;isInStrictContext(), unlinkedExecutable-&gt;derivedContextType(), false, EvalContextType::None, intrinsic)
-    , m_unlinkedExecutable(vm, this, unlinkedExecutable)
-{
-    RELEASE_ASSERT(!source.isNull());
-    ASSERT(source.length());
-    m_firstLine = firstLine;
-    m_lastLine = lastLine;
-    ASSERT(startColumn != UINT_MAX);
-    ASSERT(endColumn != UINT_MAX);
-    m_startColumn = startColumn;
-    m_endColumn = endColumn;
-    m_parametersStartOffset = unlinkedExecutable-&gt;parametersStartOffset();
-    m_typeProfilingStartOffset = unlinkedExecutable-&gt;typeProfilingStartOffset();
-    m_typeProfilingEndOffset = unlinkedExecutable-&gt;typeProfilingEndOffset();
-}
-
-void FunctionExecutable::finishCreation(VM&amp; vm)
-{
-    Base::finishCreation(vm);
-    m_singletonFunction.set(vm, this, InferredValue::create(vm));
-}
-
-void FunctionExecutable::destroy(JSCell* cell)
-{
-    static_cast&lt;FunctionExecutable*&gt;(cell)-&gt;FunctionExecutable::~FunctionExecutable();
-}
-
-inline const char* samplingDescription(JITCode::JITType jitType)
-{
-    switch (jitType) {
-    case JITCode::InterpreterThunk:
-        return &quot;Interpreter Compilation (TOTAL)&quot;;
-    case JITCode::BaselineJIT:
-        return &quot;Baseline Compilation (TOTAL)&quot;;
-    case JITCode::DFGJIT:
-        return &quot;DFG Compilation (TOTAL)&quot;;
-    case JITCode::FTLJIT:
-        return &quot;FTL Compilation (TOTAL)&quot;;
-    default:
-        RELEASE_ASSERT_NOT_REACHED();
-        return 0;
-    }
-}
-
-void EvalExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
-{
-    EvalExecutable* thisObject = jsCast&lt;EvalExecutable*&gt;(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    ScriptExecutable::visitChildren(thisObject, visitor);
-    visitor.append(&amp;thisObject-&gt;m_unlinkedEvalCodeBlock);
-    if (thisObject-&gt;m_evalCodeBlock)
-        thisObject-&gt;m_evalCodeBlock-&gt;visitWeakly(visitor);
-}
-
-JSObject* ProgramExecutable::checkSyntax(ExecState* exec)
-{
-    ParserError error;
-    VM* vm = &amp;exec-&gt;vm();
-    JSGlobalObject* lexicalGlobalObject = exec-&gt;lexicalGlobalObject();
-    std::unique_ptr&lt;ProgramNode&gt; programNode = parse&lt;ProgramNode&gt;(
-        vm, m_source, Identifier(), JSParserBuiltinMode::NotBuiltin,
-        JSParserStrictMode::NotStrict, JSParserScriptMode::Classic, SourceParseMode::ProgramMode, SuperBinding::NotNeeded, error);
-    if (programNode)
-        return 0;
-    ASSERT(error.isValid());
-    return error.toErrorObject(lexicalGlobalObject, m_source);
-}
-
-JSObject* ProgramExecutable::initializeGlobalProperties(VM&amp; vm, CallFrame* callFrame, JSScope* scope)
-{
-    RELEASE_ASSERT(scope);
-    JSGlobalObject* globalObject = scope-&gt;globalObject();
-    RELEASE_ASSERT(globalObject);
-    ASSERT(&amp;globalObject-&gt;vm() == &amp;vm);
-
-    JSObject* exception = 0;
-    UnlinkedProgramCodeBlock* unlinkedCodeBlock = globalObject-&gt;createProgramCodeBlock(callFrame, this, &amp;exception);
-    if (exception)
-        return exception;
-
-    JSGlobalLexicalEnvironment* globalLexicalEnvironment = globalObject-&gt;globalLexicalEnvironment();
-    const VariableEnvironment&amp; variableDeclarations = unlinkedCodeBlock-&gt;variableDeclarations();
-    const VariableEnvironment&amp; lexicalDeclarations = unlinkedCodeBlock-&gt;lexicalDeclarations();
-    // The ES6 spec says that no vars/global properties/let/const can be duplicated in the global scope.
-    // This carried out section 15.1.8 of the ES6 spec: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-globaldeclarationinstantiation
-    {
-        ExecState* exec = globalObject-&gt;globalExec();
-        // Check for intersection of &quot;var&quot; and &quot;let&quot;/&quot;const&quot;/&quot;class&quot;
-        for (auto&amp; entry : lexicalDeclarations) {
-            if (variableDeclarations.contains(entry.key))
-                return createSyntaxError(exec, makeString(&quot;Can't create duplicate variable: '&quot;, String(entry.key.get()), &quot;'&quot;));
-        }
-
-        // Check if any new &quot;let&quot;/&quot;const&quot;/&quot;class&quot; will shadow any pre-existing global property names, or &quot;var&quot;/&quot;let&quot;/&quot;const&quot; variables.
-        // It's an error to introduce a shadow.
-        for (auto&amp; entry : lexicalDeclarations) {
-            if (globalObject-&gt;hasProperty(exec, entry.key.get())) {
-                // The ES6 spec says that just RestrictedGlobalProperty can't be shadowed
-                // This carried out section 8.1.1.4.14 of the ES6 spec: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-hasrestrictedglobalproperty
-                PropertyDescriptor descriptor;
-                globalObject-&gt;getOwnPropertyDescriptor(exec, entry.key.get(), descriptor);
-                
-                if (descriptor.value() != jsUndefined() &amp;&amp; !descriptor.configurable())
-                    return createSyntaxError(exec, makeString(&quot;Can't create duplicate variable that shadows a global property: '&quot;, String(entry.key.get()), &quot;'&quot;));
-            }
-                
-            if (globalLexicalEnvironment-&gt;hasProperty(exec, entry.key.get())) {
-                if (UNLIKELY(entry.value.isConst() &amp;&amp; !vm.globalConstRedeclarationShouldThrow() &amp;&amp; !isStrictMode())) {
-                    // We only allow &quot;const&quot; duplicate declarations under this setting.
-                    // For example, we don't &quot;let&quot; variables to be overridden by &quot;const&quot; variables.
-                    if (globalLexicalEnvironment-&gt;isConstVariable(entry.key.get()))
-                        continue;
-                }
-                return createSyntaxError(exec, makeString(&quot;Can't create duplicate variable: '&quot;, String(entry.key.get()), &quot;'&quot;));
-            }
-        }
-
-        // Check if any new &quot;var&quot;s will shadow any previous &quot;let&quot;/&quot;const&quot;/&quot;class&quot; names.
-        // It's an error to introduce a shadow.
-        if (!globalLexicalEnvironment-&gt;isEmpty()) {
-            for (auto&amp; entry : variableDeclarations) {
-                if (globalLexicalEnvironment-&gt;hasProperty(exec, entry.key.get()))
-                    return createSyntaxError(exec, makeString(&quot;Can't create duplicate variable: '&quot;, String(entry.key.get()), &quot;'&quot;));
-            }
-        }
-    }
-
-
-    m_unlinkedProgramCodeBlock.set(vm, this, unlinkedCodeBlock);
-
-    BatchedTransitionOptimizer optimizer(vm, globalObject);
-
-    for (size_t i = 0, numberOfFunctions = unlinkedCodeBlock-&gt;numberOfFunctionDecls(); i &lt; numberOfFunctions; ++i) {
-        UnlinkedFunctionExecutable* unlinkedFunctionExecutable = unlinkedCodeBlock-&gt;functionDecl(i);
-        ASSERT(!unlinkedFunctionExecutable-&gt;name().isEmpty());
-        globalObject-&gt;addFunction(callFrame, unlinkedFunctionExecutable-&gt;name());
-        if (vm.typeProfiler() || vm.controlFlowProfiler()) {
-            vm.functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), 
-                unlinkedFunctionExecutable-&gt;typeProfilingStartOffset(), 
-                unlinkedFunctionExecutable-&gt;typeProfilingEndOffset());
-        }
-    }
-
-    for (auto&amp; entry : variableDeclarations) {
-        ASSERT(entry.value.isVar());
-        globalObject-&gt;addVar(callFrame, Identifier::fromUid(&amp;vm, entry.key.get()));
-    }
-
-    {
-        JSGlobalLexicalEnvironment* globalLexicalEnvironment = jsCast&lt;JSGlobalLexicalEnvironment*&gt;(globalObject-&gt;globalScope());
-        SymbolTable* symbolTable = globalLexicalEnvironment-&gt;symbolTable();
-        ConcurrentJITLocker locker(symbolTable-&gt;m_lock);
-        for (auto&amp; entry : lexicalDeclarations) {
-            if (UNLIKELY(entry.value.isConst() &amp;&amp; !vm.globalConstRedeclarationShouldThrow() &amp;&amp; !isStrictMode())) {
-                if (symbolTable-&gt;contains(locker, entry.key.get()))
-                    continue;
-            }
-            ScopeOffset offset = symbolTable-&gt;takeNextScopeOffset(locker);
-            SymbolTableEntry newEntry(VarOffset(offset), entry.value.isConst() ? ReadOnly : 0);
-            newEntry.prepareToWatch();
-            symbolTable-&gt;add(locker, entry.key.get(), newEntry);
-            
-            ScopeOffset offsetForAssert = globalLexicalEnvironment-&gt;addVariables(1, jsTDZValue());
-            RELEASE_ASSERT(offsetForAssert == offset);
-        }
-    }
-    return 0;
-}
-
-void ProgramExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
-{
-    ProgramExecutable* thisObject = jsCast&lt;ProgramExecutable*&gt;(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    ScriptExecutable::visitChildren(thisObject, visitor);
-    visitor.append(&amp;thisObject-&gt;m_unlinkedProgramCodeBlock);
-    if (thisObject-&gt;m_programCodeBlock)
-        thisObject-&gt;m_programCodeBlock-&gt;visitWeakly(visitor);
-}
-
-void ModuleProgramExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
-{
-    ModuleProgramExecutable* thisObject = jsCast&lt;ModuleProgramExecutable*&gt;(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    ScriptExecutable::visitChildren(thisObject, visitor);
-    visitor.append(&amp;thisObject-&gt;m_unlinkedModuleProgramCodeBlock);
-    visitor.append(&amp;thisObject-&gt;m_moduleEnvironmentSymbolTable);
-    if (thisObject-&gt;m_moduleProgramCodeBlock)
-        thisObject-&gt;m_moduleProgramCodeBlock-&gt;visitWeakly(visitor);
-}
-
-FunctionCodeBlock* FunctionExecutable::baselineCodeBlockFor(CodeSpecializationKind kind)
-{
-    FunctionCodeBlock* result;
-    if (kind == CodeForCall)
-        result = m_codeBlockForCall.get();
-    else {
-        RELEASE_ASSERT(kind == CodeForConstruct);
-        result = m_codeBlockForConstruct.get();
-    }
-    if (!result)
-        return 0;
-    return static_cast&lt;FunctionCodeBlock*&gt;(result-&gt;baselineAlternative());
-}
-
-void FunctionExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
-{
-    FunctionExecutable* thisObject = jsCast&lt;FunctionExecutable*&gt;(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    ScriptExecutable::visitChildren(thisObject, visitor);
-    if (thisObject-&gt;m_codeBlockForCall)
-        thisObject-&gt;m_codeBlockForCall-&gt;visitWeakly(visitor);
-    if (thisObject-&gt;m_codeBlockForConstruct)
-        thisObject-&gt;m_codeBlockForConstruct-&gt;visitWeakly(visitor);
-    visitor.append(&amp;thisObject-&gt;m_unlinkedExecutable);
-    visitor.append(&amp;thisObject-&gt;m_singletonFunction);
-}
-
-FunctionExecutable* FunctionExecutable::fromGlobalCode(
-    const Identifier&amp; name, ExecState&amp; exec, const SourceCode&amp; source, 
-    JSObject*&amp; exception, int overrideLineNumber)
-{
-    UnlinkedFunctionExecutable* unlinkedExecutable = 
-        UnlinkedFunctionExecutable::fromGlobalCode(
-            name, exec, source, exception, overrideLineNumber);
-    if (!unlinkedExecutable)
-        return nullptr;
-
-    return unlinkedExecutable-&gt;link(exec.vm(), source, overrideLineNumber);
-}
-
-#if ENABLE(WEBASSEMBLY)
-const ClassInfo WebAssemblyExecutable::s_info = { &quot;WebAssemblyExecutable&quot;, &amp;ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(WebAssemblyExecutable) };
-
-WebAssemblyExecutable::WebAssemblyExecutable(VM&amp; vm, const SourceCode&amp; source, unsigned functionIndex)
-    : ExecutableBase(vm, vm.webAssemblyExecutableStructure.get(), NUM_PARAMETERS_NOT_COMPILED, NoIntrinsic)
-    , m_source(source)
-    , m_functionIndex(functionIndex)
-{
-    ASSERT(source.provider()-&gt;sourceType() == SourceProviderSourceType::WebAssembly);
-}
-
-void WebAssemblyExecutable::destroy(JSCell* cell)
-{
-    static_cast&lt;WebAssemblyExecutable*&gt;(cell)-&gt;WebAssemblyExecutable::~WebAssemblyExecutable();
-}
-
-void WebAssemblyExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
-{
-    WebAssemblyExecutable* thisObject = jsCast&lt;WebAssemblyExecutable*&gt;(cell);
-    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
-    ExecutableBase::visitChildren(thisObject, visitor);
-    if (thisObject-&gt;m_codeBlockForCall)
-        thisObject-&gt;m_codeBlockForCall-&gt;visitWeakly(visitor);
-}
-#endif
-
-void ExecutableBase::dump(PrintStream&amp; out) const
-{
-    ExecutableBase* realThis = const_cast&lt;ExecutableBase*&gt;(this);
-    
-    if (classInfo() == NativeExecutable::info()) {
-        NativeExecutable* native = jsCast&lt;NativeExecutable*&gt;(realThis);
-        out.print(&quot;NativeExecutable:&quot;, RawPointer(bitwise_cast&lt;void*&gt;(native-&gt;function())), &quot;/&quot;, RawPointer(bitwise_cast&lt;void*&gt;(native-&gt;constructor())));
-        return;
-    }
-    
-    if (classInfo() == EvalExecutable::info()) {
-        EvalExecutable* eval = jsCast&lt;EvalExecutable*&gt;(realThis);
-        if (CodeBlock* codeBlock = eval-&gt;codeBlock())
-            out.print(*codeBlock);
-        else
-            out.print(&quot;EvalExecutable w/o CodeBlock&quot;);
-        return;
-    }
-    
-    if (classInfo() == ProgramExecutable::info()) {
-        ProgramExecutable* eval = jsCast&lt;ProgramExecutable*&gt;(realThis);
-        if (CodeBlock* codeBlock = eval-&gt;codeBlock())
-            out.print(*codeBlock);
-        else
-            out.print(&quot;ProgramExecutable w/o CodeBlock&quot;);
-        return;
-    }
-
-    if (classInfo() == ModuleProgramExecutable::info()) {
-        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(realThis);
-        if (CodeBlock* codeBlock = executable-&gt;codeBlock())
-            out.print(*codeBlock);
-        else
-            out.print(&quot;ModuleProgramExecutable w/o CodeBlock&quot;);
-        return;
-    }
-    
-    FunctionExecutable* function = jsCast&lt;FunctionExecutable*&gt;(realThis);
-    if (!function-&gt;eitherCodeBlock())
-        out.print(&quot;FunctionExecutable w/o CodeBlock&quot;);
-    else {
-        CommaPrinter comma(&quot;/&quot;);
-        if (function-&gt;codeBlockForCall())
-            out.print(comma, *function-&gt;codeBlockForCall());
-        if (function-&gt;codeBlockForConstruct())
-            out.print(comma, *function-&gt;codeBlockForConstruct());
-    }
-}
-
-CodeBlockHash ExecutableBase::hashFor(CodeSpecializationKind kind) const
-{
-    if (this-&gt;classInfo() == NativeExecutable::info())
-        return jsCast&lt;const NativeExecutable*&gt;(this)-&gt;hashFor(kind);
-    
-    return jsCast&lt;const ScriptExecutable*&gt;(this)-&gt;hashFor(kind);
-}
-
-CodeBlockHash NativeExecutable::hashFor(CodeSpecializationKind kind) const
-{
-    if (kind == CodeForCall)
-        return CodeBlockHash(static_cast&lt;unsigned&gt;(bitwise_cast&lt;size_t&gt;(m_function)));
-    
-    RELEASE_ASSERT(kind == CodeForConstruct);
-    return CodeBlockHash(static_cast&lt;unsigned&gt;(bitwise_cast&lt;size_t&gt;(m_constructor)));
-}
-
-CodeBlockHash ScriptExecutable::hashFor(CodeSpecializationKind kind) const
-{
-    return CodeBlockHash(source(), kind);
-}
-
-}
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/JavaScriptCore/runtime/Executable.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Executable.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/Executable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -1,776 +0,0 @@
</span><del>-/*
- * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
- */
-
-#pragma once
-
-#include &quot;ArityCheckMode.h&quot;
-#include &quot;CallData.h&quot;
-#include &quot;CodeBlockHash.h&quot;
-#include &quot;CodeSpecializationKind.h&quot;
-#include &quot;CompilationResult.h&quot;
-#include &quot;ExecutableInfo.h&quot;
-#include &quot;HandlerInfo.h&quot;
-#include &quot;InferredValue.h&quot;
-#include &quot;JITCode.h&quot;
-#include &quot;JSGlobalObject.h&quot;
-#include &quot;SourceCode.h&quot;
-#include &quot;TypeSet.h&quot;
-#include &quot;UnlinkedCodeBlock.h&quot;
-#include &quot;UnlinkedFunctionExecutable.h&quot;
-
-namespace JSC {
-
-class CodeBlock;
-class EvalCodeBlock;
-class FunctionCodeBlock;
-class JSScope;
-class LLIntOffsetsExtractor;
-class ModuleProgramCodeBlock;
-class ProgramCodeBlock;
-class WebAssemblyCodeBlock;
-
-enum CompilationKind { FirstCompilation, OptimizingCompilation };
-
-inline bool isCall(CodeSpecializationKind kind)
-{
-    if (kind == CodeForCall)
-        return true;
-    ASSERT(kind == CodeForConstruct);
-    return false;
-}
-
-class ExecutableBase : public JSCell {
-    friend class JIT;
-
-protected:
-    static const int NUM_PARAMETERS_IS_HOST = 0;
-    static const int NUM_PARAMETERS_NOT_COMPILED = -1;
-
-    ExecutableBase(VM&amp; vm, Structure* structure, int numParameters, Intrinsic intrinsic)
-        : JSCell(vm, structure)
-        , m_numParametersForCall(numParameters)
-        , m_numParametersForConstruct(numParameters)
-        , m_intrinsic(intrinsic)
-    {
-    }
-
-    void finishCreation(VM&amp; vm)
-    {
-        Base::finishCreation(vm);
-    }
-
-public:
-    typedef JSCell Base;
-    static const unsigned StructureFlags = Base::StructureFlags;
-
-    static const bool needsDestruction = true;
-    static void destroy(JSCell*);
-        
-    CodeBlockHash hashFor(CodeSpecializationKind) const;
-
-    bool isEvalExecutable() const
-    {
-        return type() == EvalExecutableType;
-    }
-    bool isFunctionExecutable() const
-    {
-        return type() == FunctionExecutableType;
-    }
-    bool isProgramExecutable() const
-    {
-        return type() == ProgramExecutableType;
-    }
-    bool isModuleProgramExecutable()
-    {
-        return type() == ModuleProgramExecutableType;
-    }
-
-
-    bool isHostFunction() const
-    {
-        ASSERT((m_numParametersForCall == NUM_PARAMETERS_IS_HOST) == (m_numParametersForConstruct == NUM_PARAMETERS_IS_HOST));
-        return m_numParametersForCall == NUM_PARAMETERS_IS_HOST;
-    }
-
-#if ENABLE(WEBASSEMBLY)
-    bool isWebAssemblyExecutable() const
-    {
-        return type() == WebAssemblyExecutableType;
-    }
-#endif
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(vm, globalObject, proto, TypeInfo(CellType, StructureFlags), info()); }
-        
-    void clearCode();
-
-    DECLARE_EXPORT_INFO;
-
-protected:
-    int m_numParametersForCall;
-    int m_numParametersForConstruct;
-
-public:
-    PassRefPtr&lt;JITCode&gt; generatedJITCodeForCall()
-    {
-        ASSERT(m_jitCodeForCall);
-        return m_jitCodeForCall;
-    }
-
-    PassRefPtr&lt;JITCode&gt; generatedJITCodeForConstruct()
-    {
-        ASSERT(m_jitCodeForConstruct);
-        return m_jitCodeForConstruct;
-    }
-        
-    PassRefPtr&lt;JITCode&gt; generatedJITCodeFor(CodeSpecializationKind kind)
-    {
-        if (kind == CodeForCall)
-            return generatedJITCodeForCall();
-        ASSERT(kind == CodeForConstruct);
-        return generatedJITCodeForConstruct();
-    }
-    
-    MacroAssemblerCodePtr entrypointFor(CodeSpecializationKind kind, ArityCheckMode arity)
-    {
-        // Check if we have a cached result. We only have it for arity check because we use the
-        // no-arity entrypoint in non-virtual calls, which will &quot;cache&quot; this value directly in
-        // machine code.
-        if (arity == MustCheckArity) {
-            switch (kind) {
-            case CodeForCall:
-                if (MacroAssemblerCodePtr result = m_jitCodeForCallWithArityCheck)
-                    return result;
-                break;
-            case CodeForConstruct:
-                if (MacroAssemblerCodePtr result = m_jitCodeForConstructWithArityCheck)
-                    return result;
-                break;
-            }
-        }
-        MacroAssemblerCodePtr result =
-            generatedJITCodeFor(kind)-&gt;addressForCall(arity);
-        if (arity == MustCheckArity) {
-            // Cache the result; this is necessary for the JIT's virtual call optimizations.
-            switch (kind) {
-            case CodeForCall:
-                m_jitCodeForCallWithArityCheck = result;
-                break;
-            case CodeForConstruct:
-                m_jitCodeForConstructWithArityCheck = result;
-                break;
-            }
-        }
-        return result;
-    }
-
-    static ptrdiff_t offsetOfJITCodeWithArityCheckFor(
-        CodeSpecializationKind kind)
-    {
-        switch (kind) {
-        case CodeForCall:
-            return OBJECT_OFFSETOF(ExecutableBase, m_jitCodeForCallWithArityCheck);
-        case CodeForConstruct:
-            return OBJECT_OFFSETOF(ExecutableBase, m_jitCodeForConstructWithArityCheck);
-        }
-        RELEASE_ASSERT_NOT_REACHED();
-        return 0;
-    }
-    
-    static ptrdiff_t offsetOfNumParametersFor(CodeSpecializationKind kind)
-    {
-        if (kind == CodeForCall)
-            return OBJECT_OFFSETOF(ExecutableBase, m_numParametersForCall);
-        ASSERT(kind == CodeForConstruct);
-        return OBJECT_OFFSETOF(ExecutableBase, m_numParametersForConstruct);
-    }
-
-    bool hasJITCodeForCall() const
-    {
-        return m_numParametersForCall &gt;= 0;
-    }
-        
-    bool hasJITCodeForConstruct() const
-    {
-        return m_numParametersForConstruct &gt;= 0;
-    }
-        
-    bool hasJITCodeFor(CodeSpecializationKind kind) const
-    {
-        if (kind == CodeForCall)
-            return hasJITCodeForCall();
-        ASSERT(kind == CodeForConstruct);
-        return hasJITCodeForConstruct();
-    }
-
-    // Intrinsics are only for calls, currently.
-    Intrinsic intrinsic() const { return m_intrinsic; }
-        
-    Intrinsic intrinsicFor(CodeSpecializationKind kind) const
-    {
-        if (isCall(kind))
-            return intrinsic();
-        return NoIntrinsic;
-    }
-    
-    void dump(PrintStream&amp;) const;
-        
-protected:
-    Intrinsic m_intrinsic;
-    RefPtr&lt;JITCode&gt; m_jitCodeForCall;
-    RefPtr&lt;JITCode&gt; m_jitCodeForConstruct;
-    MacroAssemblerCodePtr m_jitCodeForCallWithArityCheck;
-    MacroAssemblerCodePtr m_jitCodeForConstructWithArityCheck;
-};
-
-class NativeExecutable final : public ExecutableBase {
-    friend class JIT;
-    friend class LLIntOffsetsExtractor;
-public:
-    typedef ExecutableBase Base;
-    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
-
-    static NativeExecutable* create(VM&amp; vm, PassRefPtr&lt;JITCode&gt; callThunk, NativeFunction function, PassRefPtr&lt;JITCode&gt; constructThunk, NativeFunction constructor, Intrinsic intrinsic, const String&amp; name);
-
-    static void destroy(JSCell*);
-
-    CodeBlockHash hashFor(CodeSpecializationKind) const;
-
-    NativeFunction function() { return m_function; }
-    NativeFunction constructor() { return m_constructor; }
-        
-    NativeFunction nativeFunctionFor(CodeSpecializationKind kind)
-    {
-        if (kind == CodeForCall)
-            return function();
-        ASSERT(kind == CodeForConstruct);
-        return constructor();
-    }
-        
-    static ptrdiff_t offsetOfNativeFunctionFor(CodeSpecializationKind kind)
-    {
-        if (kind == CodeForCall)
-            return OBJECT_OFFSETOF(NativeExecutable, m_function);
-        ASSERT(kind == CodeForConstruct);
-        return OBJECT_OFFSETOF(NativeExecutable, m_constructor);
-    }
-
-    static Structure* createStructure(VM&amp;, JSGlobalObject*, JSValue proto);
-        
-    DECLARE_INFO;
-
-    const String&amp; name() const { return m_name; }
-
-protected:
-    void finishCreation(VM&amp;, PassRefPtr&lt;JITCode&gt; callThunk, PassRefPtr&lt;JITCode&gt; constructThunk, const String&amp; name);
-
-private:
-    friend class ExecutableBase;
-
-    NativeExecutable(VM&amp;, NativeFunction function, NativeFunction constructor, Intrinsic);
-
-    NativeFunction m_function;
-    NativeFunction m_constructor;
-
-    String m_name;
-};
-
-class ScriptExecutable : public ExecutableBase {
-public:
-    typedef ExecutableBase Base;
-    static const unsigned StructureFlags = Base::StructureFlags;
-
-    static void destroy(JSCell*);
-        
-    CodeBlockHash hashFor(CodeSpecializationKind) const;
-
-    const SourceCode&amp; source() const { return m_source; }
-    intptr_t sourceID() const { return m_source.providerID(); }
-    const String&amp; sourceURL() const { return m_source.provider()-&gt;url(); }
-    int firstLine() const { return m_firstLine; }
-    void setOverrideLineNumber(int overrideLineNumber) { m_overrideLineNumber = overrideLineNumber; }
-    bool hasOverrideLineNumber() const { return m_overrideLineNumber != -1; }
-    int overrideLineNumber() const { return m_overrideLineNumber; }
-    int lastLine() const { return m_lastLine; }
-    unsigned startColumn() const { return m_startColumn; }
-    unsigned endColumn() const { return m_endColumn; }
-    unsigned typeProfilingStartOffset() const { return m_typeProfilingStartOffset; }
-    unsigned typeProfilingEndOffset() const { return m_typeProfilingEndOffset; }
-
-    bool usesEval() const { return m_features &amp; EvalFeature; }
-    bool usesArguments() const { return m_features &amp; ArgumentsFeature; }
-    bool isArrowFunctionContext() const { return m_isArrowFunctionContext; }
-    bool isStrictMode() const { return m_features &amp; StrictModeFeature; }
-    DerivedContextType derivedContextType() const { return static_cast&lt;DerivedContextType&gt;(m_derivedContextType); }
-    EvalContextType evalContextType() const { return static_cast&lt;EvalContextType&gt;(m_evalContextType); }
-
-    ECMAMode ecmaMode() const { return isStrictMode() ? StrictMode : NotStrictMode; }
-        
-    void setNeverInline(bool value) { m_neverInline = value; }
-    void setNeverOptimize(bool value) { m_neverOptimize = value; }
-    void setNeverFTLOptimize(bool value) { m_neverFTLOptimize = value; }
-    void setDidTryToEnterInLoop(bool value) { m_didTryToEnterInLoop = value; }
-    void setCanUseOSRExitFuzzing(bool value) { m_canUseOSRExitFuzzing = value; }
-    bool neverInline() const { return m_neverInline; }
-    bool neverOptimize() const { return m_neverOptimize; }
-    bool neverFTLOptimize() const { return m_neverFTLOptimize; }
-    bool didTryToEnterInLoop() const { return m_didTryToEnterInLoop; }
-    bool isInliningCandidate() const { return !neverInline(); }
-    bool isOkToOptimize() const { return !neverOptimize(); }
-    bool canUseOSRExitFuzzing() const { return m_canUseOSRExitFuzzing; }
-    
-    bool* addressOfDidTryToEnterInLoop() { return &amp;m_didTryToEnterInLoop; }
-
-    CodeFeatures features() const { return m_features; }
-        
-    DECLARE_EXPORT_INFO;
-
-    void recordParse(CodeFeatures features, bool hasCapturedVariables, int firstLine, int lastLine, unsigned startColumn, unsigned endColumn)
-    {
-        m_features = features;
-        m_hasCapturedVariables = hasCapturedVariables;
-        m_firstLine = firstLine;
-        m_lastLine = lastLine;
-        ASSERT(startColumn != UINT_MAX);
-        m_startColumn = startColumn;
-        ASSERT(endColumn != UINT_MAX);
-        m_endColumn = endColumn;
-    }
-
-    void installCode(CodeBlock*);
-    void installCode(VM&amp;, CodeBlock*, CodeType, CodeSpecializationKind);
-    CodeBlock* newCodeBlockFor(CodeSpecializationKind, JSFunction*, JSScope*, JSObject*&amp; exception);
-    CodeBlock* newReplacementCodeBlockFor(CodeSpecializationKind);
-
-    // This function has an interesting GC story. Callers of this function are asking us to create a CodeBlock
-    // that is not jettisoned before this function returns. Callers are essentially asking for a strong reference
-    // to the CodeBlock. Because the Executable may be allocating the CodeBlock, we require callers to pass in
-    // their CodeBlock*&amp; reference because it's safe for CodeBlock to be jettisoned if Executable is the only thing
-    // to point to it. This forces callers to have a CodeBlock* in a register or on the stack that will be marked
-    // by conservative GC if a GC happens after we create the CodeBlock.
-    template &lt;typename ExecutableType&gt;
-    JSObject* prepareForExecution(VM&amp;, JSFunction*, JSScope*, CodeSpecializationKind, CodeBlock*&amp; resultCodeBlock);
-
-    template &lt;typename Functor&gt; void forEachCodeBlock(Functor&amp;&amp;);
-
-private:
-    friend class ExecutableBase;
-    JSObject* prepareForExecutionImpl(VM&amp;, JSFunction*, JSScope*, CodeSpecializationKind, CodeBlock*&amp;);
-
-protected:
-    ScriptExecutable(Structure*, VM&amp;, const SourceCode&amp;, bool isInStrictContext, DerivedContextType, bool isInArrowFunctionContext, EvalContextType, Intrinsic);
-
-    void finishCreation(VM&amp; vm)
-    {
-        Base::finishCreation(vm);
-        vm.heap.addExecutable(this); // Balanced by Heap::deleteUnmarkedCompiledCode().
-
-#if ENABLE(CODEBLOCK_SAMPLING)
-        if (SamplingTool* sampler = vm.interpreter-&gt;sampler())
-            sampler-&gt;notifyOfScope(vm, this);
-#endif
-    }
-
-    CodeFeatures m_features;
-    bool m_didTryToEnterInLoop;
-    bool m_hasCapturedVariables : 1;
-    bool m_neverInline : 1;
-    bool m_neverOptimize : 1;
-    bool m_neverFTLOptimize : 1;
-    bool m_isArrowFunctionContext : 1;
-    bool m_canUseOSRExitFuzzing : 1;
-    unsigned m_derivedContextType : 2; // DerivedContextType
-    unsigned m_evalContextType : 2; // EvalContextType
-
-    int m_overrideLineNumber;
-    int m_firstLine;
-    int m_lastLine;
-    unsigned m_startColumn;
-    unsigned m_endColumn;
-    unsigned m_typeProfilingStartOffset;
-    unsigned m_typeProfilingEndOffset;
-    SourceCode m_source;
-};
-
-class EvalExecutable final : public ScriptExecutable {
-    friend class LLIntOffsetsExtractor;
-public:
-    typedef ScriptExecutable Base;
-    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
-
-    static void destroy(JSCell*);
-
-    EvalCodeBlock* codeBlock()
-    {
-        return m_evalCodeBlock.get();
-    }
-
-    static EvalExecutable* create(ExecState*, const SourceCode&amp;, bool isInStrictContext, DerivedContextType, bool isArrowFunctionContext, EvalContextType, const VariableEnvironment*);
-
-    PassRefPtr&lt;JITCode&gt; generatedJITCode()
-    {
-        return generatedJITCodeForCall();
-    }
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
-    {
-        return Structure::create(vm, globalObject, proto, TypeInfo(EvalExecutableType, StructureFlags), info());
-    }
-        
-    DECLARE_INFO;
-
-    ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, JSParserScriptMode::Classic, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext(), false, evalContextType()); }
-
-    unsigned numVariables() { return m_unlinkedEvalCodeBlock-&gt;numVariables(); }
-    unsigned numberOfFunctionDecls() { return m_unlinkedEvalCodeBlock-&gt;numberOfFunctionDecls(); }
-
-private:
-    friend class ExecutableBase;
-    friend class ScriptExecutable;
-
-    EvalExecutable(ExecState*, const SourceCode&amp;, bool inStrictContext, DerivedContextType, bool isArrowFunctionContext, EvalContextType);
-
-    static void visitChildren(JSCell*, SlotVisitor&amp;);
-
-    WriteBarrier&lt;EvalCodeBlock&gt; m_evalCodeBlock;
-    WriteBarrier&lt;UnlinkedEvalCodeBlock&gt; m_unlinkedEvalCodeBlock;
-};
-
-class ProgramExecutable final : public ScriptExecutable {
-    friend class LLIntOffsetsExtractor;
-public:
-    typedef ScriptExecutable Base;
-    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
-
-    static ProgramExecutable* create(ExecState* exec, const SourceCode&amp; source)
-    {
-        ProgramExecutable* executable = new (NotNull, allocateCell&lt;ProgramExecutable&gt;(*exec-&gt;heap())) ProgramExecutable(exec, source);
-        executable-&gt;finishCreation(exec-&gt;vm());
-        return executable;
-    }
-
-
-    JSObject* initializeGlobalProperties(VM&amp;, CallFrame*, JSScope*);
-
-    static void destroy(JSCell*);
-
-    ProgramCodeBlock* codeBlock()
-    {
-        return m_programCodeBlock.get();
-    }
-
-    JSObject* checkSyntax(ExecState*);
-
-    PassRefPtr&lt;JITCode&gt; generatedJITCode()
-    {
-        return generatedJITCodeForCall();
-    }
-        
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
-    {
-        return Structure::create(vm, globalObject, proto, TypeInfo(ProgramExecutableType, StructureFlags), info());
-    }
-        
-    DECLARE_INFO;
-
-    ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, JSParserScriptMode::Classic, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext(), false, EvalContextType::None); }
-
-private:
-    friend class ExecutableBase;
-    friend class ScriptExecutable;
-
-    ProgramExecutable(ExecState*, const SourceCode&amp;);
-
-    static void visitChildren(JSCell*, SlotVisitor&amp;);
-
-    WriteBarrier&lt;UnlinkedProgramCodeBlock&gt; m_unlinkedProgramCodeBlock;
-    WriteBarrier&lt;ProgramCodeBlock&gt; m_programCodeBlock;
-};
-
-class ModuleProgramExecutable final : public ScriptExecutable {
-    friend class LLIntOffsetsExtractor;
-public:
-    typedef ScriptExecutable Base;
-    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
-
-    static ModuleProgramExecutable* create(ExecState*, const SourceCode&amp;);
-
-    static void destroy(JSCell*);
-
-    ModuleProgramCodeBlock* codeBlock()
-    {
-        return m_moduleProgramCodeBlock.get();
-    }
-
-    PassRefPtr&lt;JITCode&gt; generatedJITCode()
-    {
-        return generatedJITCodeForCall();
-    }
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
-    {
-        return Structure::create(vm, globalObject, proto, TypeInfo(ModuleProgramExecutableType, StructureFlags), info());
-    }
-
-    DECLARE_INFO;
-
-    ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, JSParserScriptMode::Module, SuperBinding::NotNeeded, SourceParseMode::ModuleEvaluateMode, derivedContextType(), isArrowFunctionContext(), false, EvalContextType::None); }
-
-    UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCodeBlock() { return m_unlinkedModuleProgramCodeBlock.get(); }
-
-    SymbolTable* moduleEnvironmentSymbolTable() { return m_moduleEnvironmentSymbolTable.get(); }
-
-private:
-    friend class ExecutableBase;
-    friend class ScriptExecutable;
-
-    ModuleProgramExecutable(ExecState*, const SourceCode&amp;);
-
-    static void visitChildren(JSCell*, SlotVisitor&amp;);
-
-    WriteBarrier&lt;UnlinkedModuleProgramCodeBlock&gt; m_unlinkedModuleProgramCodeBlock;
-    WriteBarrier&lt;SymbolTable&gt; m_moduleEnvironmentSymbolTable;
-    WriteBarrier&lt;ModuleProgramCodeBlock&gt; m_moduleProgramCodeBlock;
-};
-
-class FunctionExecutable final : public ScriptExecutable {
-    friend class JIT;
-    friend class LLIntOffsetsExtractor;
-public:
-    typedef ScriptExecutable Base;
-    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
-
-    static FunctionExecutable* create(
-        VM&amp; vm, const SourceCode&amp; source, UnlinkedFunctionExecutable* unlinkedExecutable, 
-        unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
-    {
-        FunctionExecutable* executable = new (NotNull, allocateCell&lt;FunctionExecutable&gt;(vm.heap)) FunctionExecutable(vm, source, unlinkedExecutable, firstLine, lastLine, startColumn, endColumn, intrinsic);
-        executable-&gt;finishCreation(vm);
-        return executable;
-    }
-    static FunctionExecutable* fromGlobalCode(
-        const Identifier&amp; name, ExecState&amp;, const SourceCode&amp;, 
-        JSObject*&amp; exception, int overrideLineNumber);
-
-    static void destroy(JSCell*);
-        
-    UnlinkedFunctionExecutable* unlinkedExecutable() const
-    {
-        return m_unlinkedExecutable.get();
-    }
-
-    // Returns either call or construct bytecode. This can be appropriate
-    // for answering questions that that don't vary between call and construct --
-    // for example, argumentsRegister().
-    FunctionCodeBlock* eitherCodeBlock()
-    {
-        if (m_codeBlockForCall)
-            return m_codeBlockForCall.get();
-        return m_codeBlockForConstruct.get();
-    }
-        
-    bool isGeneratedForCall() const
-    {
-        return !!m_codeBlockForCall;
-    }
-
-    FunctionCodeBlock* codeBlockForCall()
-    {
-        return m_codeBlockForCall.get();
-    }
-
-    bool isGeneratedForConstruct() const
-    {
-        return m_codeBlockForConstruct.get();
-    }
-
-    FunctionCodeBlock* codeBlockForConstruct()
-    {
-        return m_codeBlockForConstruct.get();
-    }
-        
-    bool isGeneratedFor(CodeSpecializationKind kind)
-    {
-        if (kind == CodeForCall)
-            return isGeneratedForCall();
-        ASSERT(kind == CodeForConstruct);
-        return isGeneratedForConstruct();
-    }
-        
-    FunctionCodeBlock* codeBlockFor(CodeSpecializationKind kind)
-    {
-        if (kind == CodeForCall)
-            return codeBlockForCall();
-        ASSERT(kind == CodeForConstruct);
-        return codeBlockForConstruct();
-    }
-
-    FunctionCodeBlock* baselineCodeBlockFor(CodeSpecializationKind);
-        
-    FunctionCodeBlock* profiledCodeBlockFor(CodeSpecializationKind kind)
-    {
-        return baselineCodeBlockFor(kind);
-    }
-
-    RefPtr&lt;TypeSet&gt; returnStatementTypeSet() 
-    {
-        if (!m_returnStatementTypeSet)
-            m_returnStatementTypeSet = TypeSet::create();
-
-        return m_returnStatementTypeSet;
-    }
-        
-    FunctionMode functionMode() { return m_unlinkedExecutable-&gt;functionMode(); }
-    bool isBuiltinFunction() const { return m_unlinkedExecutable-&gt;isBuiltinFunction(); }
-    ConstructAbility constructAbility() const { return m_unlinkedExecutable-&gt;constructAbility(); }
-    bool isClass() const { return !classSource().isNull(); }
-    bool isArrowFunction() const { return parseMode() == SourceParseMode::ArrowFunctionMode; }
-    bool isGetter() const { return parseMode() == SourceParseMode::GetterMode; }
-    bool isSetter() const { return parseMode() == SourceParseMode::SetterMode; }
-    bool isGenerator() const { return SourceParseModeSet(SourceParseMode::GeneratorBodyMode, SourceParseMode::GeneratorWrapperFunctionMode).contains(parseMode()); }
-    bool isMethod() const { return parseMode() == SourceParseMode::MethodMode; }
-    bool hasCallerAndArgumentsProperties() const
-    {
-        // Per https://tc39.github.io/ecma262/#sec-forbidden-extensions, only sloppy-mode non-builtin functions in old-style (pre-ES6) syntactic forms can contain
-        // &quot;caller&quot; and &quot;arguments&quot;.
-        return !isStrictMode() &amp;&amp; parseMode() == SourceParseMode::NormalFunctionMode &amp;&amp; !isClassConstructorFunction();
-    }
-    bool hasPrototypeProperty() const
-    {
-        return SourceParseModeSet(
-            SourceParseMode::NormalFunctionMode,
-            SourceParseMode::GeneratorBodyMode,
-            SourceParseMode::GeneratorWrapperFunctionMode
-        ).contains(parseMode()) || isClass();
-    }
-    DerivedContextType derivedContextType() const { return m_unlinkedExecutable-&gt;derivedContextType(); }
-    bool isClassConstructorFunction() const { return m_unlinkedExecutable-&gt;isClassConstructorFunction(); }
-    const Identifier&amp; name() { return m_unlinkedExecutable-&gt;name(); }
-    const Identifier&amp; ecmaName() { return m_unlinkedExecutable-&gt;ecmaName(); }
-    const Identifier&amp; inferredName() { return m_unlinkedExecutable-&gt;inferredName(); }
-    unsigned parameterCount() const { return m_unlinkedExecutable-&gt;parameterCount(); } // Excluding 'this'!
-    unsigned functionLength() const { return m_unlinkedExecutable-&gt;functionLength(); }
-    SourceParseMode parseMode() const { return m_unlinkedExecutable-&gt;parseMode(); }
-    JSParserScriptMode scriptMode() const { return m_unlinkedExecutable-&gt;scriptMode(); }
-    const SourceCode&amp; classSource() const { return m_unlinkedExecutable-&gt;classSource(); }
-
-    static void visitChildren(JSCell*, SlotVisitor&amp;);
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
-    {
-        return Structure::create(vm, globalObject, proto, TypeInfo(FunctionExecutableType, StructureFlags), info());
-    }
-
-    unsigned parametersStartOffset() const { return m_parametersStartOffset; }
-
-    void overrideParameterAndTypeProfilingStartEndOffsets(unsigned parametersStartOffset, unsigned typeProfilingStartOffset, unsigned typeProfilingEndOffset)
-    {
-        m_parametersStartOffset = parametersStartOffset;
-        m_typeProfilingStartOffset = typeProfilingStartOffset;
-        m_typeProfilingEndOffset = typeProfilingEndOffset;
-    }
-
-    DECLARE_INFO;
-
-    InferredValue* singletonFunction() { return m_singletonFunction.get(); }
-
-private:
-    friend class ExecutableBase;
-    FunctionExecutable(
-        VM&amp;, const SourceCode&amp;, UnlinkedFunctionExecutable*, unsigned firstLine, 
-        unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic);
-    
-    void finishCreation(VM&amp;);
-
-    friend class ScriptExecutable;
-    
-    unsigned m_parametersStartOffset;
-    WriteBarrier&lt;UnlinkedFunctionExecutable&gt; m_unlinkedExecutable;
-    WriteBarrier&lt;FunctionCodeBlock&gt; m_codeBlockForCall;
-    WriteBarrier&lt;FunctionCodeBlock&gt; m_codeBlockForConstruct;
-    RefPtr&lt;TypeSet&gt; m_returnStatementTypeSet;
-    WriteBarrier&lt;InferredValue&gt; m_singletonFunction;
-};
-
-#if ENABLE(WEBASSEMBLY)
-class WebAssemblyExecutable final : public ExecutableBase {
-public:
-    typedef ExecutableBase Base;
-    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
-
-    static WebAssemblyExecutable* create(VM&amp; vm, const SourceCode&amp; source, unsigned functionIndex)
-    {
-        WebAssemblyExecutable* executable = new (NotNull, allocateCell&lt;WebAssemblyExecutable&gt;(vm.heap)) WebAssemblyExecutable(vm, source, functionIndex);
-        executable-&gt;finishCreation(vm);
-        return executable;
-    }
-
-    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
-    {
-        return Structure::create(vm, globalObject, proto, TypeInfo(WebAssemblyExecutableType, StructureFlags), info());
-    }
-
-    static void destroy(JSCell*);
-
-    DECLARE_INFO;
-
-    void prepareForExecution(VM&amp;);
-
-    WebAssemblyCodeBlock* codeBlockForCall()
-    {
-        return m_codeBlockForCall.get();
-    }
-
-private:
-    friend class ExecutableBase;
-    WebAssemblyExecutable(VM&amp;, const SourceCode&amp;, unsigned functionIndex);
-
-    static void visitChildren(JSCell*, SlotVisitor&amp;);
-
-    SourceCode m_source;
-    unsigned m_functionIndex;
-
-    WriteBarrier&lt;WebAssemblyCodeBlock&gt; m_codeBlockForCall;
-};
-#endif
-
-template &lt;typename ExecutableType&gt;
-JSObject* ScriptExecutable::prepareForExecution(VM&amp; vm, JSFunction* function, JSScope* scope, CodeSpecializationKind kind, CodeBlock*&amp; resultCodeBlock)
-{
-    if (hasJITCodeFor(kind)) {
-        if (std::is_same&lt;ExecutableType, EvalExecutable&gt;::value)
-            resultCodeBlock = jsCast&lt;CodeBlock*&gt;(jsCast&lt;EvalExecutable*&gt;(this)-&gt;codeBlock());
-        else if (std::is_same&lt;ExecutableType, ProgramExecutable&gt;::value)
-            resultCodeBlock = jsCast&lt;CodeBlock*&gt;(jsCast&lt;ProgramExecutable*&gt;(this)-&gt;codeBlock());
-        else if (std::is_same&lt;ExecutableType, ModuleProgramExecutable&gt;::value)
-            resultCodeBlock = jsCast&lt;CodeBlock*&gt;(jsCast&lt;ModuleProgramExecutable*&gt;(this)-&gt;codeBlock());
-        else if (std::is_same&lt;ExecutableType, FunctionExecutable&gt;::value)
-            resultCodeBlock = jsCast&lt;CodeBlock*&gt;(jsCast&lt;FunctionExecutable*&gt;(this)-&gt;codeBlockFor(kind));
-        else
-            RELEASE_ASSERT_NOT_REACHED();
-        return nullptr;
-    }
-    return prepareForExecutionImpl(vm, function, scope, kind, resultCodeBlock);
-}
-
-} // namespace JSC
</del></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutableBasecppfromrev207790trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/ExecutableBase.cpp (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.cpp) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ExecutableBase.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/ExecutableBase.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,156 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;BatchedTransitionOptimizer.h&quot;
+#include &quot;CodeBlock.h&quot;
+#include &quot;Debugger.h&quot;
+#include &quot;JIT.h&quot;
+#include &quot;JSCInlines.h&quot;
+#include &quot;LLIntEntrypoint.h&quot;
+#include &quot;Parser.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &quot;VMInlines.h&quot;
+#include &lt;wtf/CommaPrinter.h&gt;
+
+namespace JSC {
+
+const ClassInfo ExecutableBase::s_info = { &quot;Executable&quot;, 0, 0, CREATE_METHOD_TABLE(ExecutableBase) };
+
+void ExecutableBase::destroy(JSCell* cell)
+{
+    static_cast&lt;ExecutableBase*&gt;(cell)-&gt;ExecutableBase::~ExecutableBase();
+}
+
+void ExecutableBase::clearCode()
+{
+#if ENABLE(JIT)
+    m_jitCodeForCall = nullptr;
+    m_jitCodeForConstruct = nullptr;
+    m_jitCodeForCallWithArityCheck = MacroAssemblerCodePtr();
+    m_jitCodeForConstructWithArityCheck = MacroAssemblerCodePtr();
+#endif
+    m_numParametersForCall = NUM_PARAMETERS_NOT_COMPILED;
+    m_numParametersForConstruct = NUM_PARAMETERS_NOT_COMPILED;
+
+    if (classInfo() == FunctionExecutable::info()) {
+        FunctionExecutable* executable = jsCast&lt;FunctionExecutable*&gt;(this);
+        executable-&gt;m_codeBlockForCall.clear();
+        executable-&gt;m_codeBlockForConstruct.clear();
+        return;
+    }
+
+    if (classInfo() == EvalExecutable::info()) {
+        EvalExecutable* executable = jsCast&lt;EvalExecutable*&gt;(this);
+        executable-&gt;m_evalCodeBlock.clear();
+        executable-&gt;m_unlinkedEvalCodeBlock.clear();
+        return;
+    }
+    
+    if (classInfo() == ProgramExecutable::info()) {
+        ProgramExecutable* executable = jsCast&lt;ProgramExecutable*&gt;(this);
+        executable-&gt;m_programCodeBlock.clear();
+        executable-&gt;m_unlinkedProgramCodeBlock.clear();
+        return;
+    }
+
+    if (classInfo() == ModuleProgramExecutable::info()) {
+        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(this);
+        executable-&gt;m_moduleProgramCodeBlock.clear();
+        executable-&gt;m_unlinkedModuleProgramCodeBlock.clear();
+        executable-&gt;m_moduleEnvironmentSymbolTable.clear();
+        return;
+    }
+    
+#if ENABLE(WEBASSEMBLY)
+    if (classInfo() == WebAssemblyExecutable::info()) {
+        WebAssemblyExecutable* executable = jsCast&lt;WebAssemblyExecutable*&gt;(this);
+        executable-&gt;m_codeBlockForCall.clear();
+        return;
+    }
+#endif
+
+    ASSERT(classInfo() == NativeExecutable::info());
+}
+
+void ExecutableBase::dump(PrintStream&amp; out) const
+{
+    ExecutableBase* realThis = const_cast&lt;ExecutableBase*&gt;(this);
+    
+    if (classInfo() == NativeExecutable::info()) {
+        NativeExecutable* native = jsCast&lt;NativeExecutable*&gt;(realThis);
+        out.print(&quot;NativeExecutable:&quot;, RawPointer(bitwise_cast&lt;void*&gt;(native-&gt;function())), &quot;/&quot;, RawPointer(bitwise_cast&lt;void*&gt;(native-&gt;constructor())));
+        return;
+    }
+    
+    if (classInfo() == EvalExecutable::info()) {
+        EvalExecutable* eval = jsCast&lt;EvalExecutable*&gt;(realThis);
+        if (CodeBlock* codeBlock = eval-&gt;codeBlock())
+            out.print(*codeBlock);
+        else
+            out.print(&quot;EvalExecutable w/o CodeBlock&quot;);
+        return;
+    }
+    
+    if (classInfo() == ProgramExecutable::info()) {
+        ProgramExecutable* eval = jsCast&lt;ProgramExecutable*&gt;(realThis);
+        if (CodeBlock* codeBlock = eval-&gt;codeBlock())
+            out.print(*codeBlock);
+        else
+            out.print(&quot;ProgramExecutable w/o CodeBlock&quot;);
+        return;
+    }
+
+    if (classInfo() == ModuleProgramExecutable::info()) {
+        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(realThis);
+        if (CodeBlock* codeBlock = executable-&gt;codeBlock())
+            out.print(*codeBlock);
+        else
+            out.print(&quot;ModuleProgramExecutable w/o CodeBlock&quot;);
+        return;
+    }
+    
+    FunctionExecutable* function = jsCast&lt;FunctionExecutable*&gt;(realThis);
+    if (!function-&gt;eitherCodeBlock())
+        out.print(&quot;FunctionExecutable w/o CodeBlock&quot;);
+    else {
+        CommaPrinter comma(&quot;/&quot;);
+        if (function-&gt;codeBlockForCall())
+            out.print(comma, *function-&gt;codeBlockForCall());
+        if (function-&gt;codeBlockForConstruct())
+            out.print(comma, *function-&gt;codeBlockForConstruct());
+    }
+}
+
+CodeBlockHash ExecutableBase::hashFor(CodeSpecializationKind kind) const
+{
+    if (this-&gt;classInfo() == NativeExecutable::info())
+        return jsCast&lt;const NativeExecutable*&gt;(this)-&gt;hashFor(kind);
+    
+    return jsCast&lt;const ScriptExecutable*&gt;(this)-&gt;hashFor(kind);
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutableBasehfromrev207790trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/ExecutableBase.h (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ExecutableBase.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/ExecutableBase.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,248 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include &quot;ArityCheckMode.h&quot;
+#include &quot;CallData.h&quot;
+#include &quot;CodeBlockHash.h&quot;
+#include &quot;CodeSpecializationKind.h&quot;
+#include &quot;CompilationResult.h&quot;
+#include &quot;ExecutableInfo.h&quot;
+#include &quot;HandlerInfo.h&quot;
+#include &quot;InferredValue.h&quot;
+#include &quot;JITCode.h&quot;
+#include &quot;JSGlobalObject.h&quot;
+#include &quot;SourceCode.h&quot;
+#include &quot;TypeSet.h&quot;
+#include &quot;UnlinkedCodeBlock.h&quot;
+#include &quot;UnlinkedFunctionExecutable.h&quot;
+
+namespace JSC {
+
+class CodeBlock;
+class EvalCodeBlock;
+class FunctionCodeBlock;
+class JSScope;
+class JSWebAssemblyModule;
+class LLIntOffsetsExtractor;
+class ModuleProgramCodeBlock;
+class ProgramCodeBlock;
+class WebAssemblyCodeBlock;
+
+enum CompilationKind { FirstCompilation, OptimizingCompilation };
+
+inline bool isCall(CodeSpecializationKind kind)
+{
+    if (kind == CodeForCall)
+        return true;
+    ASSERT(kind == CodeForConstruct);
+    return false;
+}
+
+class ExecutableBase : public JSCell {
+    friend class JIT;
+
+protected:
+    static const int NUM_PARAMETERS_IS_HOST = 0;
+    static const int NUM_PARAMETERS_NOT_COMPILED = -1;
+
+    ExecutableBase(VM&amp; vm, Structure* structure, int numParameters, Intrinsic intrinsic)
+        : JSCell(vm, structure)
+        , m_numParametersForCall(numParameters)
+        , m_numParametersForConstruct(numParameters)
+        , m_intrinsic(intrinsic)
+    {
+    }
+
+    void finishCreation(VM&amp; vm)
+    {
+        Base::finishCreation(vm);
+    }
+
+public:
+    typedef JSCell Base;
+    static const unsigned StructureFlags = Base::StructureFlags;
+
+    static const bool needsDestruction = true;
+    static void destroy(JSCell*);
+        
+    CodeBlockHash hashFor(CodeSpecializationKind) const;
+
+    bool isEvalExecutable() const
+    {
+        return type() == EvalExecutableType;
+    }
+    bool isFunctionExecutable() const
+    {
+        return type() == FunctionExecutableType;
+    }
+    bool isProgramExecutable() const
+    {
+        return type() == ProgramExecutableType;
+    }
+    bool isModuleProgramExecutable()
+    {
+        return type() == ModuleProgramExecutableType;
+    }
+
+
+    bool isHostFunction() const
+    {
+        ASSERT((m_numParametersForCall == NUM_PARAMETERS_IS_HOST) == (m_numParametersForConstruct == NUM_PARAMETERS_IS_HOST));
+        return m_numParametersForCall == NUM_PARAMETERS_IS_HOST;
+    }
+
+#if ENABLE(WEBASSEMBLY)
+    bool isWebAssemblyExecutable() const
+    {
+        return type() == WebAssemblyExecutableType;
+    }
+#endif
+
+    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto) { return Structure::create(vm, globalObject, proto, TypeInfo(CellType, StructureFlags), info()); }
+        
+    void clearCode();
+
+    DECLARE_EXPORT_INFO;
+
+protected:
+    int m_numParametersForCall;
+    int m_numParametersForConstruct;
+
+public:
+    PassRefPtr&lt;JITCode&gt; generatedJITCodeForCall()
+    {
+        ASSERT(m_jitCodeForCall);
+        return m_jitCodeForCall;
+    }
+
+    PassRefPtr&lt;JITCode&gt; generatedJITCodeForConstruct()
+    {
+        ASSERT(m_jitCodeForConstruct);
+        return m_jitCodeForConstruct;
+    }
+        
+    PassRefPtr&lt;JITCode&gt; generatedJITCodeFor(CodeSpecializationKind kind)
+    {
+        if (kind == CodeForCall)
+            return generatedJITCodeForCall();
+        ASSERT(kind == CodeForConstruct);
+        return generatedJITCodeForConstruct();
+    }
+    
+    MacroAssemblerCodePtr entrypointFor(CodeSpecializationKind kind, ArityCheckMode arity)
+    {
+        // Check if we have a cached result. We only have it for arity check because we use the
+        // no-arity entrypoint in non-virtual calls, which will &quot;cache&quot; this value directly in
+        // machine code.
+        if (arity == MustCheckArity) {
+            switch (kind) {
+            case CodeForCall:
+                if (MacroAssemblerCodePtr result = m_jitCodeForCallWithArityCheck)
+                    return result;
+                break;
+            case CodeForConstruct:
+                if (MacroAssemblerCodePtr result = m_jitCodeForConstructWithArityCheck)
+                    return result;
+                break;
+            }
+        }
+        MacroAssemblerCodePtr result =
+            generatedJITCodeFor(kind)-&gt;addressForCall(arity);
+        if (arity == MustCheckArity) {
+            // Cache the result; this is necessary for the JIT's virtual call optimizations.
+            switch (kind) {
+            case CodeForCall:
+                m_jitCodeForCallWithArityCheck = result;
+                break;
+            case CodeForConstruct:
+                m_jitCodeForConstructWithArityCheck = result;
+                break;
+            }
+        }
+        return result;
+    }
+
+    static ptrdiff_t offsetOfJITCodeWithArityCheckFor(
+        CodeSpecializationKind kind)
+    {
+        switch (kind) {
+        case CodeForCall:
+            return OBJECT_OFFSETOF(ExecutableBase, m_jitCodeForCallWithArityCheck);
+        case CodeForConstruct:
+            return OBJECT_OFFSETOF(ExecutableBase, m_jitCodeForConstructWithArityCheck);
+        }
+        RELEASE_ASSERT_NOT_REACHED();
+        return 0;
+    }
+    
+    static ptrdiff_t offsetOfNumParametersFor(CodeSpecializationKind kind)
+    {
+        if (kind == CodeForCall)
+            return OBJECT_OFFSETOF(ExecutableBase, m_numParametersForCall);
+        ASSERT(kind == CodeForConstruct);
+        return OBJECT_OFFSETOF(ExecutableBase, m_numParametersForConstruct);
+    }
+
+    bool hasJITCodeForCall() const
+    {
+        return m_numParametersForCall &gt;= 0;
+    }
+        
+    bool hasJITCodeForConstruct() const
+    {
+        return m_numParametersForConstruct &gt;= 0;
+    }
+        
+    bool hasJITCodeFor(CodeSpecializationKind kind) const
+    {
+        if (kind == CodeForCall)
+            return hasJITCodeForCall();
+        ASSERT(kind == CodeForConstruct);
+        return hasJITCodeForConstruct();
+    }
+
+    // Intrinsics are only for calls, currently.
+    Intrinsic intrinsic() const { return m_intrinsic; }
+        
+    Intrinsic intrinsicFor(CodeSpecializationKind kind) const
+    {
+        if (isCall(kind))
+            return intrinsic();
+        return NoIntrinsic;
+    }
+    
+    void dump(PrintStream&amp;) const;
+        
+protected:
+    Intrinsic m_intrinsic;
+    RefPtr&lt;JITCode&gt; m_jitCodeForCall;
+    RefPtr&lt;JITCode&gt; m_jitCodeForConstruct;
+    MacroAssemblerCodePtr m_jitCodeForCallWithArityCheck;
+    MacroAssemblerCodePtr m_jitCodeForConstructWithArityCheck;
+};
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionExecutablecppfromrev207790trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.cpp) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/FunctionExecutable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,111 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;BatchedTransitionOptimizer.h&quot;
+#include &quot;CodeBlock.h&quot;
+#include &quot;Debugger.h&quot;
+#include &quot;JIT.h&quot;
+#include &quot;JSCInlines.h&quot;
+#include &quot;LLIntEntrypoint.h&quot;
+#include &quot;Parser.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &quot;VMInlines.h&quot;
+#include &lt;wtf/CommaPrinter.h&gt;
+
+namespace JSC {
+
+const ClassInfo FunctionExecutable::s_info = { &quot;FunctionExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(FunctionExecutable) };
+
+FunctionExecutable::FunctionExecutable(VM&amp; vm, const SourceCode&amp; source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
+    : ScriptExecutable(vm.functionExecutableStructure.get(), vm, source, unlinkedExecutable-&gt;isInStrictContext(), unlinkedExecutable-&gt;derivedContextType(), false, EvalContextType::None, intrinsic)
+    , m_unlinkedExecutable(vm, this, unlinkedExecutable)
+{
+    RELEASE_ASSERT(!source.isNull());
+    ASSERT(source.length());
+    m_firstLine = firstLine;
+    m_lastLine = lastLine;
+    ASSERT(startColumn != UINT_MAX);
+    ASSERT(endColumn != UINT_MAX);
+    m_startColumn = startColumn;
+    m_endColumn = endColumn;
+    m_parametersStartOffset = unlinkedExecutable-&gt;parametersStartOffset();
+    m_typeProfilingStartOffset = unlinkedExecutable-&gt;typeProfilingStartOffset();
+    m_typeProfilingEndOffset = unlinkedExecutable-&gt;typeProfilingEndOffset();
+}
+
+void FunctionExecutable::finishCreation(VM&amp; vm)
+{
+    Base::finishCreation(vm);
+    m_singletonFunction.set(vm, this, InferredValue::create(vm));
+}
+
+void FunctionExecutable::destroy(JSCell* cell)
+{
+    static_cast&lt;FunctionExecutable*&gt;(cell)-&gt;FunctionExecutable::~FunctionExecutable();
+}
+
+FunctionCodeBlock* FunctionExecutable::baselineCodeBlockFor(CodeSpecializationKind kind)
+{
+    FunctionCodeBlock* result;
+    if (kind == CodeForCall)
+        result = m_codeBlockForCall.get();
+    else {
+        RELEASE_ASSERT(kind == CodeForConstruct);
+        result = m_codeBlockForConstruct.get();
+    }
+    if (!result)
+        return 0;
+    return static_cast&lt;FunctionCodeBlock*&gt;(result-&gt;baselineAlternative());
+}
+
+void FunctionExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
+{
+    FunctionExecutable* thisObject = jsCast&lt;FunctionExecutable*&gt;(cell);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    ScriptExecutable::visitChildren(thisObject, visitor);
+    if (thisObject-&gt;m_codeBlockForCall)
+        thisObject-&gt;m_codeBlockForCall-&gt;visitWeakly(visitor);
+    if (thisObject-&gt;m_codeBlockForConstruct)
+        thisObject-&gt;m_codeBlockForConstruct-&gt;visitWeakly(visitor);
+    visitor.append(&amp;thisObject-&gt;m_unlinkedExecutable);
+    visitor.append(&amp;thisObject-&gt;m_singletonFunction);
+}
+
+FunctionExecutable* FunctionExecutable::fromGlobalCode(
+    const Identifier&amp; name, ExecState&amp; exec, const SourceCode&amp; source, 
+    JSObject*&amp; exception, int overrideLineNumber)
+{
+    UnlinkedFunctionExecutable* unlinkedExecutable = 
+        UnlinkedFunctionExecutable::fromGlobalCode(
+            name, exec, source, exception, overrideLineNumber);
+    if (!unlinkedExecutable)
+        return nullptr;
+
+    return unlinkedExecutable-&gt;link(exec.vm(), source, overrideLineNumber);
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionExecutablehfromrev207790trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/FunctionExecutable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,190 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include &quot;ScriptExecutable.h&quot;
+
+namespace JSC {
+
+class FunctionExecutable final : public ScriptExecutable {
+    friend class JIT;
+    friend class LLIntOffsetsExtractor;
+public:
+    typedef ScriptExecutable Base;
+    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
+
+    static FunctionExecutable* create(
+        VM&amp; vm, const SourceCode&amp; source, UnlinkedFunctionExecutable* unlinkedExecutable, 
+        unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
+    {
+        FunctionExecutable* executable = new (NotNull, allocateCell&lt;FunctionExecutable&gt;(vm.heap)) FunctionExecutable(vm, source, unlinkedExecutable, firstLine, lastLine, startColumn, endColumn, intrinsic);
+        executable-&gt;finishCreation(vm);
+        return executable;
+    }
+    static FunctionExecutable* fromGlobalCode(
+        const Identifier&amp; name, ExecState&amp;, const SourceCode&amp;, 
+        JSObject*&amp; exception, int overrideLineNumber);
+
+    static void destroy(JSCell*);
+        
+    UnlinkedFunctionExecutable* unlinkedExecutable() const
+    {
+        return m_unlinkedExecutable.get();
+    }
+
+    // Returns either call or construct bytecode. This can be appropriate
+    // for answering questions that that don't vary between call and construct --
+    // for example, argumentsRegister().
+    FunctionCodeBlock* eitherCodeBlock()
+    {
+        if (m_codeBlockForCall)
+            return m_codeBlockForCall.get();
+        return m_codeBlockForConstruct.get();
+    }
+        
+    bool isGeneratedForCall() const
+    {
+        return !!m_codeBlockForCall;
+    }
+
+    FunctionCodeBlock* codeBlockForCall()
+    {
+        return m_codeBlockForCall.get();
+    }
+
+    bool isGeneratedForConstruct() const
+    {
+        return m_codeBlockForConstruct.get();
+    }
+
+    FunctionCodeBlock* codeBlockForConstruct()
+    {
+        return m_codeBlockForConstruct.get();
+    }
+        
+    bool isGeneratedFor(CodeSpecializationKind kind)
+    {
+        if (kind == CodeForCall)
+            return isGeneratedForCall();
+        ASSERT(kind == CodeForConstruct);
+        return isGeneratedForConstruct();
+    }
+        
+    FunctionCodeBlock* codeBlockFor(CodeSpecializationKind kind)
+    {
+        if (kind == CodeForCall)
+            return codeBlockForCall();
+        ASSERT(kind == CodeForConstruct);
+        return codeBlockForConstruct();
+    }
+
+    FunctionCodeBlock* baselineCodeBlockFor(CodeSpecializationKind);
+        
+    FunctionCodeBlock* profiledCodeBlockFor(CodeSpecializationKind kind)
+    {
+        return baselineCodeBlockFor(kind);
+    }
+
+    RefPtr&lt;TypeSet&gt; returnStatementTypeSet() 
+    {
+        if (!m_returnStatementTypeSet)
+            m_returnStatementTypeSet = TypeSet::create();
+
+        return m_returnStatementTypeSet;
+    }
+        
+    FunctionMode functionMode() { return m_unlinkedExecutable-&gt;functionMode(); }
+    bool isBuiltinFunction() const { return m_unlinkedExecutable-&gt;isBuiltinFunction(); }
+    ConstructAbility constructAbility() const { return m_unlinkedExecutable-&gt;constructAbility(); }
+    bool isClass() const { return !classSource().isNull(); }
+    bool isArrowFunction() const { return parseMode() == SourceParseMode::ArrowFunctionMode; }
+    bool isGetter() const { return parseMode() == SourceParseMode::GetterMode; }
+    bool isSetter() const { return parseMode() == SourceParseMode::SetterMode; }
+    bool isGenerator() const { return SourceParseModeSet(SourceParseMode::GeneratorBodyMode, SourceParseMode::GeneratorWrapperFunctionMode).contains(parseMode()); }
+    bool isMethod() const { return parseMode() == SourceParseMode::MethodMode; }
+    bool hasCallerAndArgumentsProperties() const
+    {
+        // Per https://tc39.github.io/ecma262/#sec-forbidden-extensions, only sloppy-mode non-builtin functions in old-style (pre-ES6) syntactic forms can contain
+        // &quot;caller&quot; and &quot;arguments&quot;.
+        return !isStrictMode() &amp;&amp; parseMode() == SourceParseMode::NormalFunctionMode &amp;&amp; !isClassConstructorFunction();
+    }
+    bool hasPrototypeProperty() const
+    {
+        return SourceParseModeSet(
+            SourceParseMode::NormalFunctionMode,
+            SourceParseMode::GeneratorBodyMode,
+            SourceParseMode::GeneratorWrapperFunctionMode
+        ).contains(parseMode()) || isClass();
+    }
+    DerivedContextType derivedContextType() const { return m_unlinkedExecutable-&gt;derivedContextType(); }
+    bool isClassConstructorFunction() const { return m_unlinkedExecutable-&gt;isClassConstructorFunction(); }
+    const Identifier&amp; name() { return m_unlinkedExecutable-&gt;name(); }
+    const Identifier&amp; ecmaName() { return m_unlinkedExecutable-&gt;ecmaName(); }
+    const Identifier&amp; inferredName() { return m_unlinkedExecutable-&gt;inferredName(); }
+    unsigned parameterCount() const { return m_unlinkedExecutable-&gt;parameterCount(); } // Excluding 'this'!
+    unsigned functionLength() const { return m_unlinkedExecutable-&gt;functionLength(); }
+    SourceParseMode parseMode() const { return m_unlinkedExecutable-&gt;parseMode(); }
+    JSParserScriptMode scriptMode() const { return m_unlinkedExecutable-&gt;scriptMode(); }
+    const SourceCode&amp; classSource() const { return m_unlinkedExecutable-&gt;classSource(); }
+
+    static void visitChildren(JSCell*, SlotVisitor&amp;);
+    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
+    {
+        return Structure::create(vm, globalObject, proto, TypeInfo(FunctionExecutableType, StructureFlags), info());
+    }
+
+    unsigned parametersStartOffset() const { return m_parametersStartOffset; }
+
+    void overrideParameterAndTypeProfilingStartEndOffsets(unsigned parametersStartOffset, unsigned typeProfilingStartOffset, unsigned typeProfilingEndOffset)
+    {
+        m_parametersStartOffset = parametersStartOffset;
+        m_typeProfilingStartOffset = typeProfilingStartOffset;
+        m_typeProfilingEndOffset = typeProfilingEndOffset;
+    }
+
+    DECLARE_INFO;
+
+    InferredValue* singletonFunction() { return m_singletonFunction.get(); }
+
+private:
+    friend class ExecutableBase;
+    FunctionExecutable(
+        VM&amp;, const SourceCode&amp;, UnlinkedFunctionExecutable*, unsigned firstLine, 
+        unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic);
+    
+    void finishCreation(VM&amp;);
+
+    friend class ScriptExecutable;
+    
+    unsigned m_parametersStartOffset;
+    WriteBarrier&lt;UnlinkedFunctionExecutable&gt; m_unlinkedExecutable;
+    WriteBarrier&lt;FunctionCodeBlock&gt; m_codeBlockForCall;
+    WriteBarrier&lt;FunctionCodeBlock&gt; m_codeBlockForConstruct;
+    RefPtr&lt;TypeSet&gt; m_returnStatementTypeSet;
+    WriteBarrier&lt;InferredValue&gt; m_singletonFunction;
+};
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionExecutableDumph"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionExecutableDump.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionExecutableDump.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/FunctionExecutableDump.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -25,11 +25,12 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &lt;wtf/PrintStream.h&gt;
</span><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span><ins>+class FunctionExecutable;
+
</ins><span class="cx"> class FunctionExecutableDump {
</span><span class="cx"> public:
</span><span class="cx">     explicit FunctionExecutableDump(FunctionExecutable* executable)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArraycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArray.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArray.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/JSArray.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include &quot;ButterflyInlines.h&quot;
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;Error.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;IndexingHeaderInlines.h&quot;
</span><span class="cx"> #include &quot;JSArrayInlines.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctionInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunctionInlines.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunctionInlines.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/JSFunctionInlines.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -25,8 +25,10 @@
</span><span class="cx"> 
</span><span class="cx"> #pragma once
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><ins>+#include &quot;FunctionExecutable.h&quot;
</ins><span class="cx"> #include &quot;JSFunction.h&quot;
</span><ins>+#include &quot;NativeExecutable.h&quot;
+#include &quot;WebAssemblyExecutable.h&quot;
</ins><span class="cx"> 
</span><span class="cx"> namespace JSC {
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSModuleRecordcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include &quot;JSModuleRecord.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Error.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;Interpreter.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span><span class="cx"> #include &quot;JSMap.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -29,7 +29,6 @@
</span><span class="cx"> #include &quot;DatePrototype.h&quot;
</span><span class="cx"> #include &quot;ErrorConstructor.h&quot;
</span><span class="cx"> #include &quot;Exception.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;HeapSnapshotBuilder.h&quot;
</span><span class="cx"> #include &quot;IndexingHeaderInlines.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeLookupcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Lookup.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Lookup.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/Lookup.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -20,7 +20,6 @@
</span><span class="cx"> #include &quot;config.h&quot;
</span><span class="cx"> #include &quot;Lookup.h&quot;
</span><span class="cx"> 
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;GetterSetter.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSCInlines.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeModuleProgramExecutablecppfromrev207790trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.cpp) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,85 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;BatchedTransitionOptimizer.h&quot;
+#include &quot;CodeBlock.h&quot;
+#include &quot;Debugger.h&quot;
+#include &quot;JIT.h&quot;
+#include &quot;JSCInlines.h&quot;
+#include &quot;LLIntEntrypoint.h&quot;
+#include &quot;Parser.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &quot;VMInlines.h&quot;
+#include &lt;wtf/CommaPrinter.h&gt;
+
+namespace JSC {
+
+const ClassInfo ModuleProgramExecutable::s_info = { &quot;ModuleProgramExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(ModuleProgramExecutable) };
+
+ModuleProgramExecutable::ModuleProgramExecutable(ExecState* exec, const SourceCode&amp; source)
+    : ScriptExecutable(exec-&gt;vm().moduleProgramExecutableStructure.get(), exec-&gt;vm(), source, false, DerivedContextType::None, false, EvalContextType::None, NoIntrinsic)
+{
+    ASSERT(source.provider()-&gt;sourceType() == SourceProviderSourceType::Module);
+    m_typeProfilingStartOffset = 0;
+    m_typeProfilingEndOffset = source.length() - 1;
+    if (exec-&gt;vm().typeProfiler() || exec-&gt;vm().controlFlowProfiler())
+        exec-&gt;vm().functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
+}
+
+ModuleProgramExecutable* ModuleProgramExecutable::create(ExecState* exec, const SourceCode&amp; source)
+{
+    JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
+    ModuleProgramExecutable* executable = new (NotNull, allocateCell&lt;ModuleProgramExecutable&gt;(*exec-&gt;heap())) ModuleProgramExecutable(exec, source);
+    executable-&gt;finishCreation(exec-&gt;vm());
+
+    UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCode = globalObject-&gt;createModuleProgramCodeBlock(exec, executable);
+    if (!unlinkedModuleProgramCode)
+        return nullptr;
+    executable-&gt;m_unlinkedModuleProgramCodeBlock.set(exec-&gt;vm(), executable, unlinkedModuleProgramCode);
+
+    executable-&gt;m_moduleEnvironmentSymbolTable.set(exec-&gt;vm(), executable, jsCast&lt;SymbolTable*&gt;(unlinkedModuleProgramCode-&gt;constantRegister(unlinkedModuleProgramCode-&gt;moduleEnvironmentSymbolTableConstantRegisterOffset()).get())-&gt;cloneScopePart(exec-&gt;vm()));
+
+    return executable;
+}
+
+void ModuleProgramExecutable::destroy(JSCell* cell)
+{
+    static_cast&lt;ModuleProgramExecutable*&gt;(cell)-&gt;ModuleProgramExecutable::~ModuleProgramExecutable();
+}
+
+void ModuleProgramExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
+{
+    ModuleProgramExecutable* thisObject = jsCast&lt;ModuleProgramExecutable*&gt;(cell);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    ScriptExecutable::visitChildren(thisObject, visitor);
+    visitor.append(&amp;thisObject-&gt;m_unlinkedModuleProgramCodeBlock);
+    visitor.append(&amp;thisObject-&gt;m_moduleEnvironmentSymbolTable);
+    if (thisObject-&gt;m_moduleProgramCodeBlock)
+        thisObject-&gt;m_moduleProgramCodeBlock-&gt;visitWeakly(visitor);
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeModuleProgramExecutablehfromrev207790trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/ModuleProgramExecutable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,78 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include &quot;ScriptExecutable.h&quot;
+
+namespace JSC {
+
+class ModuleProgramExecutable final : public ScriptExecutable {
+    friend class LLIntOffsetsExtractor;
+public:
+    typedef ScriptExecutable Base;
+    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
+
+    static ModuleProgramExecutable* create(ExecState*, const SourceCode&amp;);
+
+    static void destroy(JSCell*);
+
+    ModuleProgramCodeBlock* codeBlock()
+    {
+        return m_moduleProgramCodeBlock.get();
+    }
+
+    PassRefPtr&lt;JITCode&gt; generatedJITCode()
+    {
+        return generatedJITCodeForCall();
+    }
+
+    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
+    {
+        return Structure::create(vm, globalObject, proto, TypeInfo(ModuleProgramExecutableType, StructureFlags), info());
+    }
+
+    DECLARE_INFO;
+
+    ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, JSParserScriptMode::Module, SuperBinding::NotNeeded, SourceParseMode::ModuleEvaluateMode, derivedContextType(), isArrowFunctionContext(), false, EvalContextType::None); }
+
+    UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCodeBlock() { return m_unlinkedModuleProgramCodeBlock.get(); }
+
+    SymbolTable* moduleEnvironmentSymbolTable() { return m_moduleEnvironmentSymbolTable.get(); }
+
+private:
+    friend class ExecutableBase;
+    friend class ScriptExecutable;
+
+    ModuleProgramExecutable(ExecState*, const SourceCode&amp;);
+
+    static void visitChildren(JSCell*, SlotVisitor&amp;);
+
+    WriteBarrier&lt;UnlinkedModuleProgramCodeBlock&gt; m_unlinkedModuleProgramCodeBlock;
+    WriteBarrier&lt;SymbolTable&gt; m_moduleEnvironmentSymbolTable;
+    WriteBarrier&lt;ModuleProgramCodeBlock&gt; m_moduleProgramCodeBlock;
+};
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNativeExecutablecppfromrev207790trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/NativeExecutable.cpp (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.cpp) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NativeExecutable.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/NativeExecutable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,87 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;BatchedTransitionOptimizer.h&quot;
+#include &quot;CodeBlock.h&quot;
+#include &quot;Debugger.h&quot;
+#include &quot;JIT.h&quot;
+#include &quot;JSCInlines.h&quot;
+#include &quot;LLIntEntrypoint.h&quot;
+#include &quot;Parser.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &quot;VMInlines.h&quot;
+#include &lt;wtf/CommaPrinter.h&gt;
+
+namespace JSC {
+
+const ClassInfo NativeExecutable::s_info = { &quot;NativeExecutable&quot;, &amp;ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(NativeExecutable) };
+
+NativeExecutable* NativeExecutable::create(VM&amp; vm, PassRefPtr&lt;JITCode&gt; callThunk, NativeFunction function, PassRefPtr&lt;JITCode&gt; constructThunk, NativeFunction constructor, Intrinsic intrinsic, const String&amp; name)
+{
+    NativeExecutable* executable;
+    executable = new (NotNull, allocateCell&lt;NativeExecutable&gt;(vm.heap)) NativeExecutable(vm, function, constructor, intrinsic);
+    executable-&gt;finishCreation(vm, callThunk, constructThunk, name);
+    return executable;
+}
+
+void NativeExecutable::destroy(JSCell* cell)
+{
+    static_cast&lt;NativeExecutable*&gt;(cell)-&gt;NativeExecutable::~NativeExecutable();
+}
+
+Structure* NativeExecutable::createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
+{
+    return Structure::create(vm, globalObject, proto, TypeInfo(CellType, StructureFlags), info());
+}
+
+void NativeExecutable::finishCreation(VM&amp; vm, PassRefPtr&lt;JITCode&gt; callThunk, PassRefPtr&lt;JITCode&gt; constructThunk, const String&amp; name)
+{
+    Base::finishCreation(vm);
+    m_jitCodeForCall = callThunk;
+    m_jitCodeForConstruct = constructThunk;
+    m_jitCodeForCallWithArityCheck = m_jitCodeForCall-&gt;addressForCall(MustCheckArity);
+    m_jitCodeForConstructWithArityCheck = m_jitCodeForConstruct-&gt;addressForCall(MustCheckArity);
+    m_name = name;
+}
+
+NativeExecutable::NativeExecutable(VM&amp; vm, NativeFunction function, NativeFunction constructor, Intrinsic intrinsic)
+    : ExecutableBase(vm, vm.nativeExecutableStructure.get(), NUM_PARAMETERS_IS_HOST, intrinsic)
+    , m_function(function)
+    , m_constructor(constructor)
+{
+}
+
+CodeBlockHash NativeExecutable::hashFor(CodeSpecializationKind kind) const
+{
+    if (kind == CodeForCall)
+        return CodeBlockHash(static_cast&lt;unsigned&gt;(bitwise_cast&lt;size_t&gt;(m_function)));
+    
+    RELEASE_ASSERT(kind == CodeForConstruct);
+    return CodeBlockHash(static_cast&lt;unsigned&gt;(bitwise_cast&lt;size_t&gt;(m_constructor)));
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNativeExecutablehfromrev207790trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/NativeExecutable.h (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NativeExecutable.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/NativeExecutable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,84 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include &quot;ExecutableBase.h&quot;
+
+namespace JSC {
+
+class NativeExecutable final : public ExecutableBase {
+    friend class JIT;
+    friend class LLIntOffsetsExtractor;
+public:
+    typedef ExecutableBase Base;
+    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
+
+    static NativeExecutable* create(VM&amp; vm, PassRefPtr&lt;JITCode&gt; callThunk, NativeFunction function, PassRefPtr&lt;JITCode&gt; constructThunk, NativeFunction constructor, Intrinsic intrinsic, const String&amp; name);
+
+    static void destroy(JSCell*);
+
+    CodeBlockHash hashFor(CodeSpecializationKind) const;
+
+    NativeFunction function() { return m_function; }
+    NativeFunction constructor() { return m_constructor; }
+        
+    NativeFunction nativeFunctionFor(CodeSpecializationKind kind)
+    {
+        if (kind == CodeForCall)
+            return function();
+        ASSERT(kind == CodeForConstruct);
+        return constructor();
+    }
+        
+    static ptrdiff_t offsetOfNativeFunctionFor(CodeSpecializationKind kind)
+    {
+        if (kind == CodeForCall)
+            return OBJECT_OFFSETOF(NativeExecutable, m_function);
+        ASSERT(kind == CodeForConstruct);
+        return OBJECT_OFFSETOF(NativeExecutable, m_constructor);
+    }
+
+    static Structure* createStructure(VM&amp;, JSGlobalObject*, JSValue proto);
+        
+    DECLARE_INFO;
+
+    const String&amp; name() const { return m_name; }
+
+protected:
+    void finishCreation(VM&amp;, PassRefPtr&lt;JITCode&gt; callThunk, PassRefPtr&lt;JITCode&gt; constructThunk, const String&amp; name);
+
+private:
+    friend class ExecutableBase;
+
+    NativeExecutable(VM&amp;, NativeFunction function, NativeFunction constructor, Intrinsic);
+
+    NativeFunction m_function;
+    NativeFunction m_constructor;
+
+    String m_name;
+};
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeProgramExecutablecppfromrev207790trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.cpp) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/ProgramExecutable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,183 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;BatchedTransitionOptimizer.h&quot;
+#include &quot;CodeBlock.h&quot;
+#include &quot;Debugger.h&quot;
+#include &quot;JIT.h&quot;
+#include &quot;JSCInlines.h&quot;
+#include &quot;LLIntEntrypoint.h&quot;
+#include &quot;Parser.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &quot;VMInlines.h&quot;
+#include &lt;wtf/CommaPrinter.h&gt;
+
+namespace JSC {
+
+const ClassInfo ProgramExecutable::s_info = { &quot;ProgramExecutable&quot;, &amp;ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(ProgramExecutable) };
+
+ProgramExecutable::ProgramExecutable(ExecState* exec, const SourceCode&amp; source)
+    : ScriptExecutable(exec-&gt;vm().programExecutableStructure.get(), exec-&gt;vm(), source, false, DerivedContextType::None, false, EvalContextType::None, NoIntrinsic)
+{
+    ASSERT(source.provider()-&gt;sourceType() == SourceProviderSourceType::Program);
+    m_typeProfilingStartOffset = 0;
+    m_typeProfilingEndOffset = source.length() - 1;
+    if (exec-&gt;vm().typeProfiler() || exec-&gt;vm().controlFlowProfiler())
+        exec-&gt;vm().functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
+}
+
+void ProgramExecutable::destroy(JSCell* cell)
+{
+    static_cast&lt;ProgramExecutable*&gt;(cell)-&gt;ProgramExecutable::~ProgramExecutable();
+}
+
+JSObject* ProgramExecutable::checkSyntax(ExecState* exec)
+{
+    ParserError error;
+    VM* vm = &amp;exec-&gt;vm();
+    JSGlobalObject* lexicalGlobalObject = exec-&gt;lexicalGlobalObject();
+    std::unique_ptr&lt;ProgramNode&gt; programNode = parse&lt;ProgramNode&gt;(
+        vm, m_source, Identifier(), JSParserBuiltinMode::NotBuiltin,
+        JSParserStrictMode::NotStrict, JSParserScriptMode::Classic, SourceParseMode::ProgramMode, SuperBinding::NotNeeded, error);
+    if (programNode)
+        return 0;
+    ASSERT(error.isValid());
+    return error.toErrorObject(lexicalGlobalObject, m_source);
+}
+
+JSObject* ProgramExecutable::initializeGlobalProperties(VM&amp; vm, CallFrame* callFrame, JSScope* scope)
+{
+    RELEASE_ASSERT(scope);
+    JSGlobalObject* globalObject = scope-&gt;globalObject();
+    RELEASE_ASSERT(globalObject);
+    ASSERT(&amp;globalObject-&gt;vm() == &amp;vm);
+
+    JSObject* exception = 0;
+    UnlinkedProgramCodeBlock* unlinkedCodeBlock = globalObject-&gt;createProgramCodeBlock(callFrame, this, &amp;exception);
+    if (exception)
+        return exception;
+
+    JSGlobalLexicalEnvironment* globalLexicalEnvironment = globalObject-&gt;globalLexicalEnvironment();
+    const VariableEnvironment&amp; variableDeclarations = unlinkedCodeBlock-&gt;variableDeclarations();
+    const VariableEnvironment&amp; lexicalDeclarations = unlinkedCodeBlock-&gt;lexicalDeclarations();
+    // The ES6 spec says that no vars/global properties/let/const can be duplicated in the global scope.
+    // This carried out section 15.1.8 of the ES6 spec: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-globaldeclarationinstantiation
+    {
+        ExecState* exec = globalObject-&gt;globalExec();
+        // Check for intersection of &quot;var&quot; and &quot;let&quot;/&quot;const&quot;/&quot;class&quot;
+        for (auto&amp; entry : lexicalDeclarations) {
+            if (variableDeclarations.contains(entry.key))
+                return createSyntaxError(exec, makeString(&quot;Can't create duplicate variable: '&quot;, String(entry.key.get()), &quot;'&quot;));
+        }
+
+        // Check if any new &quot;let&quot;/&quot;const&quot;/&quot;class&quot; will shadow any pre-existing global property names, or &quot;var&quot;/&quot;let&quot;/&quot;const&quot; variables.
+        // It's an error to introduce a shadow.
+        for (auto&amp; entry : lexicalDeclarations) {
+            if (globalObject-&gt;hasProperty(exec, entry.key.get())) {
+                // The ES6 spec says that just RestrictedGlobalProperty can't be shadowed
+                // This carried out section 8.1.1.4.14 of the ES6 spec: http://www.ecma-international.org/ecma-262/6.0/index.html#sec-hasrestrictedglobalproperty
+                PropertyDescriptor descriptor;
+                globalObject-&gt;getOwnPropertyDescriptor(exec, entry.key.get(), descriptor);
+                
+                if (descriptor.value() != jsUndefined() &amp;&amp; !descriptor.configurable())
+                    return createSyntaxError(exec, makeString(&quot;Can't create duplicate variable that shadows a global property: '&quot;, String(entry.key.get()), &quot;'&quot;));
+            }
+                
+            if (globalLexicalEnvironment-&gt;hasProperty(exec, entry.key.get())) {
+                if (UNLIKELY(entry.value.isConst() &amp;&amp; !vm.globalConstRedeclarationShouldThrow() &amp;&amp; !isStrictMode())) {
+                    // We only allow &quot;const&quot; duplicate declarations under this setting.
+                    // For example, we don't &quot;let&quot; variables to be overridden by &quot;const&quot; variables.
+                    if (globalLexicalEnvironment-&gt;isConstVariable(entry.key.get()))
+                        continue;
+                }
+                return createSyntaxError(exec, makeString(&quot;Can't create duplicate variable: '&quot;, String(entry.key.get()), &quot;'&quot;));
+            }
+        }
+
+        // Check if any new &quot;var&quot;s will shadow any previous &quot;let&quot;/&quot;const&quot;/&quot;class&quot; names.
+        // It's an error to introduce a shadow.
+        if (!globalLexicalEnvironment-&gt;isEmpty()) {
+            for (auto&amp; entry : variableDeclarations) {
+                if (globalLexicalEnvironment-&gt;hasProperty(exec, entry.key.get()))
+                    return createSyntaxError(exec, makeString(&quot;Can't create duplicate variable: '&quot;, String(entry.key.get()), &quot;'&quot;));
+            }
+        }
+    }
+
+
+    m_unlinkedProgramCodeBlock.set(vm, this, unlinkedCodeBlock);
+
+    BatchedTransitionOptimizer optimizer(vm, globalObject);
+
+    for (size_t i = 0, numberOfFunctions = unlinkedCodeBlock-&gt;numberOfFunctionDecls(); i &lt; numberOfFunctions; ++i) {
+        UnlinkedFunctionExecutable* unlinkedFunctionExecutable = unlinkedCodeBlock-&gt;functionDecl(i);
+        ASSERT(!unlinkedFunctionExecutable-&gt;name().isEmpty());
+        globalObject-&gt;addFunction(callFrame, unlinkedFunctionExecutable-&gt;name());
+        if (vm.typeProfiler() || vm.controlFlowProfiler()) {
+            vm.functionHasExecutedCache()-&gt;insertUnexecutedRange(sourceID(), 
+                unlinkedFunctionExecutable-&gt;typeProfilingStartOffset(), 
+                unlinkedFunctionExecutable-&gt;typeProfilingEndOffset());
+        }
+    }
+
+    for (auto&amp; entry : variableDeclarations) {
+        ASSERT(entry.value.isVar());
+        globalObject-&gt;addVar(callFrame, Identifier::fromUid(&amp;vm, entry.key.get()));
+    }
+
+    {
+        JSGlobalLexicalEnvironment* globalLexicalEnvironment = jsCast&lt;JSGlobalLexicalEnvironment*&gt;(globalObject-&gt;globalScope());
+        SymbolTable* symbolTable = globalLexicalEnvironment-&gt;symbolTable();
+        ConcurrentJITLocker locker(symbolTable-&gt;m_lock);
+        for (auto&amp; entry : lexicalDeclarations) {
+            if (UNLIKELY(entry.value.isConst() &amp;&amp; !vm.globalConstRedeclarationShouldThrow() &amp;&amp; !isStrictMode())) {
+                if (symbolTable-&gt;contains(locker, entry.key.get()))
+                    continue;
+            }
+            ScopeOffset offset = symbolTable-&gt;takeNextScopeOffset(locker);
+            SymbolTableEntry newEntry(VarOffset(offset), entry.value.isConst() ? ReadOnly : 0);
+            newEntry.prepareToWatch();
+            symbolTable-&gt;add(locker, entry.key.get(), newEntry);
+            
+            ScopeOffset offsetForAssert = globalLexicalEnvironment-&gt;addVariables(1, jsTDZValue());
+            RELEASE_ASSERT(offsetForAssert == offset);
+        }
+    }
+    return 0;
+}
+
+void ProgramExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
+{
+    ProgramExecutable* thisObject = jsCast&lt;ProgramExecutable*&gt;(cell);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    ScriptExecutable::visitChildren(thisObject, visitor);
+    visitor.append(&amp;thisObject-&gt;m_unlinkedProgramCodeBlock);
+    if (thisObject-&gt;m_programCodeBlock)
+        thisObject-&gt;m_programCodeBlock-&gt;visitWeakly(visitor);
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeProgramExecutablehfromrev207790trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/ProgramExecutable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,83 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include &quot;ScriptExecutable.h&quot;
+
+namespace JSC {
+
+class ProgramExecutable final : public ScriptExecutable {
+    friend class LLIntOffsetsExtractor;
+public:
+    typedef ScriptExecutable Base;
+    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
+
+    static ProgramExecutable* create(ExecState* exec, const SourceCode&amp; source)
+    {
+        ProgramExecutable* executable = new (NotNull, allocateCell&lt;ProgramExecutable&gt;(*exec-&gt;heap())) ProgramExecutable(exec, source);
+        executable-&gt;finishCreation(exec-&gt;vm());
+        return executable;
+    }
+
+
+    JSObject* initializeGlobalProperties(VM&amp;, CallFrame*, JSScope*);
+
+    static void destroy(JSCell*);
+
+    ProgramCodeBlock* codeBlock()
+    {
+        return m_programCodeBlock.get();
+    }
+
+    JSObject* checkSyntax(ExecState*);
+
+    PassRefPtr&lt;JITCode&gt; generatedJITCode()
+    {
+        return generatedJITCodeForCall();
+    }
+        
+    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
+    {
+        return Structure::create(vm, globalObject, proto, TypeInfo(ProgramExecutableType, StructureFlags), info());
+    }
+        
+    DECLARE_INFO;
+
+    ExecutableInfo executableInfo() const { return ExecutableInfo(usesEval(), isStrictMode(), false, false, ConstructorKind::None, JSParserScriptMode::Classic, SuperBinding::NotNeeded, SourceParseMode::ProgramMode, derivedContextType(), isArrowFunctionContext(), false, EvalContextType::None); }
+
+private:
+    friend class ExecutableBase;
+    friend class ScriptExecutable;
+
+    ProgramExecutable(ExecState*, const SourceCode&amp;);
+
+    static void visitChildren(JSCell*, SlotVisitor&amp;);
+
+    WriteBarrier&lt;UnlinkedProgramCodeBlock&gt; m_unlinkedProgramCodeBlock;
+    WriteBarrier&lt;ProgramCodeBlock&gt; m_programCodeBlock;
+};
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSamplingProfilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -31,7 +31,6 @@
</span><span class="cx"> #include &quot;CallFrame.h&quot;
</span><span class="cx"> #include &quot;CodeBlock.h&quot;
</span><span class="cx"> #include &quot;CodeBlockSet.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;HeapInlines.h&quot;
</span><span class="cx"> #include &quot;HeapIterationScope.h&quot;
</span><span class="cx"> #include &quot;HeapUtil.h&quot;
</span><span class="lines">@@ -44,6 +43,7 @@
</span><span class="cx"> #include &quot;MarkedBlock.h&quot;
</span><span class="cx"> #include &quot;MarkedBlockSet.h&quot;
</span><span class="cx"> #include &quot;MarkedSpaceInlines.h&quot;
</span><ins>+#include &quot;NativeExecutable.h&quot;
</ins><span class="cx"> #include &quot;PCToCodeOriginMap.h&quot;
</span><span class="cx"> #include &quot;SlotVisitor.h&quot;
</span><span class="cx"> #include &quot;SlotVisitorInlines.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeScriptExecutablecppfromrev207790trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.cpp) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,336 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;BatchedTransitionOptimizer.h&quot;
+#include &quot;CodeBlock.h&quot;
+#include &quot;Debugger.h&quot;
+#include &quot;JIT.h&quot;
+#include &quot;JSCInlines.h&quot;
+#include &quot;LLIntEntrypoint.h&quot;
+#include &quot;Parser.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &quot;VMInlines.h&quot;
+#include &lt;wtf/CommaPrinter.h&gt;
+
+namespace JSC {
+
+const ClassInfo ScriptExecutable::s_info = { &quot;ScriptExecutable&quot;, &amp;ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(ScriptExecutable) };
+
+ScriptExecutable::ScriptExecutable(Structure* structure, VM&amp; vm, const SourceCode&amp; source, bool isInStrictContext, DerivedContextType derivedContextType, bool isInArrowFunctionContext, EvalContextType evalContextType, Intrinsic intrinsic)
+    : ExecutableBase(vm, structure, NUM_PARAMETERS_NOT_COMPILED, intrinsic)
+    , m_features(isInStrictContext ? StrictModeFeature : 0)
+    , m_didTryToEnterInLoop(false)
+    , m_hasCapturedVariables(false)
+    , m_neverInline(false)
+    , m_neverOptimize(false)
+    , m_neverFTLOptimize(false)
+    , m_isArrowFunctionContext(isInArrowFunctionContext)
+    , m_canUseOSRExitFuzzing(true)
+    , m_derivedContextType(static_cast&lt;unsigned&gt;(derivedContextType))
+    , m_evalContextType(static_cast&lt;unsigned&gt;(evalContextType))
+    , m_overrideLineNumber(-1)
+    , m_firstLine(-1)
+    , m_lastLine(-1)
+    , m_startColumn(UINT_MAX)
+    , m_endColumn(UINT_MAX)
+    , m_typeProfilingStartOffset(UINT_MAX)
+    , m_typeProfilingEndOffset(UINT_MAX)
+    , m_source(source)
+{
+}
+
+void ScriptExecutable::destroy(JSCell* cell)
+{
+    static_cast&lt;ScriptExecutable*&gt;(cell)-&gt;ScriptExecutable::~ScriptExecutable();
+}
+
+void ScriptExecutable::installCode(CodeBlock* codeBlock)
+{
+    installCode(*codeBlock-&gt;vm(), codeBlock, codeBlock-&gt;codeType(), codeBlock-&gt;specializationKind());
+}
+
+void ScriptExecutable::installCode(VM&amp; vm, CodeBlock* genericCodeBlock, CodeType codeType, CodeSpecializationKind kind)
+{
+    ASSERT(vm.heap.isDeferred());
+    
+    if (genericCodeBlock)
+        CODEBLOCK_LOG_EVENT(genericCodeBlock, &quot;installCode&quot;, ());
+    
+    CodeBlock* oldCodeBlock = nullptr;
+    
+    switch (codeType) {
+    case GlobalCode: {
+        ProgramExecutable* executable = jsCast&lt;ProgramExecutable*&gt;(this);
+        ProgramCodeBlock* codeBlock = static_cast&lt;ProgramCodeBlock*&gt;(genericCodeBlock);
+        
+        ASSERT(kind == CodeForCall);
+        
+        oldCodeBlock = executable-&gt;m_programCodeBlock.get();
+        executable-&gt;m_programCodeBlock.setMayBeNull(vm, this, codeBlock);
+        break;
+    }
+
+    case ModuleCode: {
+        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(this);
+        ModuleProgramCodeBlock* codeBlock = static_cast&lt;ModuleProgramCodeBlock*&gt;(genericCodeBlock);
+
+        ASSERT(kind == CodeForCall);
+
+        oldCodeBlock = executable-&gt;m_moduleProgramCodeBlock.get();
+        executable-&gt;m_moduleProgramCodeBlock.setMayBeNull(vm, this, codeBlock);
+        break;
+    }
+
+    case EvalCode: {
+        EvalExecutable* executable = jsCast&lt;EvalExecutable*&gt;(this);
+        EvalCodeBlock* codeBlock = static_cast&lt;EvalCodeBlock*&gt;(genericCodeBlock);
+        
+        ASSERT(kind == CodeForCall);
+        
+        oldCodeBlock = executable-&gt;m_evalCodeBlock.get();
+        executable-&gt;m_evalCodeBlock.setMayBeNull(vm, this, codeBlock);
+        break;
+    }
+        
+    case FunctionCode: {
+        FunctionExecutable* executable = jsCast&lt;FunctionExecutable*&gt;(this);
+        FunctionCodeBlock* codeBlock = static_cast&lt;FunctionCodeBlock*&gt;(genericCodeBlock);
+        
+        switch (kind) {
+        case CodeForCall:
+            oldCodeBlock = executable-&gt;m_codeBlockForCall.get();
+            executable-&gt;m_codeBlockForCall.setMayBeNull(vm, this, codeBlock);
+            break;
+        case CodeForConstruct:
+            oldCodeBlock = executable-&gt;m_codeBlockForConstruct.get();
+            executable-&gt;m_codeBlockForConstruct.setMayBeNull(vm, this, codeBlock);
+            break;
+        }
+        break;
+    }
+    }
+
+    switch (kind) {
+    case CodeForCall:
+        m_jitCodeForCall = genericCodeBlock ? genericCodeBlock-&gt;jitCode() : nullptr;
+        m_jitCodeForCallWithArityCheck = MacroAssemblerCodePtr();
+        m_numParametersForCall = genericCodeBlock ? genericCodeBlock-&gt;numParameters() : NUM_PARAMETERS_NOT_COMPILED;
+        break;
+    case CodeForConstruct:
+        m_jitCodeForConstruct = genericCodeBlock ? genericCodeBlock-&gt;jitCode() : nullptr;
+        m_jitCodeForConstructWithArityCheck = MacroAssemblerCodePtr();
+        m_numParametersForConstruct = genericCodeBlock ? genericCodeBlock-&gt;numParameters() : NUM_PARAMETERS_NOT_COMPILED;
+        break;
+    }
+
+    if (genericCodeBlock) {
+        RELEASE_ASSERT(genericCodeBlock-&gt;ownerExecutable() == this);
+        RELEASE_ASSERT(JITCode::isExecutableScript(genericCodeBlock-&gt;jitType()));
+        
+        if (Options::verboseOSR())
+            dataLog(&quot;Installing &quot;, *genericCodeBlock, &quot;\n&quot;);
+        
+        if (vm.m_perBytecodeProfiler)
+            vm.m_perBytecodeProfiler-&gt;ensureBytecodesFor(genericCodeBlock);
+        
+        if (Debugger* debugger = genericCodeBlock-&gt;globalObject()-&gt;debugger())
+            debugger-&gt;registerCodeBlock(genericCodeBlock);
+    }
+
+    if (oldCodeBlock)
+        oldCodeBlock-&gt;unlinkIncomingCalls();
+
+    vm.heap.writeBarrier(this);
+}
+
+CodeBlock* ScriptExecutable::newCodeBlockFor(
+    CodeSpecializationKind kind, JSFunction* function, JSScope* scope, JSObject*&amp; exception)
+{
+    VM* vm = scope-&gt;vm();
+    auto throwScope = DECLARE_THROW_SCOPE(*vm);
+
+    ASSERT(vm-&gt;heap.isDeferred());
+    ASSERT(startColumn() != UINT_MAX);
+    ASSERT(endColumn() != UINT_MAX);
+
+    if (classInfo() == EvalExecutable::info()) {
+        EvalExecutable* executable = jsCast&lt;EvalExecutable*&gt;(this);
+        RELEASE_ASSERT(kind == CodeForCall);
+        RELEASE_ASSERT(!executable-&gt;m_evalCodeBlock);
+        RELEASE_ASSERT(!function);
+        return EvalCodeBlock::create(vm,
+            executable, executable-&gt;m_unlinkedEvalCodeBlock.get(), scope,
+            executable-&gt;source().provider());
+    }
+    
+    if (classInfo() == ProgramExecutable::info()) {
+        ProgramExecutable* executable = jsCast&lt;ProgramExecutable*&gt;(this);
+        RELEASE_ASSERT(kind == CodeForCall);
+        RELEASE_ASSERT(!executable-&gt;m_programCodeBlock);
+        RELEASE_ASSERT(!function);
+        return ProgramCodeBlock::create(vm,
+            executable, executable-&gt;m_unlinkedProgramCodeBlock.get(), scope,
+            executable-&gt;source().provider(), executable-&gt;source().startColumn());
+    }
+
+    if (classInfo() == ModuleProgramExecutable::info()) {
+        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(this);
+        RELEASE_ASSERT(kind == CodeForCall);
+        RELEASE_ASSERT(!executable-&gt;m_moduleProgramCodeBlock);
+        RELEASE_ASSERT(!function);
+        return ModuleProgramCodeBlock::create(vm,
+            executable, executable-&gt;m_unlinkedModuleProgramCodeBlock.get(), scope,
+            executable-&gt;source().provider(), executable-&gt;source().startColumn());
+    }
+
+    RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
+    RELEASE_ASSERT(function);
+    FunctionExecutable* executable = jsCast&lt;FunctionExecutable*&gt;(this);
+    RELEASE_ASSERT(!executable-&gt;codeBlockFor(kind));
+    JSGlobalObject* globalObject = scope-&gt;globalObject();
+    ParserError error;
+    DebuggerMode debuggerMode = globalObject-&gt;hasInteractiveDebugger() ? DebuggerOn : DebuggerOff;
+    UnlinkedFunctionCodeBlock* unlinkedCodeBlock = 
+        executable-&gt;m_unlinkedExecutable-&gt;unlinkedCodeBlockFor(
+            *vm, executable-&gt;m_source, kind, debuggerMode, error, 
+            executable-&gt;parseMode());
+    recordParse(
+        executable-&gt;m_unlinkedExecutable-&gt;features(), 
+        executable-&gt;m_unlinkedExecutable-&gt;hasCapturedVariables(), firstLine(), 
+        lastLine(), startColumn(), endColumn()); 
+    if (!unlinkedCodeBlock) {
+        exception = throwException(
+            globalObject-&gt;globalExec(), throwScope,
+            error.toErrorObject(globalObject, executable-&gt;m_source));
+        return nullptr;
+    }
+
+    SourceProvider* provider = executable-&gt;source().provider();
+    unsigned sourceOffset = executable-&gt;source().startOffset();
+    unsigned startColumn = executable-&gt;source().startColumn();
+
+    return FunctionCodeBlock::create(vm,
+        executable, unlinkedCodeBlock, scope, provider, sourceOffset, startColumn);
+}
+
+CodeBlock* ScriptExecutable::newReplacementCodeBlockFor(
+    CodeSpecializationKind kind)
+{
+    if (classInfo() == EvalExecutable::info()) {
+        RELEASE_ASSERT(kind == CodeForCall);
+        EvalExecutable* executable = jsCast&lt;EvalExecutable*&gt;(this);
+        EvalCodeBlock* baseline = static_cast&lt;EvalCodeBlock*&gt;(
+            executable-&gt;m_evalCodeBlock-&gt;baselineVersion());
+        EvalCodeBlock* result = EvalCodeBlock::create(vm(),
+            CodeBlock::CopyParsedBlock, *baseline);
+        result-&gt;setAlternative(*vm(), baseline);
+        return result;
+    }
+    
+    if (classInfo() == ProgramExecutable::info()) {
+        RELEASE_ASSERT(kind == CodeForCall);
+        ProgramExecutable* executable = jsCast&lt;ProgramExecutable*&gt;(this);
+        ProgramCodeBlock* baseline = static_cast&lt;ProgramCodeBlock*&gt;(
+            executable-&gt;m_programCodeBlock-&gt;baselineVersion());
+        ProgramCodeBlock* result = ProgramCodeBlock::create(vm(),
+            CodeBlock::CopyParsedBlock, *baseline);
+        result-&gt;setAlternative(*vm(), baseline);
+        return result;
+    }
+
+    if (classInfo() == ModuleProgramExecutable::info()) {
+        RELEASE_ASSERT(kind == CodeForCall);
+        ModuleProgramExecutable* executable = jsCast&lt;ModuleProgramExecutable*&gt;(this);
+        ModuleProgramCodeBlock* baseline = static_cast&lt;ModuleProgramCodeBlock*&gt;(
+            executable-&gt;m_moduleProgramCodeBlock-&gt;baselineVersion());
+        ModuleProgramCodeBlock* result = ModuleProgramCodeBlock::create(vm(),
+            CodeBlock::CopyParsedBlock, *baseline);
+        result-&gt;setAlternative(*vm(), baseline);
+        return result;
+    }
+
+    RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
+    FunctionExecutable* executable = jsCast&lt;FunctionExecutable*&gt;(this);
+    FunctionCodeBlock* baseline = static_cast&lt;FunctionCodeBlock*&gt;(
+        executable-&gt;codeBlockFor(kind)-&gt;baselineVersion());
+    FunctionCodeBlock* result = FunctionCodeBlock::create(vm(),
+        CodeBlock::CopyParsedBlock, *baseline);
+    result-&gt;setAlternative(*vm(), baseline);
+    return result;
+}
+
+static void setupLLInt(VM&amp; vm, CodeBlock* codeBlock)
+{
+    LLInt::setEntrypoint(vm, codeBlock);
+}
+
+static void setupJIT(VM&amp; vm, CodeBlock* codeBlock)
+{
+#if ENABLE(JIT)
+    CompilationResult result = JIT::compile(&amp;vm, codeBlock, JITCompilationMustSucceed);
+    RELEASE_ASSERT(result == CompilationSuccessful);
+#else
+    UNUSED_PARAM(vm);
+    UNUSED_PARAM(codeBlock);
+    UNREACHABLE_FOR_PLATFORM();
+#endif
+}
+
+JSObject* ScriptExecutable::prepareForExecutionImpl(
+    VM&amp; vm, JSFunction* function, JSScope* scope, CodeSpecializationKind kind, CodeBlock*&amp; resultCodeBlock)
+{
+    DeferGCForAWhile deferGC(vm.heap);
+
+    if (vm.getAndClearFailNextNewCodeBlock())
+        return createError(scope-&gt;globalObject()-&gt;globalExec(), ASCIILiteral(&quot;Forced Failure&quot;));
+
+    JSObject* exception = 0;
+    CodeBlock* codeBlock = newCodeBlockFor(kind, function, scope, exception);
+    resultCodeBlock = codeBlock;
+    if (!codeBlock) {
+        RELEASE_ASSERT(exception);
+        return exception;
+    }
+    
+    if (Options::validateBytecode())
+        codeBlock-&gt;validate();
+    
+    if (Options::useLLInt())
+        setupLLInt(vm, codeBlock);
+    else
+        setupJIT(vm, codeBlock);
+    
+    installCode(vm, codeBlock, codeBlock-&gt;codeType(), codeBlock-&gt;specializationKind());
+    return nullptr;
+}
+
+CodeBlockHash ScriptExecutable::hashFor(CodeSpecializationKind kind) const
+{
+    return CodeBlockHash(source(), kind);
+}
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeScriptExecutablehfromrev207790trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/ScriptExecutable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,149 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include &quot;ExecutableBase.h&quot;
+
+namespace JSC {
+
+class ScriptExecutable : public ExecutableBase {
+public:
+    typedef ExecutableBase Base;
+    static const unsigned StructureFlags = Base::StructureFlags;
+
+    static void destroy(JSCell*);
+        
+    CodeBlockHash hashFor(CodeSpecializationKind) const;
+
+    const SourceCode&amp; source() const { return m_source; }
+    intptr_t sourceID() const { return m_source.providerID(); }
+    const String&amp; sourceURL() const { return m_source.provider()-&gt;url(); }
+    int firstLine() const { return m_firstLine; }
+    void setOverrideLineNumber(int overrideLineNumber) { m_overrideLineNumber = overrideLineNumber; }
+    bool hasOverrideLineNumber() const { return m_overrideLineNumber != -1; }
+    int overrideLineNumber() const { return m_overrideLineNumber; }
+    int lastLine() const { return m_lastLine; }
+    unsigned startColumn() const { return m_startColumn; }
+    unsigned endColumn() const { return m_endColumn; }
+    unsigned typeProfilingStartOffset() const { return m_typeProfilingStartOffset; }
+    unsigned typeProfilingEndOffset() const { return m_typeProfilingEndOffset; }
+
+    bool usesEval() const { return m_features &amp; EvalFeature; }
+    bool usesArguments() const { return m_features &amp; ArgumentsFeature; }
+    bool isArrowFunctionContext() const { return m_isArrowFunctionContext; }
+    bool isStrictMode() const { return m_features &amp; StrictModeFeature; }
+    DerivedContextType derivedContextType() const { return static_cast&lt;DerivedContextType&gt;(m_derivedContextType); }
+    EvalContextType evalContextType() const { return static_cast&lt;EvalContextType&gt;(m_evalContextType); }
+
+    ECMAMode ecmaMode() const { return isStrictMode() ? StrictMode : NotStrictMode; }
+        
+    void setNeverInline(bool value) { m_neverInline = value; }
+    void setNeverOptimize(bool value) { m_neverOptimize = value; }
+    void setNeverFTLOptimize(bool value) { m_neverFTLOptimize = value; }
+    void setDidTryToEnterInLoop(bool value) { m_didTryToEnterInLoop = value; }
+    void setCanUseOSRExitFuzzing(bool value) { m_canUseOSRExitFuzzing = value; }
+    bool neverInline() const { return m_neverInline; }
+    bool neverOptimize() const { return m_neverOptimize; }
+    bool neverFTLOptimize() const { return m_neverFTLOptimize; }
+    bool didTryToEnterInLoop() const { return m_didTryToEnterInLoop; }
+    bool isInliningCandidate() const { return !neverInline(); }
+    bool isOkToOptimize() const { return !neverOptimize(); }
+    bool canUseOSRExitFuzzing() const { return m_canUseOSRExitFuzzing; }
+    
+    bool* addressOfDidTryToEnterInLoop() { return &amp;m_didTryToEnterInLoop; }
+
+    CodeFeatures features() const { return m_features; }
+        
+    DECLARE_EXPORT_INFO;
+
+    void recordParse(CodeFeatures features, bool hasCapturedVariables, int firstLine, int lastLine, unsigned startColumn, unsigned endColumn)
+    {
+        m_features = features;
+        m_hasCapturedVariables = hasCapturedVariables;
+        m_firstLine = firstLine;
+        m_lastLine = lastLine;
+        ASSERT(startColumn != UINT_MAX);
+        m_startColumn = startColumn;
+        ASSERT(endColumn != UINT_MAX);
+        m_endColumn = endColumn;
+    }
+
+    void installCode(CodeBlock*);
+    void installCode(VM&amp;, CodeBlock*, CodeType, CodeSpecializationKind);
+    CodeBlock* newCodeBlockFor(CodeSpecializationKind, JSFunction*, JSScope*, JSObject*&amp; exception);
+    CodeBlock* newReplacementCodeBlockFor(CodeSpecializationKind);
+
+    // This function has an interesting GC story. Callers of this function are asking us to create a CodeBlock
+    // that is not jettisoned before this function returns. Callers are essentially asking for a strong reference
+    // to the CodeBlock. Because the Executable may be allocating the CodeBlock, we require callers to pass in
+    // their CodeBlock*&amp; reference because it's safe for CodeBlock to be jettisoned if Executable is the only thing
+    // to point to it. This forces callers to have a CodeBlock* in a register or on the stack that will be marked
+    // by conservative GC if a GC happens after we create the CodeBlock.
+    template &lt;typename ExecutableType&gt;
+    JSObject* prepareForExecution(VM&amp;, JSFunction*, JSScope*, CodeSpecializationKind, CodeBlock*&amp; resultCodeBlock);
+
+    template &lt;typename Functor&gt; void forEachCodeBlock(Functor&amp;&amp;);
+
+private:
+    friend class ExecutableBase;
+    JSObject* prepareForExecutionImpl(VM&amp;, JSFunction*, JSScope*, CodeSpecializationKind, CodeBlock*&amp;);
+
+protected:
+    ScriptExecutable(Structure*, VM&amp;, const SourceCode&amp;, bool isInStrictContext, DerivedContextType, bool isInArrowFunctionContext, EvalContextType, Intrinsic);
+
+    void finishCreation(VM&amp; vm)
+    {
+        Base::finishCreation(vm);
+        vm.heap.addExecutable(this); // Balanced by Heap::deleteUnmarkedCompiledCode().
+
+#if ENABLE(CODEBLOCK_SAMPLING)
+        if (SamplingTool* sampler = vm.interpreter-&gt;sampler())
+            sampler-&gt;notifyOfScope(vm, this);
+#endif
+    }
+
+    CodeFeatures m_features;
+    bool m_didTryToEnterInLoop;
+    bool m_hasCapturedVariables : 1;
+    bool m_neverInline : 1;
+    bool m_neverOptimize : 1;
+    bool m_neverFTLOptimize : 1;
+    bool m_isArrowFunctionContext : 1;
+    bool m_canUseOSRExitFuzzing : 1;
+    unsigned m_derivedContextType : 2; // DerivedContextType
+    unsigned m_evalContextType : 2; // EvalContextType
+
+    int m_overrideLineNumber;
+    int m_firstLine;
+    int m_lastLine;
+    unsigned m_startColumn;
+    unsigned m_endColumn;
+    unsigned m_typeProfilingStartOffset;
+    unsigned m_typeProfilingEndOffset;
+    SourceCode m_source;
+};
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -22,7 +22,6 @@
</span><span class="cx"> #include &quot;StringConstructor.h&quot;
</span><span class="cx"> 
</span><span class="cx"> #include &quot;Error.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;JITCode.h&quot;
</span><span class="cx"> #include &quot;JSFunction.h&quot;
</span><span class="cx"> #include &quot;JSGlobalObject.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -27,7 +27,6 @@
</span><span class="cx"> #include &quot;ButterflyInlines.h&quot;
</span><span class="cx"> #include &quot;CachedCall.h&quot;
</span><span class="cx"> #include &quot;Error.h&quot;
</span><del>-#include &quot;Executable.h&quot;
</del><span class="cx"> #include &quot;IntlObject.h&quot;
</span><span class="cx"> #include &quot;JSArray.h&quot;
</span><span class="cx"> #include &quot;JSCBuiltins.h&quot;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWebAssemblyExecutablecppfromrev207790trunkSourceJavaScriptCoreruntimeExecutablecpp"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/WebAssemblyExecutable.cpp (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.cpp) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WebAssemblyExecutable.cpp                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/WebAssemblyExecutable.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,70 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013, 2015-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#include &quot;config.h&quot;
+
+#include &quot;BatchedTransitionOptimizer.h&quot;
+#include &quot;CodeBlock.h&quot;
+#include &quot;Debugger.h&quot;
+#include &quot;JIT.h&quot;
+#include &quot;JSCInlines.h&quot;
+#include &quot;JSWebAssemblyModule.h&quot;
+#include &quot;LLIntEntrypoint.h&quot;
+#include &quot;Parser.h&quot;
+#include &quot;TypeProfiler.h&quot;
+#include &quot;VMInlines.h&quot;
+#include &lt;wtf/CommaPrinter.h&gt;
+
+namespace JSC {
+
+#if ENABLE(WEBASSEMBLY)
+const ClassInfo WebAssemblyExecutable::s_info = { &quot;WebAssemblyExecutable&quot;, &amp;ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(WebAssemblyExecutable) };
+
+WebAssemblyExecutable::WebAssemblyExecutable(VM&amp; vm, const SourceCode&amp; source, JSWebAssemblyModule* module, unsigned functionIndex)
+    : ExecutableBase(vm, vm.webAssemblyExecutableStructure.get(), NUM_PARAMETERS_NOT_COMPILED, NoIntrinsic)
+    , m_source(source)
+    , m_module(vm, this, module)
+    , m_functionIndex(functionIndex)
+{
+    ASSERT(source.provider()-&gt;sourceType() == SourceProviderSourceType::WebAssembly);
+}
+
+void WebAssemblyExecutable::destroy(JSCell* cell)
+{
+    static_cast&lt;WebAssemblyExecutable*&gt;(cell)-&gt;WebAssemblyExecutable::~WebAssemblyExecutable();
+}
+
+void WebAssemblyExecutable::visitChildren(JSCell* cell, SlotVisitor&amp; visitor)
+{
+    WebAssemblyExecutable* thisObject = jsCast&lt;WebAssemblyExecutable*&gt;(cell);
+    ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+    ExecutableBase::visitChildren(thisObject, visitor);
+    if (thisObject-&gt;m_codeBlockForCall)
+        thisObject-&gt;m_codeBlockForCall-&gt;visitWeakly(visitor);
+    visitor.append(&amp;thisObject-&gt;m_module);
+}
+#endif
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWebAssemblyExecutablehfromrev207790trunkSourceJavaScriptCoreruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/JavaScriptCore/runtime/WebAssemblyExecutable.h (from rev 207790, trunk/Source/JavaScriptCore/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WebAssemblyExecutable.h                                (rev 0)
+++ trunk/Source/JavaScriptCore/runtime/WebAssemblyExecutable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,75 @@
</span><ins>+/*
+ * Copyright (C) 2009, 2010, 2013-2016 Apple Inc. All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+ * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#pragma once
+
+#include &quot;ExecutableBase.h&quot;
+
+namespace JSC {
+
+#if ENABLE(WEBASSEMBLY)
+class WebAssemblyExecutable final : public ExecutableBase {
+public:
+    typedef ExecutableBase Base;
+    static const unsigned StructureFlags = Base::StructureFlags | StructureIsImmortal;
+
+    static WebAssemblyExecutable* create(VM&amp; vm, const SourceCode&amp; source, JSWebAssemblyModule* module, unsigned functionIndex)
+    {
+        WebAssemblyExecutable* executable = new (NotNull, allocateCell&lt;WebAssemblyExecutable&gt;(vm.heap)) WebAssemblyExecutable(vm, source, module, functionIndex);
+        executable-&gt;finishCreation(vm);
+        return executable;
+    }
+
+    static Structure* createStructure(VM&amp; vm, JSGlobalObject* globalObject, JSValue proto)
+    {
+        return Structure::create(vm, globalObject, proto, TypeInfo(WebAssemblyExecutableType, StructureFlags), info());
+    }
+
+    static void destroy(JSCell*);
+
+    DECLARE_INFO;
+
+    void prepareForExecution(VM&amp;);
+
+    WebAssemblyCodeBlock* codeBlockForCall()
+    {
+        return m_codeBlockForCall.get();
+    }
+
+private:
+    friend class ExecutableBase;
+    WebAssemblyExecutable(VM&amp;, const SourceCode&amp;, JSWebAssemblyModule*, unsigned functionIndex);
+
+    static void visitChildren(JSCell*, SlotVisitor&amp;);
+
+    SourceCode m_source;
+    WriteBarrier&lt;JSWebAssemblyModule&gt; m_module;
+    unsigned m_functionIndex;
+
+    WriteBarrier&lt;WebAssemblyCodeBlock&gt; m_codeBlockForCall;
+};
+#endif
+
+} // namespace JSC
</ins></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/WebCore/ChangeLog        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -1,3 +1,15 @@
</span><ins>+2016-10-27  Geoffrey Garen  &lt;ggaren@apple.com&gt;
+
+        One file per class for Executable.h/.cpp
+        https://bugs.webkit.org/show_bug.cgi?id=164099
+
+        Reviewed by Saam Barati.
+
+        * ForwardingHeaders/runtime/Executable.h: Removed.
+        * ForwardingHeaders/runtime/FunctionExecutable.h: Copied from Source/WebCore/ForwardingHeaders/runtime/Executable.h.
+        * bindings/js/JSLazyEventListener.cpp:
+        * bindings/js/JSMainThreadExecStateInstrumentation.h:
+
</ins><span class="cx"> 2016-10-28  Dave Hyatt  &lt;hyatt@apple.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [CSS Parser] Clean up gradient parsing
</span></span></pre></div>
<a id="trunkSourceWebCoreForwardingHeadersruntimeExecutableh"></a>
<div class="delfile"><h4>Deleted: trunk/Source/WebCore/ForwardingHeaders/runtime/Executable.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ForwardingHeaders/runtime/Executable.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/WebCore/ForwardingHeaders/runtime/Executable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -1,4 +0,0 @@
</span><del>-#ifndef WebCore_FWD_Executable_h
-#define WebCore_FWD_Executable_h
-#include &lt;JavaScriptCore/Executable.h&gt;
-#endif
</del></span></pre></div>
<a id="trunkSourceWebCoreForwardingHeadersruntimeFunctionExecutablehfromrev208062trunkSourceWebCoreForwardingHeadersruntimeExecutableh"></a>
<div class="copfile"><h4>Copied: trunk/Source/WebCore/ForwardingHeaders/runtime/FunctionExecutable.h (from rev 208062, trunk/Source/WebCore/ForwardingHeaders/runtime/Executable.h) (0 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ForwardingHeaders/runtime/FunctionExecutable.h                                (rev 0)
+++ trunk/Source/WebCore/ForwardingHeaders/runtime/FunctionExecutable.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -0,0 +1,4 @@
</span><ins>+#ifndef WebCore_FWD_FunctionExecutable_h
+#define WebCore_FWD_FunctionExecutable_h
+#include &lt;JavaScriptCore/FunctionExecutable.h&gt;
+#endif
</ins></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSLazyEventListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSLazyEventListener.cpp (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSLazyEventListener.cpp        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/WebCore/bindings/js/JSLazyEventListener.cpp        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -24,7 +24,6 @@
</span><span class="cx"> #include &quot;Frame.h&quot;
</span><span class="cx"> #include &quot;JSNode.h&quot;
</span><span class="cx"> #include &quot;ScriptController.h&quot;
</span><del>-#include &lt;runtime/Executable.h&gt;
</del><span class="cx"> #include &lt;runtime/FunctionConstructor.h&gt;
</span><span class="cx"> #include &lt;runtime/IdentifierInlines.h&gt;
</span><span class="cx"> #include &lt;wtf/NeverDestroyed.h&gt;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMainThreadExecStateInstrumentationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMainThreadExecStateInstrumentation.h (208062 => 208063)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMainThreadExecStateInstrumentation.h        2016-10-28 19:40:44 UTC (rev 208062)
+++ trunk/Source/WebCore/bindings/js/JSMainThreadExecStateInstrumentation.h        2016-10-28 20:04:56 UTC (rev 208063)
</span><span class="lines">@@ -29,7 +29,7 @@
</span><span class="cx"> 
</span><span class="cx"> #include &quot;InspectorInstrumentation.h&quot;
</span><span class="cx"> #include &quot;JSMainThreadExecState.h&quot;
</span><del>-#include &lt;runtime/Executable.h&gt;
</del><ins>+#include &lt;runtime/FunctionExecutable.h&gt;
</ins><span class="cx"> 
</span><span class="cx"> namespace WebCore {
</span><span class="cx"> 
</span></span></pre>
</div>
</div>

</body>
</html>