<!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 <ggaren@apple.com>
+
+ 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 <caitp@igalia.com>
</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 = "<group>"; };
</span><span class="cx">                 146FA5A81378F6B0003627A3 /* HandleTypes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HandleTypes.h; sourceTree = "<group>"; };
</span><span class="cx">                 146FE51111A710430087AE66 /* JITCall32_64.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall32_64.cpp; sourceTree = "<group>"; };
</span><ins>+                147341CB1DC02D7200AA29BA /* ExecutableBase.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ExecutableBase.h; sourceTree = "<group>"; };
+                147341CD1DC02D7900AA29BA /* ScriptExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ScriptExecutable.h; sourceTree = "<group>"; };
+                147341CF1DC02DB400AA29BA /* NativeExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NativeExecutable.h; sourceTree = "<group>"; };
+                147341D11DC02E2E00AA29BA /* EvalExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EvalExecutable.h; sourceTree = "<group>"; };
+                147341D31DC02E6D00AA29BA /* ProgramExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ProgramExecutable.h; sourceTree = "<group>"; };
+                147341D51DC02EB900AA29BA /* ModuleProgramExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ModuleProgramExecutable.h; sourceTree = "<group>"; };
+                147341D71DC02F9900AA29BA /* FunctionExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = FunctionExecutable.h; sourceTree = "<group>"; };
+                147341D91DC0300100AA29BA /* WebAssemblyExecutable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = WebAssemblyExecutable.h; sourceTree = "<group>"; };
+                147341DB1DC2CE9600AA29BA /* EvalExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = EvalExecutable.cpp; sourceTree = "<group>"; };
+                147341DC1DC2CE9600AA29BA /* FunctionExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = FunctionExecutable.cpp; sourceTree = "<group>"; };
+                147341DD1DC2CE9600AA29BA /* ModuleProgramExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ModuleProgramExecutable.cpp; sourceTree = "<group>"; };
+                147341DE1DC2CE9600AA29BA /* NativeExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = NativeExecutable.cpp; sourceTree = "<group>"; };
+                147341DF1DC2CE9600AA29BA /* ProgramExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ProgramExecutable.cpp; sourceTree = "<group>"; };
+                147341E01DC2CE9600AA29BA /* ScriptExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ScriptExecutable.cpp; sourceTree = "<group>"; };
+                147341E11DC2CE9600AA29BA /* WebAssemblyExecutable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = WebAssemblyExecutable.cpp; sourceTree = "<group>"; };
+                147341E91DC2CF2500AA29BA /* ExecutableBase.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ExecutableBase.cpp; sourceTree = "<group>"; };
</ins><span class="cx">                 147B83AA0E6DB8C9004775A4 /* BatchedTransitionOptimizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BatchedTransitionOptimizer.h; sourceTree = "<group>"; };
</span><span class="cx">                 147B84620E6DE6B1004775A4 /* PutPropertySlot.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = PutPropertySlot.h; sourceTree = "<group>"; };
</span><span class="cx">                 1480DB9B0DDC227F003CFDF2 /* DebuggerCallFrame.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = DebuggerCallFrame.h; sourceTree = "<group>"; };
</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 = "<group>"; };
</span><span class="cx">                 86C568DE11A213EE0007F7F0 /* MacroAssemblerMIPS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MacroAssemblerMIPS.h; sourceTree = "<group>"; };
</span><span class="cx">                 86C568DF11A213EE0007F7F0 /* MIPSAssembler.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MIPSAssembler.h; sourceTree = "<group>"; };
</span><del>-                86CA032D1038E8440028A609 /* Executable.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = Executable.cpp; sourceTree = "<group>"; };
-                86CAFEE21035DDE60028A609 /* Executable.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Executable.h; sourceTree = "<group>"; };
</del><span class="cx">                 86CC85A00EE79A4700288682 /* JITInlines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = JITInlines.h; sourceTree = "<group>"; };
</span><span class="cx">                 86CC85A20EE79B7400288682 /* JITCall.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITCall.cpp; sourceTree = "<group>"; };
</span><span class="cx">                 86CC85C30EE7A89400288682 /* JITPropertyAccess.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = JITPropertyAccess.cpp; sourceTree = "<group>"; };
</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 = "<group>";
</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"> ("JavaScriptCore", "heap/HeapInlines.h"),
</span><span class="cx"> ),
</span><span class="cx"> (["JavaScriptCore", "WebCore"],
</span><del>- ("JavaScriptCore", "runtime/Executable.h"),
</del><ins>+ ("JavaScriptCore", "runtime/UnlinkedFunctionExecutable.h"),
</ins><span class="cx"> ),
</span><span class="cx"> (["JavaScriptCore", "WebCore"],
</span><span class="cx"> ("JavaScriptCore", "runtime/JSCellInlines.h"),
</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"> ("JavaScriptCore", "heap/HeapInlines.h"),
</span><span class="cx"> ),
</span><span class="cx"> (["JavaScriptCore", "WebCore"],
</span><del>- ("JavaScriptCore", "runtime/Executable.h"),
- ),
- (["JavaScriptCore", "WebCore"],
</del><span class="cx"> ("JavaScriptCore", "runtime/JSCellInlines.h"),
</span><span class="cx"> ),
</span><span class="cx"> (["WebCore"],
</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 "BuiltinExecutables.h"
</span><span class="cx">
</span><span class="cx"> #include "BuiltinNames.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "Parser.h"
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</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 "Executable.h"
</del><ins>+#include "FunctionExecutable.h"
</ins><span class="cx"> #include "JSCell.h"
</span><span class="cx"> #include "JSFunction.h"
</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 "TypeProfiler.h"
</span><span class="cx"> #include "UnlinkedInstructionStream.h"
</span><span class="cx"> #include "VMInlines.h"
</span><ins>+#include "WebAssemblyExecutable.h"
</ins><span class="cx"> #include <wtf/BagToHashMap.h>
</span><span class="cx"> #include <wtf/CommaPrinter.h>
</span><span class="cx"> #include <wtf/SimpleStats.h>
</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 "EvalCodeCache.h"
</span><span class="cx"> #include "ExecutionCounter.h"
</span><span class="cx"> #include "ExpressionRangeInfo.h"
</span><ins>+#include "FunctionExecutable.h"
</ins><span class="cx"> #include "HandlerInfo.h"
</span><span class="cx"> #include "Instruction.h"
</span><span class="cx"> #include "JITCode.h"
</span><span class="lines">@@ -55,9 +56,11 @@
</span><span class="cx"> #include "LLIntCallLinkInfo.h"
</span><span class="cx"> #include "LLIntPrototypeLoadAdaptiveStructureWatchpoint.h"
</span><span class="cx"> #include "LazyOperandValueProfile.h"
</span><ins>+#include "ModuleProgramExecutable.h"
</ins><span class="cx"> #include "ObjectAllocationProfile.h"
</span><span class="cx"> #include "Options.h"
</span><span class="cx"> #include "ProfilerJettisonReason.h"
</span><ins>+#include "ProgramExecutable.h"
</ins><span class="cx"> #include "PutPropertySlot.h"
</span><span class="cx"> #include "UnconditionalFinalizer.h"
</span><span class="cx"> #include "ValueProfile.h"
</span><span class="lines">@@ -1347,6 +1350,25 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><ins>+template <typename ExecutableType>
+JSObject* ScriptExecutable::prepareForExecution(VM& vm, JSFunction* function, JSScope* scope, CodeSpecializationKind kind, CodeBlock*& resultCodeBlock)
+{
+ if (hasJITCodeFor(kind)) {
+ if (std::is_same<ExecutableType, EvalExecutable>::value)
+ resultCodeBlock = jsCast<CodeBlock*>(jsCast<EvalExecutable*>(this)->codeBlock());
+ else if (std::is_same<ExecutableType, ProgramExecutable>::value)
+ resultCodeBlock = jsCast<CodeBlock*>(jsCast<ProgramExecutable*>(this)->codeBlock());
+ else if (std::is_same<ExecutableType, ModuleProgramExecutable>::value)
+ resultCodeBlock = jsCast<CodeBlock*>(jsCast<ModuleProgramExecutable*>(this)->codeBlock());
+ else if (std::is_same<ExecutableType, FunctionExecutable>::value)
+ resultCodeBlock = jsCast<CodeBlock*>(jsCast<FunctionExecutable*>(this)->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->vm()->logEvent(codeBlock, summary, [&] () { 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 "CallFrame.h"
</span><span class="cx"> #include "CodeBlock.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "InlineCallFrame.h"
</span><span class="cx"> #include "JSCInlines.h"
</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 "Executable.h"
</del><ins>+#include "EvalExecutable.h"
</ins><span class="cx"> #include "JSGlobalObject.h"
</span><span class="cx"> #include "JSScope.h"
</span><span class="cx"> #include "Options.h"
</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 "CallFrame.h"
</span><span class="cx"> #include "CodeBlock.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "JSCInlines.h"
</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 "BytecodeRewriter.h"
</span><span class="cx"> #include "ClassInfo.h"
</span><span class="cx"> #include "CodeCache.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "ExecutableInfo.h"
</span><span class="cx"> #include "FunctionOverrides.h"
</span><span class="cx"> #include "JSString.h"
</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 "ClassInfo.h"
</span><span class="cx"> #include "CodeCache.h"
</span><span class="cx"> #include "Debugger.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "ExecutableInfo.h"
</span><span class="cx"> #include "FunctionOverrides.h"
</span><span class="cx"> #include "JSCInlines.h"
</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 "Executable.h"
</del><span class="cx"> #include "JSGlobalObject.h"
</span><span class="cx"> #include <wtf/HashSet.h>
</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 "config.h"
</span><span class="cx"> #include "DebuggerLocation.h"
</span><span class="cx">
</span><del>-#include "Executable.h"
</del><ins>+#include "ScriptExecutable.h"
</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 "CodeBlock.h"
</span><span class="cx"> #include "DFGCommon.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "Interpreter.h"
</span><span class="cx"> #include "Intrinsic.h"
</span><span class="cx"> #include "Options.h"
</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 "CodeBlock.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "JIT.h"
</span><span class="cx"> #include "JITCode.h"
</span><span class="cx"> #include "JITWorklist.h"
</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 "CodeBlock.h"
</span><span class="cx"> #include "DFGJITCode.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "JSCInlines.h"
</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 "CodeBlock.h"
</span><span class="cx"> #include "DFGJITCode.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "FTLForOSREntryJITCode.h"
</span><span class="cx"> #include "JSCInlines.h"
</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 "ClonedArguments.h"
</span><span class="cx"> #include "DebuggerPrimitives.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "InlineCallFrame.h"
</span><span class="cx"> #include "Interpreter.h"
</span><span class="cx"> #include "JSCInlines.h"
</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 "Executable.h"
</del><span class="cx"> #include "JIT.h"
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "LLIntData.h"
</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 "CodeBlock.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "JSCInlines.h"
</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 "Executable.h"
</del><span class="cx"> #include "JIT.h"
</span><span class="cx"> #include "JITInlines.h"
</span><span class="cx"> #include "JSInterfaceJIT.h"
</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 "CommonSlowPaths.h"
</span><span class="cx"> #include "DirectArguments.h"
</span><span class="cx"> #include "Exception.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "Heap.h"
</span><span class="cx"> #include "Interpreter.h"
</span><span class="cx"> #include "JSArray.h"
</span><span class="lines">@@ -46,6 +45,7 @@
</span><span class="cx"> #include "JumpTable.h"
</span><span class="cx"> #include "LLIntOfflineAsmConfig.h"
</span><span class="cx"> #include "MarkedSpace.h"
</span><ins>+#include "NativeExecutable.h"
</ins><span class="cx"> #include "ProtoCallFrame.h"
</span><span class="cx"> #include "ShadowChicken.h"
</span><span class="cx"> #include "Structure.h"
</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 "ExceptionHelpers.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "Lexer.h"
</span><span class="cx"> #include "ModuleScopeData.h"
</span><span class="cx"> #include "Nodes.h"
</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 "config.h"
</span><span class="cx"> #include "CallData.h"
</span><span class="cx">
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "Interpreter.h"
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "JSFunction.h"
</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 "config.h"
</span><span class="cx"> #include "ConstructData.h"
</span><span class="cx">
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "Interpreter.h"
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "JSFunction.h"
</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 "config.h"
+
+#include "BatchedTransitionOptimizer.h"
+#include "CodeBlock.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSCInlines.h"
+#include "LLIntEntrypoint.h"
+#include "Parser.h"
+#include "TypeProfiler.h"
+#include "VMInlines.h"
+#include <wtf/CommaPrinter.h>
+
+namespace JSC {
+
+const ClassInfo EvalExecutable::s_info = { "EvalExecutable", &ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(EvalExecutable) };
+
+EvalExecutable* EvalExecutable::create(ExecState* exec, const SourceCode& source, bool isInStrictContext, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType, const VariableEnvironment* variablesUnderTDZ)
+{
+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
+
+ JSGlobalObject* globalObject = exec->lexicalGlobalObject();
+ if (!globalObject->evalEnabled()) {
+ throwException(exec, scope, createEvalError(exec, globalObject->evalDisabledErrorMessage()));
+ return 0;
+ }
+
+ EvalExecutable* executable = new (NotNull, allocateCell<EvalExecutable>(*exec->heap())) EvalExecutable(exec, source, isInStrictContext, derivedContextType, isArrowFunctionContext, evalContextType);
+ executable->finishCreation(vm);
+
+ UnlinkedEvalCodeBlock* unlinkedEvalCode = globalObject->createEvalCodeBlock(exec, executable, variablesUnderTDZ);
+ if (!unlinkedEvalCode)
+ return 0;
+
+ executable->m_unlinkedEvalCodeBlock.set(vm, executable, unlinkedEvalCode);
+
+ return executable;
+}
+
+EvalExecutable::EvalExecutable(ExecState* exec, const SourceCode& source, bool inStrictContext, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType)
+ : ScriptExecutable(exec->vm().evalExecutableStructure.get(), exec->vm(), source, inStrictContext, derivedContextType, isArrowFunctionContext, evalContextType, NoIntrinsic)
+{
+ ASSERT(source.provider()->sourceType() == SourceProviderSourceType::Program);
+}
+
+void EvalExecutable::destroy(JSCell* cell)
+{
+ static_cast<EvalExecutable*>(cell)->EvalExecutable::~EvalExecutable();
+}
+
+void EvalExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
+{
+ EvalExecutable* thisObject = jsCast<EvalExecutable*>(cell);
+ ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+ ScriptExecutable::visitChildren(thisObject, visitor);
+ visitor.append(&thisObject->m_unlinkedEvalCodeBlock);
+ if (thisObject->m_evalCodeBlock)
+ thisObject->m_evalCodeBlock->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 "ScriptExecutable.h"
+
+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&, bool isInStrictContext, DerivedContextType, bool isArrowFunctionContext, EvalContextType, const VariableEnvironment*);
+
+ PassRefPtr<JITCode> generatedJITCode()
+ {
+ return generatedJITCodeForCall();
+ }
+
+ static Structure* createStructure(VM& 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->numVariables(); }
+ unsigned numberOfFunctionDecls() { return m_unlinkedEvalCodeBlock->numberOfFunctionDecls(); }
+
+private:
+ friend class ExecutableBase;
+ friend class ScriptExecutable;
+
+ EvalExecutable(ExecState*, const SourceCode&, bool inStrictContext, DerivedContextType, bool isArrowFunctionContext, EvalContextType);
+
+ static void visitChildren(JSCell*, SlotVisitor&);
+
+ WriteBarrier<EvalCodeBlock> m_evalCodeBlock;
+ WriteBarrier<UnlinkedEvalCodeBlock> 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 "config.h"
-#include "Executable.h"
-
-#include "BatchedTransitionOptimizer.h"
-#include "CodeBlock.h"
-#include "Debugger.h"
-#include "JIT.h"
-#include "JSCInlines.h"
-#include "LLIntEntrypoint.h"
-#include "Parser.h"
-#include "TypeProfiler.h"
-#include "VMInlines.h"
-#include <wtf/CommaPrinter.h>
-
-namespace JSC {
-
-const ClassInfo ExecutableBase::s_info = { "Executable", 0, 0, CREATE_METHOD_TABLE(ExecutableBase) };
-
-void ExecutableBase::destroy(JSCell* cell)
-{
- static_cast<ExecutableBase*>(cell)->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<FunctionExecutable*>(this);
- executable->m_codeBlockForCall.clear();
- executable->m_codeBlockForConstruct.clear();
- return;
- }
-
- if (classInfo() == EvalExecutable::info()) {
- EvalExecutable* executable = jsCast<EvalExecutable*>(this);
- executable->m_evalCodeBlock.clear();
- executable->m_unlinkedEvalCodeBlock.clear();
- return;
- }
-
- if (classInfo() == ProgramExecutable::info()) {
- ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
- executable->m_programCodeBlock.clear();
- executable->m_unlinkedProgramCodeBlock.clear();
- return;
- }
-
- if (classInfo() == ModuleProgramExecutable::info()) {
- ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
- executable->m_moduleProgramCodeBlock.clear();
- executable->m_unlinkedModuleProgramCodeBlock.clear();
- executable->m_moduleEnvironmentSymbolTable.clear();
- return;
- }
-
-#if ENABLE(WEBASSEMBLY)
- if (classInfo() == WebAssemblyExecutable::info()) {
- WebAssemblyExecutable* executable = jsCast<WebAssemblyExecutable*>(this);
- executable->m_codeBlockForCall.clear();
- return;
- }
-#endif
-
- ASSERT(classInfo() == NativeExecutable::info());
-}
-
-const ClassInfo NativeExecutable::s_info = { "NativeExecutable", &ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(NativeExecutable) };
-
-NativeExecutable* NativeExecutable::create(VM& vm, PassRefPtr<JITCode> callThunk, NativeFunction function, PassRefPtr<JITCode> constructThunk, NativeFunction constructor, Intrinsic intrinsic, const String& name)
-{
- NativeExecutable* executable;
- executable = new (NotNull, allocateCell<NativeExecutable>(vm.heap)) NativeExecutable(vm, function, constructor, intrinsic);
- executable->finishCreation(vm, callThunk, constructThunk, name);
- return executable;
-}
-
-void NativeExecutable::destroy(JSCell* cell)
-{
- static_cast<NativeExecutable*>(cell)->NativeExecutable::~NativeExecutable();
-}
-
-Structure* NativeExecutable::createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
-{
- return Structure::create(vm, globalObject, proto, TypeInfo(CellType, StructureFlags), info());
-}
-
-void NativeExecutable::finishCreation(VM& vm, PassRefPtr<JITCode> callThunk, PassRefPtr<JITCode> constructThunk, const String& name)
-{
- Base::finishCreation(vm);
- m_jitCodeForCall = callThunk;
- m_jitCodeForConstruct = constructThunk;
- m_jitCodeForCallWithArityCheck = m_jitCodeForCall->addressForCall(MustCheckArity);
- m_jitCodeForConstructWithArityCheck = m_jitCodeForConstruct->addressForCall(MustCheckArity);
- m_name = name;
-}
-
-NativeExecutable::NativeExecutable(VM& 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 = { "ScriptExecutable", &ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(ScriptExecutable) };
-
-ScriptExecutable::ScriptExecutable(Structure* structure, VM& vm, const SourceCode& 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<unsigned>(derivedContextType))
- , m_evalContextType(static_cast<unsigned>(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<ScriptExecutable*>(cell)->ScriptExecutable::~ScriptExecutable();
-}
-
-void ScriptExecutable::installCode(CodeBlock* codeBlock)
-{
- installCode(*codeBlock->vm(), codeBlock, codeBlock->codeType(), codeBlock->specializationKind());
-}
-
-void ScriptExecutable::installCode(VM& vm, CodeBlock* genericCodeBlock, CodeType codeType, CodeSpecializationKind kind)
-{
- ASSERT(vm.heap.isDeferred());
-
- if (genericCodeBlock)
- CODEBLOCK_LOG_EVENT(genericCodeBlock, "installCode", ());
-
- CodeBlock* oldCodeBlock = nullptr;
-
- switch (codeType) {
- case GlobalCode: {
- ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
- ProgramCodeBlock* codeBlock = static_cast<ProgramCodeBlock*>(genericCodeBlock);
-
- ASSERT(kind == CodeForCall);
-
- oldCodeBlock = executable->m_programCodeBlock.get();
- executable->m_programCodeBlock.setMayBeNull(vm, this, codeBlock);
- break;
- }
-
- case ModuleCode: {
- ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
- ModuleProgramCodeBlock* codeBlock = static_cast<ModuleProgramCodeBlock*>(genericCodeBlock);
-
- ASSERT(kind == CodeForCall);
-
- oldCodeBlock = executable->m_moduleProgramCodeBlock.get();
- executable->m_moduleProgramCodeBlock.setMayBeNull(vm, this, codeBlock);
- break;
- }
-
- case EvalCode: {
- EvalExecutable* executable = jsCast<EvalExecutable*>(this);
- EvalCodeBlock* codeBlock = static_cast<EvalCodeBlock*>(genericCodeBlock);
-
- ASSERT(kind == CodeForCall);
-
- oldCodeBlock = executable->m_evalCodeBlock.get();
- executable->m_evalCodeBlock.setMayBeNull(vm, this, codeBlock);
- break;
- }
-
- case FunctionCode: {
- FunctionExecutable* executable = jsCast<FunctionExecutable*>(this);
- FunctionCodeBlock* codeBlock = static_cast<FunctionCodeBlock*>(genericCodeBlock);
-
- switch (kind) {
- case CodeForCall:
- oldCodeBlock = executable->m_codeBlockForCall.get();
- executable->m_codeBlockForCall.setMayBeNull(vm, this, codeBlock);
- break;
- case CodeForConstruct:
- oldCodeBlock = executable->m_codeBlockForConstruct.get();
- executable->m_codeBlockForConstruct.setMayBeNull(vm, this, codeBlock);
- break;
- }
- break;
- }
- }
-
- switch (kind) {
- case CodeForCall:
- m_jitCodeForCall = genericCodeBlock ? genericCodeBlock->jitCode() : nullptr;
- m_jitCodeForCallWithArityCheck = MacroAssemblerCodePtr();
- m_numParametersForCall = genericCodeBlock ? genericCodeBlock->numParameters() : NUM_PARAMETERS_NOT_COMPILED;
- break;
- case CodeForConstruct:
- m_jitCodeForConstruct = genericCodeBlock ? genericCodeBlock->jitCode() : nullptr;
- m_jitCodeForConstructWithArityCheck = MacroAssemblerCodePtr();
- m_numParametersForConstruct = genericCodeBlock ? genericCodeBlock->numParameters() : NUM_PARAMETERS_NOT_COMPILED;
- break;
- }
-
- if (genericCodeBlock) {
- RELEASE_ASSERT(genericCodeBlock->ownerExecutable() == this);
- RELEASE_ASSERT(JITCode::isExecutableScript(genericCodeBlock->jitType()));
-
- if (Options::verboseOSR())
- dataLog("Installing ", *genericCodeBlock, "\n");
-
- if (vm.m_perBytecodeProfiler)
- vm.m_perBytecodeProfiler->ensureBytecodesFor(genericCodeBlock);
-
- if (Debugger* debugger = genericCodeBlock->globalObject()->debugger())
- debugger->registerCodeBlock(genericCodeBlock);
- }
-
- if (oldCodeBlock)
- oldCodeBlock->unlinkIncomingCalls();
-
- vm.heap.writeBarrier(this);
-}
-
-CodeBlock* ScriptExecutable::newCodeBlockFor(
- CodeSpecializationKind kind, JSFunction* function, JSScope* scope, JSObject*& exception)
-{
- VM* vm = scope->vm();
- auto throwScope = DECLARE_THROW_SCOPE(*vm);
-
- ASSERT(vm->heap.isDeferred());
- ASSERT(startColumn() != UINT_MAX);
- ASSERT(endColumn() != UINT_MAX);
-
- if (classInfo() == EvalExecutable::info()) {
- EvalExecutable* executable = jsCast<EvalExecutable*>(this);
- RELEASE_ASSERT(kind == CodeForCall);
- RELEASE_ASSERT(!executable->m_evalCodeBlock);
- RELEASE_ASSERT(!function);
- return EvalCodeBlock::create(vm,
- executable, executable->m_unlinkedEvalCodeBlock.get(), scope,
- executable->source().provider());
- }
-
- if (classInfo() == ProgramExecutable::info()) {
- ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
- RELEASE_ASSERT(kind == CodeForCall);
- RELEASE_ASSERT(!executable->m_programCodeBlock);
- RELEASE_ASSERT(!function);
- return ProgramCodeBlock::create(vm,
- executable, executable->m_unlinkedProgramCodeBlock.get(), scope,
- executable->source().provider(), executable->source().startColumn());
- }
-
- if (classInfo() == ModuleProgramExecutable::info()) {
- ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
- RELEASE_ASSERT(kind == CodeForCall);
- RELEASE_ASSERT(!executable->m_moduleProgramCodeBlock);
- RELEASE_ASSERT(!function);
- return ModuleProgramCodeBlock::create(vm,
- executable, executable->m_unlinkedModuleProgramCodeBlock.get(), scope,
- executable->source().provider(), executable->source().startColumn());
- }
-
- RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
- RELEASE_ASSERT(function);
- FunctionExecutable* executable = jsCast<FunctionExecutable*>(this);
- RELEASE_ASSERT(!executable->codeBlockFor(kind));
- JSGlobalObject* globalObject = scope->globalObject();
- ParserError error;
- DebuggerMode debuggerMode = globalObject->hasInteractiveDebugger() ? DebuggerOn : DebuggerOff;
- UnlinkedFunctionCodeBlock* unlinkedCodeBlock =
- executable->m_unlinkedExecutable->unlinkedCodeBlockFor(
- *vm, executable->m_source, kind, debuggerMode, error,
- executable->parseMode());
- recordParse(
- executable->m_unlinkedExecutable->features(),
- executable->m_unlinkedExecutable->hasCapturedVariables(), firstLine(),
- lastLine(), startColumn(), endColumn());
- if (!unlinkedCodeBlock) {
- exception = throwException(
- globalObject->globalExec(), throwScope,
- error.toErrorObject(globalObject, executable->m_source));
- return nullptr;
- }
-
- SourceProvider* provider = executable->source().provider();
- unsigned sourceOffset = executable->source().startOffset();
- unsigned startColumn = executable->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<EvalExecutable*>(this);
- EvalCodeBlock* baseline = static_cast<EvalCodeBlock*>(
- executable->m_evalCodeBlock->baselineVersion());
- EvalCodeBlock* result = EvalCodeBlock::create(vm(),
- CodeBlock::CopyParsedBlock, *baseline);
- result->setAlternative(*vm(), baseline);
- return result;
- }
-
- if (classInfo() == ProgramExecutable::info()) {
- RELEASE_ASSERT(kind == CodeForCall);
- ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
- ProgramCodeBlock* baseline = static_cast<ProgramCodeBlock*>(
- executable->m_programCodeBlock->baselineVersion());
- ProgramCodeBlock* result = ProgramCodeBlock::create(vm(),
- CodeBlock::CopyParsedBlock, *baseline);
- result->setAlternative(*vm(), baseline);
- return result;
- }
-
- if (classInfo() == ModuleProgramExecutable::info()) {
- RELEASE_ASSERT(kind == CodeForCall);
- ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
- ModuleProgramCodeBlock* baseline = static_cast<ModuleProgramCodeBlock*>(
- executable->m_moduleProgramCodeBlock->baselineVersion());
- ModuleProgramCodeBlock* result = ModuleProgramCodeBlock::create(vm(),
- CodeBlock::CopyParsedBlock, *baseline);
- result->setAlternative(*vm(), baseline);
- return result;
- }
-
- RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
- FunctionExecutable* executable = jsCast<FunctionExecutable*>(this);
- FunctionCodeBlock* baseline = static_cast<FunctionCodeBlock*>(
- executable->codeBlockFor(kind)->baselineVersion());
- FunctionCodeBlock* result = FunctionCodeBlock::create(vm(),
- CodeBlock::CopyParsedBlock, *baseline);
- result->setAlternative(*vm(), baseline);
- return result;
-}
-
-static void setupLLInt(VM& vm, CodeBlock* codeBlock)
-{
- LLInt::setEntrypoint(vm, codeBlock);
-}
-
-static void setupJIT(VM& vm, CodeBlock* codeBlock)
-{
-#if ENABLE(JIT)
- CompilationResult result = JIT::compile(&vm, codeBlock, JITCompilationMustSucceed);
- RELEASE_ASSERT(result == CompilationSuccessful);
-#else
- UNUSED_PARAM(vm);
- UNUSED_PARAM(codeBlock);
- UNREACHABLE_FOR_PLATFORM();
-#endif
-}
-
-JSObject* ScriptExecutable::prepareForExecutionImpl(
- VM& vm, JSFunction* function, JSScope* scope, CodeSpecializationKind kind, CodeBlock*& resultCodeBlock)
-{
- DeferGCForAWhile deferGC(vm.heap);
-
- if (vm.getAndClearFailNextNewCodeBlock())
- return createError(scope->globalObject()->globalExec(), ASCIILiteral("Forced Failure"));
-
- JSObject* exception = 0;
- CodeBlock* codeBlock = newCodeBlockFor(kind, function, scope, exception);
- resultCodeBlock = codeBlock;
- if (!codeBlock) {
- RELEASE_ASSERT(exception);
- return exception;
- }
-
- if (Options::validateBytecode())
- codeBlock->validate();
-
- if (Options::useLLInt())
- setupLLInt(vm, codeBlock);
- else
- setupJIT(vm, codeBlock);
-
- installCode(vm, codeBlock, codeBlock->codeType(), codeBlock->specializationKind());
- return nullptr;
-}
-
-const ClassInfo EvalExecutable::s_info = { "EvalExecutable", &ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(EvalExecutable) };
-
-EvalExecutable* EvalExecutable::create(ExecState* exec, const SourceCode& source, bool isInStrictContext, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType, const VariableEnvironment* variablesUnderTDZ)
-{
- VM& vm = exec->vm();
- auto scope = DECLARE_THROW_SCOPE(vm);
-
- JSGlobalObject* globalObject = exec->lexicalGlobalObject();
- if (!globalObject->evalEnabled()) {
- throwException(exec, scope, createEvalError(exec, globalObject->evalDisabledErrorMessage()));
- return 0;
- }
-
- EvalExecutable* executable = new (NotNull, allocateCell<EvalExecutable>(*exec->heap())) EvalExecutable(exec, source, isInStrictContext, derivedContextType, isArrowFunctionContext, evalContextType);
- executable->finishCreation(vm);
-
- UnlinkedEvalCodeBlock* unlinkedEvalCode = globalObject->createEvalCodeBlock(exec, executable, variablesUnderTDZ);
- if (!unlinkedEvalCode)
- return 0;
-
- executable->m_unlinkedEvalCodeBlock.set(vm, executable, unlinkedEvalCode);
-
- return executable;
-}
-
-EvalExecutable::EvalExecutable(ExecState* exec, const SourceCode& source, bool inStrictContext, DerivedContextType derivedContextType, bool isArrowFunctionContext, EvalContextType evalContextType)
- : ScriptExecutable(exec->vm().evalExecutableStructure.get(), exec->vm(), source, inStrictContext, derivedContextType, isArrowFunctionContext, evalContextType, NoIntrinsic)
-{
- ASSERT(source.provider()->sourceType() == SourceProviderSourceType::Program);
-}
-
-void EvalExecutable::destroy(JSCell* cell)
-{
- static_cast<EvalExecutable*>(cell)->EvalExecutable::~EvalExecutable();
-}
-
-const ClassInfo ProgramExecutable::s_info = { "ProgramExecutable", &ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(ProgramExecutable) };
-
-ProgramExecutable::ProgramExecutable(ExecState* exec, const SourceCode& source)
- : ScriptExecutable(exec->vm().programExecutableStructure.get(), exec->vm(), source, false, DerivedContextType::None, false, EvalContextType::None, NoIntrinsic)
-{
- ASSERT(source.provider()->sourceType() == SourceProviderSourceType::Program);
- m_typeProfilingStartOffset = 0;
- m_typeProfilingEndOffset = source.length() - 1;
- if (exec->vm().typeProfiler() || exec->vm().controlFlowProfiler())
- exec->vm().functionHasExecutedCache()->insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
-}
-
-void ProgramExecutable::destroy(JSCell* cell)
-{
- static_cast<ProgramExecutable*>(cell)->ProgramExecutable::~ProgramExecutable();
-}
-
-const ClassInfo ModuleProgramExecutable::s_info = { "ModuleProgramExecutable", &ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(ModuleProgramExecutable) };
-
-ModuleProgramExecutable::ModuleProgramExecutable(ExecState* exec, const SourceCode& source)
- : ScriptExecutable(exec->vm().moduleProgramExecutableStructure.get(), exec->vm(), source, false, DerivedContextType::None, false, EvalContextType::None, NoIntrinsic)
-{
- ASSERT(source.provider()->sourceType() == SourceProviderSourceType::Module);
- m_typeProfilingStartOffset = 0;
- m_typeProfilingEndOffset = source.length() - 1;
- if (exec->vm().typeProfiler() || exec->vm().controlFlowProfiler())
- exec->vm().functionHasExecutedCache()->insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
-}
-
-ModuleProgramExecutable* ModuleProgramExecutable::create(ExecState* exec, const SourceCode& source)
-{
- JSGlobalObject* globalObject = exec->lexicalGlobalObject();
- ModuleProgramExecutable* executable = new (NotNull, allocateCell<ModuleProgramExecutable>(*exec->heap())) ModuleProgramExecutable(exec, source);
- executable->finishCreation(exec->vm());
-
- UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCode = globalObject->createModuleProgramCodeBlock(exec, executable);
- if (!unlinkedModuleProgramCode)
- return nullptr;
- executable->m_unlinkedModuleProgramCodeBlock.set(exec->vm(), executable, unlinkedModuleProgramCode);
-
- executable->m_moduleEnvironmentSymbolTable.set(exec->vm(), executable, jsCast<SymbolTable*>(unlinkedModuleProgramCode->constantRegister(unlinkedModuleProgramCode->moduleEnvironmentSymbolTableConstantRegisterOffset()).get())->cloneScopePart(exec->vm()));
-
- return executable;
-}
-
-void ModuleProgramExecutable::destroy(JSCell* cell)
-{
- static_cast<ModuleProgramExecutable*>(cell)->ModuleProgramExecutable::~ModuleProgramExecutable();
-}
-
-const ClassInfo FunctionExecutable::s_info = { "FunctionExecutable", &ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(FunctionExecutable) };
-
-FunctionExecutable::FunctionExecutable(VM& vm, const SourceCode& source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
- : ScriptExecutable(vm.functionExecutableStructure.get(), vm, source, unlinkedExecutable->isInStrictContext(), unlinkedExecutable->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->parametersStartOffset();
- m_typeProfilingStartOffset = unlinkedExecutable->typeProfilingStartOffset();
- m_typeProfilingEndOffset = unlinkedExecutable->typeProfilingEndOffset();
-}
-
-void FunctionExecutable::finishCreation(VM& vm)
-{
- Base::finishCreation(vm);
- m_singletonFunction.set(vm, this, InferredValue::create(vm));
-}
-
-void FunctionExecutable::destroy(JSCell* cell)
-{
- static_cast<FunctionExecutable*>(cell)->FunctionExecutable::~FunctionExecutable();
-}
-
-inline const char* samplingDescription(JITCode::JITType jitType)
-{
- switch (jitType) {
- case JITCode::InterpreterThunk:
- return "Interpreter Compilation (TOTAL)";
- case JITCode::BaselineJIT:
- return "Baseline Compilation (TOTAL)";
- case JITCode::DFGJIT:
- return "DFG Compilation (TOTAL)";
- case JITCode::FTLJIT:
- return "FTL Compilation (TOTAL)";
- default:
- RELEASE_ASSERT_NOT_REACHED();
- return 0;
- }
-}
-
-void EvalExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
-{
- EvalExecutable* thisObject = jsCast<EvalExecutable*>(cell);
- ASSERT_GC_OBJECT_INHERITS(thisObject, info());
- ScriptExecutable::visitChildren(thisObject, visitor);
- visitor.append(&thisObject->m_unlinkedEvalCodeBlock);
- if (thisObject->m_evalCodeBlock)
- thisObject->m_evalCodeBlock->visitWeakly(visitor);
-}
-
-JSObject* ProgramExecutable::checkSyntax(ExecState* exec)
-{
- ParserError error;
- VM* vm = &exec->vm();
- JSGlobalObject* lexicalGlobalObject = exec->lexicalGlobalObject();
- std::unique_ptr<ProgramNode> programNode = parse<ProgramNode>(
- 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& vm, CallFrame* callFrame, JSScope* scope)
-{
- RELEASE_ASSERT(scope);
- JSGlobalObject* globalObject = scope->globalObject();
- RELEASE_ASSERT(globalObject);
- ASSERT(&globalObject->vm() == &vm);
-
- JSObject* exception = 0;
- UnlinkedProgramCodeBlock* unlinkedCodeBlock = globalObject->createProgramCodeBlock(callFrame, this, &exception);
- if (exception)
- return exception;
-
- JSGlobalLexicalEnvironment* globalLexicalEnvironment = globalObject->globalLexicalEnvironment();
- const VariableEnvironment& variableDeclarations = unlinkedCodeBlock->variableDeclarations();
- const VariableEnvironment& lexicalDeclarations = unlinkedCodeBlock->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->globalExec();
- // Check for intersection of "var" and "let"/"const"/"class"
- for (auto& entry : lexicalDeclarations) {
- if (variableDeclarations.contains(entry.key))
- return createSyntaxError(exec, makeString("Can't create duplicate variable: '", String(entry.key.get()), "'"));
- }
-
- // Check if any new "let"/"const"/"class" will shadow any pre-existing global property names, or "var"/"let"/"const" variables.
- // It's an error to introduce a shadow.
- for (auto& entry : lexicalDeclarations) {
- if (globalObject->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->getOwnPropertyDescriptor(exec, entry.key.get(), descriptor);
-
- if (descriptor.value() != jsUndefined() && !descriptor.configurable())
- return createSyntaxError(exec, makeString("Can't create duplicate variable that shadows a global property: '", String(entry.key.get()), "'"));
- }
-
- if (globalLexicalEnvironment->hasProperty(exec, entry.key.get())) {
- if (UNLIKELY(entry.value.isConst() && !vm.globalConstRedeclarationShouldThrow() && !isStrictMode())) {
- // We only allow "const" duplicate declarations under this setting.
- // For example, we don't "let" variables to be overridden by "const" variables.
- if (globalLexicalEnvironment->isConstVariable(entry.key.get()))
- continue;
- }
- return createSyntaxError(exec, makeString("Can't create duplicate variable: '", String(entry.key.get()), "'"));
- }
- }
-
- // Check if any new "var"s will shadow any previous "let"/"const"/"class" names.
- // It's an error to introduce a shadow.
- if (!globalLexicalEnvironment->isEmpty()) {
- for (auto& entry : variableDeclarations) {
- if (globalLexicalEnvironment->hasProperty(exec, entry.key.get()))
- return createSyntaxError(exec, makeString("Can't create duplicate variable: '", String(entry.key.get()), "'"));
- }
- }
- }
-
-
- m_unlinkedProgramCodeBlock.set(vm, this, unlinkedCodeBlock);
-
- BatchedTransitionOptimizer optimizer(vm, globalObject);
-
- for (size_t i = 0, numberOfFunctions = unlinkedCodeBlock->numberOfFunctionDecls(); i < numberOfFunctions; ++i) {
- UnlinkedFunctionExecutable* unlinkedFunctionExecutable = unlinkedCodeBlock->functionDecl(i);
- ASSERT(!unlinkedFunctionExecutable->name().isEmpty());
- globalObject->addFunction(callFrame, unlinkedFunctionExecutable->name());
- if (vm.typeProfiler() || vm.controlFlowProfiler()) {
- vm.functionHasExecutedCache()->insertUnexecutedRange(sourceID(),
- unlinkedFunctionExecutable->typeProfilingStartOffset(),
- unlinkedFunctionExecutable->typeProfilingEndOffset());
- }
- }
-
- for (auto& entry : variableDeclarations) {
- ASSERT(entry.value.isVar());
- globalObject->addVar(callFrame, Identifier::fromUid(&vm, entry.key.get()));
- }
-
- {
- JSGlobalLexicalEnvironment* globalLexicalEnvironment = jsCast<JSGlobalLexicalEnvironment*>(globalObject->globalScope());
- SymbolTable* symbolTable = globalLexicalEnvironment->symbolTable();
- ConcurrentJITLocker locker(symbolTable->m_lock);
- for (auto& entry : lexicalDeclarations) {
- if (UNLIKELY(entry.value.isConst() && !vm.globalConstRedeclarationShouldThrow() && !isStrictMode())) {
- if (symbolTable->contains(locker, entry.key.get()))
- continue;
- }
- ScopeOffset offset = symbolTable->takeNextScopeOffset(locker);
- SymbolTableEntry newEntry(VarOffset(offset), entry.value.isConst() ? ReadOnly : 0);
- newEntry.prepareToWatch();
- symbolTable->add(locker, entry.key.get(), newEntry);
-
- ScopeOffset offsetForAssert = globalLexicalEnvironment->addVariables(1, jsTDZValue());
- RELEASE_ASSERT(offsetForAssert == offset);
- }
- }
- return 0;
-}
-
-void ProgramExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
-{
- ProgramExecutable* thisObject = jsCast<ProgramExecutable*>(cell);
- ASSERT_GC_OBJECT_INHERITS(thisObject, info());
- ScriptExecutable::visitChildren(thisObject, visitor);
- visitor.append(&thisObject->m_unlinkedProgramCodeBlock);
- if (thisObject->m_programCodeBlock)
- thisObject->m_programCodeBlock->visitWeakly(visitor);
-}
-
-void ModuleProgramExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
-{
- ModuleProgramExecutable* thisObject = jsCast<ModuleProgramExecutable*>(cell);
- ASSERT_GC_OBJECT_INHERITS(thisObject, info());
- ScriptExecutable::visitChildren(thisObject, visitor);
- visitor.append(&thisObject->m_unlinkedModuleProgramCodeBlock);
- visitor.append(&thisObject->m_moduleEnvironmentSymbolTable);
- if (thisObject->m_moduleProgramCodeBlock)
- thisObject->m_moduleProgramCodeBlock->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<FunctionCodeBlock*>(result->baselineAlternative());
-}
-
-void FunctionExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
-{
- FunctionExecutable* thisObject = jsCast<FunctionExecutable*>(cell);
- ASSERT_GC_OBJECT_INHERITS(thisObject, info());
- ScriptExecutable::visitChildren(thisObject, visitor);
- if (thisObject->m_codeBlockForCall)
- thisObject->m_codeBlockForCall->visitWeakly(visitor);
- if (thisObject->m_codeBlockForConstruct)
- thisObject->m_codeBlockForConstruct->visitWeakly(visitor);
- visitor.append(&thisObject->m_unlinkedExecutable);
- visitor.append(&thisObject->m_singletonFunction);
-}
-
-FunctionExecutable* FunctionExecutable::fromGlobalCode(
- const Identifier& name, ExecState& exec, const SourceCode& source,
- JSObject*& exception, int overrideLineNumber)
-{
- UnlinkedFunctionExecutable* unlinkedExecutable =
- UnlinkedFunctionExecutable::fromGlobalCode(
- name, exec, source, exception, overrideLineNumber);
- if (!unlinkedExecutable)
- return nullptr;
-
- return unlinkedExecutable->link(exec.vm(), source, overrideLineNumber);
-}
-
-#if ENABLE(WEBASSEMBLY)
-const ClassInfo WebAssemblyExecutable::s_info = { "WebAssemblyExecutable", &ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(WebAssemblyExecutable) };
-
-WebAssemblyExecutable::WebAssemblyExecutable(VM& vm, const SourceCode& source, unsigned functionIndex)
- : ExecutableBase(vm, vm.webAssemblyExecutableStructure.get(), NUM_PARAMETERS_NOT_COMPILED, NoIntrinsic)
- , m_source(source)
- , m_functionIndex(functionIndex)
-{
- ASSERT(source.provider()->sourceType() == SourceProviderSourceType::WebAssembly);
-}
-
-void WebAssemblyExecutable::destroy(JSCell* cell)
-{
- static_cast<WebAssemblyExecutable*>(cell)->WebAssemblyExecutable::~WebAssemblyExecutable();
-}
-
-void WebAssemblyExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
-{
- WebAssemblyExecutable* thisObject = jsCast<WebAssemblyExecutable*>(cell);
- ASSERT_GC_OBJECT_INHERITS(thisObject, info());
- ExecutableBase::visitChildren(thisObject, visitor);
- if (thisObject->m_codeBlockForCall)
- thisObject->m_codeBlockForCall->visitWeakly(visitor);
-}
-#endif
-
-void ExecutableBase::dump(PrintStream& out) const
-{
- ExecutableBase* realThis = const_cast<ExecutableBase*>(this);
-
- if (classInfo() == NativeExecutable::info()) {
- NativeExecutable* native = jsCast<NativeExecutable*>(realThis);
- out.print("NativeExecutable:", RawPointer(bitwise_cast<void*>(native->function())), "/", RawPointer(bitwise_cast<void*>(native->constructor())));
- return;
- }
-
- if (classInfo() == EvalExecutable::info()) {
- EvalExecutable* eval = jsCast<EvalExecutable*>(realThis);
- if (CodeBlock* codeBlock = eval->codeBlock())
- out.print(*codeBlock);
- else
- out.print("EvalExecutable w/o CodeBlock");
- return;
- }
-
- if (classInfo() == ProgramExecutable::info()) {
- ProgramExecutable* eval = jsCast<ProgramExecutable*>(realThis);
- if (CodeBlock* codeBlock = eval->codeBlock())
- out.print(*codeBlock);
- else
- out.print("ProgramExecutable w/o CodeBlock");
- return;
- }
-
- if (classInfo() == ModuleProgramExecutable::info()) {
- ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(realThis);
- if (CodeBlock* codeBlock = executable->codeBlock())
- out.print(*codeBlock);
- else
- out.print("ModuleProgramExecutable w/o CodeBlock");
- return;
- }
-
- FunctionExecutable* function = jsCast<FunctionExecutable*>(realThis);
- if (!function->eitherCodeBlock())
- out.print("FunctionExecutable w/o CodeBlock");
- else {
- CommaPrinter comma("/");
- if (function->codeBlockForCall())
- out.print(comma, *function->codeBlockForCall());
- if (function->codeBlockForConstruct())
- out.print(comma, *function->codeBlockForConstruct());
- }
-}
-
-CodeBlockHash ExecutableBase::hashFor(CodeSpecializationKind kind) const
-{
- if (this->classInfo() == NativeExecutable::info())
- return jsCast<const NativeExecutable*>(this)->hashFor(kind);
-
- return jsCast<const ScriptExecutable*>(this)->hashFor(kind);
-}
-
-CodeBlockHash NativeExecutable::hashFor(CodeSpecializationKind kind) const
-{
- if (kind == CodeForCall)
- return CodeBlockHash(static_cast<unsigned>(bitwise_cast<size_t>(m_function)));
-
- RELEASE_ASSERT(kind == CodeForConstruct);
- return CodeBlockHash(static_cast<unsigned>(bitwise_cast<size_t>(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 "ArityCheckMode.h"
-#include "CallData.h"
-#include "CodeBlockHash.h"
-#include "CodeSpecializationKind.h"
-#include "CompilationResult.h"
-#include "ExecutableInfo.h"
-#include "HandlerInfo.h"
-#include "InferredValue.h"
-#include "JITCode.h"
-#include "JSGlobalObject.h"
-#include "SourceCode.h"
-#include "TypeSet.h"
-#include "UnlinkedCodeBlock.h"
-#include "UnlinkedFunctionExecutable.h"
-
-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& vm, Structure* structure, int numParameters, Intrinsic intrinsic)
- : JSCell(vm, structure)
- , m_numParametersForCall(numParameters)
- , m_numParametersForConstruct(numParameters)
- , m_intrinsic(intrinsic)
- {
- }
-
- void finishCreation(VM& 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& 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<JITCode> generatedJITCodeForCall()
- {
- ASSERT(m_jitCodeForCall);
- return m_jitCodeForCall;
- }
-
- PassRefPtr<JITCode> generatedJITCodeForConstruct()
- {
- ASSERT(m_jitCodeForConstruct);
- return m_jitCodeForConstruct;
- }
-
- PassRefPtr<JITCode> 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 "cache" 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)->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 >= 0;
- }
-
- bool hasJITCodeForConstruct() const
- {
- return m_numParametersForConstruct >= 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&) const;
-
-protected:
- Intrinsic m_intrinsic;
- RefPtr<JITCode> m_jitCodeForCall;
- RefPtr<JITCode> 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& vm, PassRefPtr<JITCode> callThunk, NativeFunction function, PassRefPtr<JITCode> constructThunk, NativeFunction constructor, Intrinsic intrinsic, const String& 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&, JSGlobalObject*, JSValue proto);
-
- DECLARE_INFO;
-
- const String& name() const { return m_name; }
-
-protected:
- void finishCreation(VM&, PassRefPtr<JITCode> callThunk, PassRefPtr<JITCode> constructThunk, const String& name);
-
-private:
- friend class ExecutableBase;
-
- NativeExecutable(VM&, 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& source() const { return m_source; }
- intptr_t sourceID() const { return m_source.providerID(); }
- const String& sourceURL() const { return m_source.provider()->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 & EvalFeature; }
- bool usesArguments() const { return m_features & ArgumentsFeature; }
- bool isArrowFunctionContext() const { return m_isArrowFunctionContext; }
- bool isStrictMode() const { return m_features & StrictModeFeature; }
- DerivedContextType derivedContextType() const { return static_cast<DerivedContextType>(m_derivedContextType); }
- EvalContextType evalContextType() const { return static_cast<EvalContextType>(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 &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&, CodeBlock*, CodeType, CodeSpecializationKind);
- CodeBlock* newCodeBlockFor(CodeSpecializationKind, JSFunction*, JSScope*, JSObject*& 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*& 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 <typename ExecutableType>
- JSObject* prepareForExecution(VM&, JSFunction*, JSScope*, CodeSpecializationKind, CodeBlock*& resultCodeBlock);
-
- template <typename Functor> void forEachCodeBlock(Functor&&);
-
-private:
- friend class ExecutableBase;
- JSObject* prepareForExecutionImpl(VM&, JSFunction*, JSScope*, CodeSpecializationKind, CodeBlock*&);
-
-protected:
- ScriptExecutable(Structure*, VM&, const SourceCode&, bool isInStrictContext, DerivedContextType, bool isInArrowFunctionContext, EvalContextType, Intrinsic);
-
- void finishCreation(VM& vm)
- {
- Base::finishCreation(vm);
- vm.heap.addExecutable(this); // Balanced by Heap::deleteUnmarkedCompiledCode().
-
-#if ENABLE(CODEBLOCK_SAMPLING)
- if (SamplingTool* sampler = vm.interpreter->sampler())
- sampler->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&, bool isInStrictContext, DerivedContextType, bool isArrowFunctionContext, EvalContextType, const VariableEnvironment*);
-
- PassRefPtr<JITCode> generatedJITCode()
- {
- return generatedJITCodeForCall();
- }
-
- static Structure* createStructure(VM& 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->numVariables(); }
- unsigned numberOfFunctionDecls() { return m_unlinkedEvalCodeBlock->numberOfFunctionDecls(); }
-
-private:
- friend class ExecutableBase;
- friend class ScriptExecutable;
-
- EvalExecutable(ExecState*, const SourceCode&, bool inStrictContext, DerivedContextType, bool isArrowFunctionContext, EvalContextType);
-
- static void visitChildren(JSCell*, SlotVisitor&);
-
- WriteBarrier<EvalCodeBlock> m_evalCodeBlock;
- WriteBarrier<UnlinkedEvalCodeBlock> 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& source)
- {
- ProgramExecutable* executable = new (NotNull, allocateCell<ProgramExecutable>(*exec->heap())) ProgramExecutable(exec, source);
- executable->finishCreation(exec->vm());
- return executable;
- }
-
-
- JSObject* initializeGlobalProperties(VM&, CallFrame*, JSScope*);
-
- static void destroy(JSCell*);
-
- ProgramCodeBlock* codeBlock()
- {
- return m_programCodeBlock.get();
- }
-
- JSObject* checkSyntax(ExecState*);
-
- PassRefPtr<JITCode> generatedJITCode()
- {
- return generatedJITCodeForCall();
- }
-
- static Structure* createStructure(VM& 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&);
-
- static void visitChildren(JSCell*, SlotVisitor&);
-
- WriteBarrier<UnlinkedProgramCodeBlock> m_unlinkedProgramCodeBlock;
- WriteBarrier<ProgramCodeBlock> 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&);
-
- static void destroy(JSCell*);
-
- ModuleProgramCodeBlock* codeBlock()
- {
- return m_moduleProgramCodeBlock.get();
- }
-
- PassRefPtr<JITCode> generatedJITCode()
- {
- return generatedJITCodeForCall();
- }
-
- static Structure* createStructure(VM& 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&);
-
- static void visitChildren(JSCell*, SlotVisitor&);
-
- WriteBarrier<UnlinkedModuleProgramCodeBlock> m_unlinkedModuleProgramCodeBlock;
- WriteBarrier<SymbolTable> m_moduleEnvironmentSymbolTable;
- WriteBarrier<ModuleProgramCodeBlock> 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& vm, const SourceCode& source, UnlinkedFunctionExecutable* unlinkedExecutable,
- unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
- {
- FunctionExecutable* executable = new (NotNull, allocateCell<FunctionExecutable>(vm.heap)) FunctionExecutable(vm, source, unlinkedExecutable, firstLine, lastLine, startColumn, endColumn, intrinsic);
- executable->finishCreation(vm);
- return executable;
- }
- static FunctionExecutable* fromGlobalCode(
- const Identifier& name, ExecState&, const SourceCode&,
- JSObject*& 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<TypeSet> returnStatementTypeSet()
- {
- if (!m_returnStatementTypeSet)
- m_returnStatementTypeSet = TypeSet::create();
-
- return m_returnStatementTypeSet;
- }
-
- FunctionMode functionMode() { return m_unlinkedExecutable->functionMode(); }
- bool isBuiltinFunction() const { return m_unlinkedExecutable->isBuiltinFunction(); }
- ConstructAbility constructAbility() const { return m_unlinkedExecutable->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
- // "caller" and "arguments".
- return !isStrictMode() && parseMode() == SourceParseMode::NormalFunctionMode && !isClassConstructorFunction();
- }
- bool hasPrototypeProperty() const
- {
- return SourceParseModeSet(
- SourceParseMode::NormalFunctionMode,
- SourceParseMode::GeneratorBodyMode,
- SourceParseMode::GeneratorWrapperFunctionMode
- ).contains(parseMode()) || isClass();
- }
- DerivedContextType derivedContextType() const { return m_unlinkedExecutable->derivedContextType(); }
- bool isClassConstructorFunction() const { return m_unlinkedExecutable->isClassConstructorFunction(); }
- const Identifier& name() { return m_unlinkedExecutable->name(); }
- const Identifier& ecmaName() { return m_unlinkedExecutable->ecmaName(); }
- const Identifier& inferredName() { return m_unlinkedExecutable->inferredName(); }
- unsigned parameterCount() const { return m_unlinkedExecutable->parameterCount(); } // Excluding 'this'!
- unsigned functionLength() const { return m_unlinkedExecutable->functionLength(); }
- SourceParseMode parseMode() const { return m_unlinkedExecutable->parseMode(); }
- JSParserScriptMode scriptMode() const { return m_unlinkedExecutable->scriptMode(); }
- const SourceCode& classSource() const { return m_unlinkedExecutable->classSource(); }
-
- static void visitChildren(JSCell*, SlotVisitor&);
- static Structure* createStructure(VM& 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&, const SourceCode&, UnlinkedFunctionExecutable*, unsigned firstLine,
- unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic);
-
- void finishCreation(VM&);
-
- friend class ScriptExecutable;
-
- unsigned m_parametersStartOffset;
- WriteBarrier<UnlinkedFunctionExecutable> m_unlinkedExecutable;
- WriteBarrier<FunctionCodeBlock> m_codeBlockForCall;
- WriteBarrier<FunctionCodeBlock> m_codeBlockForConstruct;
- RefPtr<TypeSet> m_returnStatementTypeSet;
- WriteBarrier<InferredValue> 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& vm, const SourceCode& source, unsigned functionIndex)
- {
- WebAssemblyExecutable* executable = new (NotNull, allocateCell<WebAssemblyExecutable>(vm.heap)) WebAssemblyExecutable(vm, source, functionIndex);
- executable->finishCreation(vm);
- return executable;
- }
-
- static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
- {
- return Structure::create(vm, globalObject, proto, TypeInfo(WebAssemblyExecutableType, StructureFlags), info());
- }
-
- static void destroy(JSCell*);
-
- DECLARE_INFO;
-
- void prepareForExecution(VM&);
-
- WebAssemblyCodeBlock* codeBlockForCall()
- {
- return m_codeBlockForCall.get();
- }
-
-private:
- friend class ExecutableBase;
- WebAssemblyExecutable(VM&, const SourceCode&, unsigned functionIndex);
-
- static void visitChildren(JSCell*, SlotVisitor&);
-
- SourceCode m_source;
- unsigned m_functionIndex;
-
- WriteBarrier<WebAssemblyCodeBlock> m_codeBlockForCall;
-};
-#endif
-
-template <typename ExecutableType>
-JSObject* ScriptExecutable::prepareForExecution(VM& vm, JSFunction* function, JSScope* scope, CodeSpecializationKind kind, CodeBlock*& resultCodeBlock)
-{
- if (hasJITCodeFor(kind)) {
- if (std::is_same<ExecutableType, EvalExecutable>::value)
- resultCodeBlock = jsCast<CodeBlock*>(jsCast<EvalExecutable*>(this)->codeBlock());
- else if (std::is_same<ExecutableType, ProgramExecutable>::value)
- resultCodeBlock = jsCast<CodeBlock*>(jsCast<ProgramExecutable*>(this)->codeBlock());
- else if (std::is_same<ExecutableType, ModuleProgramExecutable>::value)
- resultCodeBlock = jsCast<CodeBlock*>(jsCast<ModuleProgramExecutable*>(this)->codeBlock());
- else if (std::is_same<ExecutableType, FunctionExecutable>::value)
- resultCodeBlock = jsCast<CodeBlock*>(jsCast<FunctionExecutable*>(this)->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 "config.h"
+
+#include "BatchedTransitionOptimizer.h"
+#include "CodeBlock.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSCInlines.h"
+#include "LLIntEntrypoint.h"
+#include "Parser.h"
+#include "TypeProfiler.h"
+#include "VMInlines.h"
+#include <wtf/CommaPrinter.h>
+
+namespace JSC {
+
+const ClassInfo ExecutableBase::s_info = { "Executable", 0, 0, CREATE_METHOD_TABLE(ExecutableBase) };
+
+void ExecutableBase::destroy(JSCell* cell)
+{
+ static_cast<ExecutableBase*>(cell)->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<FunctionExecutable*>(this);
+ executable->m_codeBlockForCall.clear();
+ executable->m_codeBlockForConstruct.clear();
+ return;
+ }
+
+ if (classInfo() == EvalExecutable::info()) {
+ EvalExecutable* executable = jsCast<EvalExecutable*>(this);
+ executable->m_evalCodeBlock.clear();
+ executable->m_unlinkedEvalCodeBlock.clear();
+ return;
+ }
+
+ if (classInfo() == ProgramExecutable::info()) {
+ ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
+ executable->m_programCodeBlock.clear();
+ executable->m_unlinkedProgramCodeBlock.clear();
+ return;
+ }
+
+ if (classInfo() == ModuleProgramExecutable::info()) {
+ ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
+ executable->m_moduleProgramCodeBlock.clear();
+ executable->m_unlinkedModuleProgramCodeBlock.clear();
+ executable->m_moduleEnvironmentSymbolTable.clear();
+ return;
+ }
+
+#if ENABLE(WEBASSEMBLY)
+ if (classInfo() == WebAssemblyExecutable::info()) {
+ WebAssemblyExecutable* executable = jsCast<WebAssemblyExecutable*>(this);
+ executable->m_codeBlockForCall.clear();
+ return;
+ }
+#endif
+
+ ASSERT(classInfo() == NativeExecutable::info());
+}
+
+void ExecutableBase::dump(PrintStream& out) const
+{
+ ExecutableBase* realThis = const_cast<ExecutableBase*>(this);
+
+ if (classInfo() == NativeExecutable::info()) {
+ NativeExecutable* native = jsCast<NativeExecutable*>(realThis);
+ out.print("NativeExecutable:", RawPointer(bitwise_cast<void*>(native->function())), "/", RawPointer(bitwise_cast<void*>(native->constructor())));
+ return;
+ }
+
+ if (classInfo() == EvalExecutable::info()) {
+ EvalExecutable* eval = jsCast<EvalExecutable*>(realThis);
+ if (CodeBlock* codeBlock = eval->codeBlock())
+ out.print(*codeBlock);
+ else
+ out.print("EvalExecutable w/o CodeBlock");
+ return;
+ }
+
+ if (classInfo() == ProgramExecutable::info()) {
+ ProgramExecutable* eval = jsCast<ProgramExecutable*>(realThis);
+ if (CodeBlock* codeBlock = eval->codeBlock())
+ out.print(*codeBlock);
+ else
+ out.print("ProgramExecutable w/o CodeBlock");
+ return;
+ }
+
+ if (classInfo() == ModuleProgramExecutable::info()) {
+ ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(realThis);
+ if (CodeBlock* codeBlock = executable->codeBlock())
+ out.print(*codeBlock);
+ else
+ out.print("ModuleProgramExecutable w/o CodeBlock");
+ return;
+ }
+
+ FunctionExecutable* function = jsCast<FunctionExecutable*>(realThis);
+ if (!function->eitherCodeBlock())
+ out.print("FunctionExecutable w/o CodeBlock");
+ else {
+ CommaPrinter comma("/");
+ if (function->codeBlockForCall())
+ out.print(comma, *function->codeBlockForCall());
+ if (function->codeBlockForConstruct())
+ out.print(comma, *function->codeBlockForConstruct());
+ }
+}
+
+CodeBlockHash ExecutableBase::hashFor(CodeSpecializationKind kind) const
+{
+ if (this->classInfo() == NativeExecutable::info())
+ return jsCast<const NativeExecutable*>(this)->hashFor(kind);
+
+ return jsCast<const ScriptExecutable*>(this)->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 "ArityCheckMode.h"
+#include "CallData.h"
+#include "CodeBlockHash.h"
+#include "CodeSpecializationKind.h"
+#include "CompilationResult.h"
+#include "ExecutableInfo.h"
+#include "HandlerInfo.h"
+#include "InferredValue.h"
+#include "JITCode.h"
+#include "JSGlobalObject.h"
+#include "SourceCode.h"
+#include "TypeSet.h"
+#include "UnlinkedCodeBlock.h"
+#include "UnlinkedFunctionExecutable.h"
+
+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& vm, Structure* structure, int numParameters, Intrinsic intrinsic)
+ : JSCell(vm, structure)
+ , m_numParametersForCall(numParameters)
+ , m_numParametersForConstruct(numParameters)
+ , m_intrinsic(intrinsic)
+ {
+ }
+
+ void finishCreation(VM& 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& 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<JITCode> generatedJITCodeForCall()
+ {
+ ASSERT(m_jitCodeForCall);
+ return m_jitCodeForCall;
+ }
+
+ PassRefPtr<JITCode> generatedJITCodeForConstruct()
+ {
+ ASSERT(m_jitCodeForConstruct);
+ return m_jitCodeForConstruct;
+ }
+
+ PassRefPtr<JITCode> 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 "cache" 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)->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 >= 0;
+ }
+
+ bool hasJITCodeForConstruct() const
+ {
+ return m_numParametersForConstruct >= 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&) const;
+
+protected:
+ Intrinsic m_intrinsic;
+ RefPtr<JITCode> m_jitCodeForCall;
+ RefPtr<JITCode> 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 "config.h"
+
+#include "BatchedTransitionOptimizer.h"
+#include "CodeBlock.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSCInlines.h"
+#include "LLIntEntrypoint.h"
+#include "Parser.h"
+#include "TypeProfiler.h"
+#include "VMInlines.h"
+#include <wtf/CommaPrinter.h>
+
+namespace JSC {
+
+const ClassInfo FunctionExecutable::s_info = { "FunctionExecutable", &ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(FunctionExecutable) };
+
+FunctionExecutable::FunctionExecutable(VM& vm, const SourceCode& source, UnlinkedFunctionExecutable* unlinkedExecutable, unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
+ : ScriptExecutable(vm.functionExecutableStructure.get(), vm, source, unlinkedExecutable->isInStrictContext(), unlinkedExecutable->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->parametersStartOffset();
+ m_typeProfilingStartOffset = unlinkedExecutable->typeProfilingStartOffset();
+ m_typeProfilingEndOffset = unlinkedExecutable->typeProfilingEndOffset();
+}
+
+void FunctionExecutable::finishCreation(VM& vm)
+{
+ Base::finishCreation(vm);
+ m_singletonFunction.set(vm, this, InferredValue::create(vm));
+}
+
+void FunctionExecutable::destroy(JSCell* cell)
+{
+ static_cast<FunctionExecutable*>(cell)->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<FunctionCodeBlock*>(result->baselineAlternative());
+}
+
+void FunctionExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
+{
+ FunctionExecutable* thisObject = jsCast<FunctionExecutable*>(cell);
+ ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+ ScriptExecutable::visitChildren(thisObject, visitor);
+ if (thisObject->m_codeBlockForCall)
+ thisObject->m_codeBlockForCall->visitWeakly(visitor);
+ if (thisObject->m_codeBlockForConstruct)
+ thisObject->m_codeBlockForConstruct->visitWeakly(visitor);
+ visitor.append(&thisObject->m_unlinkedExecutable);
+ visitor.append(&thisObject->m_singletonFunction);
+}
+
+FunctionExecutable* FunctionExecutable::fromGlobalCode(
+ const Identifier& name, ExecState& exec, const SourceCode& source,
+ JSObject*& exception, int overrideLineNumber)
+{
+ UnlinkedFunctionExecutable* unlinkedExecutable =
+ UnlinkedFunctionExecutable::fromGlobalCode(
+ name, exec, source, exception, overrideLineNumber);
+ if (!unlinkedExecutable)
+ return nullptr;
+
+ return unlinkedExecutable->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 "ScriptExecutable.h"
+
+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& vm, const SourceCode& source, UnlinkedFunctionExecutable* unlinkedExecutable,
+ unsigned firstLine, unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic intrinsic)
+ {
+ FunctionExecutable* executable = new (NotNull, allocateCell<FunctionExecutable>(vm.heap)) FunctionExecutable(vm, source, unlinkedExecutable, firstLine, lastLine, startColumn, endColumn, intrinsic);
+ executable->finishCreation(vm);
+ return executable;
+ }
+ static FunctionExecutable* fromGlobalCode(
+ const Identifier& name, ExecState&, const SourceCode&,
+ JSObject*& 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<TypeSet> returnStatementTypeSet()
+ {
+ if (!m_returnStatementTypeSet)
+ m_returnStatementTypeSet = TypeSet::create();
+
+ return m_returnStatementTypeSet;
+ }
+
+ FunctionMode functionMode() { return m_unlinkedExecutable->functionMode(); }
+ bool isBuiltinFunction() const { return m_unlinkedExecutable->isBuiltinFunction(); }
+ ConstructAbility constructAbility() const { return m_unlinkedExecutable->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
+ // "caller" and "arguments".
+ return !isStrictMode() && parseMode() == SourceParseMode::NormalFunctionMode && !isClassConstructorFunction();
+ }
+ bool hasPrototypeProperty() const
+ {
+ return SourceParseModeSet(
+ SourceParseMode::NormalFunctionMode,
+ SourceParseMode::GeneratorBodyMode,
+ SourceParseMode::GeneratorWrapperFunctionMode
+ ).contains(parseMode()) || isClass();
+ }
+ DerivedContextType derivedContextType() const { return m_unlinkedExecutable->derivedContextType(); }
+ bool isClassConstructorFunction() const { return m_unlinkedExecutable->isClassConstructorFunction(); }
+ const Identifier& name() { return m_unlinkedExecutable->name(); }
+ const Identifier& ecmaName() { return m_unlinkedExecutable->ecmaName(); }
+ const Identifier& inferredName() { return m_unlinkedExecutable->inferredName(); }
+ unsigned parameterCount() const { return m_unlinkedExecutable->parameterCount(); } // Excluding 'this'!
+ unsigned functionLength() const { return m_unlinkedExecutable->functionLength(); }
+ SourceParseMode parseMode() const { return m_unlinkedExecutable->parseMode(); }
+ JSParserScriptMode scriptMode() const { return m_unlinkedExecutable->scriptMode(); }
+ const SourceCode& classSource() const { return m_unlinkedExecutable->classSource(); }
+
+ static void visitChildren(JSCell*, SlotVisitor&);
+ static Structure* createStructure(VM& 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&, const SourceCode&, UnlinkedFunctionExecutable*, unsigned firstLine,
+ unsigned lastLine, unsigned startColumn, unsigned endColumn, Intrinsic);
+
+ void finishCreation(VM&);
+
+ friend class ScriptExecutable;
+
+ unsigned m_parametersStartOffset;
+ WriteBarrier<UnlinkedFunctionExecutable> m_unlinkedExecutable;
+ WriteBarrier<FunctionCodeBlock> m_codeBlockForCall;
+ WriteBarrier<FunctionCodeBlock> m_codeBlockForConstruct;
+ RefPtr<TypeSet> m_returnStatementTypeSet;
+ WriteBarrier<InferredValue> 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 "Executable.h"
</del><span class="cx"> #include <wtf/PrintStream.h>
</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 "ButterflyInlines.h"
</span><span class="cx"> #include "CodeBlock.h"
</span><span class="cx"> #include "Error.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "GetterSetter.h"
</span><span class="cx"> #include "IndexingHeaderInlines.h"
</span><span class="cx"> #include "JSArrayInlines.h"
</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 "Executable.h"
</del><ins>+#include "FunctionExecutable.h"
</ins><span class="cx"> #include "JSFunction.h"
</span><ins>+#include "NativeExecutable.h"
+#include "WebAssemblyExecutable.h"
</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 "JSModuleRecord.h"
</span><span class="cx">
</span><span class="cx"> #include "Error.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "Interpreter.h"
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "JSMap.h"
</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 "DatePrototype.h"
</span><span class="cx"> #include "ErrorConstructor.h"
</span><span class="cx"> #include "Exception.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "GetterSetter.h"
</span><span class="cx"> #include "HeapSnapshotBuilder.h"
</span><span class="cx"> #include "IndexingHeaderInlines.h"
</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 "config.h"
</span><span class="cx"> #include "Lookup.h"
</span><span class="cx">
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "GetterSetter.h"
</span><span class="cx"> #include "JSFunction.h"
</span><span class="cx"> #include "JSCInlines.h"
</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 "config.h"
+
+#include "BatchedTransitionOptimizer.h"
+#include "CodeBlock.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSCInlines.h"
+#include "LLIntEntrypoint.h"
+#include "Parser.h"
+#include "TypeProfiler.h"
+#include "VMInlines.h"
+#include <wtf/CommaPrinter.h>
+
+namespace JSC {
+
+const ClassInfo ModuleProgramExecutable::s_info = { "ModuleProgramExecutable", &ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(ModuleProgramExecutable) };
+
+ModuleProgramExecutable::ModuleProgramExecutable(ExecState* exec, const SourceCode& source)
+ : ScriptExecutable(exec->vm().moduleProgramExecutableStructure.get(), exec->vm(), source, false, DerivedContextType::None, false, EvalContextType::None, NoIntrinsic)
+{
+ ASSERT(source.provider()->sourceType() == SourceProviderSourceType::Module);
+ m_typeProfilingStartOffset = 0;
+ m_typeProfilingEndOffset = source.length() - 1;
+ if (exec->vm().typeProfiler() || exec->vm().controlFlowProfiler())
+ exec->vm().functionHasExecutedCache()->insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
+}
+
+ModuleProgramExecutable* ModuleProgramExecutable::create(ExecState* exec, const SourceCode& source)
+{
+ JSGlobalObject* globalObject = exec->lexicalGlobalObject();
+ ModuleProgramExecutable* executable = new (NotNull, allocateCell<ModuleProgramExecutable>(*exec->heap())) ModuleProgramExecutable(exec, source);
+ executable->finishCreation(exec->vm());
+
+ UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCode = globalObject->createModuleProgramCodeBlock(exec, executable);
+ if (!unlinkedModuleProgramCode)
+ return nullptr;
+ executable->m_unlinkedModuleProgramCodeBlock.set(exec->vm(), executable, unlinkedModuleProgramCode);
+
+ executable->m_moduleEnvironmentSymbolTable.set(exec->vm(), executable, jsCast<SymbolTable*>(unlinkedModuleProgramCode->constantRegister(unlinkedModuleProgramCode->moduleEnvironmentSymbolTableConstantRegisterOffset()).get())->cloneScopePart(exec->vm()));
+
+ return executable;
+}
+
+void ModuleProgramExecutable::destroy(JSCell* cell)
+{
+ static_cast<ModuleProgramExecutable*>(cell)->ModuleProgramExecutable::~ModuleProgramExecutable();
+}
+
+void ModuleProgramExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
+{
+ ModuleProgramExecutable* thisObject = jsCast<ModuleProgramExecutable*>(cell);
+ ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+ ScriptExecutable::visitChildren(thisObject, visitor);
+ visitor.append(&thisObject->m_unlinkedModuleProgramCodeBlock);
+ visitor.append(&thisObject->m_moduleEnvironmentSymbolTable);
+ if (thisObject->m_moduleProgramCodeBlock)
+ thisObject->m_moduleProgramCodeBlock->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 "ScriptExecutable.h"
+
+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&);
+
+ static void destroy(JSCell*);
+
+ ModuleProgramCodeBlock* codeBlock()
+ {
+ return m_moduleProgramCodeBlock.get();
+ }
+
+ PassRefPtr<JITCode> generatedJITCode()
+ {
+ return generatedJITCodeForCall();
+ }
+
+ static Structure* createStructure(VM& 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&);
+
+ static void visitChildren(JSCell*, SlotVisitor&);
+
+ WriteBarrier<UnlinkedModuleProgramCodeBlock> m_unlinkedModuleProgramCodeBlock;
+ WriteBarrier<SymbolTable> m_moduleEnvironmentSymbolTable;
+ WriteBarrier<ModuleProgramCodeBlock> 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 "config.h"
+
+#include "BatchedTransitionOptimizer.h"
+#include "CodeBlock.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSCInlines.h"
+#include "LLIntEntrypoint.h"
+#include "Parser.h"
+#include "TypeProfiler.h"
+#include "VMInlines.h"
+#include <wtf/CommaPrinter.h>
+
+namespace JSC {
+
+const ClassInfo NativeExecutable::s_info = { "NativeExecutable", &ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(NativeExecutable) };
+
+NativeExecutable* NativeExecutable::create(VM& vm, PassRefPtr<JITCode> callThunk, NativeFunction function, PassRefPtr<JITCode> constructThunk, NativeFunction constructor, Intrinsic intrinsic, const String& name)
+{
+ NativeExecutable* executable;
+ executable = new (NotNull, allocateCell<NativeExecutable>(vm.heap)) NativeExecutable(vm, function, constructor, intrinsic);
+ executable->finishCreation(vm, callThunk, constructThunk, name);
+ return executable;
+}
+
+void NativeExecutable::destroy(JSCell* cell)
+{
+ static_cast<NativeExecutable*>(cell)->NativeExecutable::~NativeExecutable();
+}
+
+Structure* NativeExecutable::createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
+{
+ return Structure::create(vm, globalObject, proto, TypeInfo(CellType, StructureFlags), info());
+}
+
+void NativeExecutable::finishCreation(VM& vm, PassRefPtr<JITCode> callThunk, PassRefPtr<JITCode> constructThunk, const String& name)
+{
+ Base::finishCreation(vm);
+ m_jitCodeForCall = callThunk;
+ m_jitCodeForConstruct = constructThunk;
+ m_jitCodeForCallWithArityCheck = m_jitCodeForCall->addressForCall(MustCheckArity);
+ m_jitCodeForConstructWithArityCheck = m_jitCodeForConstruct->addressForCall(MustCheckArity);
+ m_name = name;
+}
+
+NativeExecutable::NativeExecutable(VM& 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<unsigned>(bitwise_cast<size_t>(m_function)));
+
+ RELEASE_ASSERT(kind == CodeForConstruct);
+ return CodeBlockHash(static_cast<unsigned>(bitwise_cast<size_t>(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 "ExecutableBase.h"
+
+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& vm, PassRefPtr<JITCode> callThunk, NativeFunction function, PassRefPtr<JITCode> constructThunk, NativeFunction constructor, Intrinsic intrinsic, const String& 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&, JSGlobalObject*, JSValue proto);
+
+ DECLARE_INFO;
+
+ const String& name() const { return m_name; }
+
+protected:
+ void finishCreation(VM&, PassRefPtr<JITCode> callThunk, PassRefPtr<JITCode> constructThunk, const String& name);
+
+private:
+ friend class ExecutableBase;
+
+ NativeExecutable(VM&, 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 "config.h"
+
+#include "BatchedTransitionOptimizer.h"
+#include "CodeBlock.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSCInlines.h"
+#include "LLIntEntrypoint.h"
+#include "Parser.h"
+#include "TypeProfiler.h"
+#include "VMInlines.h"
+#include <wtf/CommaPrinter.h>
+
+namespace JSC {
+
+const ClassInfo ProgramExecutable::s_info = { "ProgramExecutable", &ScriptExecutable::s_info, 0, CREATE_METHOD_TABLE(ProgramExecutable) };
+
+ProgramExecutable::ProgramExecutable(ExecState* exec, const SourceCode& source)
+ : ScriptExecutable(exec->vm().programExecutableStructure.get(), exec->vm(), source, false, DerivedContextType::None, false, EvalContextType::None, NoIntrinsic)
+{
+ ASSERT(source.provider()->sourceType() == SourceProviderSourceType::Program);
+ m_typeProfilingStartOffset = 0;
+ m_typeProfilingEndOffset = source.length() - 1;
+ if (exec->vm().typeProfiler() || exec->vm().controlFlowProfiler())
+ exec->vm().functionHasExecutedCache()->insertUnexecutedRange(sourceID(), m_typeProfilingStartOffset, m_typeProfilingEndOffset);
+}
+
+void ProgramExecutable::destroy(JSCell* cell)
+{
+ static_cast<ProgramExecutable*>(cell)->ProgramExecutable::~ProgramExecutable();
+}
+
+JSObject* ProgramExecutable::checkSyntax(ExecState* exec)
+{
+ ParserError error;
+ VM* vm = &exec->vm();
+ JSGlobalObject* lexicalGlobalObject = exec->lexicalGlobalObject();
+ std::unique_ptr<ProgramNode> programNode = parse<ProgramNode>(
+ 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& vm, CallFrame* callFrame, JSScope* scope)
+{
+ RELEASE_ASSERT(scope);
+ JSGlobalObject* globalObject = scope->globalObject();
+ RELEASE_ASSERT(globalObject);
+ ASSERT(&globalObject->vm() == &vm);
+
+ JSObject* exception = 0;
+ UnlinkedProgramCodeBlock* unlinkedCodeBlock = globalObject->createProgramCodeBlock(callFrame, this, &exception);
+ if (exception)
+ return exception;
+
+ JSGlobalLexicalEnvironment* globalLexicalEnvironment = globalObject->globalLexicalEnvironment();
+ const VariableEnvironment& variableDeclarations = unlinkedCodeBlock->variableDeclarations();
+ const VariableEnvironment& lexicalDeclarations = unlinkedCodeBlock->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->globalExec();
+ // Check for intersection of "var" and "let"/"const"/"class"
+ for (auto& entry : lexicalDeclarations) {
+ if (variableDeclarations.contains(entry.key))
+ return createSyntaxError(exec, makeString("Can't create duplicate variable: '", String(entry.key.get()), "'"));
+ }
+
+ // Check if any new "let"/"const"/"class" will shadow any pre-existing global property names, or "var"/"let"/"const" variables.
+ // It's an error to introduce a shadow.
+ for (auto& entry : lexicalDeclarations) {
+ if (globalObject->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->getOwnPropertyDescriptor(exec, entry.key.get(), descriptor);
+
+ if (descriptor.value() != jsUndefined() && !descriptor.configurable())
+ return createSyntaxError(exec, makeString("Can't create duplicate variable that shadows a global property: '", String(entry.key.get()), "'"));
+ }
+
+ if (globalLexicalEnvironment->hasProperty(exec, entry.key.get())) {
+ if (UNLIKELY(entry.value.isConst() && !vm.globalConstRedeclarationShouldThrow() && !isStrictMode())) {
+ // We only allow "const" duplicate declarations under this setting.
+ // For example, we don't "let" variables to be overridden by "const" variables.
+ if (globalLexicalEnvironment->isConstVariable(entry.key.get()))
+ continue;
+ }
+ return createSyntaxError(exec, makeString("Can't create duplicate variable: '", String(entry.key.get()), "'"));
+ }
+ }
+
+ // Check if any new "var"s will shadow any previous "let"/"const"/"class" names.
+ // It's an error to introduce a shadow.
+ if (!globalLexicalEnvironment->isEmpty()) {
+ for (auto& entry : variableDeclarations) {
+ if (globalLexicalEnvironment->hasProperty(exec, entry.key.get()))
+ return createSyntaxError(exec, makeString("Can't create duplicate variable: '", String(entry.key.get()), "'"));
+ }
+ }
+ }
+
+
+ m_unlinkedProgramCodeBlock.set(vm, this, unlinkedCodeBlock);
+
+ BatchedTransitionOptimizer optimizer(vm, globalObject);
+
+ for (size_t i = 0, numberOfFunctions = unlinkedCodeBlock->numberOfFunctionDecls(); i < numberOfFunctions; ++i) {
+ UnlinkedFunctionExecutable* unlinkedFunctionExecutable = unlinkedCodeBlock->functionDecl(i);
+ ASSERT(!unlinkedFunctionExecutable->name().isEmpty());
+ globalObject->addFunction(callFrame, unlinkedFunctionExecutable->name());
+ if (vm.typeProfiler() || vm.controlFlowProfiler()) {
+ vm.functionHasExecutedCache()->insertUnexecutedRange(sourceID(),
+ unlinkedFunctionExecutable->typeProfilingStartOffset(),
+ unlinkedFunctionExecutable->typeProfilingEndOffset());
+ }
+ }
+
+ for (auto& entry : variableDeclarations) {
+ ASSERT(entry.value.isVar());
+ globalObject->addVar(callFrame, Identifier::fromUid(&vm, entry.key.get()));
+ }
+
+ {
+ JSGlobalLexicalEnvironment* globalLexicalEnvironment = jsCast<JSGlobalLexicalEnvironment*>(globalObject->globalScope());
+ SymbolTable* symbolTable = globalLexicalEnvironment->symbolTable();
+ ConcurrentJITLocker locker(symbolTable->m_lock);
+ for (auto& entry : lexicalDeclarations) {
+ if (UNLIKELY(entry.value.isConst() && !vm.globalConstRedeclarationShouldThrow() && !isStrictMode())) {
+ if (symbolTable->contains(locker, entry.key.get()))
+ continue;
+ }
+ ScopeOffset offset = symbolTable->takeNextScopeOffset(locker);
+ SymbolTableEntry newEntry(VarOffset(offset), entry.value.isConst() ? ReadOnly : 0);
+ newEntry.prepareToWatch();
+ symbolTable->add(locker, entry.key.get(), newEntry);
+
+ ScopeOffset offsetForAssert = globalLexicalEnvironment->addVariables(1, jsTDZValue());
+ RELEASE_ASSERT(offsetForAssert == offset);
+ }
+ }
+ return 0;
+}
+
+void ProgramExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
+{
+ ProgramExecutable* thisObject = jsCast<ProgramExecutable*>(cell);
+ ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+ ScriptExecutable::visitChildren(thisObject, visitor);
+ visitor.append(&thisObject->m_unlinkedProgramCodeBlock);
+ if (thisObject->m_programCodeBlock)
+ thisObject->m_programCodeBlock->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 "ScriptExecutable.h"
+
+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& source)
+ {
+ ProgramExecutable* executable = new (NotNull, allocateCell<ProgramExecutable>(*exec->heap())) ProgramExecutable(exec, source);
+ executable->finishCreation(exec->vm());
+ return executable;
+ }
+
+
+ JSObject* initializeGlobalProperties(VM&, CallFrame*, JSScope*);
+
+ static void destroy(JSCell*);
+
+ ProgramCodeBlock* codeBlock()
+ {
+ return m_programCodeBlock.get();
+ }
+
+ JSObject* checkSyntax(ExecState*);
+
+ PassRefPtr<JITCode> generatedJITCode()
+ {
+ return generatedJITCodeForCall();
+ }
+
+ static Structure* createStructure(VM& 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&);
+
+ static void visitChildren(JSCell*, SlotVisitor&);
+
+ WriteBarrier<UnlinkedProgramCodeBlock> m_unlinkedProgramCodeBlock;
+ WriteBarrier<ProgramCodeBlock> 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 "CallFrame.h"
</span><span class="cx"> #include "CodeBlock.h"
</span><span class="cx"> #include "CodeBlockSet.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "HeapInlines.h"
</span><span class="cx"> #include "HeapIterationScope.h"
</span><span class="cx"> #include "HeapUtil.h"
</span><span class="lines">@@ -44,6 +43,7 @@
</span><span class="cx"> #include "MarkedBlock.h"
</span><span class="cx"> #include "MarkedBlockSet.h"
</span><span class="cx"> #include "MarkedSpaceInlines.h"
</span><ins>+#include "NativeExecutable.h"
</ins><span class="cx"> #include "PCToCodeOriginMap.h"
</span><span class="cx"> #include "SlotVisitor.h"
</span><span class="cx"> #include "SlotVisitorInlines.h"
</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 "config.h"
+
+#include "BatchedTransitionOptimizer.h"
+#include "CodeBlock.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSCInlines.h"
+#include "LLIntEntrypoint.h"
+#include "Parser.h"
+#include "TypeProfiler.h"
+#include "VMInlines.h"
+#include <wtf/CommaPrinter.h>
+
+namespace JSC {
+
+const ClassInfo ScriptExecutable::s_info = { "ScriptExecutable", &ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(ScriptExecutable) };
+
+ScriptExecutable::ScriptExecutable(Structure* structure, VM& vm, const SourceCode& 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<unsigned>(derivedContextType))
+ , m_evalContextType(static_cast<unsigned>(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<ScriptExecutable*>(cell)->ScriptExecutable::~ScriptExecutable();
+}
+
+void ScriptExecutable::installCode(CodeBlock* codeBlock)
+{
+ installCode(*codeBlock->vm(), codeBlock, codeBlock->codeType(), codeBlock->specializationKind());
+}
+
+void ScriptExecutable::installCode(VM& vm, CodeBlock* genericCodeBlock, CodeType codeType, CodeSpecializationKind kind)
+{
+ ASSERT(vm.heap.isDeferred());
+
+ if (genericCodeBlock)
+ CODEBLOCK_LOG_EVENT(genericCodeBlock, "installCode", ());
+
+ CodeBlock* oldCodeBlock = nullptr;
+
+ switch (codeType) {
+ case GlobalCode: {
+ ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
+ ProgramCodeBlock* codeBlock = static_cast<ProgramCodeBlock*>(genericCodeBlock);
+
+ ASSERT(kind == CodeForCall);
+
+ oldCodeBlock = executable->m_programCodeBlock.get();
+ executable->m_programCodeBlock.setMayBeNull(vm, this, codeBlock);
+ break;
+ }
+
+ case ModuleCode: {
+ ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
+ ModuleProgramCodeBlock* codeBlock = static_cast<ModuleProgramCodeBlock*>(genericCodeBlock);
+
+ ASSERT(kind == CodeForCall);
+
+ oldCodeBlock = executable->m_moduleProgramCodeBlock.get();
+ executable->m_moduleProgramCodeBlock.setMayBeNull(vm, this, codeBlock);
+ break;
+ }
+
+ case EvalCode: {
+ EvalExecutable* executable = jsCast<EvalExecutable*>(this);
+ EvalCodeBlock* codeBlock = static_cast<EvalCodeBlock*>(genericCodeBlock);
+
+ ASSERT(kind == CodeForCall);
+
+ oldCodeBlock = executable->m_evalCodeBlock.get();
+ executable->m_evalCodeBlock.setMayBeNull(vm, this, codeBlock);
+ break;
+ }
+
+ case FunctionCode: {
+ FunctionExecutable* executable = jsCast<FunctionExecutable*>(this);
+ FunctionCodeBlock* codeBlock = static_cast<FunctionCodeBlock*>(genericCodeBlock);
+
+ switch (kind) {
+ case CodeForCall:
+ oldCodeBlock = executable->m_codeBlockForCall.get();
+ executable->m_codeBlockForCall.setMayBeNull(vm, this, codeBlock);
+ break;
+ case CodeForConstruct:
+ oldCodeBlock = executable->m_codeBlockForConstruct.get();
+ executable->m_codeBlockForConstruct.setMayBeNull(vm, this, codeBlock);
+ break;
+ }
+ break;
+ }
+ }
+
+ switch (kind) {
+ case CodeForCall:
+ m_jitCodeForCall = genericCodeBlock ? genericCodeBlock->jitCode() : nullptr;
+ m_jitCodeForCallWithArityCheck = MacroAssemblerCodePtr();
+ m_numParametersForCall = genericCodeBlock ? genericCodeBlock->numParameters() : NUM_PARAMETERS_NOT_COMPILED;
+ break;
+ case CodeForConstruct:
+ m_jitCodeForConstruct = genericCodeBlock ? genericCodeBlock->jitCode() : nullptr;
+ m_jitCodeForConstructWithArityCheck = MacroAssemblerCodePtr();
+ m_numParametersForConstruct = genericCodeBlock ? genericCodeBlock->numParameters() : NUM_PARAMETERS_NOT_COMPILED;
+ break;
+ }
+
+ if (genericCodeBlock) {
+ RELEASE_ASSERT(genericCodeBlock->ownerExecutable() == this);
+ RELEASE_ASSERT(JITCode::isExecutableScript(genericCodeBlock->jitType()));
+
+ if (Options::verboseOSR())
+ dataLog("Installing ", *genericCodeBlock, "\n");
+
+ if (vm.m_perBytecodeProfiler)
+ vm.m_perBytecodeProfiler->ensureBytecodesFor(genericCodeBlock);
+
+ if (Debugger* debugger = genericCodeBlock->globalObject()->debugger())
+ debugger->registerCodeBlock(genericCodeBlock);
+ }
+
+ if (oldCodeBlock)
+ oldCodeBlock->unlinkIncomingCalls();
+
+ vm.heap.writeBarrier(this);
+}
+
+CodeBlock* ScriptExecutable::newCodeBlockFor(
+ CodeSpecializationKind kind, JSFunction* function, JSScope* scope, JSObject*& exception)
+{
+ VM* vm = scope->vm();
+ auto throwScope = DECLARE_THROW_SCOPE(*vm);
+
+ ASSERT(vm->heap.isDeferred());
+ ASSERT(startColumn() != UINT_MAX);
+ ASSERT(endColumn() != UINT_MAX);
+
+ if (classInfo() == EvalExecutable::info()) {
+ EvalExecutable* executable = jsCast<EvalExecutable*>(this);
+ RELEASE_ASSERT(kind == CodeForCall);
+ RELEASE_ASSERT(!executable->m_evalCodeBlock);
+ RELEASE_ASSERT(!function);
+ return EvalCodeBlock::create(vm,
+ executable, executable->m_unlinkedEvalCodeBlock.get(), scope,
+ executable->source().provider());
+ }
+
+ if (classInfo() == ProgramExecutable::info()) {
+ ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
+ RELEASE_ASSERT(kind == CodeForCall);
+ RELEASE_ASSERT(!executable->m_programCodeBlock);
+ RELEASE_ASSERT(!function);
+ return ProgramCodeBlock::create(vm,
+ executable, executable->m_unlinkedProgramCodeBlock.get(), scope,
+ executable->source().provider(), executable->source().startColumn());
+ }
+
+ if (classInfo() == ModuleProgramExecutable::info()) {
+ ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
+ RELEASE_ASSERT(kind == CodeForCall);
+ RELEASE_ASSERT(!executable->m_moduleProgramCodeBlock);
+ RELEASE_ASSERT(!function);
+ return ModuleProgramCodeBlock::create(vm,
+ executable, executable->m_unlinkedModuleProgramCodeBlock.get(), scope,
+ executable->source().provider(), executable->source().startColumn());
+ }
+
+ RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
+ RELEASE_ASSERT(function);
+ FunctionExecutable* executable = jsCast<FunctionExecutable*>(this);
+ RELEASE_ASSERT(!executable->codeBlockFor(kind));
+ JSGlobalObject* globalObject = scope->globalObject();
+ ParserError error;
+ DebuggerMode debuggerMode = globalObject->hasInteractiveDebugger() ? DebuggerOn : DebuggerOff;
+ UnlinkedFunctionCodeBlock* unlinkedCodeBlock =
+ executable->m_unlinkedExecutable->unlinkedCodeBlockFor(
+ *vm, executable->m_source, kind, debuggerMode, error,
+ executable->parseMode());
+ recordParse(
+ executable->m_unlinkedExecutable->features(),
+ executable->m_unlinkedExecutable->hasCapturedVariables(), firstLine(),
+ lastLine(), startColumn(), endColumn());
+ if (!unlinkedCodeBlock) {
+ exception = throwException(
+ globalObject->globalExec(), throwScope,
+ error.toErrorObject(globalObject, executable->m_source));
+ return nullptr;
+ }
+
+ SourceProvider* provider = executable->source().provider();
+ unsigned sourceOffset = executable->source().startOffset();
+ unsigned startColumn = executable->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<EvalExecutable*>(this);
+ EvalCodeBlock* baseline = static_cast<EvalCodeBlock*>(
+ executable->m_evalCodeBlock->baselineVersion());
+ EvalCodeBlock* result = EvalCodeBlock::create(vm(),
+ CodeBlock::CopyParsedBlock, *baseline);
+ result->setAlternative(*vm(), baseline);
+ return result;
+ }
+
+ if (classInfo() == ProgramExecutable::info()) {
+ RELEASE_ASSERT(kind == CodeForCall);
+ ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
+ ProgramCodeBlock* baseline = static_cast<ProgramCodeBlock*>(
+ executable->m_programCodeBlock->baselineVersion());
+ ProgramCodeBlock* result = ProgramCodeBlock::create(vm(),
+ CodeBlock::CopyParsedBlock, *baseline);
+ result->setAlternative(*vm(), baseline);
+ return result;
+ }
+
+ if (classInfo() == ModuleProgramExecutable::info()) {
+ RELEASE_ASSERT(kind == CodeForCall);
+ ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
+ ModuleProgramCodeBlock* baseline = static_cast<ModuleProgramCodeBlock*>(
+ executable->m_moduleProgramCodeBlock->baselineVersion());
+ ModuleProgramCodeBlock* result = ModuleProgramCodeBlock::create(vm(),
+ CodeBlock::CopyParsedBlock, *baseline);
+ result->setAlternative(*vm(), baseline);
+ return result;
+ }
+
+ RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
+ FunctionExecutable* executable = jsCast<FunctionExecutable*>(this);
+ FunctionCodeBlock* baseline = static_cast<FunctionCodeBlock*>(
+ executable->codeBlockFor(kind)->baselineVersion());
+ FunctionCodeBlock* result = FunctionCodeBlock::create(vm(),
+ CodeBlock::CopyParsedBlock, *baseline);
+ result->setAlternative(*vm(), baseline);
+ return result;
+}
+
+static void setupLLInt(VM& vm, CodeBlock* codeBlock)
+{
+ LLInt::setEntrypoint(vm, codeBlock);
+}
+
+static void setupJIT(VM& vm, CodeBlock* codeBlock)
+{
+#if ENABLE(JIT)
+ CompilationResult result = JIT::compile(&vm, codeBlock, JITCompilationMustSucceed);
+ RELEASE_ASSERT(result == CompilationSuccessful);
+#else
+ UNUSED_PARAM(vm);
+ UNUSED_PARAM(codeBlock);
+ UNREACHABLE_FOR_PLATFORM();
+#endif
+}
+
+JSObject* ScriptExecutable::prepareForExecutionImpl(
+ VM& vm, JSFunction* function, JSScope* scope, CodeSpecializationKind kind, CodeBlock*& resultCodeBlock)
+{
+ DeferGCForAWhile deferGC(vm.heap);
+
+ if (vm.getAndClearFailNextNewCodeBlock())
+ return createError(scope->globalObject()->globalExec(), ASCIILiteral("Forced Failure"));
+
+ JSObject* exception = 0;
+ CodeBlock* codeBlock = newCodeBlockFor(kind, function, scope, exception);
+ resultCodeBlock = codeBlock;
+ if (!codeBlock) {
+ RELEASE_ASSERT(exception);
+ return exception;
+ }
+
+ if (Options::validateBytecode())
+ codeBlock->validate();
+
+ if (Options::useLLInt())
+ setupLLInt(vm, codeBlock);
+ else
+ setupJIT(vm, codeBlock);
+
+ installCode(vm, codeBlock, codeBlock->codeType(), codeBlock->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 "ExecutableBase.h"
+
+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& source() const { return m_source; }
+ intptr_t sourceID() const { return m_source.providerID(); }
+ const String& sourceURL() const { return m_source.provider()->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 & EvalFeature; }
+ bool usesArguments() const { return m_features & ArgumentsFeature; }
+ bool isArrowFunctionContext() const { return m_isArrowFunctionContext; }
+ bool isStrictMode() const { return m_features & StrictModeFeature; }
+ DerivedContextType derivedContextType() const { return static_cast<DerivedContextType>(m_derivedContextType); }
+ EvalContextType evalContextType() const { return static_cast<EvalContextType>(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 &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&, CodeBlock*, CodeType, CodeSpecializationKind);
+ CodeBlock* newCodeBlockFor(CodeSpecializationKind, JSFunction*, JSScope*, JSObject*& 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*& 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 <typename ExecutableType>
+ JSObject* prepareForExecution(VM&, JSFunction*, JSScope*, CodeSpecializationKind, CodeBlock*& resultCodeBlock);
+
+ template <typename Functor> void forEachCodeBlock(Functor&&);
+
+private:
+ friend class ExecutableBase;
+ JSObject* prepareForExecutionImpl(VM&, JSFunction*, JSScope*, CodeSpecializationKind, CodeBlock*&);
+
+protected:
+ ScriptExecutable(Structure*, VM&, const SourceCode&, bool isInStrictContext, DerivedContextType, bool isInArrowFunctionContext, EvalContextType, Intrinsic);
+
+ void finishCreation(VM& vm)
+ {
+ Base::finishCreation(vm);
+ vm.heap.addExecutable(this); // Balanced by Heap::deleteUnmarkedCompiledCode().
+
+#if ENABLE(CODEBLOCK_SAMPLING)
+ if (SamplingTool* sampler = vm.interpreter->sampler())
+ sampler->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 "StringConstructor.h"
</span><span class="cx">
</span><span class="cx"> #include "Error.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "JITCode.h"
</span><span class="cx"> #include "JSFunction.h"
</span><span class="cx"> #include "JSGlobalObject.h"
</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 "ButterflyInlines.h"
</span><span class="cx"> #include "CachedCall.h"
</span><span class="cx"> #include "Error.h"
</span><del>-#include "Executable.h"
</del><span class="cx"> #include "IntlObject.h"
</span><span class="cx"> #include "JSArray.h"
</span><span class="cx"> #include "JSCBuiltins.h"
</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 "config.h"
+
+#include "BatchedTransitionOptimizer.h"
+#include "CodeBlock.h"
+#include "Debugger.h"
+#include "JIT.h"
+#include "JSCInlines.h"
+#include "JSWebAssemblyModule.h"
+#include "LLIntEntrypoint.h"
+#include "Parser.h"
+#include "TypeProfiler.h"
+#include "VMInlines.h"
+#include <wtf/CommaPrinter.h>
+
+namespace JSC {
+
+#if ENABLE(WEBASSEMBLY)
+const ClassInfo WebAssemblyExecutable::s_info = { "WebAssemblyExecutable", &ExecutableBase::s_info, 0, CREATE_METHOD_TABLE(WebAssemblyExecutable) };
+
+WebAssemblyExecutable::WebAssemblyExecutable(VM& vm, const SourceCode& 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()->sourceType() == SourceProviderSourceType::WebAssembly);
+}
+
+void WebAssemblyExecutable::destroy(JSCell* cell)
+{
+ static_cast<WebAssemblyExecutable*>(cell)->WebAssemblyExecutable::~WebAssemblyExecutable();
+}
+
+void WebAssemblyExecutable::visitChildren(JSCell* cell, SlotVisitor& visitor)
+{
+ WebAssemblyExecutable* thisObject = jsCast<WebAssemblyExecutable*>(cell);
+ ASSERT_GC_OBJECT_INHERITS(thisObject, info());
+ ExecutableBase::visitChildren(thisObject, visitor);
+ if (thisObject->m_codeBlockForCall)
+ thisObject->m_codeBlockForCall->visitWeakly(visitor);
+ visitor.append(&thisObject->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 "ExecutableBase.h"
+
+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& vm, const SourceCode& source, JSWebAssemblyModule* module, unsigned functionIndex)
+ {
+ WebAssemblyExecutable* executable = new (NotNull, allocateCell<WebAssemblyExecutable>(vm.heap)) WebAssemblyExecutable(vm, source, module, functionIndex);
+ executable->finishCreation(vm);
+ return executable;
+ }
+
+ static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue proto)
+ {
+ return Structure::create(vm, globalObject, proto, TypeInfo(WebAssemblyExecutableType, StructureFlags), info());
+ }
+
+ static void destroy(JSCell*);
+
+ DECLARE_INFO;
+
+ void prepareForExecution(VM&);
+
+ WebAssemblyCodeBlock* codeBlockForCall()
+ {
+ return m_codeBlockForCall.get();
+ }
+
+private:
+ friend class ExecutableBase;
+ WebAssemblyExecutable(VM&, const SourceCode&, JSWebAssemblyModule*, unsigned functionIndex);
+
+ static void visitChildren(JSCell*, SlotVisitor&);
+
+ SourceCode m_source;
+ WriteBarrier<JSWebAssemblyModule> m_module;
+ unsigned m_functionIndex;
+
+ WriteBarrier<WebAssemblyCodeBlock> 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 <ggaren@apple.com>
+
+ 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 <hyatt@apple.com>
</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 <JavaScriptCore/Executable.h>
-#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 <JavaScriptCore/FunctionExecutable.h>
+#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 "Frame.h"
</span><span class="cx"> #include "JSNode.h"
</span><span class="cx"> #include "ScriptController.h"
</span><del>-#include <runtime/Executable.h>
</del><span class="cx"> #include <runtime/FunctionConstructor.h>
</span><span class="cx"> #include <runtime/IdentifierInlines.h>
</span><span class="cx"> #include <wtf/NeverDestroyed.h>
</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 "InspectorInstrumentation.h"
</span><span class="cx"> #include "JSMainThreadExecState.h"
</span><del>-#include <runtime/Executable.h>
</del><ins>+#include <runtime/FunctionExecutable.h>
</ins><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span></span></pre>
</div>
</div>
</body>
</html>