<!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>[214571] 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/214571">214571</a></dd>
<dt>Author</dt> <dd>sbarati@apple.com</dd>
<dt>Date</dt> <dd>2017-03-29 15:55:53 -0700 (Wed, 29 Mar 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>LinkBuffer and ExecutableAllocator shouldn't have anything to do with VM
https://bugs.webkit.org/show_bug.cgi?id=170210
Reviewed by Mark Lam.
Source/JavaScriptCore:
This is one more step in the direction of PIC-ified Wasm.
LinkBuffer and ExecutableAllocator have no business knowing about VM.
* assembler/LinkBuffer.cpp:
(JSC::LinkBuffer::allocate):
* assembler/LinkBuffer.h:
(JSC::LinkBuffer::LinkBuffer):
(JSC::LinkBuffer::vm): Deleted.
* b3/B3Compile.cpp:
(JSC::B3::compile):
* b3/B3Compile.h:
* b3/air/testair.cpp:
* b3/testb3.cpp:
(JSC::B3::compileProc):
(JSC::B3::compileAndRun):
(JSC::B3::testLoadAcq42):
(JSC::B3::testAddArgZeroImmZDef):
(JSC::B3::testAddLoadTwice):
(JSC::B3::testMulLoadTwice):
(JSC::B3::testMulAddArgsLeft):
(JSC::B3::testMulAddArgsRight):
(JSC::B3::testMulAddArgsLeft32):
(JSC::B3::testMulAddArgsRight32):
(JSC::B3::testMulSubArgsLeft):
(JSC::B3::testMulSubArgsRight):
(JSC::B3::testMulSubArgsLeft32):
(JSC::B3::testMulSubArgsRight32):
(JSC::B3::testMulNegArgs):
(JSC::B3::testMulNegArgs32):
(JSC::B3::testCompareFloatToDoubleThroughPhi):
(JSC::B3::testDoubleToFloatThroughPhi):
(JSC::B3::testReduceFloatToDoubleValidates):
(JSC::B3::testDoubleProducerPhiToFloatConversion):
(JSC::B3::testDoubleProducerPhiToFloatConversionWithDoubleConsumer):
(JSC::B3::testDoubleProducerPhiWithNonFloatConst):
(JSC::B3::testIToD64Arg):
(JSC::B3::testIToF64Arg):
(JSC::B3::testIToD32Arg):
(JSC::B3::testIToF32Arg):
(JSC::B3::testIToD64Mem):
(JSC::B3::testIToF64Mem):
(JSC::B3::testIToD32Mem):
(JSC::B3::testIToF32Mem):
(JSC::B3::testIToDReducedToIToF64Arg):
(JSC::B3::testIToDReducedToIToF32Arg):
(JSC::B3::testStoreRelAddLoadAcq32):
(JSC::B3::testStoreRelAddLoadAcq8):
(JSC::B3::testStoreRelAddFenceLoadAcq8):
(JSC::B3::testStoreRelAddLoadAcq16):
(JSC::B3::testStoreRelAddLoadAcq64):
(JSC::B3::testBranch):
(JSC::B3::testBranchPtr):
(JSC::B3::testDiamond):
(JSC::B3::testBranchNotEqual):
(JSC::B3::testBranchNotEqualCommute):
(JSC::B3::testBranchNotEqualNotEqual):
(JSC::B3::testBranchEqual):
(JSC::B3::testBranchEqualEqual):
(JSC::B3::testBranchEqualCommute):
(JSC::B3::testBranchEqualEqual1):
(JSC::B3::testBranchLoadPtr):
(JSC::B3::testBranchLoad32):
(JSC::B3::testBranchLoad8S):
(JSC::B3::testBranchLoad8Z):
(JSC::B3::testBranchLoad16S):
(JSC::B3::testBranchLoad16Z):
(JSC::B3::testBranch8WithLoad8ZIndex):
(JSC::B3::testComplex):
(JSC::B3::testSimpleCheck):
(JSC::B3::testCheckFalse):
(JSC::B3::testCheckTrue):
(JSC::B3::testCheckLessThan):
(JSC::B3::testCheckMegaCombo):
(JSC::B3::testCheckTrickyMegaCombo):
(JSC::B3::testCheckTwoMegaCombos):
(JSC::B3::testCheckTwoNonRedundantMegaCombos):
(JSC::B3::testCheckAddImm):
(JSC::B3::testCheckAddImmCommute):
(JSC::B3::testCheckAddImmSomeRegister):
(JSC::B3::testCheckAdd):
(JSC::B3::testCheckAdd64):
(JSC::B3::testCheckAddFold):
(JSC::B3::testCheckAddFoldFail):
(JSC::B3::testCheckAddSelfOverflow64):
(JSC::B3::testCheckAddSelfOverflow32):
(JSC::B3::testCheckSubImm):
(JSC::B3::testCheckSubBadImm):
(JSC::B3::testCheckSub):
(JSC::B3::testCheckSub64):
(JSC::B3::testCheckSubFold):
(JSC::B3::testCheckSubFoldFail):
(JSC::B3::testCheckNeg):
(JSC::B3::testCheckNeg64):
(JSC::B3::testCheckMul):
(JSC::B3::testCheckMulMemory):
(JSC::B3::testCheckMul2):
(JSC::B3::testCheckMul64):
(JSC::B3::testCheckMulFold):
(JSC::B3::testCheckMulFoldFail):
(JSC::B3::testCheckMul64SShr):
(JSC::B3::testSwitch):
(JSC::B3::testSwitchChillDiv):
(JSC::B3::testSwitchTargettingSameBlock):
(JSC::B3::testSwitchTargettingSameBlockFoldPathConstant):
(JSC::B3::testBasicSelect):
(JSC::B3::testSelectTest):
(JSC::B3::testSelectCompareDouble):
(JSC::B3::testSelectDouble):
(JSC::B3::testSelectDoubleTest):
(JSC::B3::testSelectDoubleCompareDouble):
(JSC::B3::testSelectFloatCompareFloat):
(JSC::B3::testSelectFold):
(JSC::B3::testSelectInvert):
(JSC::B3::testCheckSelect):
(JSC::B3::testCheckSelectCheckSelect):
(JSC::B3::testCheckSelectAndCSE):
(JSC::B3::testTrivialInfiniteLoop):
(JSC::B3::testFoldPathEqual):
(JSC::B3::testLShiftSelf32):
(JSC::B3::testRShiftSelf32):
(JSC::B3::testURShiftSelf32):
(JSC::B3::testLShiftSelf64):
(JSC::B3::testRShiftSelf64):
(JSC::B3::testURShiftSelf64):
(JSC::B3::testPatchpointDoubleRegs):
(JSC::B3::testSpillDefSmallerThanUse):
(JSC::B3::testSpillUseLargerThanDef):
(JSC::B3::testLateRegister):
(JSC::B3::testInterpreter):
(JSC::B3::testEntrySwitchSimple):
(JSC::B3::testEntrySwitchNoEntrySwitch):
(JSC::B3::testEntrySwitchWithCommonPaths):
(JSC::B3::testEntrySwitchWithCommonPathsAndNonTrivialEntrypoint):
(JSC::B3::testEntrySwitchLoop):
(JSC::B3::testSomeEarlyRegister):
(JSC::B3::testTerminalPatchpointThatNeedsToBeSpilled):
(JSC::B3::testTerminalPatchpointThatNeedsToBeSpilled2):
(JSC::B3::testPatchpointTerminalReturnValue):
(JSC::B3::testMemoryFence):
(JSC::B3::testStoreFence):
(JSC::B3::testLoadFence):
(JSC::B3::testPCOriginMapDoesntInsertNops):
(JSC::B3::testPinRegisters):
(JSC::B3::testX86LeaAddAddShlLeft):
(JSC::B3::testX86LeaAddAddShlRight):
(JSC::B3::testX86LeaAddAdd):
(JSC::B3::testX86LeaAddShlRight):
(JSC::B3::testX86LeaAddShlLeftScale1):
(JSC::B3::testX86LeaAddShlLeftScale2):
(JSC::B3::testX86LeaAddShlLeftScale4):
(JSC::B3::testX86LeaAddShlLeftScale8):
(JSC::B3::testAddShl32):
(JSC::B3::testAddShl64):
(JSC::B3::testAddShl65):
(JSC::B3::testLoadBaseIndexShift2):
(JSC::B3::testLoadBaseIndexShift32):
(JSC::B3::testOptimizeMaterialization):
(JSC::B3::testAtomicWeakCAS):
(JSC::B3::testAtomicStrongCAS):
(JSC::B3::testAtomicXchg):
(JSC::B3::testDepend32):
(JSC::B3::testDepend64):
(JSC::B3::testWasmBoundsCheck):
(JSC::B3::testWasmAddress):
(JSC::B3::run):
(JSC::B3::compile): Deleted.
* bytecode/PolymorphicAccess.cpp:
(JSC::PolymorphicAccess::regenerate):
* dfg/DFGJITCompiler.cpp:
(JSC::DFG::JITCompiler::compile):
(JSC::DFG::JITCompiler::compileFunction):
* dfg/DFGLazyJSValue.cpp:
(JSC::DFG::LazyJSValue::emit):
* dfg/DFGOSRExitCompiler.cpp:
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
* dfg/DFGThunks.cpp:
(JSC::DFG::osrExitGenerationThunkGenerator):
(JSC::DFG::osrEntryThunkGenerator):
* ftl/FTLCompile.cpp:
(JSC::FTL::compile):
* ftl/FTLLazySlowPath.cpp:
(JSC::FTL::LazySlowPath::generate):
* ftl/FTLLink.cpp:
(JSC::FTL::link):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
(JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
(JSC::FTL::DFG::LowerDFGToB3::compileCallEval):
* ftl/FTLOSRExitCompiler.cpp:
(JSC::FTL::compileStub):
* ftl/FTLOSRExitHandle.cpp:
(JSC::FTL::OSRExitHandle::emitExitThunk):
* ftl/FTLSlowPathCall.cpp:
(JSC::FTL::SlowPathCallContext::makeCall):
* ftl/FTLSlowPathCall.h:
(JSC::FTL::callOperation):
* ftl/FTLState.h:
* ftl/FTLThunks.cpp:
(JSC::FTL::genericGenerationThunkGenerator):
(JSC::FTL::slowPathCallThunkGenerator):
* ftl/FTLThunks.h:
(JSC::FTL::generateIfNecessary):
(JSC::FTL::Thunks::getSlowPathCallThunk):
* jit/AssemblyHelpers.cpp:
(JSC::AssemblyHelpers::emitDumbVirtualCall):
* jit/AssemblyHelpers.h:
* jit/ExecutableAllocator.cpp:
(JSC::ExecutableAllocator::initializeAllocator):
(JSC::ExecutableAllocator::singleton):
(JSC::ExecutableAllocator::ExecutableAllocator):
(JSC::ExecutableAllocator::allocate):
* jit/ExecutableAllocator.h:
* jit/JIT.cpp:
(JSC::JIT::compileWithoutLinking):
* jit/JITCall.cpp:
(JSC::JIT::compileCallEvalSlowCase):
* jit/JITMathIC.h:
(JSC::JITMathIC::generateOutOfLine):
* jit/JITOpcodes.cpp:
(JSC::JIT::privateCompileHasIndexedProperty):
* jit/JITOpcodes32_64.cpp:
(JSC::JIT::privateCompileHasIndexedProperty):
* jit/JITOperations.cpp:
* jit/JITOperations.h:
* jit/JITPropertyAccess.cpp:
(JSC::JIT::stringGetByValStubGenerator):
(JSC::JIT::privateCompileGetByVal):
(JSC::JIT::privateCompileGetByValWithCachedId):
(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutByValWithCachedId):
* jit/JITPropertyAccess32_64.cpp:
(JSC::JIT::stringGetByValStubGenerator):
* jit/JITStubRoutine.h:
* jit/Repatch.cpp:
(JSC::ftlThunkAwareRepatchCall):
(JSC::linkPolymorphicCall):
* jit/SpecializedThunkJIT.h:
(JSC::SpecializedThunkJIT::finalize):
* jit/ThunkGenerators.cpp:
(JSC::throwExceptionFromCallSlowPathGenerator):
(JSC::linkCallThunkGenerator):
(JSC::linkPolymorphicCallThunkGenerator):
(JSC::virtualThunkFor):
(JSC::nativeForGenerator):
(JSC::arityFixupGenerator):
(JSC::unreachableGenerator):
(JSC::boundThisNoArgsFunctionCallGenerator):
(JSC::throwExceptionFromWasmThunkGenerator):
* llint/LLIntThunks.cpp:
(JSC::LLInt::generateThunkWithJumpTo):
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::takeSample):
* runtime/VM.cpp:
(JSC::VM::VM):
* runtime/VM.h:
* runtime/VMTraps.cpp:
(JSC::VMTraps::tryInstallTrapBreakpoints):
* tools/VMInspector.cpp:
* wasm/WasmBinding.cpp:
(JSC::Wasm::wasmToJs):
(JSC::Wasm::wasmToWasm):
(JSC::Wasm::exitStubGenerator):
* wasm/WasmPlan.cpp:
(JSC::Wasm::Plan::complete):
* yarr/YarrJIT.cpp:
(JSC::Yarr::YarrGenerator::compile):
(JSC::Yarr::jitCompile):
Source/WebCore:
* cssjit/SelectorCompiler.cpp:
(WebCore::SelectorCompiler::compileSelector):
(WebCore::SelectorCompiler::SelectorCodeGenerator::compile):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoreassemblerLinkBuffercpp">trunk/Source/JavaScriptCore/assembler/LinkBuffer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreassemblerLinkBufferh">trunk/Source/JavaScriptCore/assembler/LinkBuffer.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreb3B3Compilecpp">trunk/Source/JavaScriptCore/b3/B3Compile.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreb3B3Compileh">trunk/Source/JavaScriptCore/b3/B3Compile.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreb3airtestaircpp">trunk/Source/JavaScriptCore/b3/air/testair.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreb3testb3cpp">trunk/Source/JavaScriptCore/b3/testb3.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePolymorphicAccesscpp">trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGJITCompilercpp">trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGLazyJSValuecpp">trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGOSRExitCompilercpp">trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGThunkscpp">trunk/Source/JavaScriptCore/dfg/DFGThunks.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLCompilecpp">trunk/Source/JavaScriptCore/ftl/FTLCompile.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLazySlowPathcpp">trunk/Source/JavaScriptCore/ftl/FTLLazySlowPath.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLinkcpp">trunk/Source/JavaScriptCore/ftl/FTLLink.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp">trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLOSRExitCompilercpp">trunk/Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLOSRExitHandlecpp">trunk/Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLSlowPathCallcpp">trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLSlowPathCallh">trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLStateh">trunk/Source/JavaScriptCore/ftl/FTLState.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLThunkscpp">trunk/Source/JavaScriptCore/ftl/FTLThunks.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLThunksh">trunk/Source/JavaScriptCore/ftl/FTLThunks.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitAssemblyHelperscpp">trunk/Source/JavaScriptCore/jit/AssemblyHelpers.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitAssemblyHelpersh">trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitExecutableAllocatorcpp">trunk/Source/JavaScriptCore/jit/ExecutableAllocator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitExecutableAllocatorh">trunk/Source/JavaScriptCore/jit/ExecutableAllocator.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITcpp">trunk/Source/JavaScriptCore/jit/JIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITCallcpp">trunk/Source/JavaScriptCore/jit/JITCall.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITMathICh">trunk/Source/JavaScriptCore/jit/JITMathIC.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOpcodescpp">trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOpcodes32_64cpp">trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationscpp">trunk/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationsh">trunk/Source/JavaScriptCore/jit/JITOperations.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITPropertyAccesscpp">trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITPropertyAccess32_64cpp">trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITStubRoutineh">trunk/Source/JavaScriptCore/jit/JITStubRoutine.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitRepatchcpp">trunk/Source/JavaScriptCore/jit/Repatch.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitSpecializedThunkJITh">trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h</a></li>
<li><a href="#trunkSourceJavaScriptCorejitThunkGeneratorscpp">trunk/Source/JavaScriptCore/jit/ThunkGenerators.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntThunkscpp">trunk/Source/JavaScriptCore/llint/LLIntThunks.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSamplingProfilercpp">trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMh">trunk/Source/JavaScriptCore/runtime/VM.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMTrapscpp">trunk/Source/JavaScriptCore/runtime/VMTraps.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsVMInspectorcpp">trunk/Source/JavaScriptCore/tools/VMInspector.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmBindingcpp">trunk/Source/JavaScriptCore/wasm/WasmBinding.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmWasmPlancpp">trunk/Source/JavaScriptCore/wasm/WasmPlan.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreyarrYarrJITcpp">trunk/Source/JavaScriptCore/yarr/YarrJIT.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorecssjitSelectorCompilercpp">trunk/Source/WebCore/cssjit/SelectorCompiler.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ChangeLog        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -1,3 +1,283 @@
</span><ins>+2017-03-29 Saam Barati <sbarati@apple.com>
+
+ LinkBuffer and ExecutableAllocator shouldn't have anything to do with VM
+ https://bugs.webkit.org/show_bug.cgi?id=170210
+
+ Reviewed by Mark Lam.
+
+ This is one more step in the direction of PIC-ified Wasm.
+ LinkBuffer and ExecutableAllocator have no business knowing about VM.
+
+ * assembler/LinkBuffer.cpp:
+ (JSC::LinkBuffer::allocate):
+ * assembler/LinkBuffer.h:
+ (JSC::LinkBuffer::LinkBuffer):
+ (JSC::LinkBuffer::vm): Deleted.
+ * b3/B3Compile.cpp:
+ (JSC::B3::compile):
+ * b3/B3Compile.h:
+ * b3/air/testair.cpp:
+ * b3/testb3.cpp:
+ (JSC::B3::compileProc):
+ (JSC::B3::compileAndRun):
+ (JSC::B3::testLoadAcq42):
+ (JSC::B3::testAddArgZeroImmZDef):
+ (JSC::B3::testAddLoadTwice):
+ (JSC::B3::testMulLoadTwice):
+ (JSC::B3::testMulAddArgsLeft):
+ (JSC::B3::testMulAddArgsRight):
+ (JSC::B3::testMulAddArgsLeft32):
+ (JSC::B3::testMulAddArgsRight32):
+ (JSC::B3::testMulSubArgsLeft):
+ (JSC::B3::testMulSubArgsRight):
+ (JSC::B3::testMulSubArgsLeft32):
+ (JSC::B3::testMulSubArgsRight32):
+ (JSC::B3::testMulNegArgs):
+ (JSC::B3::testMulNegArgs32):
+ (JSC::B3::testCompareFloatToDoubleThroughPhi):
+ (JSC::B3::testDoubleToFloatThroughPhi):
+ (JSC::B3::testReduceFloatToDoubleValidates):
+ (JSC::B3::testDoubleProducerPhiToFloatConversion):
+ (JSC::B3::testDoubleProducerPhiToFloatConversionWithDoubleConsumer):
+ (JSC::B3::testDoubleProducerPhiWithNonFloatConst):
+ (JSC::B3::testIToD64Arg):
+ (JSC::B3::testIToF64Arg):
+ (JSC::B3::testIToD32Arg):
+ (JSC::B3::testIToF32Arg):
+ (JSC::B3::testIToD64Mem):
+ (JSC::B3::testIToF64Mem):
+ (JSC::B3::testIToD32Mem):
+ (JSC::B3::testIToF32Mem):
+ (JSC::B3::testIToDReducedToIToF64Arg):
+ (JSC::B3::testIToDReducedToIToF32Arg):
+ (JSC::B3::testStoreRelAddLoadAcq32):
+ (JSC::B3::testStoreRelAddLoadAcq8):
+ (JSC::B3::testStoreRelAddFenceLoadAcq8):
+ (JSC::B3::testStoreRelAddLoadAcq16):
+ (JSC::B3::testStoreRelAddLoadAcq64):
+ (JSC::B3::testBranch):
+ (JSC::B3::testBranchPtr):
+ (JSC::B3::testDiamond):
+ (JSC::B3::testBranchNotEqual):
+ (JSC::B3::testBranchNotEqualCommute):
+ (JSC::B3::testBranchNotEqualNotEqual):
+ (JSC::B3::testBranchEqual):
+ (JSC::B3::testBranchEqualEqual):
+ (JSC::B3::testBranchEqualCommute):
+ (JSC::B3::testBranchEqualEqual1):
+ (JSC::B3::testBranchLoadPtr):
+ (JSC::B3::testBranchLoad32):
+ (JSC::B3::testBranchLoad8S):
+ (JSC::B3::testBranchLoad8Z):
+ (JSC::B3::testBranchLoad16S):
+ (JSC::B3::testBranchLoad16Z):
+ (JSC::B3::testBranch8WithLoad8ZIndex):
+ (JSC::B3::testComplex):
+ (JSC::B3::testSimpleCheck):
+ (JSC::B3::testCheckFalse):
+ (JSC::B3::testCheckTrue):
+ (JSC::B3::testCheckLessThan):
+ (JSC::B3::testCheckMegaCombo):
+ (JSC::B3::testCheckTrickyMegaCombo):
+ (JSC::B3::testCheckTwoMegaCombos):
+ (JSC::B3::testCheckTwoNonRedundantMegaCombos):
+ (JSC::B3::testCheckAddImm):
+ (JSC::B3::testCheckAddImmCommute):
+ (JSC::B3::testCheckAddImmSomeRegister):
+ (JSC::B3::testCheckAdd):
+ (JSC::B3::testCheckAdd64):
+ (JSC::B3::testCheckAddFold):
+ (JSC::B3::testCheckAddFoldFail):
+ (JSC::B3::testCheckAddSelfOverflow64):
+ (JSC::B3::testCheckAddSelfOverflow32):
+ (JSC::B3::testCheckSubImm):
+ (JSC::B3::testCheckSubBadImm):
+ (JSC::B3::testCheckSub):
+ (JSC::B3::testCheckSub64):
+ (JSC::B3::testCheckSubFold):
+ (JSC::B3::testCheckSubFoldFail):
+ (JSC::B3::testCheckNeg):
+ (JSC::B3::testCheckNeg64):
+ (JSC::B3::testCheckMul):
+ (JSC::B3::testCheckMulMemory):
+ (JSC::B3::testCheckMul2):
+ (JSC::B3::testCheckMul64):
+ (JSC::B3::testCheckMulFold):
+ (JSC::B3::testCheckMulFoldFail):
+ (JSC::B3::testCheckMul64SShr):
+ (JSC::B3::testSwitch):
+ (JSC::B3::testSwitchChillDiv):
+ (JSC::B3::testSwitchTargettingSameBlock):
+ (JSC::B3::testSwitchTargettingSameBlockFoldPathConstant):
+ (JSC::B3::testBasicSelect):
+ (JSC::B3::testSelectTest):
+ (JSC::B3::testSelectCompareDouble):
+ (JSC::B3::testSelectDouble):
+ (JSC::B3::testSelectDoubleTest):
+ (JSC::B3::testSelectDoubleCompareDouble):
+ (JSC::B3::testSelectFloatCompareFloat):
+ (JSC::B3::testSelectFold):
+ (JSC::B3::testSelectInvert):
+ (JSC::B3::testCheckSelect):
+ (JSC::B3::testCheckSelectCheckSelect):
+ (JSC::B3::testCheckSelectAndCSE):
+ (JSC::B3::testTrivialInfiniteLoop):
+ (JSC::B3::testFoldPathEqual):
+ (JSC::B3::testLShiftSelf32):
+ (JSC::B3::testRShiftSelf32):
+ (JSC::B3::testURShiftSelf32):
+ (JSC::B3::testLShiftSelf64):
+ (JSC::B3::testRShiftSelf64):
+ (JSC::B3::testURShiftSelf64):
+ (JSC::B3::testPatchpointDoubleRegs):
+ (JSC::B3::testSpillDefSmallerThanUse):
+ (JSC::B3::testSpillUseLargerThanDef):
+ (JSC::B3::testLateRegister):
+ (JSC::B3::testInterpreter):
+ (JSC::B3::testEntrySwitchSimple):
+ (JSC::B3::testEntrySwitchNoEntrySwitch):
+ (JSC::B3::testEntrySwitchWithCommonPaths):
+ (JSC::B3::testEntrySwitchWithCommonPathsAndNonTrivialEntrypoint):
+ (JSC::B3::testEntrySwitchLoop):
+ (JSC::B3::testSomeEarlyRegister):
+ (JSC::B3::testTerminalPatchpointThatNeedsToBeSpilled):
+ (JSC::B3::testTerminalPatchpointThatNeedsToBeSpilled2):
+ (JSC::B3::testPatchpointTerminalReturnValue):
+ (JSC::B3::testMemoryFence):
+ (JSC::B3::testStoreFence):
+ (JSC::B3::testLoadFence):
+ (JSC::B3::testPCOriginMapDoesntInsertNops):
+ (JSC::B3::testPinRegisters):
+ (JSC::B3::testX86LeaAddAddShlLeft):
+ (JSC::B3::testX86LeaAddAddShlRight):
+ (JSC::B3::testX86LeaAddAdd):
+ (JSC::B3::testX86LeaAddShlRight):
+ (JSC::B3::testX86LeaAddShlLeftScale1):
+ (JSC::B3::testX86LeaAddShlLeftScale2):
+ (JSC::B3::testX86LeaAddShlLeftScale4):
+ (JSC::B3::testX86LeaAddShlLeftScale8):
+ (JSC::B3::testAddShl32):
+ (JSC::B3::testAddShl64):
+ (JSC::B3::testAddShl65):
+ (JSC::B3::testLoadBaseIndexShift2):
+ (JSC::B3::testLoadBaseIndexShift32):
+ (JSC::B3::testOptimizeMaterialization):
+ (JSC::B3::testAtomicWeakCAS):
+ (JSC::B3::testAtomicStrongCAS):
+ (JSC::B3::testAtomicXchg):
+ (JSC::B3::testDepend32):
+ (JSC::B3::testDepend64):
+ (JSC::B3::testWasmBoundsCheck):
+ (JSC::B3::testWasmAddress):
+ (JSC::B3::run):
+ (JSC::B3::compile): Deleted.
+ * bytecode/PolymorphicAccess.cpp:
+ (JSC::PolymorphicAccess::regenerate):
+ * dfg/DFGJITCompiler.cpp:
+ (JSC::DFG::JITCompiler::compile):
+ (JSC::DFG::JITCompiler::compileFunction):
+ * dfg/DFGLazyJSValue.cpp:
+ (JSC::DFG::LazyJSValue::emit):
+ * dfg/DFGOSRExitCompiler.cpp:
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::emitCall):
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::emitCall):
+ * dfg/DFGThunks.cpp:
+ (JSC::DFG::osrExitGenerationThunkGenerator):
+ (JSC::DFG::osrEntryThunkGenerator):
+ * ftl/FTLCompile.cpp:
+ (JSC::FTL::compile):
+ * ftl/FTLLazySlowPath.cpp:
+ (JSC::FTL::LazySlowPath::generate):
+ * ftl/FTLLink.cpp:
+ (JSC::FTL::link):
+ * ftl/FTLLowerDFGToB3.cpp:
+ (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstruct):
+ (JSC::FTL::DFG::LowerDFGToB3::compileTailCall):
+ (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargsSpread):
+ (JSC::FTL::DFG::LowerDFGToB3::compileCallOrConstructVarargs):
+ (JSC::FTL::DFG::LowerDFGToB3::compileCallEval):
+ * ftl/FTLOSRExitCompiler.cpp:
+ (JSC::FTL::compileStub):
+ * ftl/FTLOSRExitHandle.cpp:
+ (JSC::FTL::OSRExitHandle::emitExitThunk):
+ * ftl/FTLSlowPathCall.cpp:
+ (JSC::FTL::SlowPathCallContext::makeCall):
+ * ftl/FTLSlowPathCall.h:
+ (JSC::FTL::callOperation):
+ * ftl/FTLState.h:
+ * ftl/FTLThunks.cpp:
+ (JSC::FTL::genericGenerationThunkGenerator):
+ (JSC::FTL::slowPathCallThunkGenerator):
+ * ftl/FTLThunks.h:
+ (JSC::FTL::generateIfNecessary):
+ (JSC::FTL::Thunks::getSlowPathCallThunk):
+ * jit/AssemblyHelpers.cpp:
+ (JSC::AssemblyHelpers::emitDumbVirtualCall):
+ * jit/AssemblyHelpers.h:
+ * jit/ExecutableAllocator.cpp:
+ (JSC::ExecutableAllocator::initializeAllocator):
+ (JSC::ExecutableAllocator::singleton):
+ (JSC::ExecutableAllocator::ExecutableAllocator):
+ (JSC::ExecutableAllocator::allocate):
+ * jit/ExecutableAllocator.h:
+ * jit/JIT.cpp:
+ (JSC::JIT::compileWithoutLinking):
+ * jit/JITCall.cpp:
+ (JSC::JIT::compileCallEvalSlowCase):
+ * jit/JITMathIC.h:
+ (JSC::JITMathIC::generateOutOfLine):
+ * jit/JITOpcodes.cpp:
+ (JSC::JIT::privateCompileHasIndexedProperty):
+ * jit/JITOpcodes32_64.cpp:
+ (JSC::JIT::privateCompileHasIndexedProperty):
+ * jit/JITOperations.cpp:
+ * jit/JITOperations.h:
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::stringGetByValStubGenerator):
+ (JSC::JIT::privateCompileGetByVal):
+ (JSC::JIT::privateCompileGetByValWithCachedId):
+ (JSC::JIT::privateCompilePutByVal):
+ (JSC::JIT::privateCompilePutByValWithCachedId):
+ * jit/JITPropertyAccess32_64.cpp:
+ (JSC::JIT::stringGetByValStubGenerator):
+ * jit/JITStubRoutine.h:
+ * jit/Repatch.cpp:
+ (JSC::ftlThunkAwareRepatchCall):
+ (JSC::linkPolymorphicCall):
+ * jit/SpecializedThunkJIT.h:
+ (JSC::SpecializedThunkJIT::finalize):
+ * jit/ThunkGenerators.cpp:
+ (JSC::throwExceptionFromCallSlowPathGenerator):
+ (JSC::linkCallThunkGenerator):
+ (JSC::linkPolymorphicCallThunkGenerator):
+ (JSC::virtualThunkFor):
+ (JSC::nativeForGenerator):
+ (JSC::arityFixupGenerator):
+ (JSC::unreachableGenerator):
+ (JSC::boundThisNoArgsFunctionCallGenerator):
+ (JSC::throwExceptionFromWasmThunkGenerator):
+ * llint/LLIntThunks.cpp:
+ (JSC::LLInt::generateThunkWithJumpTo):
+ * runtime/SamplingProfiler.cpp:
+ (JSC::SamplingProfiler::takeSample):
+ * runtime/VM.cpp:
+ (JSC::VM::VM):
+ * runtime/VM.h:
+ * runtime/VMTraps.cpp:
+ (JSC::VMTraps::tryInstallTrapBreakpoints):
+ * tools/VMInspector.cpp:
+ * wasm/WasmBinding.cpp:
+ (JSC::Wasm::wasmToJs):
+ (JSC::Wasm::wasmToWasm):
+ (JSC::Wasm::exitStubGenerator):
+ * wasm/WasmPlan.cpp:
+ (JSC::Wasm::Plan::complete):
+ * yarr/YarrJIT.cpp:
+ (JSC::Yarr::YarrGenerator::compile):
+ (JSC::Yarr::jitCompile):
+
</ins><span class="cx"> 2017-03-29 Keith Miller <keith_miller@apple.com>
</span><span class="cx">
</span><span class="cx"> WebAssembly: Worklist should periodically check in to see if there are higher priority jobs to do.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreassemblerLinkBuffercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/assembler/LinkBuffer.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/assembler/LinkBuffer.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/assembler/LinkBuffer.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -32,7 +32,6 @@
</span><span class="cx"> #include "JITCode.h"
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "Options.h"
</span><del>-#include "VM.h"
</del><span class="cx"> #include <wtf/CompilationThread.h>
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><span class="lines">@@ -242,8 +241,7 @@
</span><span class="cx"> initialSize = macroAssembler.m_assembler.codeSize();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- ASSERT(m_vm != nullptr);
- m_executableMemory = m_vm->executableAllocator.allocate(*m_vm, initialSize, ownerUID, effort);
</del><ins>+ m_executableMemory = ExecutableAllocator::singleton().allocate(initialSize, ownerUID, effort);
</ins><span class="cx"> if (!m_executableMemory)
</span><span class="cx"> return;
</span><span class="cx"> m_code = m_executableMemory->start();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreassemblerLinkBufferh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/assembler/LinkBuffer.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/assembler/LinkBuffer.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/assembler/LinkBuffer.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -43,7 +43,6 @@
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><span class="cx"> class CodeBlock;
</span><del>-class VM;
</del><span class="cx">
</span><span class="cx"> // LinkBuffer:
</span><span class="cx"> //
</span><span class="lines">@@ -79,11 +78,10 @@
</span><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> public:
</span><del>- LinkBuffer(VM& vm, MacroAssembler& macroAssembler, void* ownerUID, JITCompilationEffort effort = JITCompilationMustSucceed)
</del><ins>+ LinkBuffer(MacroAssembler& macroAssembler, void* ownerUID, JITCompilationEffort effort = JITCompilationMustSucceed)
</ins><span class="cx"> : m_size(0)
</span><span class="cx"> , m_didAllocate(false)
</span><span class="cx"> , m_code(0)
</span><del>- , m_vm(&vm)
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> , m_completed(false)
</span><span class="cx"> #endif
</span><span class="lines">@@ -95,7 +93,6 @@
</span><span class="cx"> : m_size(size)
</span><span class="cx"> , m_didAllocate(false)
</span><span class="cx"> , m_code(code)
</span><del>- , m_vm(0)
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> , m_completed(false)
</span><span class="cx"> #endif
</span><span class="lines">@@ -253,8 +250,6 @@
</span><span class="cx"> bool wasAlreadyDisassembled() const { return m_alreadyDisassembled; }
</span><span class="cx"> void didAlreadyDisassemble() { m_alreadyDisassembled = true; }
</span><span class="cx">
</span><del>- VM& vm() { return *m_vm; }
-
</del><span class="cx"> private:
</span><span class="cx"> #if ENABLE(BRANCH_COMPACTION)
</span><span class="cx"> int executableOffsetFor(int location)
</span><span class="lines">@@ -305,7 +300,6 @@
</span><span class="cx"> #endif
</span><span class="cx"> bool m_didAllocate;
</span><span class="cx"> void* m_code;
</span><del>- VM* m_vm;
</del><span class="cx"> #ifndef NDEBUG
</span><span class="cx"> bool m_completed;
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreb3B3Compilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/b3/B3Compile.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/b3/B3Compile.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/b3/B3Compile.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC { namespace B3 {
</span><span class="cx">
</span><del>-Compilation compile(VM& vm, Procedure& proc, unsigned optLevel)
</del><ins>+Compilation compile(Procedure& proc, unsigned optLevel)
</ins><span class="cx"> {
</span><span class="cx"> TimingScope timingScope("Compilation");
</span><span class="cx">
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx">
</span><span class="cx"> CCallHelpers jit;
</span><span class="cx"> generate(proc, jit);
</span><del>- LinkBuffer linkBuffer(vm, jit, nullptr);
</del><ins>+ LinkBuffer linkBuffer(jit, nullptr);
</ins><span class="cx">
</span><span class="cx"> return Compilation(FINALIZE_CODE(linkBuffer, ("B3::Compilation")), proc.releaseByproducts());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreb3B3Compileh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/b3/B3Compile.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/b3/B3Compile.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/b3/B3Compile.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> // Then you keep the Compilation object alive for as long as you want to be able to run the code.
</span><span class="cx"> // If this API feels too high-level, you can use B3::generate() directly.
</span><span class="cx">
</span><del>-JS_EXPORT_PRIVATE Compilation compile(VM&, Procedure&, unsigned optLevel = 1);
</del><ins>+JS_EXPORT_PRIVATE Compilation compile(Procedure&, unsigned optLevel = 1);
</ins><span class="cx">
</span><span class="cx"> } } // namespace JSC::B3
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreb3airtestaircpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/b3/air/testair.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/b3/air/testair.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/b3/air/testair.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -36,7 +36,6 @@
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "LinkBuffer.h"
</span><span class="cx"> #include "PureNaN.h"
</span><del>-#include "VM.h"
</del><span class="cx"> #include <cmath>
</span><span class="cx"> #include <map>
</span><span class="cx"> #include <string>
</span><span class="lines">@@ -80,14 +79,12 @@
</span><span class="cx"> CRASH(); \
</span><span class="cx"> } while (false)
</span><span class="cx">
</span><del>-VM* vm;
-
</del><span class="cx"> std::unique_ptr<B3::Compilation> compile(B3::Procedure& proc)
</span><span class="cx"> {
</span><span class="cx"> prepareForGeneration(proc.code());
</span><span class="cx"> CCallHelpers jit;
</span><span class="cx"> generate(proc.code(), jit);
</span><del>- LinkBuffer linkBuffer(*vm, jit, nullptr);
</del><ins>+ LinkBuffer linkBuffer(jit, nullptr);
</ins><span class="cx">
</span><span class="cx"> return std::make_unique<B3::Compilation>(
</span><span class="cx"> FINALIZE_CODE(linkBuffer, ("testair compilation")), proc.releaseByproducts());
</span><span class="lines">@@ -1849,7 +1846,6 @@
</span><span class="cx"> void run(const char* filter)
</span><span class="cx"> {
</span><span class="cx"> JSC::initializeThreading();
</span><del>- vm = &VM::create(LargeHeap).leakRef();
</del><span class="cx">
</span><span class="cx"> Deque<RefPtr<SharedTask<void()>>> tasks;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreb3testb3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/b3/testb3.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/b3/testb3.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/b3/testb3.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -66,7 +66,6 @@
</span><span class="cx"> #include "JSCInlines.h"
</span><span class="cx"> #include "LinkBuffer.h"
</span><span class="cx"> #include "PureNaN.h"
</span><del>-#include "VM.h"
</del><span class="cx"> #include <cmath>
</span><span class="cx"> #include <string>
</span><span class="cx"> #include <wtf/FastTLS.h>
</span><span class="lines">@@ -118,11 +117,9 @@
</span><span class="cx"> CRASH(); \
</span><span class="cx"> } while (false)
</span><span class="cx">
</span><del>-VM* vm;
-
-std::unique_ptr<Compilation> compile(Procedure& procedure, unsigned optLevel = 1)
</del><ins>+std::unique_ptr<Compilation> compileProc(Procedure& procedure, unsigned optLevel = 1)
</ins><span class="cx"> {
</span><del>- return std::make_unique<Compilation>(B3::compile(*vm, procedure, optLevel));
</del><ins>+ return std::make_unique<Compilation>(B3::compile(procedure, optLevel));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename T, typename... Arguments>
</span><span class="lines">@@ -141,7 +138,7 @@
</span><span class="cx"> template<typename T, typename... Arguments>
</span><span class="cx"> T compileAndRun(Procedure& procedure, Arguments... arguments)
</span><span class="cx"> {
</span><del>- return invoke<T>(*compile(procedure), arguments...);
</del><ins>+ return invoke<T>(*compileProc(procedure), arguments...);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void lowerToAirForTesting(Procedure& proc)
</span><span class="lines">@@ -312,7 +309,7 @@
</span><span class="cx"> root->appendNew<ConstPtrValue>(proc, Origin(), &x),
</span><span class="cx"> 0, HeapRange(42), HeapRange(42)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isARM64())
</span><span class="cx"> checkUsesInstruction(*code, "lda");
</span><span class="cx"> CHECK(invoke<int>(*code) == 42);
</span><span class="lines">@@ -615,7 +612,7 @@
</span><span class="cx"> arg,
</span><span class="cx"> constZero));
</span><span class="cx">
</span><del>- auto code = compile(proc, 0);
</del><ins>+ auto code = compileProc(proc, 0);
</ins><span class="cx"> CHECK(invoke<int64_t>(*code, 0x0123456789abcdef) == 0x89abcdef);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -632,7 +629,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, Add, Origin(), load, load));
</span><span class="cx">
</span><del>- auto code = compile(proc, optLevel);
</del><ins>+ auto code = compileProc(proc, optLevel);
</ins><span class="cx"> CHECK(invoke<int32_t>(*code) == 42 * 2);
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -984,7 +981,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, Mul, Origin(), load, load));
</span><span class="cx">
</span><del>- auto code = compile(proc, optLevel);
</del><ins>+ auto code = compileProc(proc, optLevel);
</ins><span class="cx"> CHECK(invoke<int32_t>(*code) == 42 * 42);
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -1004,7 +1001,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Add, Origin(), multiplied, arg2);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int64Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1028,7 +1025,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Add, Origin(), arg0, multiplied);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int64Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1055,7 +1052,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Add, Origin(), multiplied, arg2);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int32Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1082,7 +1079,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Add, Origin(), arg0, multiplied);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int32Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1106,7 +1103,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Sub, Origin(), multiplied, arg2);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int64Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1130,7 +1127,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Sub, Origin(), arg0, multiplied);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int64Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1157,7 +1154,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Sub, Origin(), multiplied, arg2);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int32Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1184,7 +1181,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Sub, Origin(), arg0, multiplied);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int32Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1208,7 +1205,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Sub, Origin(), zero, multiplied);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int64Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -1232,7 +1229,7 @@
</span><span class="cx"> Value* added = root->appendNew<Value>(proc, Sub, Origin(), zero, multiplied);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), added);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto testValues = int32Operands();
</span><span class="cx"> for (auto a : testValues) {
</span><span class="lines">@@ -4636,7 +4633,7 @@
</span><span class="cx"> Value* equal = tail->appendNew<Value>(proc, Equal, Origin(), doubleInput, arg2AsFRoundedDouble);
</span><span class="cx"> tail->appendNewControlValue(proc, Return, Origin(), equal);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int32_t integerA = bitwise_cast<int32_t>(a);
</span><span class="cx"> double doubleB = b;
</span><span class="cx"> CHECK(invoke<int64_t>(*code, 1, integerA, doubleB) == (a == b));
</span><span class="lines">@@ -4685,7 +4682,7 @@
</span><span class="cx"> Value* floatResult = tail->appendNew<Value>(proc, DoubleToFloat, Origin(), doubleInput);
</span><span class="cx"> tail->appendNewControlValue(proc, Return, Origin(), floatResult);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(isIdentical(invoke<float>(*code, 1, bitwise_cast<int32_t>(value)), value + 42.5f));
</span><span class="cx"> CHECK(isIdentical(invoke<float>(*code, 0, bitwise_cast<int32_t>(value)), static_cast<float>(M_PI)));
</span><span class="cx"> }
</span><span class="lines">@@ -4740,7 +4737,7 @@
</span><span class="cx"> result);
</span><span class="cx"> tail->appendNewControlValue(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(isIdentical(invoke<float>(*code, 1), 11.5f * 11.5f + static_cast<float>(bitwise_cast<double>(static_cast<uint64_t>(1))) + 11.5f));
</span><span class="cx"> CHECK(isIdentical(invoke<float>(*code, 0), 10.5f * 10.5f + static_cast<float>(bitwise_cast<double>(static_cast<uint64_t>(0))) + 10.5f));
</span><span class="cx"> }
</span><span class="lines">@@ -4780,7 +4777,7 @@
</span><span class="cx"> Value* floatResult = tail->appendNew<Value>(proc, DoubleToFloat, Origin(), finalAdd);
</span><span class="cx"> tail->appendNewControlValue(proc, Return, Origin(), floatResult);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(isIdentical(invoke<float>(*code, 1, bitwise_cast<int32_t>(value)), value + value));
</span><span class="cx"> CHECK(isIdentical(invoke<float>(*code, 0, bitwise_cast<int32_t>(value)), 42.5f + value));
</span><span class="cx"> }
</span><span class="lines">@@ -4829,7 +4826,7 @@
</span><span class="cx">
</span><span class="cx"> tail->appendNewControlValue(proc, Return, Origin(), doubleAdd);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(isIdentical(invoke<double>(*code, 1, bitwise_cast<int32_t>(value)), (value + value) + static_cast<double>(value)));
</span><span class="cx"> CHECK(isIdentical(invoke<double>(*code, 0, bitwise_cast<int32_t>(value)), static_cast<double>((42.5f + value) + 42.5f)));
</span><span class="cx"> }
</span><span class="lines">@@ -4869,7 +4866,7 @@
</span><span class="cx"> Value* floatResult = tail->appendNew<Value>(proc, DoubleToFloat, Origin(), finalAdd);
</span><span class="cx"> tail->appendNewControlValue(proc, Return, Origin(), floatResult);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(isIdentical(invoke<float>(*code, 1, bitwise_cast<int32_t>(value)), value + value));
</span><span class="cx"> CHECK(isIdentical(invoke<float>(*code, 0, bitwise_cast<int32_t>(value)), static_cast<float>(constValue + value)));
</span><span class="cx"> }
</span><span class="lines">@@ -5225,7 +5222,7 @@
</span><span class="cx"> Value* srcAsDouble = root->appendNew<Value>(proc, IToD, Origin(), src);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), srcAsDouble);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> for (auto testValue : int64Operands())
</span><span class="cx"> CHECK(isIdentical(invoke<double>(*code, testValue.value), static_cast<double>(testValue.value)));
</span><span class="cx"> }
</span><span class="lines">@@ -5238,7 +5235,7 @@
</span><span class="cx"> Value* srcAsFloat = root->appendNew<Value>(proc, IToF, Origin(), src);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), srcAsFloat);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> for (auto testValue : int64Operands())
</span><span class="cx"> CHECK(isIdentical(invoke<float>(*code, testValue.value), static_cast<float>(testValue.value)));
</span><span class="cx"> }
</span><span class="lines">@@ -5252,7 +5249,7 @@
</span><span class="cx"> Value* srcAsDouble = root->appendNew<Value>(proc, IToD, Origin(), src);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), srcAsDouble);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> for (auto testValue : int32Operands())
</span><span class="cx"> CHECK(isIdentical(invoke<double>(*code, testValue.value), static_cast<double>(testValue.value)));
</span><span class="cx"> }
</span><span class="lines">@@ -5266,7 +5263,7 @@
</span><span class="cx"> Value* srcAsFloat = root->appendNew<Value>(proc, IToF, Origin(), src);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), srcAsFloat);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> for (auto testValue : int32Operands())
</span><span class="cx"> CHECK(isIdentical(invoke<float>(*code, testValue.value), static_cast<float>(testValue.value)));
</span><span class="cx"> }
</span><span class="lines">@@ -5280,7 +5277,7 @@
</span><span class="cx"> Value* srcAsDouble = root->appendNew<Value>(proc, IToD, Origin(), loadedSrc);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), srcAsDouble);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int64_t inMemoryValue;
</span><span class="cx"> for (auto testValue : int64Operands()) {
</span><span class="cx"> inMemoryValue = testValue.value;
</span><span class="lines">@@ -5298,7 +5295,7 @@
</span><span class="cx"> Value* srcAsFloat = root->appendNew<Value>(proc, IToF, Origin(), loadedSrc);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), srcAsFloat);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int64_t inMemoryValue;
</span><span class="cx"> for (auto testValue : int64Operands()) {
</span><span class="cx"> inMemoryValue = testValue.value;
</span><span class="lines">@@ -5316,7 +5313,7 @@
</span><span class="cx"> Value* srcAsDouble = root->appendNew<Value>(proc, IToD, Origin(), loadedSrc);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), srcAsDouble);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int32_t inMemoryValue;
</span><span class="cx"> for (auto testValue : int32Operands()) {
</span><span class="cx"> inMemoryValue = testValue.value;
</span><span class="lines">@@ -5334,7 +5331,7 @@
</span><span class="cx"> Value* srcAsFloat = root->appendNew<Value>(proc, IToF, Origin(), loadedSrc);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), srcAsFloat);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int32_t inMemoryValue;
</span><span class="cx"> for (auto testValue : int32Operands()) {
</span><span class="cx"> inMemoryValue = testValue.value;
</span><span class="lines">@@ -5392,7 +5389,7 @@
</span><span class="cx"> Value* floatResult = root->appendNew<Value>(proc, DoubleToFloat, Origin(), srcAsDouble);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), floatResult);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> for (auto testValue : int64Operands())
</span><span class="cx"> CHECK(isIdentical(invoke<float>(*code, testValue.value), static_cast<float>(testValue.value)));
</span><span class="cx"> }
</span><span class="lines">@@ -5407,7 +5404,7 @@
</span><span class="cx"> Value* floatResult = root->appendNew<Value>(proc, DoubleToFloat, Origin(), srcAsDouble);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), floatResult);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> for (auto testValue : int32Operands())
</span><span class="cx"> CHECK(isIdentical(invoke<float>(*code, testValue.value), static_cast<float>(testValue.value)));
</span><span class="cx"> }
</span><span class="lines">@@ -5789,7 +5786,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isARM64()) {
</span><span class="cx"> checkUsesInstruction(*code, "lda");
</span><span class="cx"> checkUsesInstruction(*code, "stl");
</span><span class="lines">@@ -5862,7 +5859,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isARM64()) {
</span><span class="cx"> checkUsesInstruction(*code, "lda");
</span><span class="cx"> checkUsesInstruction(*code, "stl");
</span><span class="lines">@@ -5901,7 +5898,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isARM64()) {
</span><span class="cx"> checkUsesInstruction(*code, "lda");
</span><span class="cx"> checkUsesInstruction(*code, "stl");
</span><span class="lines">@@ -5974,7 +5971,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isARM64()) {
</span><span class="cx"> checkUsesInstruction(*code, "lda");
</span><span class="cx"> checkUsesInstruction(*code, "stl");
</span><span class="lines">@@ -6043,7 +6040,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isARM64()) {
</span><span class="cx"> checkUsesInstruction(*code, "lda");
</span><span class="cx"> checkUsesInstruction(*code, "stl");
</span><span class="lines">@@ -7049,7 +7046,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7074,7 +7071,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, static_cast<intptr_t>(42)) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, static_cast<intptr_t>(0)) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7107,7 +7104,7 @@
</span><span class="cx"> elseResult->setPhi(phi);
</span><span class="cx"> done->appendNewControlValue(proc, Return, Origin(), phi);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7137,7 +7134,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7167,7 +7164,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7200,7 +7197,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7230,7 +7227,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 1));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7263,7 +7260,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7293,7 +7290,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 1));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7326,7 +7323,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 1));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int>(*code, 42) == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -7741,7 +7738,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> intptr_t cond;
</span><span class="cx"> cond = 42;
</span><span class="cx"> CHECK(invoke<int>(*code, &cond) == 1);
</span><span class="lines">@@ -7771,7 +7768,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int32_t cond;
</span><span class="cx"> cond = 42;
</span><span class="cx"> CHECK(invoke<int>(*code, &cond) == 1);
</span><span class="lines">@@ -7801,7 +7798,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int8_t cond;
</span><span class="cx"> cond = -1;
</span><span class="cx"> CHECK(invoke<int>(*code, &cond) == 1);
</span><span class="lines">@@ -7831,7 +7828,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> uint8_t cond;
</span><span class="cx"> cond = 1;
</span><span class="cx"> CHECK(invoke<int>(*code, &cond) == 1);
</span><span class="lines">@@ -7861,7 +7858,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int16_t cond;
</span><span class="cx"> cond = -1;
</span><span class="cx"> CHECK(invoke<int>(*code, &cond) == 1);
</span><span class="lines">@@ -7891,7 +7888,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> uint16_t cond;
</span><span class="cx"> cond = 1;
</span><span class="cx"> CHECK(invoke<int>(*code, &cond) == 1);
</span><span class="lines">@@ -7931,7 +7928,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> elseCase->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> uint32_t cond;
</span><span class="cx"> cond = 0xffffffffU; // All bytes are 0xff.
</span><span class="cx"> CHECK(invoke<int>(*code, &cond - 2, (sizeof(uint32_t) * 2) >> logScale) == 1);
</span><span class="lines">@@ -8068,7 +8065,7 @@
</span><span class="cx">
</span><span class="cx"> current->appendNewControlValue(proc, Return, Origin(), vars[0]);
</span><span class="cx">
</span><del>- compile(proc);
</del><ins>+ compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> double after = monotonicallyIncreasingTimeMS();
</span><span class="cx"> dataLog(toCString(" That took ", after - before, " ms.\n"));
</span><span class="lines">@@ -8617,7 +8614,7 @@
</span><span class="cx"> root->appendNewControlValue(
</span><span class="cx"> proc, Return, Origin(), root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code, 0) == 0);
</span><span class="cx"> CHECK(invoke<int>(*code, 1) == 42);
</span><span class="lines">@@ -8636,7 +8633,7 @@
</span><span class="cx"> root->appendNewControlValue(
</span><span class="cx"> proc, Return, Origin(), root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code) == 0);
</span><span class="cx"> }
</span><span class="lines">@@ -8662,7 +8659,7 @@
</span><span class="cx"> root->appendNewControlValue(
</span><span class="cx"> proc, Return, Origin(), root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code) == 42);
</span><span class="cx"> }
</span><span class="lines">@@ -8693,7 +8690,7 @@
</span><span class="cx"> root->appendNewControlValue(
</span><span class="cx"> proc, Return, Origin(), root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code, 42) == 0);
</span><span class="cx"> CHECK(invoke<int>(*code, 1000) == 0);
</span><span class="lines">@@ -8739,7 +8736,7 @@
</span><span class="cx"> root->appendNewControlValue(
</span><span class="cx"> proc, Return, Origin(), root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> int8_t value;
</span><span class="cx"> value = 42;
</span><span class="lines">@@ -8794,7 +8791,7 @@
</span><span class="cx"> root->appendNewControlValue(
</span><span class="cx"> proc, Return, Origin(), root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> int8_t value;
</span><span class="cx"> value = 42;
</span><span class="lines">@@ -8858,7 +8855,7 @@
</span><span class="cx"> root->appendNewControlValue(
</span><span class="cx"> proc, Return, Origin(), root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> int8_t value;
</span><span class="cx"> value = 42;
</span><span class="lines">@@ -8939,7 +8936,7 @@
</span><span class="cx"> elseCase->appendNewControlValue(
</span><span class="cx"> proc, Return, Origin(), elseCase->appendNew<Const32Value>(proc, Origin(), 45));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> int8_t value;
</span><span class="cx">
</span><span class="lines">@@ -8994,7 +8991,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkAdd));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0) == 42.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1) == 43.0);
</span><span class="lines">@@ -9030,7 +9027,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkAdd));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0) == 42.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1) == 43.0);
</span><span class="lines">@@ -9065,7 +9062,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkAdd));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0) == 42.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1) == 43.0);
</span><span class="lines">@@ -9102,7 +9099,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkAdd));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0, 42) == 42.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1, 42) == 43.0);
</span><span class="lines">@@ -9135,7 +9132,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkAdd));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0ll, 42ll) == 42.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1ll, 42ll) == 43.0);
</span><span class="lines">@@ -9156,7 +9153,7 @@
</span><span class="cx"> });
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), checkAdd);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code) == a + b);
</span><span class="cx"> }
</span><span class="lines">@@ -9177,7 +9174,7 @@
</span><span class="cx"> });
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), checkAdd);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code) == 42);
</span><span class="cx"> }
</span><span class="lines">@@ -9284,7 +9281,7 @@
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), checkAdd);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int64_t>(*code, 0ll) == 0);
</span><span class="cx"> CHECK(invoke<int64_t>(*code, 1ll) == 2);
</span><span class="lines">@@ -9315,7 +9312,7 @@
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), checkAdd);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int32_t>(*code, 0ll) == 0);
</span><span class="cx"> CHECK(invoke<int32_t>(*code, 1ll) == 2);
</span><span class="lines">@@ -9350,7 +9347,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkSub));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0) == -42.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1) == -41.0);
</span><span class="lines">@@ -9392,7 +9389,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkSub));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0) == -static_cast<double>(badImm));
</span><span class="cx"> CHECK(invoke<double>(*code, -1) == -static_cast<double>(badImm) - 1);
</span><span class="lines">@@ -9429,7 +9426,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkSub));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0, 42) == -42.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1, 42) == -41.0);
</span><span class="lines">@@ -9467,7 +9464,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkSub));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0ll, 42ll) == -42.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1ll, 42ll) == -41.0);
</span><span class="lines">@@ -9488,7 +9485,7 @@
</span><span class="cx"> });
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), checkSub);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code) == a - b);
</span><span class="cx"> }
</span><span class="lines">@@ -9509,7 +9506,7 @@
</span><span class="cx"> });
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), checkSub);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code) == 42);
</span><span class="cx"> }
</span><span class="lines">@@ -9538,7 +9535,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkNeg));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0) == 0.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1) == -1.0);
</span><span class="lines">@@ -9568,7 +9565,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkNeg));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0ll) == 0.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1ll) == -1.0);
</span><span class="lines">@@ -9605,7 +9602,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkMul));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0, 42) == 0.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1, 42) == 42.0);
</span><span class="lines">@@ -9646,7 +9643,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkMul));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> left = 0;
</span><span class="cx"> right = 42;
</span><span class="lines">@@ -9693,7 +9690,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkMul));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0) == 0.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1) == 2.0);
</span><span class="lines">@@ -9726,7 +9723,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkMul));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0, 42) == 0.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1, 42) == 42.0);
</span><span class="lines">@@ -9747,7 +9744,7 @@
</span><span class="cx"> });
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), checkMul);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code) == a * b);
</span><span class="cx"> }
</span><span class="lines">@@ -9768,7 +9765,7 @@
</span><span class="cx"> });
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), checkMul);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<int>(*code) == 42);
</span><span class="cx"> }
</span><span class="lines">@@ -9884,7 +9881,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, IToD, Origin(), checkMul));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> CHECK(invoke<double>(*code, 0ll, 42ll) == 0.0);
</span><span class="cx"> CHECK(invoke<double>(*code, 1ll, 42ll) == 0.0);
</span><span class="lines">@@ -10734,7 +10731,7 @@
</span><span class="cx"> switchValue->appendCase(SwitchCase(gap * i, FrequentedBlock(newBlock)));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < degree; ++i) {
</span><span class="cx"> CHECK(invoke<int32_t>(*code, i * gap, 42, 11) == ((i & 1) ? 11 : 42));
</span><span class="lines">@@ -10777,7 +10774,7 @@
</span><span class="cx"> switchValue->appendCase(SwitchCase(gap * i, FrequentedBlock(newBlock)));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < degree; ++i) {
</span><span class="cx"> dataLog("i = ", i, "\n");
</span><span class="lines">@@ -10816,7 +10813,7 @@
</span><span class="cx"> switchValue->appendCase(SwitchCase(3, FrequentedBlock(otherTarget)));
</span><span class="cx"> switchValue->appendCase(SwitchCase(13, FrequentedBlock(otherTarget)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < 20; ++i) {
</span><span class="cx"> int32_t expected = (i == 3 || i == 13) ? 42 : 5;
</span><span class="lines">@@ -10844,7 +10841,7 @@
</span><span class="cx"> switchValue->appendCase(SwitchCase(3, FrequentedBlock(otherTarget)));
</span><span class="cx"> switchValue->appendCase(SwitchCase(13, FrequentedBlock(otherTarget)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (unsigned i = 0; i < 20; ++i) {
</span><span class="cx"> int32_t expected = (i == 3 || i == 13) ? i : 42;
</span><span class="lines">@@ -11202,7 +11199,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR1),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR2)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<intptr_t>(*code, 42, 1, 2) == 1);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 42, 642462, 32533) == 642462);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 43, 1, 2) == 2);
</span><span class="lines">@@ -11221,7 +11218,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR1),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR2)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<intptr_t>(*code, 42, 1, 2) == 1);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 42, 642462, 32533) == 642462);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 0, 1, 2) == 2);
</span><span class="lines">@@ -11243,7 +11240,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR1)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<intptr_t>(*code, -1.0, 1.0, 1, 2) == 1);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 42.5, 42.51, 642462, 32533) == 642462);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, PNaN, 0.0, 1, 2) == 2);
</span><span class="lines">@@ -11340,7 +11337,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), FPRInfo::argumentFPR0),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), FPRInfo::argumentFPR1)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<double>(*code, 42, 1.5, 2.6) == 1.5);
</span><span class="cx"> CHECK(invoke<double>(*code, 42, 642462.7, 32533.8) == 642462.7);
</span><span class="cx"> CHECK(invoke<double>(*code, 43, 1.9, 2.0) == 2.0);
</span><span class="lines">@@ -11359,7 +11356,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), FPRInfo::argumentFPR0),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), FPRInfo::argumentFPR1)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<double>(*code, 42, 1.5, 2.6) == 1.5);
</span><span class="cx"> CHECK(invoke<double>(*code, 42, 642462.7, 32533.8) == 642462.7);
</span><span class="cx"> CHECK(invoke<double>(*code, 0, 1.9, 2.0) == 2.0);
</span><span class="lines">@@ -11381,7 +11378,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), FPRInfo::argumentFPR2),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), FPRInfo::argumentFPR3)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<double>(*code, -1.0, 1.0, 1.1, 2.2) == 1.1);
</span><span class="cx"> CHECK(invoke<double>(*code, 42.5, 42.51, 642462.3, 32533.4) == 642462.3);
</span><span class="cx"> CHECK(invoke<double>(*code, PNaN, 0.0, 1.5, 2.6) == 2.6);
</span><span class="lines">@@ -11467,7 +11464,7 @@
</span><span class="cx"> arg1),
</span><span class="cx"> arg2,
</span><span class="cx"> arg3));
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<double>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<double>()) {
</span><span class="lines">@@ -11494,7 +11491,7 @@
</span><span class="cx"> keepValuesLive->setGenerator([&] (CCallHelpers&, const StackmapGenerationParams&) { });
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<double>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<double>()) {
</span><span class="lines">@@ -11521,7 +11518,7 @@
</span><span class="cx"> keepValuesLive->setGenerator([&] (CCallHelpers&, const StackmapGenerationParams&) { });
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<double>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<double>()) {
</span><span class="lines">@@ -11549,7 +11546,7 @@
</span><span class="cx"> keepValuesLive->setGenerator([&] (CCallHelpers&, const StackmapGenerationParams&) { });
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<double>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<double>()) {
</span><span class="lines">@@ -11575,7 +11572,7 @@
</span><span class="cx"> arg1),
</span><span class="cx"> arg2,
</span><span class="cx"> arg0));
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<double>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<double>()) {
</span><span class="lines">@@ -11601,7 +11598,7 @@
</span><span class="cx"> keepValuesLive->setGenerator([&] (CCallHelpers&, const StackmapGenerationParams&) { });
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<double>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<double>()) {
</span><span class="lines">@@ -11653,7 +11650,7 @@
</span><span class="cx"> arg1),
</span><span class="cx"> arg2,
</span><span class="cx"> arg3));
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<float>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<float>()) {
</span><span class="lines">@@ -11688,7 +11685,7 @@
</span><span class="cx"> keepValuesLive->setGenerator([&] (CCallHelpers&, const StackmapGenerationParams&) { });
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<float>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<float>()) {
</span><span class="lines">@@ -11723,7 +11720,7 @@
</span><span class="cx"> keepValuesLive->setGenerator([&] (CCallHelpers&, const StackmapGenerationParams&) { });
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<float>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<float>()) {
</span><span class="lines">@@ -11759,7 +11756,7 @@
</span><span class="cx"> keepValuesLive->setGenerator([&] (CCallHelpers&, const StackmapGenerationParams&) { });
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<float>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<float>()) {
</span><span class="lines">@@ -11791,7 +11788,7 @@
</span><span class="cx"> arg1),
</span><span class="cx"> arg2,
</span><span class="cx"> arg0));
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<float>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<float>()) {
</span><span class="lines">@@ -11823,7 +11820,7 @@
</span><span class="cx"> keepValuesLive->setGenerator([&] (CCallHelpers&, const StackmapGenerationParams&) { });
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> for (auto& left : floatingPointOperands<float>()) {
</span><span class="cx"> for (auto& right : floatingPointOperands<float>()) {
</span><span class="lines">@@ -11860,7 +11857,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR1)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<intptr_t>(*code, 1, 2) == (value == 42 ? 1 : 2));
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 642462, 32533) == (value == 42 ? 642462 : 32533));
</span><span class="cx"> }
</span><span class="lines">@@ -11883,7 +11880,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR1),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR2)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<intptr_t>(*code, 42, 1, 2) == 1);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 42, 642462, 32533) == 642462);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 43, 1, 2) == 2);
</span><span class="lines">@@ -11926,7 +11923,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(generationCount == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, true) == 0);
</span><span class="cx"> CHECK(invoke<int>(*code, false) == 666);
</span><span class="lines">@@ -11997,7 +11994,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(generationCount == 1);
</span><span class="cx"> CHECK(generationCount2 == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, true, true) == 0);
</span><span class="lines">@@ -12043,7 +12040,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, Add, Origin(), addValue, addValue2));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(generationCount == 1);
</span><span class="cx"> CHECK(invoke<int>(*code, true) == 0);
</span><span class="cx"> CHECK(invoke<int>(*code, false) == 666);
</span><span class="lines">@@ -12452,7 +12449,7 @@
</span><span class="cx"> root->appendNewControlValue(proc, Jump, Origin(), FrequentedBlock(loop));
</span><span class="cx"> loop->appendNewControlValue(proc, Jump, Origin(), FrequentedBlock(loop));
</span><span class="cx">
</span><del>- compile(proc);
</del><ins>+ compileProc(proc);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void testFoldPathEqual()
</span><span class="lines">@@ -12477,7 +12474,7 @@
</span><span class="cx"> elseBlock->appendNew<Value>(
</span><span class="cx"> proc, Equal, Origin(), arg, elseBlock->appendNew<ConstPtrValue>(proc, Origin(), 0)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<intptr_t>(*code, 0) == 1);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 1) == 0);
</span><span class="cx"> CHECK(invoke<intptr_t>(*code, 42) == 0);
</span><span class="lines">@@ -12494,7 +12491,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, Shl, Origin(), arg, arg));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto check = [&] (int32_t value) {
</span><span class="cx"> CHECK(invoke<int32_t>(*code, value) == value << (value & 31));
</span><span class="lines">@@ -12517,7 +12514,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, SShr, Origin(), arg, arg));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto check = [&] (int32_t value) {
</span><span class="cx"> CHECK(invoke<int32_t>(*code, value) == value >> (value & 31));
</span><span class="lines">@@ -12540,7 +12537,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> root->appendNew<Value>(proc, ZShr, Origin(), arg, arg));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto check = [&] (uint32_t value) {
</span><span class="cx"> CHECK(invoke<uint32_t>(*code, value) == value >> (value & 31));
</span><span class="lines">@@ -12562,7 +12559,7 @@
</span><span class="cx"> root->appendNew<Value>(
</span><span class="cx"> proc, Shl, Origin(), arg, root->appendNew<Value>(proc, Trunc, Origin(), arg)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto check = [&] (int64_t value) {
</span><span class="cx"> CHECK(invoke<int64_t>(*code, value) == value << (value & 63));
</span><span class="lines">@@ -12586,7 +12583,7 @@
</span><span class="cx"> root->appendNew<Value>(
</span><span class="cx"> proc, SShr, Origin(), arg, root->appendNew<Value>(proc, Trunc, Origin(), arg)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto check = [&] (int64_t value) {
</span><span class="cx"> CHECK(invoke<int64_t>(*code, value) == value >> (value & 63));
</span><span class="lines">@@ -12610,7 +12607,7 @@
</span><span class="cx"> root->appendNew<Value>(
</span><span class="cx"> proc, ZShr, Origin(), arg, root->appendNew<Value>(proc, Trunc, Origin(), arg)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> auto check = [&] (uint64_t value) {
</span><span class="cx"> CHECK(invoke<uint64_t>(*code, value) == value >> (value & 63));
</span><span class="lines">@@ -12643,7 +12640,7 @@
</span><span class="cx">
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), patchpoint);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(numCalls == 1);
</span><span class="cx"> CHECK(invoke<double>(*code, 42.5) == 42.5);
</span><span class="cx"> }
</span><span class="lines">@@ -12676,7 +12673,7 @@
</span><span class="cx"> Value* result = root->appendNew<Value>(proc, Sub, Origin(), forceSpill, arg64);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<int64_t>(*code, 0xffffffff00000000) == 0);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -12730,7 +12727,7 @@
</span><span class="cx"> elseResult->setPhi(phi);
</span><span class="cx"> tail->appendNewControlValue(proc, Return, Origin(), phi);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<uint64_t>(*code, 1, 0xffffffff00000000) == 0);
</span><span class="cx"> CHECK(invoke<uint64_t>(*code, 0, 0xffffffff00000000) == 0xffffffff00000000);
</span><span class="cx">
</span><span class="lines">@@ -12812,7 +12809,7 @@
</span><span class="cx"> });
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), secondPatchpoint);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK(invoke<uint64_t>(*code) == result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -12986,7 +12983,7 @@
</span><span class="cx"> proc, Return, Origin(),
</span><span class="cx"> stop->appendIntConstant(proc, Origin(), pointerType(), 0));
</span><span class="cx">
</span><del>- auto interpreter = compile(proc);
</del><ins>+ auto interpreter = compileProc(proc);
</ins><span class="cx">
</span><span class="cx"> Vector<intptr_t> data;
</span><span class="cx"> Vector<intptr_t> code;
</span><span class="lines">@@ -13136,7 +13133,7 @@
</span><span class="cx">
</span><span class="cx"> CCallHelpers jit;
</span><span class="cx"> generate(proc, jit);
</span><del>- LinkBuffer linkBuffer(*vm, jit, nullptr);
</del><ins>+ LinkBuffer linkBuffer(jit, nullptr);
</ins><span class="cx"> CodeLocationLabel labelOne = linkBuffer.locationOf(proc.entrypointLabel(0));
</span><span class="cx"> CodeLocationLabel labelTwo = linkBuffer.locationOf(proc.entrypointLabel(1));
</span><span class="cx"> CodeLocationLabel labelThree = linkBuffer.locationOf(proc.entrypointLabel(2));
</span><span class="lines">@@ -13169,7 +13166,7 @@
</span><span class="cx">
</span><span class="cx"> CCallHelpers jit;
</span><span class="cx"> generate(proc, jit);
</span><del>- LinkBuffer linkBuffer(*vm, jit, nullptr);
</del><ins>+ LinkBuffer linkBuffer(jit, nullptr);
</ins><span class="cx"> CodeLocationLabel labelOne = linkBuffer.locationOf(proc.entrypointLabel(0));
</span><span class="cx"> CodeLocationLabel labelTwo = linkBuffer.locationOf(proc.entrypointLabel(1));
</span><span class="cx"> CodeLocationLabel labelThree = linkBuffer.locationOf(proc.entrypointLabel(2));
</span><span class="lines">@@ -13256,7 +13253,7 @@
</span><span class="cx">
</span><span class="cx"> CCallHelpers jit;
</span><span class="cx"> generate(proc, jit);
</span><del>- LinkBuffer linkBuffer(*vm, jit, nullptr);
</del><ins>+ LinkBuffer linkBuffer(jit, nullptr);
</ins><span class="cx"> CodeLocationLabel labelOne = linkBuffer.locationOf(proc.entrypointLabel(0));
</span><span class="cx"> CodeLocationLabel labelTwo = linkBuffer.locationOf(proc.entrypointLabel(1));
</span><span class="cx"> CodeLocationLabel labelThree = linkBuffer.locationOf(proc.entrypointLabel(2));
</span><span class="lines">@@ -13373,7 +13370,7 @@
</span><span class="cx">
</span><span class="cx"> CCallHelpers jit;
</span><span class="cx"> generate(proc, jit);
</span><del>- LinkBuffer linkBuffer(*vm, jit, nullptr);
</del><ins>+ LinkBuffer linkBuffer(jit, nullptr);
</ins><span class="cx"> CodeLocationLabel labelOne = linkBuffer.locationOf(proc.entrypointLabel(0));
</span><span class="cx"> CodeLocationLabel labelTwo = linkBuffer.locationOf(proc.entrypointLabel(1));
</span><span class="cx"> CodeLocationLabel labelThree = linkBuffer.locationOf(proc.entrypointLabel(2));
</span><span class="lines">@@ -13451,7 +13448,7 @@
</span><span class="cx">
</span><span class="cx"> CCallHelpers jit;
</span><span class="cx"> generate(proc, jit);
</span><del>- LinkBuffer linkBuffer(*vm, jit, nullptr);
</del><ins>+ LinkBuffer linkBuffer(jit, nullptr);
</ins><span class="cx"> CodeLocationLabel labelOne = linkBuffer.locationOf(proc.entrypointLabel(0));
</span><span class="cx"> CodeLocationLabel labelTwo = linkBuffer.locationOf(proc.entrypointLabel(1));
</span><span class="cx">
</span><span class="lines">@@ -13500,7 +13497,7 @@
</span><span class="cx">
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), patchpoint);
</span><span class="cx">
</span><del>- compile(proc);
</del><ins>+ compileProc(proc);
</ins><span class="cx"> CHECK(ranFirstPatchpoint);
</span><span class="cx"> CHECK(ranSecondPatchpoint);
</span><span class="cx"> };
</span><span class="lines">@@ -13614,7 +13611,7 @@
</span><span class="cx">
</span><span class="cx"> slowPath->appendNew<Value>(proc, Return, Origin(), slowPath->appendNew<Const32Value>(proc, Origin(), 20));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<int>(*code), 10);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -13702,7 +13699,7 @@
</span><span class="cx"> Options::maxB3TailDupBlockSize() = 0;
</span><span class="cx"> Options::maxB3TailDupBlockSuccessors() = 0;
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<int>(*code, 1), 1);
</span><span class="cx"> CHECK_EQ(invoke<int>(*code, 0), 0);
</span><span class="cx"> CHECK_EQ(invoke<int>(*code, 42), 666);
</span><span class="lines">@@ -13776,7 +13773,7 @@
</span><span class="cx"> slowPathUpsilon->setPhi(phi);
</span><span class="cx"> continuation->appendNew<Value>(proc, Return, Origin(), phi);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<int>(*code, 0), 31);
</span><span class="cx"> CHECK_EQ(invoke<int>(*code, 1), 32);
</span><span class="cx"> CHECK_EQ(invoke<int>(*code, 41), 72);
</span><span class="lines">@@ -13794,7 +13791,7 @@
</span><span class="cx"> root->appendNew<FenceValue>(proc, Origin());
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), root->appendIntConstant(proc, Origin(), Int32, 42));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<int>(*code), 42);
</span><span class="cx"> if (isX86())
</span><span class="cx"> checkUsesInstruction(*code, "lock or $0x0, (%rsp)");
</span><span class="lines">@@ -13813,7 +13810,7 @@
</span><span class="cx"> root->appendNew<FenceValue>(proc, Origin(), HeapRange::top(), HeapRange());
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), root->appendIntConstant(proc, Origin(), Int32, 42));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<int>(*code), 42);
</span><span class="cx"> checkDoesNotUseInstruction(*code, "lock");
</span><span class="cx"> checkDoesNotUseInstruction(*code, "mfence");
</span><span class="lines">@@ -13830,7 +13827,7 @@
</span><span class="cx"> root->appendNew<FenceValue>(proc, Origin(), HeapRange(), HeapRange::top());
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), root->appendIntConstant(proc, Origin(), Int32, 42));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<int>(*code), 42);
</span><span class="cx"> checkDoesNotUseInstruction(*code, "lock");
</span><span class="cx"> checkDoesNotUseInstruction(*code, "mfence");
</span><span class="lines">@@ -14055,7 +14052,7 @@
</span><span class="cx">
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- compile(proc);
</del><ins>+ compileProc(proc);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void testPinRegisters()
</span><span class="lines">@@ -14090,7 +14087,7 @@
</span><span class="cx"> CHECK_EQ(params[0].gpr(), GPRInfo::regCS0);
</span><span class="cx"> });
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin());
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> bool usesCSRs = false;
</span><span class="cx"> for (Air::BasicBlock* block : proc.code()) {
</span><span class="cx"> for (Air::Inst& inst : *block) {
</span><span class="lines">@@ -14129,7 +14126,7 @@
</span><span class="cx"> root->appendNew<ConstPtrValue>(proc, Origin(), 100));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> checkUsesInstruction(*code, "lea 0x64(%rdi,%rsi,4), %rax");
</span><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), (1 + (2 << 2)) + 100);
</span><span class="cx"> }
</span><span class="lines">@@ -14151,7 +14148,7 @@
</span><span class="cx"> root->appendNew<ConstPtrValue>(proc, Origin(), 100));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> checkUsesInstruction(*code, "lea 0x64(%rdi,%rsi,4), %rax");
</span><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), (1 + (2 << 2)) + 100);
</span><span class="cx"> }
</span><span class="lines">@@ -14170,7 +14167,7 @@
</span><span class="cx"> root->appendNew<ConstPtrValue>(proc, Origin(), 100));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), (1 + 2) + 100);
</span><span class="cx"> checkDisassembly(
</span><span class="cx"> *code,
</span><span class="lines">@@ -14195,7 +14192,7 @@
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 2)));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> checkUsesInstruction(*code, "lea (%rdi,%rsi,4), %rax");
</span><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), 1 + (2 << 2));
</span><span class="cx"> }
</span><span class="lines">@@ -14214,7 +14211,7 @@
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0)));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), 1 + 2);
</span><span class="cx"> checkDisassembly(
</span><span class="cx"> *code,
</span><span class="lines">@@ -14239,7 +14236,7 @@
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 1)));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> checkUsesInstruction(*code, "lea (%rdi,%rsi,2), %rax");
</span><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), 1 + (2 << 1));
</span><span class="cx"> }
</span><span class="lines">@@ -14258,7 +14255,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> checkUsesInstruction(*code, "lea (%rdi,%rsi,4), %rax");
</span><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), 1 + (2 << 2));
</span><span class="cx"> }
</span><span class="lines">@@ -14277,7 +14274,7 @@
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 3)));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> checkUsesInstruction(*code, "lea (%rdi,%rsi,8), %rax");
</span><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), 1 + (2 << 3));
</span><span class="cx"> }
</span><span class="lines">@@ -14296,7 +14293,7 @@
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 32)));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), 1 + (static_cast<intptr_t>(2) << static_cast<intptr_t>(32)));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -14314,7 +14311,7 @@
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 64)));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), 1 + 2);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -14332,7 +14329,7 @@
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 65)));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<intptr_t>(*code, 1, 2), 1 + (2 << 1));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -14396,7 +14393,7 @@
</span><span class="cx"> proc, Shl, Origin(),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR1),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 2)))));
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isX86())
</span><span class="cx"> checkUsesInstruction(*code, "(%rdi,%rsi,4)");
</span><span class="cx"> int32_t value = 12341234;
</span><span class="lines">@@ -14420,7 +14417,7 @@
</span><span class="cx"> proc, Shl, Origin(),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR1),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 32)))));
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> int32_t value = 12341234;
</span><span class="cx"> char* ptr = bitwise_cast<char*>(&value);
</span><span class="cx"> for (unsigned i = 0; i < 10; ++i)
</span><span class="lines">@@ -14437,7 +14434,7 @@
</span><span class="cx"> root->appendNew<ConstPtrValue>(proc, Origin(), 0x123423453456llu + 35));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> bool found = false;
</span><span class="cx"> for (Air::BasicBlock* block : proc.code()) {
</span><span class="cx"> for (Air::Inst& inst : *block) {
</span><span class="lines">@@ -14493,7 +14490,7 @@
</span><span class="cx">
</span><span class="cx"> done->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14524,7 +14521,7 @@
</span><span class="cx">
</span><span class="cx"> done->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14558,7 +14555,7 @@
</span><span class="cx">
</span><span class="cx"> fail->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14600,7 +14597,7 @@
</span><span class="cx">
</span><span class="cx"> fail->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14626,7 +14623,7 @@
</span><span class="cx"> root->appendIntConstant(proc, Origin(), type, 0xbeef),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14655,7 +14652,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0)),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14682,7 +14679,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0),
</span><span class="cx"> 42));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14746,7 +14743,7 @@
</span><span class="cx">
</span><span class="cx"> fail->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14787,7 +14784,7 @@
</span><span class="cx">
</span><span class="cx"> fail->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14828,7 +14825,7 @@
</span><span class="cx">
</span><span class="cx"> fail->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14853,7 +14850,7 @@
</span><span class="cx"> root->appendIntConstant(proc, Origin(), type, 0xbeef),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14885,7 +14882,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0)),
</span><span class="cx"> root->appendIntConstant(proc, Origin(), type, 42)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14916,7 +14913,7 @@
</span><span class="cx"> root->appendIntConstant(proc, Origin(), type, 42)),
</span><span class="cx"> root->appendNew<Const32Value>(proc, Origin(), 0)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 42;
</span><span class="cx"> value[1] = 13;
</span><span class="lines">@@ -14997,7 +14994,7 @@
</span><span class="cx"> root->appendIntConstant(proc, Origin(), type, 1),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 5;
</span><span class="cx"> value[1] = 100;
</span><span class="lines">@@ -15017,7 +15014,7 @@
</span><span class="cx"> root->appendIntConstant(proc, Origin(), type, 42),
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0)));
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 5;
</span><span class="cx"> value[1] = 100;
</span><span class="lines">@@ -15036,7 +15033,7 @@
</span><span class="cx"> root->appendNew<ArgumentRegValue>(proc, Origin(), GPRInfo::argumentGPR0));
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 5;
</span><span class="cx"> value[1] = 100;
</span><span class="lines">@@ -15056,7 +15053,7 @@
</span><span class="cx"> 0, HeapRange(42), HeapRange());
</span><span class="cx"> root->appendNew<Value>(proc, Return, Origin());
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> T value[2];
</span><span class="cx"> value[0] = 5;
</span><span class="cx"> value[1] = 100;
</span><span class="lines">@@ -15089,7 +15086,7 @@
</span><span class="cx"> values[0] = 42;
</span><span class="cx"> values[1] = 0xbeef;
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isARM64())
</span><span class="cx"> checkUsesInstruction(*code, "eor");
</span><span class="cx"> else if (isX86()) {
</span><span class="lines">@@ -15119,7 +15116,7 @@
</span><span class="cx"> values[0] = 42;
</span><span class="cx"> values[1] = 0xbeef;
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> if (isARM64())
</span><span class="cx"> checkUsesInstruction(*code, "eor");
</span><span class="cx"> else if (isX86()) {
</span><span class="lines">@@ -15154,7 +15151,7 @@
</span><span class="cx"> Value* result = root->appendNew<Const32Value>(proc, Origin(), 0x42);
</span><span class="cx"> root->appendNewControlValue(proc, Return, Origin(), result);
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> CHECK_EQ(invoke<int32_t>(*code, 1, 2 + offset), 0x42);
</span><span class="cx"> CHECK_EQ(invoke<int32_t>(*code, 3, 2 + offset), 42);
</span><span class="cx"> CHECK_EQ(invoke<int32_t>(*code, 2, 2 + offset), 42);
</span><span class="lines">@@ -15205,7 +15202,7 @@
</span><span class="cx"> incUpsilon->setPhi(indexPhi);
</span><span class="cx">
</span><span class="cx">
</span><del>- auto code = compile(proc);
</del><ins>+ auto code = compileProc(proc);
</ins><span class="cx"> invoke<void>(*code, loopCount, numToStore, values.data());
</span><span class="cx"> for (unsigned value : values)
</span><span class="cx"> CHECK_EQ(numToStore, value);
</span><span class="lines">@@ -15318,7 +15315,6 @@
</span><span class="cx"> void run(const char* filter)
</span><span class="cx"> {
</span><span class="cx"> JSC::initializeThreading();
</span><del>- vm = &VM::create(LargeHeap).leakRef();
</del><span class="cx">
</span><span class="cx"> Deque<RefPtr<SharedTask<void()>>> tasks;
</span><span class="cx">
</span><span class="lines">@@ -15999,7 +15995,7 @@
</span><span class="cx"> RUN(testTrunc((static_cast<int64_t>(1) << 40) + 42));
</span><span class="cx"> RUN(testAdd1(45));
</span><span class="cx"> RUN(testAdd1Ptr(51));
</span><del>- RUN(testAdd1Ptr(bitwise_cast<intptr_t>(vm)));
</del><ins>+ RUN(testAdd1Ptr(static_cast<intptr_t>(0xbaadbeef)));
</ins><span class="cx"> RUN(testNeg32(52));
</span><span class="cx"> RUN(testNegPtr(53));
</span><span class="cx"> RUN(testStoreAddLoad32(46));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePolymorphicAccesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/bytecode/PolymorphicAccess.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -514,7 +514,7 @@
</span><span class="cx"> callSiteIndexForExceptionHandling = state.callSiteIndexForExceptionHandling();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- LinkBuffer linkBuffer(vm, jit, codeBlock, JITCompilationCanFail);
</del><ins>+ LinkBuffer linkBuffer(jit, codeBlock, JITCompilationCanFail);
</ins><span class="cx"> if (linkBuffer.didFailToAllocate()) {
</span><span class="cx"> if (verbose)
</span><span class="cx"> dataLog("Did fail to allocate.\n");
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGJITCompilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/dfg/DFGJITCompiler.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -394,7 +394,7 @@
</span><span class="cx"> m_speculative->createOSREntries();
</span><span class="cx"> setEndOfCode();
</span><span class="cx">
</span><del>- auto linkBuffer = std::make_unique<LinkBuffer>(*vm(), *this, m_codeBlock, JITCompilationCanFail);
</del><ins>+ auto linkBuffer = std::make_unique<LinkBuffer>(*this, m_codeBlock, JITCompilationCanFail);
</ins><span class="cx"> if (linkBuffer->didFailToAllocate()) {
</span><span class="cx"> m_graph.m_plan.finalizer = std::make_unique<FailedFinalizer>(m_graph.m_plan);
</span><span class="cx"> return;
</span><span class="lines">@@ -488,7 +488,7 @@
</span><span class="cx"> setEndOfCode();
</span><span class="cx">
</span><span class="cx"> // === Link ===
</span><del>- auto linkBuffer = std::make_unique<LinkBuffer>(*vm(), *this, m_codeBlock, JITCompilationCanFail);
</del><ins>+ auto linkBuffer = std::make_unique<LinkBuffer>(*this, m_codeBlock, JITCompilationCanFail);
</ins><span class="cx"> if (linkBuffer->didFailToAllocate()) {
</span><span class="cx"> m_graph.m_plan.finalizer = std::make_unique<FailedFinalizer>(m_graph.m_plan);
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGLazyJSValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -229,7 +229,7 @@
</span><span class="cx">
</span><span class="cx"> jit.addLinkTask(
</span><span class="cx"> [codeBlock, label, thisValue] (LinkBuffer& linkBuffer) {
</span><del>- JSValue realValue = thisValue.getValue(linkBuffer.vm());
</del><ins>+ JSValue realValue = thisValue.getValue(*codeBlock->vm());
</ins><span class="cx"> RELEASE_ASSERT(realValue.isCell());
</span><span class="cx">
</span><span class="cx"> codeBlock->addConstant(realValue);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGOSRExitCompilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/dfg/DFGOSRExitCompiler.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx">
</span><span class="cx"> exitCompiler.compileExit(*vm, exit, operands, recovery);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, codeBlock);
</del><ins>+ LinkBuffer patchBuffer(jit, codeBlock);
</ins><span class="cx"> exit.m_code = FINALIZE_CODE_IF(
</span><span class="cx"> shouldDumpDisassembly() || Options::verboseOSR(),
</span><span class="cx"> patchBuffer,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -1012,7 +1012,7 @@
</span><span class="cx"> m_jit.addPtr(TrustedImm32(requiredBytes), JITCompiler::stackPointerRegister);
</span><span class="cx"> m_jit.load32(JITCompiler::calleeFrameSlot(CallFrameSlot::callee).withOffset(PayloadOffset), GPRInfo::regT0);
</span><span class="cx"> m_jit.load32(JITCompiler::calleeFrameSlot(CallFrameSlot::callee).withOffset(TagOffset), GPRInfo::regT1);
</span><del>- m_jit.emitDumbVirtualCall(info);
</del><ins>+ m_jit.emitDumbVirtualCall(*m_jit.vm(), info);
</ins><span class="cx">
</span><span class="cx"> done.link(&m_jit);
</span><span class="cx"> setResultAndResetStack();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -966,7 +966,7 @@
</span><span class="cx"> // This is the part where we meant to make a normal call. Oops.
</span><span class="cx"> m_jit.addPtr(TrustedImm32(requiredBytes), JITCompiler::stackPointerRegister);
</span><span class="cx"> m_jit.load64(JITCompiler::calleeFrameSlot(CallFrameSlot::callee), GPRInfo::regT0);
</span><del>- m_jit.emitDumbVirtualCall(callLinkInfo);
</del><ins>+ m_jit.emitDumbVirtualCall(*m_jit.vm(), callLinkInfo);
</ins><span class="cx">
</span><span class="cx"> done.link(&m_jit);
</span><span class="cx"> setResultAndResetStack();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGThunkscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGThunks.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGThunks.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/dfg/DFGThunks.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx">
</span><span class="cx"> jit.jump(MacroAssembler::AbsoluteAddress(&vm->osrExitJumpDestination));
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx">
</span><span class="cx"> patchBuffer.link(functionCall, compileOSRExit);
</span><span class="cx">
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx">
</span><span class="cx"> jit.jump(GPRInfo::regT1);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("DFG OSR entry thunk"));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLCompilecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLCompile.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLCompile.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLCompile.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -141,8 +141,7 @@
</span><span class="cx"> linkBuffer.link(call, FunctionPtr(lookupExceptionHandler));
</span><span class="cx"> });
</span><span class="cx">
</span><del>- state.finalizer->b3CodeLinkBuffer = std::make_unique<LinkBuffer>(
- vm, jit, codeBlock, JITCompilationCanFail);
</del><ins>+ state.finalizer->b3CodeLinkBuffer = std::make_unique<LinkBuffer>(jit, codeBlock, JITCompilationCanFail);
</ins><span class="cx"> if (state.finalizer->b3CodeLinkBuffer->didFailToAllocate()) {
</span><span class="cx"> state.allocationFailed = true;
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLazySlowPathcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLazySlowPath.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLazySlowPath.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLLazySlowPath.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -55,8 +55,6 @@
</span><span class="cx"> {
</span><span class="cx"> RELEASE_ASSERT(!m_stub);
</span><span class="cx">
</span><del>- VM& vm = *codeBlock->vm();
-
</del><span class="cx"> CCallHelpers jit(codeBlock);
</span><span class="cx"> GenerationParams params;
</span><span class="cx"> CCallHelpers::JumpList exceptionJumps;
</span><span class="lines">@@ -65,7 +63,7 @@
</span><span class="cx">
</span><span class="cx"> m_generator->run(jit, params);
</span><span class="cx">
</span><del>- LinkBuffer linkBuffer(vm, jit, codeBlock, JITCompilationMustSucceed);
</del><ins>+ LinkBuffer linkBuffer(jit, codeBlock, JITCompilationMustSucceed);
</ins><span class="cx"> linkBuffer.link(params.doneJumps, m_done);
</span><span class="cx"> if (m_exceptionTarget)
</span><span class="cx"> linkBuffer.link(exceptionJumps, m_exceptionTarget);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLinkcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLink.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLink.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLLink.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -162,7 +162,7 @@
</span><span class="cx"> jit.emitFunctionEpilogue();
</span><span class="cx"> mainPathJumps.append(jit.jump());
</span><span class="cx">
</span><del>- linkBuffer = std::make_unique<LinkBuffer>(vm, jit, codeBlock, JITCompilationCanFail);
</del><ins>+ linkBuffer = std::make_unique<LinkBuffer>(jit, codeBlock, JITCompilationCanFail);
</ins><span class="cx"> if (linkBuffer->didFailToAllocate()) {
</span><span class="cx"> state.allocationFailed = true;
</span><span class="cx"> return;
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx"> jit.emitFunctionEpilogue();
</span><span class="cx"> CCallHelpers::Jump mainPathJump = jit.jump();
</span><span class="cx">
</span><del>- linkBuffer = std::make_unique<LinkBuffer>(vm, jit, codeBlock, JITCompilationCanFail);
</del><ins>+ linkBuffer = std::make_unique<LinkBuffer>(jit, codeBlock, JITCompilationCanFail);
</ins><span class="cx"> if (linkBuffer->didFailToAllocate()) {
</span><span class="cx"> state.allocationFailed = true;
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -5981,6 +5981,7 @@
</span><span class="cx">
</span><span class="cx"> CodeOrigin codeOrigin = codeOriginDescriptionOfCallSite();
</span><span class="cx"> State* state = &m_ftlState;
</span><ins>+ VM* vm = &this->vm();
</ins><span class="cx"> patchpoint->setGenerator(
</span><span class="cx"> [=] (CCallHelpers& jit, const StackmapGenerationParams& params) {
</span><span class="cx"> AllowMacroScratchRegisterUsage allowScratch(jit);
</span><span class="lines">@@ -6019,7 +6020,7 @@
</span><span class="cx"> jit.addLinkTask(
</span><span class="cx"> [=] (LinkBuffer& linkBuffer) {
</span><span class="cx"> MacroAssemblerCodePtr linkCall =
</span><del>- linkBuffer.vm().getCTIStub(linkCallThunkGenerator).code();
</del><ins>+ vm->getCTIStub(linkCallThunkGenerator).code();
</ins><span class="cx"> linkBuffer.link(slowCall, FunctionPtr(linkCall.executableAddress()));
</span><span class="cx">
</span><span class="cx"> callLinkInfo->setCallLocations(
</span><span class="lines">@@ -6278,6 +6279,7 @@
</span><span class="cx">
</span><span class="cx"> CodeOrigin codeOrigin = codeOriginDescriptionOfCallSite();
</span><span class="cx"> State* state = &m_ftlState;
</span><ins>+ VM* vm = &this->vm();
</ins><span class="cx"> patchpoint->setGenerator(
</span><span class="cx"> [=] (CCallHelpers& jit, const StackmapGenerationParams& params) {
</span><span class="cx"> AllowMacroScratchRegisterUsage allowScratch(jit);
</span><span class="lines">@@ -6329,7 +6331,7 @@
</span><span class="cx"> jit.addLinkTask(
</span><span class="cx"> [=] (LinkBuffer& linkBuffer) {
</span><span class="cx"> MacroAssemblerCodePtr linkCall =
</span><del>- linkBuffer.vm().getCTIStub(linkCallThunkGenerator).code();
</del><ins>+ vm->getCTIStub(linkCallThunkGenerator).code();
</ins><span class="cx"> linkBuffer.link(slowCall, FunctionPtr(linkCall.executableAddress()));
</span><span class="cx">
</span><span class="cx"> callLinkInfo->setCallLocations(
</span><span class="lines">@@ -6403,6 +6405,7 @@
</span><span class="cx">
</span><span class="cx"> CodeOrigin codeOrigin = codeOriginDescriptionOfCallSite();
</span><span class="cx"> State* state = &m_ftlState;
</span><ins>+ VM* vm = &this->vm();
</ins><span class="cx"> patchpoint->setGenerator(
</span><span class="cx"> [=] (CCallHelpers& jit, const StackmapGenerationParams& params) {
</span><span class="cx"> AllowMacroScratchRegisterUsage allowScratch(jit);
</span><span class="lines">@@ -6456,7 +6459,7 @@
</span><span class="cx"> auto callWithExceptionCheck = [&] (void* callee) {
</span><span class="cx"> jit.move(CCallHelpers::TrustedImmPtr(callee), GPRInfo::nonPreservedNonArgumentGPR);
</span><span class="cx"> jit.call(GPRInfo::nonPreservedNonArgumentGPR);
</span><del>- exceptions->append(jit.emitExceptionCheck(state->vm(), AssemblyHelpers::NormalExceptionCheck, AssemblyHelpers::FarJumpWidth));
</del><ins>+ exceptions->append(jit.emitExceptionCheck(*vm, AssemblyHelpers::NormalExceptionCheck, AssemblyHelpers::FarJumpWidth));
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> CCallHelpers::JumpList slowCase;
</span><span class="lines">@@ -6582,7 +6585,7 @@
</span><span class="cx"> jit.addLinkTask(
</span><span class="cx"> [=] (LinkBuffer& linkBuffer) {
</span><span class="cx"> MacroAssemblerCodePtr linkCall =
</span><del>- linkBuffer.vm().getCTIStub(linkCallThunkGenerator).code();
</del><ins>+ vm->getCTIStub(linkCallThunkGenerator).code();
</ins><span class="cx"> linkBuffer.link(slowCall, FunctionPtr(linkCall.executableAddress()));
</span><span class="cx">
</span><span class="cx"> callLinkInfo->setCallLocations(
</span><span class="lines">@@ -6672,6 +6675,7 @@
</span><span class="cx">
</span><span class="cx"> CodeOrigin codeOrigin = codeOriginDescriptionOfCallSite();
</span><span class="cx"> State* state = &m_ftlState;
</span><ins>+ VM* vm = &this->vm();
</ins><span class="cx"> patchpoint->setGenerator(
</span><span class="cx"> [=] (CCallHelpers& jit, const StackmapGenerationParams& params) {
</span><span class="cx"> AllowMacroScratchRegisterUsage allowScratch(jit);
</span><span class="lines">@@ -6763,7 +6767,7 @@
</span><span class="cx"> auto callWithExceptionCheck = [&] (void* callee) {
</span><span class="cx"> jit.move(CCallHelpers::TrustedImmPtr(callee), GPRInfo::nonPreservedNonArgumentGPR);
</span><span class="cx"> jit.call(GPRInfo::nonPreservedNonArgumentGPR);
</span><del>- exceptions->append(jit.emitExceptionCheck(state->vm(), AssemblyHelpers::NormalExceptionCheck, AssemblyHelpers::FarJumpWidth));
</del><ins>+ exceptions->append(jit.emitExceptionCheck(*vm, AssemblyHelpers::NormalExceptionCheck, AssemblyHelpers::FarJumpWidth));
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> unsigned originalStackHeight = params.proc().frameSize();
</span><span class="lines">@@ -6779,7 +6783,7 @@
</span><span class="cx"> inlineCallFrame = node->origin.semantic.inlineCallFrame;
</span><span class="cx">
</span><span class="cx"> // emitSetupVarargsFrameFastCase modifies the stack pointer if it succeeds.
</span><del>- emitSetupVarargsFrameFastCase(state->vm(), jit, scratchGPR2, scratchGPR1, scratchGPR2, scratchGPR3, inlineCallFrame, data->firstVarArgOffset, slowCase);
</del><ins>+ emitSetupVarargsFrameFastCase(*vm, jit, scratchGPR2, scratchGPR1, scratchGPR2, scratchGPR3, inlineCallFrame, data->firstVarArgOffset, slowCase);
</ins><span class="cx">
</span><span class="cx"> CCallHelpers::Jump done = jit.jump();
</span><span class="cx"> slowCase.link(&jit);
</span><span class="lines">@@ -6861,7 +6865,7 @@
</span><span class="cx"> jit.addLinkTask(
</span><span class="cx"> [=] (LinkBuffer& linkBuffer) {
</span><span class="cx"> MacroAssemblerCodePtr linkCall =
</span><del>- linkBuffer.vm().getCTIStub(linkCallThunkGenerator).code();
</del><ins>+ vm->getCTIStub(linkCallThunkGenerator).code();
</ins><span class="cx"> linkBuffer.link(slowCall, FunctionPtr(linkCall.executableAddress()));
</span><span class="cx">
</span><span class="cx"> callLinkInfo->setCallLocations(
</span><span class="lines">@@ -6922,8 +6926,9 @@
</span><span class="cx">
</span><span class="cx"> CodeOrigin codeOrigin = codeOriginDescriptionOfCallSite();
</span><span class="cx"> State* state = &m_ftlState;
</span><ins>+ VM& vm = this->vm();
</ins><span class="cx"> patchpoint->setGenerator(
</span><del>- [=] (CCallHelpers& jit, const StackmapGenerationParams& params) {
</del><ins>+ [=, &vm] (CCallHelpers& jit, const StackmapGenerationParams& params) {
</ins><span class="cx"> AllowMacroScratchRegisterUsage allowScratch(jit);
</span><span class="cx"> CallSiteIndex callSiteIndex = state->jitCode->common.addUniqueCallSiteIndex(codeOrigin);
</span><span class="cx">
</span><span class="lines">@@ -6956,7 +6961,7 @@
</span><span class="cx">
</span><span class="cx"> jit.addPtr(CCallHelpers::TrustedImm32(requiredBytes), CCallHelpers::stackPointerRegister);
</span><span class="cx"> jit.load64(CCallHelpers::calleeFrameSlot(CallFrameSlot::callee), GPRInfo::regT0);
</span><del>- jit.emitDumbVirtualCall(callLinkInfo);
</del><ins>+ jit.emitDumbVirtualCall(vm, callLinkInfo);
</ins><span class="cx">
</span><span class="cx"> done.link(&jit);
</span><span class="cx"> jit.addPtr(
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLOSRExitCompilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLOSRExitCompiler.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -491,7 +491,7 @@
</span><span class="cx"> reifyInlinedCallFrames(jit, exit);
</span><span class="cx"> adjustAndJumpToTarget(*vm, jit, exit);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, codeBlock);
</del><ins>+ LinkBuffer patchBuffer(jit, codeBlock);
</ins><span class="cx"> exit.m_code = FINALIZE_CODE_IF(
</span><span class="cx"> shouldDumpDisassembly() || Options::verboseOSR() || Options::verboseFTLOSRExit(),
</span><span class="cx"> patchBuffer,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLOSRExitHandlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLOSRExitHandle.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -44,13 +44,14 @@
</span><span class="cx"> jit.pushToSaveImmediateWithoutTouchingRegisters(CCallHelpers::TrustedImm32(index));
</span><span class="cx"> CCallHelpers::PatchableJump jump = jit.patchableJump();
</span><span class="cx"> RefPtr<OSRExitHandle> self = this;
</span><ins>+ VM& vm = state.vm();
</ins><span class="cx"> jit.addLinkTask(
</span><del>- [self, jump, myLabel, compilation] (LinkBuffer& linkBuffer) {
</del><ins>+ [self, jump, myLabel, compilation, &vm] (LinkBuffer& linkBuffer) {
</ins><span class="cx"> self->exit.m_patchableJump = CodeLocationJump(linkBuffer.locationOf(jump));
</span><span class="cx">
</span><span class="cx"> linkBuffer.link(
</span><span class="cx"> jump.m_jump,
</span><del>- CodeLocationLabel(linkBuffer.vm().getCTIStub(osrExitGenerationThunkGenerator).code()));
</del><ins>+ CodeLocationLabel(vm.getCTIStub(osrExitGenerationThunkGenerator).code()));
</ins><span class="cx"> if (compilation)
</span><span class="cx"> compilation->addOSRExitSite({ linkBuffer.locationOf(myLabel).executableAddress() });
</span><span class="cx"> });
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLSlowPathCallcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -118,16 +118,14 @@
</span><span class="cx"> return SlowPathCallKey(m_thunkSaveSet, callTarget, m_argumentRegisters, m_offset);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-SlowPathCall SlowPathCallContext::makeCall(void* callTarget)
</del><ins>+SlowPathCall SlowPathCallContext::makeCall(VM& vm, void* callTarget)
</ins><span class="cx"> {
</span><span class="cx"> SlowPathCall result = SlowPathCall(m_jit.call(), keyWithTarget(callTarget));
</span><span class="cx">
</span><span class="cx"> m_jit.addLinkTask(
</span><del>- [result] (LinkBuffer& linkBuffer) {
- VM& vm = linkBuffer.vm();
-
</del><ins>+ [result, &vm] (LinkBuffer& linkBuffer) {
</ins><span class="cx"> MacroAssemblerCodeRef thunk =
</span><del>- vm.ftlThunks->getSlowPathCallThunk(vm, result.key());
</del><ins>+ vm.ftlThunks->getSlowPathCallThunk(result.key());
</ins><span class="cx">
</span><span class="cx"> linkBuffer.link(result.call(), CodeLocationLabel(thunk.code()));
</span><span class="cx"> });
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLSlowPathCallh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLSlowPathCall.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx">
</span><span class="cx"> // NOTE: The call that this returns is already going to be linked by the JIT using addLinkTask(),
</span><span class="cx"> // so there is no need for you to link it yourself.
</span><del>- SlowPathCall makeCall(void* callTarget);
</del><ins>+ SlowPathCall makeCall(VM&, void* callTarget);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> SlowPathCallKey keyWithTarget(void* callTarget) const;
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> {
</span><span class="cx"> SlowPathCallContext context(usedRegisters, jit, sizeof...(ArgumentTypes) + 1, resultGPR);
</span><span class="cx"> jit.setupArgumentsWithExecState(arguments...);
</span><del>- call = context.makeCall(function.value());
</del><ins>+ call = context.makeCall(vm, function.value());
</ins><span class="cx"> }
</span><span class="cx"> if (exceptionTarget)
</span><span class="cx"> exceptionTarget->append(jit.emitExceptionCheck(vm));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLStateh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLState.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLState.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLState.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> ~State();
</span><span class="cx">
</span><span class="cx"> VM& vm() { return graph.m_vm; }
</span><del>-
</del><ins>+
</ins><span class="cx"> // None of these things is owned by State. It is the responsibility of
</span><span class="cx"> // FTL phases to properly manage the lifecycle of the module and function.
</span><span class="cx"> DFG::Graph& graph;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLThunkscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLThunks.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLThunks.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLThunks.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -117,7 +117,7 @@
</span><span class="cx">
</span><span class="cx"> jit.ret();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> patchBuffer.link(functionCall, generationFunction);
</span><span class="cx"> return FINALIZE_CODE(patchBuffer, ("%s", name));
</span><span class="cx"> }
</span><span class="lines">@@ -164,7 +164,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-MacroAssemblerCodeRef slowPathCallThunkGenerator(VM& vm, const SlowPathCallKey& key)
</del><ins>+MacroAssemblerCodeRef slowPathCallThunkGenerator(const SlowPathCallKey& key)
</ins><span class="cx"> {
</span><span class="cx"> AssemblyHelpers jit(nullptr);
</span><span class="cx">
</span><span class="lines">@@ -222,7 +222,7 @@
</span><span class="cx">
</span><span class="cx"> jit.ret();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> patchBuffer.link(call, FunctionPtr(key.callTarget()));
</span><span class="cx"> return FINALIZE_CODE(patchBuffer, ("FTL slow path call thunk for %s", toCString(key).data()));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLThunksh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLThunks.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLThunks.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/ftl/FTLThunks.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">
</span><span class="cx"> MacroAssemblerCodeRef osrExitGenerationThunkGenerator(VM*);
</span><span class="cx"> MacroAssemblerCodeRef lazySlowPathGenerationThunkGenerator(VM*);
</span><del>-MacroAssemblerCodeRef slowPathCallThunkGenerator(VM&, const SlowPathCallKey&);
</del><ins>+MacroAssemblerCodeRef slowPathCallThunkGenerator(const SlowPathCallKey&);
</ins><span class="cx">
</span><span class="cx"> template<typename KeyTypeArgument>
</span><span class="cx"> struct ThunkMap {
</span><span class="lines">@@ -54,13 +54,13 @@
</span><span class="cx">
</span><span class="cx"> template<typename MapType, typename GeneratorType>
</span><span class="cx"> MacroAssemblerCodeRef generateIfNecessary(
</span><del>- VM& vm, MapType& map, const typename MapType::KeyType& key, GeneratorType generator)
</del><ins>+ MapType& map, const typename MapType::KeyType& key, GeneratorType generator)
</ins><span class="cx"> {
</span><span class="cx"> typename MapType::ToThunkMap::iterator iter = map.m_toThunk.find(key);
</span><span class="cx"> if (iter != map.m_toThunk.end())
</span><span class="cx"> return iter->value;
</span><span class="cx">
</span><del>- MacroAssemblerCodeRef result = generator(vm, key);
</del><ins>+ MacroAssemblerCodeRef result = generator(key);
</ins><span class="cx"> map.m_toThunk.add(key, result);
</span><span class="cx"> map.m_fromThunk.add(result.code(), key);
</span><span class="cx"> return result;
</span><span class="lines">@@ -76,10 +76,10 @@
</span><span class="cx">
</span><span class="cx"> class Thunks {
</span><span class="cx"> public:
</span><del>- MacroAssemblerCodeRef getSlowPathCallThunk(VM& vm, const SlowPathCallKey& key)
</del><ins>+ MacroAssemblerCodeRef getSlowPathCallThunk(const SlowPathCallKey& key)
</ins><span class="cx"> {
</span><span class="cx"> return generateIfNecessary(
</span><del>- vm, m_slowPathCallThunks, key, slowPathCallThunkGenerator);
</del><ins>+ m_slowPathCallThunks, key, slowPathCallThunkGenerator);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> SlowPathCallKey keyForSlowPathCallThunk(MacroAssemblerCodePtr ptr)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitAssemblyHelperscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/AssemblyHelpers.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/AssemblyHelpers.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/AssemblyHelpers.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -627,14 +627,14 @@
</span><span class="cx"> #endif
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void AssemblyHelpers::emitDumbVirtualCall(CallLinkInfo* info)
</del><ins>+void AssemblyHelpers::emitDumbVirtualCall(VM& vm, CallLinkInfo* info)
</ins><span class="cx"> {
</span><span class="cx"> move(TrustedImmPtr(info), GPRInfo::regT2);
</span><span class="cx"> Call call = nearCall();
</span><span class="cx"> addLinkTask(
</span><del>- [=] (LinkBuffer& linkBuffer) {
- MacroAssemblerCodeRef virtualThunk = virtualThunkFor(&linkBuffer.vm(), *info);
- info->setSlowStub(createJITStubRoutine(virtualThunk, linkBuffer.vm(), nullptr, true));
</del><ins>+ [=, &vm] (LinkBuffer& linkBuffer) {
+ MacroAssemblerCodeRef virtualThunk = virtualThunkFor(&vm, *info);
+ info->setSlowStub(createJITStubRoutine(virtualThunk, vm, nullptr, true));
</ins><span class="cx"> linkBuffer.link(call, CodeLocationLabel(virtualThunk.code()));
</span><span class="cx"> });
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitAssemblyHelpersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/AssemblyHelpers.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -1409,7 +1409,7 @@
</span><span class="cx"> functor(TypeofType::Undefined, true);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- void emitDumbVirtualCall(CallLinkInfo*);
</del><ins>+ void emitDumbVirtualCall(VM&, CallLinkInfo*);
</ins><span class="cx">
</span><span class="cx"> Vector<BytecodeAndMachineOffset>& decodedCodeMapFor(CodeBlock*);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitExecutableAllocatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/ExecutableAllocator.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/ExecutableAllocator.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/ExecutableAllocator.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -311,6 +311,7 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> static FixedVMPoolExecutableAllocator* allocator;
</span><ins>+static ExecutableAllocator* executableAllocator;
</ins><span class="cx">
</span><span class="cx"> void ExecutableAllocator::initializeAllocator()
</span><span class="cx"> {
</span><span class="lines">@@ -317,13 +318,22 @@
</span><span class="cx"> ASSERT(!allocator);
</span><span class="cx"> allocator = new FixedVMPoolExecutableAllocator();
</span><span class="cx"> CodeProfiling::notifyAllocator(allocator);
</span><ins>+
+ executableAllocator = new ExecutableAllocator;
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-ExecutableAllocator::ExecutableAllocator(VM&)
</del><ins>+ExecutableAllocator& ExecutableAllocator::singleton()
</ins><span class="cx"> {
</span><span class="cx"> ASSERT(allocator);
</span><ins>+ ASSERT(executableAllocator);
+ return *executableAllocator;
</ins><span class="cx"> }
</span><span class="cx">
</span><ins>+ExecutableAllocator::ExecutableAllocator()
+{
+ ASSERT(allocator);
+}
+
</ins><span class="cx"> ExecutableAllocator::~ExecutableAllocator()
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -362,7 +372,7 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-RefPtr<ExecutableMemoryHandle> ExecutableAllocator::allocate(VM&, size_t sizeInBytes, void* ownerUID, JITCompilationEffort effort)
</del><ins>+RefPtr<ExecutableMemoryHandle> ExecutableAllocator::allocate(size_t sizeInBytes, void* ownerUID, JITCompilationEffort effort)
</ins><span class="cx"> {
</span><span class="cx"> if (Options::logExecutableAllocation()) {
</span><span class="cx"> MetaAllocator::Statistics stats = allocator->currentStatistics();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitExecutableAllocatorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/ExecutableAllocator.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/ExecutableAllocator.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/ExecutableAllocator.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -55,8 +55,6 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><del>-class VM;
-
</del><span class="cx"> static const unsigned jitAllocationGranule = 32;
</span><span class="cx">
</span><span class="cx"> typedef WTF::MetaAllocatorHandle ExecutableMemoryHandle;
</span><span class="lines">@@ -117,9 +115,7 @@
</span><span class="cx"> enum ProtectionSetting { Writable, Executable };
</span><span class="cx">
</span><span class="cx"> public:
</span><del>- ExecutableAllocator(VM&);
- ~ExecutableAllocator();
-
</del><ins>+ static ExecutableAllocator& singleton();
</ins><span class="cx"> static void initializeAllocator();
</span><span class="cx">
</span><span class="cx"> bool isValid() const;
</span><span class="lines">@@ -134,7 +130,7 @@
</span><span class="cx"> static void dumpProfile() { }
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- RefPtr<ExecutableMemoryHandle> allocate(VM&, size_t sizeInBytes, void* ownerUID, JITCompilationEffort);
</del><ins>+ RefPtr<ExecutableMemoryHandle> allocate(size_t sizeInBytes, void* ownerUID, JITCompilationEffort);
</ins><span class="cx">
</span><span class="cx"> bool isValidExecutableMemory(const AbstractLocker&, void* address);
</span><span class="cx">
</span><span class="lines">@@ -141,6 +137,10 @@
</span><span class="cx"> static size_t committedByteCount();
</span><span class="cx">
</span><span class="cx"> Lock& getLock() const;
</span><ins>+private:
+
+ ExecutableAllocator();
+ ~ExecutableAllocator();
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> #endif // ENABLE(JIT) && ENABLE(ASSEMBLER)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JIT.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JIT.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JIT.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -716,7 +716,7 @@
</span><span class="cx"> m_disassembler->setEndOfCode(label());
</span><span class="cx"> m_pcToCodeOriginMapBuilder.appendItem(label(), PCToCodeOriginMapBuilder::defaultCodeOrigin());
</span><span class="cx">
</span><del>- m_linkBuffer = std::unique_ptr<LinkBuffer>(new LinkBuffer(*m_vm, *this, m_codeBlock, effort));
</del><ins>+ m_linkBuffer = std::unique_ptr<LinkBuffer>(new LinkBuffer(*this, m_codeBlock, effort));
</ins><span class="cx">
</span><span class="cx"> double after = 0;
</span><span class="cx"> if (UNLIKELY(computeCompileTimes())) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITCallcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITCall.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITCall.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITCall.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> addPtr(TrustedImm32(registerOffset * sizeof(Register) + sizeof(CallerFrameAndPC)), callFrameRegister, stackPointerRegister);
</span><span class="cx">
</span><span class="cx"> load64(Address(stackPointerRegister, sizeof(Register) * CallFrameSlot::callee - sizeof(CallerFrameAndPC)), regT0);
</span><del>- emitDumbVirtualCall(info);
</del><ins>+ emitDumbVirtualCall(*vm(), info);
</ins><span class="cx"> addPtr(TrustedImm32(stackPointerOffsetFor(m_codeBlock) * sizeof(Register)), callFrameRegister, stackPointerRegister);
</span><span class="cx"> checkStackPointerAlignment();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITMathICh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITMathIC.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITMathIC.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITMathIC.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- void generateOutOfLine(VM& vm, CodeBlock* codeBlock, FunctionPtr callReplacement)
</del><ins>+ void generateOutOfLine(CodeBlock* codeBlock, FunctionPtr callReplacement)
</ins><span class="cx"> {
</span><span class="cx"> auto linkJumpToOutOfLineSnippet = [&] () {
</span><span class="cx"> CCallHelpers jit(codeBlock);
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx"> if (generatedInline) {
</span><span class="cx"> auto jumpToDone = jit.jump();
</span><span class="cx">
</span><del>- LinkBuffer linkBuffer(vm, jit, codeBlock, JITCompilationCanFail);
</del><ins>+ LinkBuffer linkBuffer(jit, codeBlock, JITCompilationCanFail);
</ins><span class="cx"> if (!linkBuffer.didFailToAllocate()) {
</span><span class="cx"> linkBuffer.link(generationState.slowPathJumps, slowPathStartLocation());
</span><span class="cx"> linkBuffer.link(jumpToDone, doneLocation());
</span><span class="lines">@@ -200,7 +200,7 @@
</span><span class="cx"> return;
</span><span class="cx"> endJumpList.append(jit.jump());
</span><span class="cx">
</span><del>- LinkBuffer linkBuffer(vm, jit, codeBlock, JITCompilationCanFail);
</del><ins>+ LinkBuffer linkBuffer(jit, codeBlock, JITCompilationCanFail);
</ins><span class="cx"> if (linkBuffer.didFailToAllocate())
</span><span class="cx"> return;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -1119,7 +1119,7 @@
</span><span class="cx"> move(TrustedImm64(JSValue::encode(jsBoolean(true))), regT0);
</span><span class="cx"> Jump done = jump();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*m_vm, *this, m_codeBlock);
</del><ins>+ LinkBuffer patchBuffer(*this, m_codeBlock);
</ins><span class="cx">
</span><span class="cx"> patchBuffer.link(badType, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span><span class="cx"> patchBuffer.link(slowCases, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOpcodes32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITOpcodes32_64.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx"> jumpToExceptionHandler(*vm);
</span><span class="cx">
</span><span class="cx"> // All trampolines constructed! copy the code, link up calls, and set the pointers on the Machine object.
</span><del>- LinkBuffer patchBuffer(*vm, *this, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(*this, GLOBAL_THUNK_ID);
</ins><span class="cx">
</span><span class="cx"> patchBuffer.link(nativeCall, FunctionPtr(func));
</span><span class="cx"> return FINALIZE_CODE(patchBuffer, ("JIT CTI native call"));
</span><span class="lines">@@ -1061,7 +1061,7 @@
</span><span class="cx"> move(TrustedImm32(1), regT0);
</span><span class="cx"> Jump done = jump();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*m_vm, *this, m_codeBlock);
</del><ins>+ LinkBuffer patchBuffer(*this, m_codeBlock);
</ins><span class="cx">
</span><span class="cx"> patchBuffer.link(badType, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span><span class="cx"> patchBuffer.link(slowCases, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -2375,7 +2375,7 @@
</span><span class="cx"> ASSERT(arithProfile);
</span><span class="cx"> arithProfile->observeLHSAndRHS(op1, op2);
</span><span class="cx"> auto nonOptimizeVariant = operationValueAddProfiledNoOptimize;
</span><del>- addIC->generateOutOfLine(*vm, exec->codeBlock(), nonOptimizeVariant);
</del><ins>+ addIC->generateOutOfLine(exec->codeBlock(), nonOptimizeVariant);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MATH_IC_STATS)
</span><span class="cx"> exec->codeBlock()->dumpMathICStats();
</span><span class="lines">@@ -2408,7 +2408,7 @@
</span><span class="cx"> auto nonOptimizeVariant = operationValueAddNoOptimize;
</span><span class="cx"> if (ArithProfile* arithProfile = addIC->arithProfile())
</span><span class="cx"> arithProfile->observeLHSAndRHS(op1, op2);
</span><del>- addIC->generateOutOfLine(*vm, exec->codeBlock(), nonOptimizeVariant);
</del><ins>+ addIC->generateOutOfLine(exec->codeBlock(), nonOptimizeVariant);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MATH_IC_STATS)
</span><span class="cx"> exec->codeBlock()->dumpMathICStats();
</span><span class="lines">@@ -2485,7 +2485,7 @@
</span><span class="cx"> auto nonOptimizeVariant = operationValueMulNoOptimize;
</span><span class="cx"> if (ArithProfile* arithProfile = mulIC->arithProfile())
</span><span class="cx"> arithProfile->observeLHSAndRHS(JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
</span><del>- mulIC->generateOutOfLine(*vm, exec->codeBlock(), nonOptimizeVariant);
</del><ins>+ mulIC->generateOutOfLine(exec->codeBlock(), nonOptimizeVariant);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MATH_IC_STATS)
</span><span class="cx"> exec->codeBlock()->dumpMathICStats();
</span><span class="lines">@@ -2512,7 +2512,7 @@
</span><span class="cx"> ASSERT(arithProfile);
</span><span class="cx"> arithProfile->observeLHSAndRHS(JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
</span><span class="cx"> auto nonOptimizeVariant = operationValueMulProfiledNoOptimize;
</span><del>- mulIC->generateOutOfLine(*vm, exec->codeBlock(), nonOptimizeVariant);
</del><ins>+ mulIC->generateOutOfLine(exec->codeBlock(), nonOptimizeVariant);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MATH_IC_STATS)
</span><span class="cx"> exec->codeBlock()->dumpMathICStats();
</span><span class="lines">@@ -2583,7 +2583,7 @@
</span><span class="cx"> ArithProfile* arithProfile = negIC->arithProfile();
</span><span class="cx"> ASSERT(arithProfile);
</span><span class="cx"> arithProfile->observeLHS(operand);
</span><del>- negIC->generateOutOfLine(vm, exec->codeBlock(), operationArithNegateProfiled);
</del><ins>+ negIC->generateOutOfLine(exec->codeBlock(), operationArithNegateProfiled);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MATH_IC_STATS)
</span><span class="cx"> exec->codeBlock()->dumpMathICStats();
</span><span class="lines">@@ -2607,7 +2607,7 @@
</span><span class="cx">
</span><span class="cx"> if (ArithProfile* arithProfile = negIC->arithProfile())
</span><span class="cx"> arithProfile->observeLHS(operand);
</span><del>- negIC->generateOutOfLine(vm, exec->codeBlock(), operationArithNegate);
</del><ins>+ negIC->generateOutOfLine(exec->codeBlock(), operationArithNegate);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MATH_IC_STATS)
</span><span class="cx"> exec->codeBlock()->dumpMathICStats();
</span><span class="lines">@@ -2675,7 +2675,7 @@
</span><span class="cx"> auto nonOptimizeVariant = operationValueSubNoOptimize;
</span><span class="cx"> if (ArithProfile* arithProfile = subIC->arithProfile())
</span><span class="cx"> arithProfile->observeLHSAndRHS(JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
</span><del>- subIC->generateOutOfLine(*vm, exec->codeBlock(), nonOptimizeVariant);
</del><ins>+ subIC->generateOutOfLine(exec->codeBlock(), nonOptimizeVariant);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MATH_IC_STATS)
</span><span class="cx"> exec->codeBlock()->dumpMathICStats();
</span><span class="lines">@@ -2701,7 +2701,7 @@
</span><span class="cx"> ASSERT(arithProfile);
</span><span class="cx"> arithProfile->observeLHSAndRHS(JSValue::decode(encodedOp1), JSValue::decode(encodedOp2));
</span><span class="cx"> auto nonOptimizeVariant = operationValueSubProfiledNoOptimize;
</span><del>- subIC->generateOutOfLine(*vm, exec->codeBlock(), nonOptimizeVariant);
</del><ins>+ subIC->generateOutOfLine(exec->codeBlock(), nonOptimizeVariant);
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(MATH_IC_STATS)
</span><span class="cx"> exec->codeBlock()->dumpMathICStats();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -60,6 +60,7 @@
</span><span class="cx"> class StructureStubInfo;
</span><span class="cx"> class Symbol;
</span><span class="cx"> class SymbolTable;
</span><ins>+class VM;
</ins><span class="cx"> class WatchpointSet;
</span><span class="cx">
</span><span class="cx"> struct ByValInfo;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITPropertyAccesscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITPropertyAccess.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> jit.move(TrustedImm32(0), regT0);
</span><span class="cx"> jit.ret();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("String get_by_val stub"));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1336,7 +1336,7 @@
</span><span class="cx">
</span><span class="cx"> Jump done = jump();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*m_vm, *this, m_codeBlock);
</del><ins>+ LinkBuffer patchBuffer(*this, m_codeBlock);
</ins><span class="cx">
</span><span class="cx"> patchBuffer.link(badType, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span><span class="cx"> patchBuffer.link(slowCases, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span><span class="lines">@@ -1362,7 +1362,7 @@
</span><span class="cx"> JITGetByIdGenerator gen = emitGetByValWithCachedId(byValInfo, currentInstruction, propertyName, fastDoneCase, slowDoneCase, slowCases);
</span><span class="cx">
</span><span class="cx"> ConcurrentJSLocker locker(m_codeBlock->m_lock);
</span><del>- LinkBuffer patchBuffer(*m_vm, *this, m_codeBlock);
</del><ins>+ LinkBuffer patchBuffer(*this, m_codeBlock);
</ins><span class="cx"> patchBuffer.link(slowCases, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span><span class="cx"> patchBuffer.link(fastDoneCase, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
</span><span class="cx"> patchBuffer.link(slowDoneCase, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToNextHotPath));
</span><span class="lines">@@ -1419,7 +1419,7 @@
</span><span class="cx">
</span><span class="cx"> Jump done = jump();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*m_vm, *this, m_codeBlock);
</del><ins>+ LinkBuffer patchBuffer(*this, m_codeBlock);
</ins><span class="cx"> patchBuffer.link(badType, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span><span class="cx"> patchBuffer.link(slowCases, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span><span class="cx"> patchBuffer.link(done, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
</span><span class="lines">@@ -1453,7 +1453,7 @@
</span><span class="cx"> JITPutByIdGenerator gen = emitPutByValWithCachedId(byValInfo, currentInstruction, putKind, propertyName, doneCases, slowCases);
</span><span class="cx">
</span><span class="cx"> ConcurrentJSLocker locker(m_codeBlock->m_lock);
</span><del>- LinkBuffer patchBuffer(*m_vm, *this, m_codeBlock);
</del><ins>+ LinkBuffer patchBuffer(*this, m_codeBlock);
</ins><span class="cx"> patchBuffer.link(slowCases, CodeLocationLabel(MacroAssemblerCodePtr::createFromExecutableAddress(returnAddress.value())).labelAtOffset(byValInfo->returnAddressToSlowPath));
</span><span class="cx"> patchBuffer.link(doneCases, byValInfo->badTypeJump.labelAtOffset(byValInfo->badTypeJumpToDone));
</span><span class="cx"> if (!m_exceptionChecks.empty())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITPropertyAccess32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITPropertyAccess32_64.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx"> jit.move(TrustedImm32(0), regT0);
</span><span class="cx"> jit.ret();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("String get_by_val stub"));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITStubRoutineh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITStubRoutine.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITStubRoutine.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/JITStubRoutine.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -33,6 +33,7 @@
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><span class="cx"> class JITStubRoutineSet;
</span><ins>+class VM;
</ins><span class="cx">
</span><span class="cx"> // This is a base-class for JIT stub routines, and also the class you want
</span><span class="cx"> // to instantiate directly if you have a routine that does not need any
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitRepatchcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/Repatch.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/Repatch.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/Repatch.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -91,7 +91,7 @@
</span><span class="cx"> MacroAssembler::readCallTarget(call).executableAddress()));
</span><span class="cx"> key = key.withCallTarget(newCalleeFunction.executableAddress());
</span><span class="cx"> newCalleeFunction = FunctionPtr(
</span><del>- thunks.getSlowPathCallThunk(vm, key).code().executableAddress());
</del><ins>+ thunks.getSlowPathCallThunk(key).code().executableAddress());
</ins><span class="cx"> }
</span><span class="cx"> #else // ENABLE(FTL_JIT)
</span><span class="cx"> UNUSED_PARAM(codeBlock);
</span><span class="lines">@@ -931,7 +931,7 @@
</span><span class="cx"> stubJit.restoreReturnAddressBeforeReturn(GPRInfo::regT4);
</span><span class="cx"> AssemblyHelpers::Jump slow = stubJit.jump();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(vm, stubJit, owner, JITCompilationCanFail);
</del><ins>+ LinkBuffer patchBuffer(stubJit, owner, JITCompilationCanFail);
</ins><span class="cx"> if (patchBuffer.didFailToAllocate()) {
</span><span class="cx"> linkVirtualFor(exec, callLinkInfo);
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitSpecializedThunkJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/SpecializedThunkJIT.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx">
</span><span class="cx"> MacroAssemblerCodeRef finalize(MacroAssemblerCodePtr fallback, const char* thunkKind)
</span><span class="cx"> {
</span><del>- LinkBuffer patchBuffer(*m_vm, *this, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(*this, GLOBAL_THUNK_ID);
</ins><span class="cx"> patchBuffer.link(m_failures, CodeLocationLabel(fallback));
</span><span class="cx"> for (unsigned i = 0; i < m_calls.size(); i++)
</span><span class="cx"> patchBuffer.link(m_calls[i].first, m_calls[i].second);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitThunkGeneratorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/ThunkGenerators.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/ThunkGenerators.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/jit/ThunkGenerators.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> jit.call(GPRInfo::nonArgGPR0);
</span><span class="cx"> jit.jumpToExceptionHandler(*vm);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("Throw exception from call slow path thunk"));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx">
</span><span class="cx"> slowPathFor(jit, vm, operationLinkCall);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("Link call slow path thunk"));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -154,7 +154,7 @@
</span><span class="cx">
</span><span class="cx"> slowPathFor(jit, vm, operationLinkPolymorphicCall);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("Link polymorphic call slow path thunk"));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -223,7 +223,7 @@
</span><span class="cx">
</span><span class="cx"> slowPathFor(jit, vm, operationVirtualCall);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(
</span><span class="cx"> patchBuffer,
</span><span class="cx"> ("Virtual %s slow path thunk",
</span><span class="lines">@@ -382,7 +382,7 @@
</span><span class="cx">
</span><span class="cx"> jit.jumpToExceptionHandler(*vm);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("native %s%s trampoline", entryType == EnterViaJumpWithSavedTags ? "Tail With Saved Tags " : entryType == EnterViaJumpWithoutSavedTags ? "Tail Without Saved Tags " : "", toCString(kind).data()));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -529,7 +529,7 @@
</span><span class="cx"> jit.ret();
</span><span class="cx"> #endif
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("fixup arity"));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -539,7 +539,7 @@
</span><span class="cx">
</span><span class="cx"> jit.breakpoint();
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("unreachable thunk"));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1127,7 +1127,7 @@
</span><span class="cx"> jit.emitFunctionEpilogue();
</span><span class="cx"> jit.ret();
</span><span class="cx">
</span><del>- LinkBuffer linkBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer linkBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> linkBuffer.link(noCode, CodeLocationLabel(vm->jitStubs->ctiNativeTailCallWithoutSavedTags(vm)));
</span><span class="cx"> return FINALIZE_CODE(
</span><span class="cx"> linkBuffer, ("Specialized thunk for bound function calls with no arguments"));
</span><span class="lines">@@ -1167,7 +1167,7 @@
</span><span class="cx"> ASSERT(!!vm->callFrameForCatch);
</span><span class="cx"> };
</span><span class="cx">
</span><del>- LinkBuffer linkBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer linkBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> linkBuffer.link(call, throwWasmException);
</span><span class="cx"> return FINALIZE_CODE(
</span><span class="cx"> linkBuffer, ("Throw exception from Wasm"));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntThunkscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntThunks.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntThunks.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/llint/LLIntThunks.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> jit.move(JSInterfaceJIT::TrustedImmPtr(bitwise_cast<void*>(target)), JSInterfaceJIT::regT0);
</span><span class="cx"> jit.jump(JSInterfaceJIT::regT0);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("LLInt %s prologue thunk", thunkKind));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSamplingProfilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -342,7 +342,7 @@
</span><span class="cx">
</span><span class="cx"> LockHolder machineThreadsLocker(m_vm.heap.machineThreads().getLock());
</span><span class="cx"> LockHolder codeBlockSetLocker(m_vm.heap.codeBlockSet().getLock());
</span><del>- LockHolder executableAllocatorLocker(m_vm.executableAllocator.getLock());
</del><ins>+ LockHolder executableAllocatorLocker(ExecutableAllocator::singleton().getLock());
</ins><span class="cx">
</span><span class="cx"> bool didSuspend = m_jscExecutionThread->suspend();
</span><span class="cx"> if (didSuspend) {
</span><span class="lines">@@ -364,7 +364,7 @@
</span><span class="cx"> }
</span><span class="cx"> // FIXME: Lets have a way of detecting when we're parsing code.
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=152761
</span><del>- if (m_vm.executableAllocator.isValidExecutableMemory(executableAllocatorLocker, machinePC)) {
</del><ins>+ if (ExecutableAllocator::singleton().isValidExecutableMemory(executableAllocatorLocker, machinePC)) {
</ins><span class="cx"> if (m_vm.isExecutingInRegExpJIT) {
</span><span class="cx"> // FIXME: We're executing a regexp. Lets gather more intersting data.
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=152729
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -165,9 +165,6 @@
</span><span class="cx">
</span><span class="cx"> VM::VM(VMType vmType, HeapType heapType)
</span><span class="cx"> : m_apiLock(adoptRef(new JSLock(this)))
</span><del>-#if ENABLE(ASSEMBLER)
- , executableAllocator(*this)
-#endif
</del><span class="cx"> , heap(this, heapType)
</span><span class="cx"> , auxiliarySpace("Auxiliary", heap, AllocatorAttributes(DoesNotNeedDestruction, HeapCell::Auxiliary))
</span><span class="cx"> , cellSpace("JSCell", heap, AllocatorAttributes(DoesNotNeedDestruction, HeapCell::JSCell))
</span><span class="lines">@@ -198,7 +195,7 @@
</span><span class="cx"> , m_rtTraceList(new RTTraceList())
</span><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(ASSEMBLER)
</span><del>- , m_canUseAssembler(enableAssembler(executableAllocator))
</del><ins>+ , m_canUseAssembler(enableAssembler(ExecutableAllocator::singleton()))
</ins><span class="cx"> #endif
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> , m_canUseJIT(m_canUseAssembler && Options::useJIT())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.h (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.h        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/runtime/VM.h        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -285,14 +285,6 @@
</span><span class="cx"> RefPtr<JSLock> m_apiLock;
</span><span class="cx">
</span><span class="cx"> public:
</span><del>-#if ENABLE(ASSEMBLER)
- // executableAllocator should be destructed after the heap, as the heap can call executableAllocator
- // in its destructor.
- ExecutableAllocator executableAllocator;
-#endif
-
- // The heap should be just after executableAllocator and before other members to ensure that it's
- // destructed after all the objects that reference it.
</del><span class="cx"> Heap heap;
</span><span class="cx">
</span><span class="cx"> Subspace auxiliarySpace;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMTrapscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VMTraps.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VMTraps.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/runtime/VMTraps.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -250,7 +250,7 @@
</span><span class="cx"> return; // Let the SignalSender try again later.
</span><span class="cx">
</span><span class="cx"> {
</span><del>- auto allocator = vm.executableAllocator;
</del><ins>+ auto& allocator = ExecutableAllocator::singleton();
</ins><span class="cx"> auto allocatorLocker = tryHoldLock(allocator.getLock());
</span><span class="cx"> if (!allocatorLocker)
</span><span class="cx"> return; // Let the SignalSender try again later.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsVMInspectorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/VMInspector.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/VMInspector.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/tools/VMInspector.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -107,8 +107,8 @@
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> bool found = false;
</span><span class="cx"> bool hasTimeout = false;
</span><del>- iterate([&] (VM& vm) -> FunctorStatus {
- auto allocator = vm.executableAllocator;
</del><ins>+ iterate([&] (VM&) -> FunctorStatus {
+ auto& allocator = ExecutableAllocator::singleton();
</ins><span class="cx"> auto& lock = allocator.getLock();
</span><span class="cx">
</span><span class="cx"> bool isSafeToLock = ensureIsSafeToLock(lock);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmBinding.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmBinding.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/wasm/WasmBinding.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -114,7 +114,7 @@
</span><span class="cx"> ASSERT(!!vm->callFrameForCatch);
</span><span class="cx"> };
</span><span class="cx">
</span><del>- LinkBuffer linkBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer linkBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> linkBuffer.link(call, throwBadI64);
</span><span class="cx"> return FINALIZE_CODE(linkBuffer, ("WebAssembly->JavaScript invalid i64 use in import[%i]", importIndex));
</span><span class="cx"> }
</span><span class="lines">@@ -412,7 +412,7 @@
</span><span class="cx"> });
</span><span class="cx"> }
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> patchBuffer.link(slowCall, FunctionPtr(vm->getCTIStub(linkCallThunkGenerator).code().executableAddress()));
</span><span class="cx"> CodeLocationLabel callReturnLocation(patchBuffer.locationOfNearCall(slowCall));
</span><span class="cx"> CodeLocationLabel hotPathBegin(patchBuffer.locationOf(targetToCheck));
</span><span class="lines">@@ -426,7 +426,7 @@
</span><span class="cx"> return FINALIZE_CODE(patchBuffer, ("WebAssembly->JavaScript import[%i] %s", importIndex, signatureDescription.ascii().data()));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static MacroAssemblerCodeRef wasmToWasm(VM* vm, unsigned importIndex)
</del><ins>+static MacroAssemblerCodeRef wasmToWasm(unsigned importIndex)
</ins><span class="cx"> {
</span><span class="cx"> const PinnedRegisterInfo& pinnedRegs = PinnedRegisterInfo::get();
</span><span class="cx"> JIT jit;
</span><span class="lines">@@ -462,7 +462,7 @@
</span><span class="cx"> jit.loadPtr(JIT::Address(scratch, WebAssemblyFunction::offsetOfWasmEntryPointCode()), scratch);
</span><span class="cx"> jit.jump(scratch);
</span><span class="cx">
</span><del>- LinkBuffer patchBuffer(*vm, jit, GLOBAL_THUNK_ID);
</del><ins>+ LinkBuffer patchBuffer(jit, GLOBAL_THUNK_ID);
</ins><span class="cx"> return FINALIZE_CODE(patchBuffer, ("WebAssembly->WebAssembly import[%i]", importIndex));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -470,7 +470,7 @@
</span><span class="cx"> {
</span><span class="cx"> WasmExitStubs stubs;
</span><span class="cx"> stubs.wasmToJs = wasmToJs(vm, callLinkInfos, signatureIndex, importIndex);
</span><del>- stubs.wasmToWasm = wasmToWasm(vm, importIndex);
</del><ins>+ stubs.wasmToWasm = wasmToWasm(importIndex);
</ins><span class="cx"> return stubs;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmWasmPlancpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/WasmPlan.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/WasmPlan.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/wasm/WasmPlan.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -274,13 +274,13 @@
</span><span class="cx"> SignatureIndex signatureIndex = m_moduleInformation->internalFunctionSignatureIndices[functionIndex];
</span><span class="cx"> String signatureDescription = SignatureInformation::get(&m_vm, signatureIndex)->toString();
</span><span class="cx"> {
</span><del>- LinkBuffer linkBuffer(m_vm, *context.wasmEntrypointJIT, nullptr);
</del><ins>+ LinkBuffer linkBuffer(*context.wasmEntrypointJIT, nullptr);
</ins><span class="cx"> m_wasmInternalFunctions[functionIndex]->wasmEntrypoint.compilation =
</span><span class="cx"> std::make_unique<B3::Compilation>(FINALIZE_CODE(linkBuffer, ("WebAssembly function[%i] %s", functionIndex, signatureDescription.ascii().data())), WTFMove(context.wasmEntrypointByproducts));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> {
</span><del>- LinkBuffer linkBuffer(m_vm, *context.jsEntrypointJIT, nullptr);
</del><ins>+ LinkBuffer linkBuffer(*context.jsEntrypointJIT, nullptr);
</ins><span class="cx"> linkBuffer.link(context.jsEntrypointToWasmEntrypointCall, FunctionPtr(m_wasmInternalFunctions[functionIndex]->wasmEntrypoint.compilation->code().executableAddress()));
</span><span class="cx">
</span><span class="cx"> m_wasmInternalFunctions[functionIndex]->jsToWasmEntrypoint.compilation =
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreyarrYarrJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/yarr/YarrJIT.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/yarr/YarrJIT.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/JavaScriptCore/yarr/YarrJIT.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -2646,7 +2646,7 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>- void compile(VM* vm, YarrCodeBlock& jitObject)
</del><ins>+ void compile(YarrCodeBlock& jitObject)
</ins><span class="cx"> {
</span><span class="cx"> generateEnter();
</span><span class="cx">
</span><span class="lines">@@ -2674,7 +2674,7 @@
</span><span class="cx"> generate();
</span><span class="cx"> backtrack();
</span><span class="cx">
</span><del>- LinkBuffer linkBuffer(*vm, *this, REGEXP_CODE_ID, JITCompilationCanFail);
</del><ins>+ LinkBuffer linkBuffer(*this, REGEXP_CODE_ID, JITCompilationCanFail);
</ins><span class="cx"> if (linkBuffer.didFailToAllocate()) {
</span><span class="cx"> jitObject.setFallBack(true);
</span><span class="cx"> return;
</span><span class="lines">@@ -2729,9 +2729,9 @@
</span><span class="cx"> void jitCompile(YarrPattern& pattern, YarrCharSize charSize, VM* vm, YarrCodeBlock& jitObject, YarrJITCompileMode mode)
</span><span class="cx"> {
</span><span class="cx"> if (mode == MatchOnly)
</span><del>- YarrGenerator<MatchOnly>(vm, pattern, charSize).compile(vm, jitObject);
</del><ins>+ YarrGenerator<MatchOnly>(vm, pattern, charSize).compile(jitObject);
</ins><span class="cx"> else
</span><del>- YarrGenerator<IncludeSubpatterns>(vm, pattern, charSize).compile(vm, jitObject);
</del><ins>+ YarrGenerator<IncludeSubpatterns>(vm, pattern, charSize).compile(jitObject);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> }}
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/WebCore/ChangeLog        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -1,3 +1,14 @@
</span><ins>+2017-03-29 Saam Barati <sbarati@apple.com>
+
+ LinkBuffer and ExecutableAllocator shouldn't have anything to do with VM
+ https://bugs.webkit.org/show_bug.cgi?id=170210
+
+ Reviewed by Mark Lam.
+
+ * cssjit/SelectorCompiler.cpp:
+ (WebCore::SelectorCompiler::compileSelector):
+ (WebCore::SelectorCompiler::SelectorCodeGenerator::compile):
+
</ins><span class="cx"> 2017-03-29 Javier Fernandez <jfernandez@igalia.com>
</span><span class="cx">
</span><span class="cx"> [css-align] Adapt self-alignment properties to the new baseline syntax
</span></span></pre></div>
<a id="trunkSourceWebCorecssjitSelectorCompilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/cssjit/SelectorCompiler.cpp (214570 => 214571)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/cssjit/SelectorCompiler.cpp        2017-03-29 22:46:34 UTC (rev 214570)
+++ trunk/Source/WebCore/cssjit/SelectorCompiler.cpp        2017-03-29 22:55:53 UTC (rev 214571)
</span><span class="lines">@@ -256,7 +256,7 @@
</span><span class="cx"> class SelectorCodeGenerator {
</span><span class="cx"> public:
</span><span class="cx"> SelectorCodeGenerator(const CSSSelector*, SelectorContext);
</span><del>- SelectorCompilationStatus compile(JSC::VM*, JSC::MacroAssemblerCodeRef&);
</del><ins>+ SelectorCompilationStatus compile(JSC::MacroAssemblerCodeRef&);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> static const Assembler::RegisterID returnRegister;
</span><span class="lines">@@ -395,7 +395,7 @@
</span><span class="cx"> if (!vm->canUseJIT())
</span><span class="cx"> return SelectorCompilationStatus::CannotCompile;
</span><span class="cx"> SelectorCodeGenerator codeGenerator(lastSelector, selectorContext);
</span><del>- return codeGenerator.compile(vm, codeRef);
</del><ins>+ return codeGenerator.compile(codeRef);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline FragmentRelation fragmentRelationForSelectorRelation(CSSSelector::RelationType relation)
</span><span class="lines">@@ -1208,7 +1208,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline SelectorCompilationStatus SelectorCodeGenerator::compile(JSC::VM* vm, JSC::MacroAssemblerCodeRef& codeRef)
</del><ins>+inline SelectorCompilationStatus SelectorCodeGenerator::compile(JSC::MacroAssemblerCodeRef& codeRef)
</ins><span class="cx"> {
</span><span class="cx"> switch (m_functionType) {
</span><span class="cx"> case FunctionType::SimpleSelectorChecker:
</span><span class="lines">@@ -1223,7 +1223,7 @@
</span><span class="cx"> return SelectorCompilationStatus::CannotCompile;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- JSC::LinkBuffer linkBuffer(*vm, m_assembler, CSS_CODE_ID, JSC::JITCompilationCanFail);
</del><ins>+ JSC::LinkBuffer linkBuffer(m_assembler, CSS_CODE_ID, JSC::JITCompilationCanFail);
</ins><span class="cx"> if (!linkBuffer.isValid()) {
</span><span class="cx"> // This could be SelectorCompilationStatus::NotCompiled but that would cause us to re-enter
</span><span class="cx"> // the CSS JIT every time we evaluate that selector.
</span></span></pre>
</div>
</div>
</body>
</html>