<!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>[211247] trunk</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/211247">211247</a></dd>
<dt>Author</dt> <dd>keith_miller@apple.com</dd>
<dt>Date</dt> <dd>2017-01-26 17:47:52 -0800 (Thu, 26 Jan 2017)</dd>
</dl>
<h3>Log Message</h3>
<pre>classInfo should take a VM so it is not materialized from the object on each call
https://bugs.webkit.org/show_bug.cgi?id=167424
Rubber Stamped by Michael Saboff.
Previously, classInfo() would get the VM from the target's
MarkedBlock. Most callers already have a VM on hand, so it is
wasteful to compute the VM from the marked block every time. This
patch refactors some of the most common callers of classInfo(),
jsDynamicCast and inherits to take a VM as well.
Source/JavaScriptCore:
* API/JSCallbackConstructor.cpp:
(JSC::JSCallbackConstructor::finishCreation):
* API/JSCallbackFunction.cpp:
(JSC::JSCallbackFunction::finishCreation):
* API/JSCallbackObjectFunctions.h:
(JSC::JSCallbackObject<Parent>::asCallbackObject):
(JSC::JSCallbackObject<Parent>::finishCreation):
* API/JSObjectRef.cpp:
(JSObjectSetPrototype):
(classInfoPrivate):
(JSObjectGetPrivate):
(JSObjectSetPrivate):
(JSObjectGetPrivateProperty):
(JSObjectSetPrivateProperty):
(JSObjectDeletePrivateProperty):
* API/JSTypedArray.cpp:
(JSValueGetTypedArrayType):
(JSObjectMakeTypedArrayWithArrayBuffer):
(JSObjectMakeTypedArrayWithArrayBufferAndOffset):
(JSObjectGetTypedArrayBytesPtr):
(JSObjectGetTypedArrayLength):
(JSObjectGetTypedArrayByteLength):
(JSObjectGetTypedArrayByteOffset):
(JSObjectGetTypedArrayBuffer):
(JSObjectGetArrayBufferBytesPtr):
(JSObjectGetArrayBufferByteLength):
* API/JSValue.mm:
(isDate):
(isArray):
(valueToObjectWithoutCopy):
* API/JSValueRef.cpp:
(JSValueIsArray):
(JSValueIsDate):
(JSValueIsObjectOfClass):
* API/JSWeakObjectMapRefPrivate.cpp:
* API/JSWrapperMap.mm:
(tryUnwrapObjcObject):
* API/ObjCCallbackFunction.h:
* API/ObjCCallbackFunction.mm:
(tryUnwrapConstructor):
* bindings/ScriptFunctionCall.cpp:
(Deprecated::ScriptFunctionCall::call):
* bytecode/CallVariant.h:
(JSC::CallVariant::internalFunction):
(JSC::CallVariant::function):
(JSC::CallVariant::isClosureCall):
(JSC::CallVariant::executable):
(JSC::CallVariant::functionExecutable):
(JSC::CallVariant::nativeExecutable):
* bytecode/CodeBlock.cpp:
(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::setConstantRegisters):
(JSC::CodeBlock::replacement):
(JSC::CodeBlock::computeCapabilityLevel):
(JSC::CodeBlock::nameForRegister):
* bytecode/ObjectAllocationProfile.h:
(JSC::ObjectAllocationProfile::possibleDefaultPropertyCount):
* bytecode/ObjectPropertyCondition.cpp:
(JSC::ObjectPropertyCondition::attemptToMakeEquivalenceWithoutBarrier):
* bytecode/ObjectPropertyCondition.h:
(JSC::ObjectPropertyCondition::isValidValueForPresence):
* bytecode/PropertyCondition.cpp:
(JSC::PropertyCondition::isValidValueForAttributes):
(JSC::PropertyCondition::isValidValueForPresence):
(JSC::PropertyCondition::attemptToMakeEquivalenceWithoutBarrier):
* bytecode/PropertyCondition.h:
* bytecode/SpeculatedType.cpp:
(JSC::speculationFromCell):
* debugger/Debugger.cpp:
* debugger/DebuggerCallFrame.cpp:
(JSC::DebuggerCallFrame::functionName):
(JSC::DebuggerCallFrame::scope):
(JSC::DebuggerCallFrame::type):
* debugger/DebuggerScope.cpp:
(JSC::DebuggerScope::name):
(JSC::DebuggerScope::location):
* dfg/DFGAbstractInterpreter.h:
* dfg/DFGAbstractInterpreterInlines.h:
(JSC::DFG::AbstractInterpreter<AbstractStateType>::AbstractInterpreter):
(JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
* dfg/DFGByteCodeParser.cpp:
(JSC::DFG::ByteCodeParser::get):
(JSC::DFG::ByteCodeParser::handleIntrinsicCall):
(JSC::DFG::ByteCodeParser::planLoad):
(JSC::DFG::ByteCodeParser::checkPresenceLike):
(JSC::DFG::ByteCodeParser::load):
(JSC::DFG::ByteCodeParser::parseBlock):
* dfg/DFGConstantFoldingPhase.cpp:
(JSC::DFG::ConstantFoldingPhase::foldConstants):
* dfg/DFGDesiredWeakReferences.cpp:
(JSC::DFG::DesiredWeakReferences::reallyAdd):
* dfg/DFGFixupPhase.cpp:
(JSC::DFG::FixupPhase::fixupMakeRope):
* dfg/DFGFrozenValue.h:
(JSC::DFG::FrozenValue::FrozenValue):
(JSC::DFG::FrozenValue::dynamicCast):
* dfg/DFGGraph.cpp:
(JSC::DFG::Graph::dump):
(JSC::DFG::Graph::tryGetConstantClosureVar):
(JSC::DFG::Graph::tryGetFoldableView):
(JSC::DFG::Graph::getRegExpPrototypeProperty):
(JSC::DFG::Graph::isStringPrototypeMethodSane):
(JSC::DFG::Graph::canOptimizeStringObjectAccess):
* dfg/DFGLazyJSValue.cpp:
(JSC::DFG::LazyJSValue::tryGetStringImpl):
(JSC::DFG::LazyJSValue::tryGetString):
* dfg/DFGLazyJSValue.h:
* dfg/DFGNode.cpp:
(JSC::DFG::Node::convertToPutStructureHint):
* dfg/DFGNode.h:
(JSC::DFG::Node::dynamicCastConstant):
(JSC::DFG::Node::castConstant):
* dfg/DFGOperations.cpp:
* dfg/DFGSafeToExecute.h:
(JSC::DFG::safeToExecute):
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileIn):
(JSC::DFG::SpeculativeJIT::compileMaterializeNewObject):
* dfg/DFGSpeculativeJIT32_64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGSpeculativeJIT64.cpp:
(JSC::DFG::SpeculativeJIT::emitCall):
(JSC::DFG::SpeculativeJIT::compile):
* dfg/DFGStrengthReductionPhase.cpp:
(JSC::DFG::StrengthReductionPhase::handleNode):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
(JSC::FTL::DFG::LowerDFGToB3::compileIn):
(JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
(JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):
* ftl/FTLOperations.cpp:
(JSC::FTL::operationMaterializeObjectInOSR):
* heap/CodeBlockSet.cpp:
(JSC::CodeBlockSet::lastChanceToFinalize):
(JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):
* heap/CodeBlockSet.h:
* heap/GCAssertions.h:
* heap/Heap.cpp:
(JSC::Heap::lastChanceToFinalize):
(JSC::Heap::protectedObjectTypeCounts):
(JSC::Heap::objectTypeCounts):
(JSC::Heap::deleteUnmarkedCompiledCode):
* heap/HeapSnapshotBuilder.cpp:
(JSC::HeapSnapshotBuilder::json):
* heap/SlotVisitor.cpp:
(JSC::validate):
* inspector/InjectedScriptHost.h:
* inspector/JSGlobalObjectInspectorController.cpp:
(Inspector::JSGlobalObjectInspectorController::reportAPIException):
* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::finishCreation):
(Inspector::JSInjectedScriptHost::isHTMLAllCollection):
(Inspector::JSInjectedScriptHost::subtype):
(Inspector::JSInjectedScriptHost::functionDetails):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::proxyTargetValue):
(Inspector::JSInjectedScriptHost::weakMapSize):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetSize):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):
* inspector/JSInjectedScriptHostPrototype.cpp:
(Inspector::JSInjectedScriptHostPrototype::finishCreation):
(Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate):
(Inspector::jsInjectedScriptHostPrototypeFunctionInternalConstructorName):
(Inspector::jsInjectedScriptHostPrototypeFunctionIsHTMLAllCollection):
(Inspector::jsInjectedScriptHostPrototypeFunctionProxyTargetValue):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize):
(Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionIteratorEntries):
(Inspector::jsInjectedScriptHostPrototypeFunctionEvaluateWithScopeExtension):
(Inspector::jsInjectedScriptHostPrototypeFunctionSubtype):
(Inspector::jsInjectedScriptHostPrototypeFunctionFunctionDetails):
(Inspector::jsInjectedScriptHostPrototypeFunctionGetInternalProperties):
* inspector/JSJavaScriptCallFrame.cpp:
(Inspector::JSJavaScriptCallFrame::finishCreation):
(Inspector::toJSJavaScriptCallFrame): Deleted.
* inspector/JSJavaScriptCallFrame.h:
* inspector/JSJavaScriptCallFramePrototype.cpp:
(Inspector::JSJavaScriptCallFramePrototype::finishCreation):
(Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension):
(Inspector::jsJavaScriptCallFramePrototypeFunctionScopeDescriptions):
(Inspector::jsJavaScriptCallFrameAttributeCaller):
(Inspector::jsJavaScriptCallFrameAttributeSourceID):
(Inspector::jsJavaScriptCallFrameAttributeLine):
(Inspector::jsJavaScriptCallFrameAttributeColumn):
(Inspector::jsJavaScriptCallFrameAttributeFunctionName):
(Inspector::jsJavaScriptCallFrameAttributeScopeChain):
(Inspector::jsJavaScriptCallFrameAttributeThisObject):
(Inspector::jsJavaScriptCallFrameAttributeType):
(Inspector::jsJavaScriptCallFrameIsTailDeleted):
* inspector/ScriptArguments.cpp:
(Inspector::ScriptArguments::getFirstArgumentAsString):
* inspector/agents/InspectorHeapAgent.cpp:
(Inspector::InspectorHeapAgent::getPreview):
* interpreter/Interpreter.cpp:
(JSC::notifyDebuggerOfUnwinding):
(JSC::Interpreter::unwind):
(JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
(JSC::Interpreter::execute):
* interpreter/ShadowChicken.cpp:
(JSC::ShadowChicken::update):
* interpreter/StackVisitor.cpp:
(JSC::StackVisitor::readFrame):
(JSC::StackVisitor::readNonInlinedFrame):
(JSC::StackVisitor::Frame::calleeSaveRegisters):
* jit/JITCode.cpp:
(JSC::JITCode::execute):
* jit/JITOperations.cpp:
(JSC::operationNewFunctionCommon):
* jit/Repatch.cpp:
(JSC::tryCacheGetByID):
* jsc.cpp:
(WTF::CustomGetter::customGetter):
(WTF::RuntimeArray::finishCreation):
(WTF::RuntimeArray::lengthGetter):
(WTF::DOMJITGetter::customGetter):
(WTF::DOMJITGetterComplex::DOMJITNodeDOMJIT::slowCall):
(WTF::DOMJITGetterComplex::functionEnableException):
(WTF::DOMJITGetterComplex::customGetter):
(WTF::DOMJITFunctionObject::safeFunction):
(functionDescribeArray):
(functionCreateElement):
(functionGetElement):
(functionSetElementRoot):
(functionGetHiddenValue):
(functionSetHiddenValue):
(functionSetImpureGetterDelegate):
(functionNoFTL):
(functionDollarEvalScript):
(functionDollarAgentBroadcast):
(functionTransferArrayBuffer):
(functionFindTypeForExpression):
(functionReturnTypeFor):
(functionHasBasicBlockExecuted):
(functionBasicBlockExecutionCount):
(functionEnsureArrayStorage):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* runtime/AbstractModuleRecord.cpp:
(JSC::AbstractModuleRecord::finishCreation):
* runtime/ArrayBuffer.cpp:
(JSC::ArrayBuffer::transferTo):
* runtime/ArrayBuffer.h:
* runtime/ArrayConstructor.cpp:
(JSC::ArrayConstructor::finishCreation):
(JSC::arrayConstructorPrivateFuncIsArraySlow):
(JSC::arrayConstructorPrivateFuncIsArrayConstructor):
* runtime/ArrayConstructor.h:
(JSC::isArrayConstructor): Deleted.
* runtime/ArrayIteratorPrototype.cpp:
(JSC::ArrayIteratorPrototype::finishCreation):
* runtime/ArrayPrototype.cpp:
(JSC::ArrayPrototype::finishCreation):
* runtime/AsyncFunctionPrototype.cpp:
(JSC::AsyncFunctionPrototype::finishCreation):
* runtime/AtomicsObject.cpp:
(JSC::AtomicsObject::finishCreation):
(JSC::atomicsFuncWait):
(JSC::atomicsFuncWake):
* runtime/BooleanObject.cpp:
(JSC::BooleanObject::finishCreation):
* runtime/BooleanObject.h:
(JSC::asBooleanObject):
* runtime/BooleanPrototype.cpp:
(JSC::BooleanPrototype::finishCreation):
(JSC::booleanProtoFuncToString):
(JSC::booleanProtoFuncValueOf):
* runtime/ConsoleObject.cpp:
(JSC::ConsoleObject::finishCreation):
* runtime/DateConstructor.cpp:
(JSC::constructDate):
* runtime/DateInstance.cpp:
(JSC::DateInstance::finishCreation):
* runtime/DateInstance.h:
(JSC::asDateInstance):
* runtime/DatePrototype.cpp:
(JSC::formateDateInstance):
(JSC::DatePrototype::finishCreation):
(JSC::dateProtoFuncToISOString):
(JSC::dateProtoFuncToLocaleString):
(JSC::dateProtoFuncToLocaleDateString):
(JSC::dateProtoFuncToLocaleTimeString):
(JSC::dateProtoFuncGetTime):
(JSC::dateProtoFuncGetFullYear):
(JSC::dateProtoFuncGetUTCFullYear):
(JSC::dateProtoFuncGetMonth):
(JSC::dateProtoFuncGetUTCMonth):
(JSC::dateProtoFuncGetDate):
(JSC::dateProtoFuncGetUTCDate):
(JSC::dateProtoFuncGetDay):
(JSC::dateProtoFuncGetUTCDay):
(JSC::dateProtoFuncGetHours):
(JSC::dateProtoFuncGetUTCHours):
(JSC::dateProtoFuncGetMinutes):
(JSC::dateProtoFuncGetUTCMinutes):
(JSC::dateProtoFuncGetSeconds):
(JSC::dateProtoFuncGetUTCSeconds):
(JSC::dateProtoFuncGetMilliSeconds):
(JSC::dateProtoFuncGetUTCMilliseconds):
(JSC::dateProtoFuncGetTimezoneOffset):
(JSC::dateProtoFuncSetTime):
(JSC::setNewValueFromTimeArgs):
(JSC::setNewValueFromDateArgs):
(JSC::dateProtoFuncSetYear):
(JSC::dateProtoFuncGetYear):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::finishCreation):
* runtime/ErrorPrototype.cpp:
(JSC::ErrorPrototype::finishCreation):
* runtime/ExceptionHelpers.cpp:
(JSC::isTerminatedExecutionException):
* runtime/ExceptionHelpers.h:
* runtime/ExecutableBase.cpp:
(JSC::ExecutableBase::clearCode):
(JSC::ExecutableBase::dump):
(JSC::ExecutableBase::hashFor):
* runtime/FunctionPrototype.cpp:
(JSC::functionProtoFuncToString):
* runtime/GeneratorFunctionPrototype.cpp:
(JSC::GeneratorFunctionPrototype::finishCreation):
* runtime/GeneratorPrototype.cpp:
(JSC::GeneratorPrototype::finishCreation):
* runtime/GetterSetter.h:
* runtime/InspectorInstrumentationObject.cpp:
(JSC::InspectorInstrumentationObject::finishCreation):
* runtime/InternalFunction.cpp:
(JSC::InternalFunction::finishCreation):
(JSC::InternalFunction::createSubclassStructure):
* runtime/InternalFunction.h:
(JSC::asInternalFunction):
* runtime/IntlCollator.cpp:
(JSC::IntlCollator::finishCreation):
* runtime/IntlCollatorPrototype.cpp:
(JSC::IntlCollatorPrototypeGetterCompare):
(JSC::IntlCollatorPrototypeFuncResolvedOptions):
* runtime/IntlDateTimeFormat.cpp:
(JSC::IntlDateTimeFormat::finishCreation):
* runtime/IntlDateTimeFormatPrototype.cpp:
(JSC::IntlDateTimeFormatPrototypeGetterFormat):
(JSC::IntlDateTimeFormatPrototypeFuncResolvedOptions):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::finishCreation):
* runtime/IntlNumberFormatPrototype.cpp:
(JSC::IntlNumberFormatPrototypeGetterFormat):
(JSC::IntlNumberFormatPrototypeFuncResolvedOptions):
* runtime/IntlObject.cpp:
(JSC::IntlObject::finishCreation):
* runtime/IntlObjectInlines.h:
(JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):
* runtime/IteratorPrototype.cpp:
(JSC::IteratorPrototype::finishCreation):
* runtime/JSArray.h:
(JSC::asArray):
(JSC::isJSArray):
* runtime/JSArrayBuffer.h:
(JSC::toPossiblySharedArrayBuffer):
(JSC::toUnsharedArrayBuffer):
(JSC::JSArrayBuffer::toWrapped):
* runtime/JSArrayBufferConstructor.cpp:
(JSC::arrayBufferFuncIsView):
* runtime/JSArrayBufferPrototype.cpp:
(JSC::arrayBufferProtoFuncSlice):
* runtime/JSArrayBufferView.h:
* runtime/JSArrayBufferViewInlines.h:
(JSC::JSArrayBufferView::toWrapped):
* runtime/JSBoundFunction.cpp:
(JSC::isBoundFunction):
(JSC::getBoundFunctionStructure):
(JSC::JSBoundFunction::finishCreation):
* runtime/JSCJSValue.cpp:
(JSC::JSValue::dumpForBacktrace):
* runtime/JSCJSValue.h:
* runtime/JSCJSValueInlines.h:
(JSC::JSValue::inherits):
(JSC::JSValue::classInfoOrNull):
* runtime/JSCallee.cpp:
(JSC::JSCallee::finishCreation):
* runtime/JSCell.cpp:
(JSC::JSCell::dumpToStream):
(JSC::JSCell::className):
(JSC::JSCell::isAnyWasmCallee):
* runtime/JSCell.h:
(JSC::jsCast):
(JSC::jsDynamicCast):
* runtime/JSCellInlines.h:
(JSC::JSCell::methodTable):
(JSC::JSCell::inherits):
(JSC::JSCell::classInfo):
* runtime/JSCustomGetterSetterFunction.cpp:
(JSC::JSCustomGetterSetterFunction::finishCreation):
* runtime/JSDataViewPrototype.cpp:
(JSC::getData):
(JSC::setData):
(JSC::dataViewProtoGetterBuffer):
(JSC::dataViewProtoGetterByteLength):
(JSC::dataViewProtoGetterByteOffset):
* runtime/JSFunction.cpp:
(JSC::JSFunction::finishCreation):
(JSC::JSFunction::allocateAndInitializeRareData):
(JSC::JSFunction::initializeRareData):
(JSC::RetrieveArgumentsFunctor::RetrieveArgumentsFunctor):
(JSC::RetrieveCallerFunctionFunctor::RetrieveCallerFunctionFunctor):
(JSC::RetrieveCallerFunctionFunctor::operator()):
(JSC::JSFunction::callerGetter):
(JSC::JSFunction::getOwnNonIndexPropertyNames):
(JSC::getCalculatedDisplayName):
(JSC::JSFunction::reifyBoundNameIfNeeded):
* runtime/JSGenericTypedArrayView.h:
(JSC::toPossiblySharedNativeTypedView):
(JSC::toUnsharedNativeTypedView):
(JSC::JSGenericTypedArrayView<Adaptor>::toWrapped):
* runtime/JSGenericTypedArrayViewConstructorInlines.h:
(JSC::constructGenericTypedArrayViewWithArguments):
(JSC::constructGenericTypedArrayView):
* runtime/JSGenericTypedArrayViewInlines.h:
(JSC::JSGenericTypedArrayView<Adaptor>::set):
* runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):
* runtime/JSGenericTypedArrayViewPrototypeInlines.h:
(JSC::JSGenericTypedArrayViewPrototype<ViewClass>::finishCreation):
* runtime/JSGlobalObject.cpp:
(JSC::getTemplateObject):
(JSC::enqueueJob):
(JSC::JSGlobalObject::init):
* runtime/JSGlobalObjectFunctions.cpp:
(JSC::globalFuncProtoGetter):
(JSC::globalFuncProtoSetter):
* runtime/JSInternalPromiseDeferred.cpp:
(JSC::JSInternalPromiseDeferred::create):
* runtime/JSLexicalEnvironment.h:
(JSC::asActivation):
* runtime/JSModuleLoader.cpp:
(JSC::JSModuleLoader::finishCreation):
(JSC::JSModuleLoader::evaluate):
(JSC::JSModuleLoader::getModuleNamespaceObject):
* runtime/JSModuleNamespaceObject.cpp:
(JSC::JSModuleNamespaceObject::finishCreation):
(JSC::moduleNamespaceObjectSymbolIterator):
* runtime/JSModuleRecord.cpp:
(JSC::JSModuleRecord::finishCreation):
* runtime/JSNativeStdFunction.cpp:
(JSC::JSNativeStdFunction::finishCreation):
* runtime/JSONObject.cpp:
(JSC::JSONObject::finishCreation):
(JSC::unwrapBoxedPrimitive):
(JSC::Stringifier::Stringifier):
(JSC::Walker::walk):
* runtime/JSObject.cpp:
(JSC::JSObject::className):
(JSC::JSObject::toStringName):
(JSC::JSObject::calculatedClassName):
(JSC::JSObject::putInlineSlow):
(JSC::JSObject::ensureInt32Slow):
(JSC::JSObject::ensureDoubleSlow):
(JSC::JSObject::ensureContiguousSlow):
(JSC::JSObject::ensureArrayStorageSlow):
(JSC::JSObject::deleteProperty):
(JSC::JSObject::getOwnStaticPropertySlot):
(JSC::JSObject::findPropertyHashEntry):
(JSC::JSObject::getOwnNonIndexPropertyNames):
(JSC::JSObject::reifyAllStaticProperties):
(JSC::JSObject::getOwnPropertyDescriptor):
* runtime/JSObject.h:
(JSC::JSObject::finishCreation):
(JSC::JSNonFinalObject::finishCreation):
(JSC::JSFinalObject::finishCreation):
* runtime/JSPromiseDeferred.cpp:
(JSC::JSPromiseDeferred::create):
* runtime/JSPropertyNameIterator.cpp:
(JSC::JSPropertyNameIterator::finishCreation):
(JSC::propertyNameIteratorFuncNext):
* runtime/JSScope.cpp:
(JSC::JSScope::symbolTable):
* runtime/JSScope.h:
* runtime/JSString.cpp:
(JSC::JSString::dumpToStream):
* runtime/JSStringIterator.cpp:
(JSC::JSStringIterator::finishCreation):
* runtime/JSTypedArrayViewPrototype.cpp:
(JSC::typedArrayViewPrivateFuncIsTypedArrayView):
(JSC::typedArrayViewPrivateFuncLength):
(JSC::typedArrayViewPrivateFuncGetOriginalConstructor):
(JSC::typedArrayViewProtoGetterFuncToStringTag):
(JSC::JSTypedArrayViewPrototype::finishCreation):
* runtime/LazyClassStructure.cpp:
(JSC::LazyClassStructure::Initializer::setConstructor):
* runtime/Lookup.h:
(JSC::putEntry):
* runtime/MapConstructor.cpp:
(JSC::MapConstructor::finishCreation):
* runtime/MapIteratorPrototype.cpp:
(JSC::MapIteratorPrototype::finishCreation):
(JSC::MapIteratorPrototypeFuncNext):
* runtime/MapPrototype.cpp:
(JSC::MapPrototype::finishCreation):
(JSC::mapProtoFuncValues):
(JSC::mapProtoFuncEntries):
(JSC::mapProtoFuncKeys):
(JSC::privateFuncMapIterator):
(JSC::privateFuncMapIteratorNext):
* runtime/MathObject.cpp:
(JSC::MathObject::finishCreation):
* runtime/ModuleLoaderPrototype.cpp:
(JSC::moduleLoaderPrototypeParseModule):
(JSC::moduleLoaderPrototypeRequestedModules):
(JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):
(JSC::moduleLoaderPrototypeResolve):
(JSC::moduleLoaderPrototypeFetch):
(JSC::moduleLoaderPrototypeInstantiate):
(JSC::moduleLoaderPrototypeGetModuleNamespaceObject):
(JSC::moduleLoaderPrototypeEvaluate):
* runtime/NativeErrorConstructor.cpp:
(JSC::NativeErrorConstructor::finishCreation):
* runtime/NumberConstructor.cpp:
(JSC::NumberConstructor::finishCreation):
* runtime/NumberObject.cpp:
(JSC::NumberObject::finishCreation):
* runtime/NumberPrototype.cpp:
(JSC::NumberPrototype::finishCreation):
* runtime/ObjectConstructor.cpp:
(JSC::ObjectConstructor::finishCreation):
* runtime/ObjectPrototype.cpp:
(JSC::ObjectPrototype::finishCreation):
* runtime/ProxyObject.cpp:
(JSC::ProxyObject::toStringName):
(JSC::ProxyObject::finishCreation):
* runtime/ReflectObject.cpp:
(JSC::ReflectObject::finishCreation):
(JSC::reflectObjectConstruct):
* runtime/RegExpConstructor.cpp:
(JSC::RegExpConstructor::finishCreation):
(JSC::setRegExpConstructorInput):
(JSC::setRegExpConstructorMultiline):
(JSC::constructRegExp):
* runtime/RegExpConstructor.h:
(JSC::asRegExpConstructor):
(JSC::isRegExp):
* runtime/RegExpObject.cpp:
(JSC::RegExpObject::finishCreation):
* runtime/RegExpObject.h:
(JSC::asRegExpObject):
* runtime/RegExpPrototype.cpp:
(JSC::RegExpPrototype::finishCreation):
(JSC::regExpProtoFuncTestFast):
(JSC::regExpProtoFuncExec):
(JSC::regExpProtoFuncMatchFast):
(JSC::regExpProtoFuncCompile):
(JSC::regExpProtoGetterGlobal):
(JSC::regExpProtoGetterIgnoreCase):
(JSC::regExpProtoGetterMultiline):
(JSC::regExpProtoGetterSticky):
(JSC::regExpProtoGetterUnicode):
(JSC::regExpProtoGetterSource):
* runtime/SamplingProfiler.cpp:
(JSC::SamplingProfiler::processUnverifiedStackTraces):
* runtime/ScriptExecutable.cpp:
(JSC::ScriptExecutable::newCodeBlockFor):
(JSC::ScriptExecutable::newReplacementCodeBlockFor):
* runtime/SetConstructor.cpp:
(JSC::SetConstructor::finishCreation):
* runtime/SetIteratorPrototype.cpp:
(JSC::SetIteratorPrototype::finishCreation):
(JSC::SetIteratorPrototypeFuncNext):
* runtime/SetPrototype.cpp:
(JSC::SetPrototype::finishCreation):
(JSC::setProtoFuncValues):
(JSC::setProtoFuncEntries):
(JSC::privateFuncSetIterator):
(JSC::privateFuncSetIteratorNext):
* runtime/StackFrame.cpp:
(JSC::StackFrame::sourceURL):
(JSC::StackFrame::functionName):
* runtime/StringIteratorPrototype.cpp:
(JSC::StringIteratorPrototype::finishCreation):
* runtime/StringObject.cpp:
(JSC::StringObject::finishCreation):
* runtime/StringObject.h:
(JSC::asStringObject):
* runtime/StringPrototype.cpp:
(JSC::StringPrototype::finishCreation):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingRegExp):
(JSC::stringProtoFuncToString):
* runtime/StructureRareData.cpp:
(JSC::StructureRareData::setObjectToStringValue):
* runtime/Symbol.cpp:
(JSC::Symbol::finishCreation):
* runtime/SymbolConstructor.cpp:
(JSC::SymbolConstructor::finishCreation):
* runtime/SymbolObject.cpp:
(JSC::SymbolObject::finishCreation):
* runtime/SymbolPrototype.cpp:
(JSC::SymbolPrototype::finishCreation):
(JSC::symbolProtoFuncToString):
(JSC::symbolProtoFuncValueOf):
* runtime/TestRunnerUtils.cpp:
(JSC::getExecutableForFunction):
* runtime/ThrowScope.cpp:
(JSC::ThrowScope::throwException):
* runtime/VM.cpp:
(JSC::VM::throwException):
* runtime/WeakMapConstructor.cpp:
(JSC::WeakMapConstructor::finishCreation):
* runtime/WeakMapPrototype.cpp:
(JSC::WeakMapPrototype::finishCreation):
(JSC::getWeakMapData):
* runtime/WeakSetConstructor.cpp:
(JSC::WeakSetConstructor::finishCreation):
* runtime/WeakSetPrototype.cpp:
(JSC::WeakSetPrototype::finishCreation):
(JSC::getWeakMapData):
* tools/JSDollarVMPrototype.cpp:
(JSC::codeBlockFromArg):
* wasm/JSWebAssembly.cpp:
(JSC::JSWebAssembly::finishCreation):
* wasm/js/JSWebAssemblyHelpers.h:
(JSC::getWasmBufferFromValue):
* wasm/js/JSWebAssemblyInstance.cpp:
(JSC::JSWebAssemblyInstance::finishCreation):
* wasm/js/JSWebAssemblyMemory.cpp:
(JSC::JSWebAssemblyMemory::grow):
(JSC::JSWebAssemblyMemory::finishCreation):
(JSC::JSWebAssemblyMemory::destroy):
(JSC::JSWebAssemblyMemory::~JSWebAssemblyMemory): Deleted.
* wasm/js/JSWebAssemblyMemory.h:
* wasm/js/JSWebAssemblyModule.cpp:
(JSC::JSWebAssemblyModule::finishCreation):
* wasm/js/JSWebAssemblyTable.cpp:
(JSC::JSWebAssemblyTable::finishCreation):
* wasm/js/WebAssemblyFunction.cpp:
(JSC::callWebAssemblyFunction):
(JSC::WebAssemblyFunction::finishCreation):
* wasm/js/WebAssemblyInstanceConstructor.cpp:
(JSC::constructJSWebAssemblyInstance):
* wasm/js/WebAssemblyMemoryPrototype.cpp:
(JSC::getMemory):
* wasm/js/WebAssemblyModulePrototype.cpp:
(JSC::webAssemblyModuleProtoCustomSections):
* wasm/js/WebAssemblyModuleRecord.cpp:
(JSC::WebAssemblyModuleRecord::finishCreation):
* wasm/js/WebAssemblyTablePrototype.cpp:
(JSC::getTable):
(JSC::webAssemblyTableProtoFuncSet):
Source/WebCore:
* Modules/fetch/FetchBody.cpp:
(WebCore::FetchBody::extract):
* Modules/plugins/QuickTimePluginReplacement.mm:
(WebCore::QuickTimePluginReplacement::installReplacement):
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::createIDBKeyFromValue):
* bindings/js/JSCommandLineAPIHostCustom.cpp:
(WebCore::JSCommandLineAPIHost::getEventListeners):
(WebCore::JSCommandLineAPIHost::databaseId):
(WebCore::JSCommandLineAPIHost::storageId):
* bindings/js/JSCryptoAlgorithmDictionary.cpp:
(WebCore::JSCryptoAlgorithmDictionary::parseAlgorithmIdentifier):
(WebCore::createRsaKeyGenParams):
* bindings/js/JSCryptoCustom.cpp:
(WebCore::JSCrypto::getRandomValues):
* bindings/js/JSCryptoOperationData.cpp:
(WebCore::cryptoOperationDataFromJSValue):
* bindings/js/JSCustomElementInterface.cpp:
(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
* bindings/js/JSDOMBinding.cpp:
(WebCore::valueToDate):
(WebCore::reportException):
(WebCore::retrieveErrorMessage):
* bindings/js/JSDOMBinding.h:
(WebCore::castThisValue):
(WebCore::toPossiblySharedArrayBufferView):
(WebCore::toUnsharedArrayBufferView):
(WebCore::toPossiblySharedInt8Array):
(WebCore::toPossiblySharedInt16Array):
(WebCore::toPossiblySharedInt32Array):
(WebCore::toPossiblySharedUint8Array):
(WebCore::toPossiblySharedUint8ClampedArray):
(WebCore::toPossiblySharedUint16Array):
(WebCore::toPossiblySharedUint32Array):
(WebCore::toPossiblySharedFloat32Array):
(WebCore::toPossiblySharedFloat64Array):
(WebCore::toUnsharedInt8Array):
(WebCore::toUnsharedInt16Array):
(WebCore::toUnsharedInt32Array):
(WebCore::toUnsharedUint8Array):
(WebCore::toUnsharedUint8ClampedArray):
(WebCore::toUnsharedUint16Array):
(WebCore::toUnsharedUint32Array):
(WebCore::toUnsharedFloat32Array):
(WebCore::toUnsharedFloat64Array):
(WebCore::toRefNativeArray):
* bindings/js/JSDOMConstructor.h:
(WebCore::JSDOMConstructorNotConstructable<JSClass>::finishCreation):
(WebCore::JSDOMConstructor<JSClass>::finishCreation):
(WebCore::JSDOMNamedConstructor<JSClass>::finishCreation):
(WebCore::JSBuiltinConstructor<JSClass>::finishCreation):
* bindings/js/JSDOMConvert.h:
(WebCore::Converter<IDLInterface<T>>::convert):
(WebCore::Converter<IDLXPathNSResolver<T>>::convert):
* bindings/js/JSDOMGlobalObject.cpp:
(WebCore::JSDOMGlobalObject::finishCreation):
(WebCore::JSDOMGlobalObject::scriptExecutionContext):
* bindings/js/JSDOMIterator.h:
(WebCore::IteratorTraits>::next):
(WebCore::IteratorTraits>::finishCreation):
* bindings/js/JSDOMWindowBase.cpp:
(WebCore::JSDOMWindowBase::finishCreation):
(WebCore::toJSDOMWindow):
* bindings/js/JSDOMWindowBase.h:
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::jsDOMWindowWebKit):
(WebCore::JSDOMWindow::toWrapped):
* bindings/js/JSDOMWindowShell.cpp:
(WebCore::JSDOMWindowShell::finishCreation):
(WebCore::JSDOMWindowShell::toWrapped):
* bindings/js/JSDOMWindowShell.h:
* bindings/js/JSDocumentCustom.cpp:
(WebCore::cachedDocumentWrapper):
(WebCore::JSDocument::createTouchList):
* bindings/js/JSDynamicDowncast.h:
(WebCore::JSDynamicCastTrait::cast):
(WebCore::JSDynamicCastTrait<JSNode>::cast):
(WebCore::JSDynamicCastTrait<JSElement>::cast):
(WebCore::JSDynamicCastTrait<JSDocument>::cast):
(WebCore::JSDynamicCastTrait<JSEvent>::cast):
(WebCore::jsDynamicDowncast):
* bindings/js/JSEventListener.cpp:
(WebCore::JSEventListener::handleEvent):
* bindings/js/JSEventTargetCustom.cpp:
(WebCore::JSEventTarget::toWrapped):
(WebCore::jsEventTargetCast):
* bindings/js/JSEventTargetCustom.h:
(WebCore::BindingCaller<JSEventTarget>::callOperation):
* bindings/js/JSExceptionBase.cpp:
(WebCore::toExceptionBase):
* bindings/js/JSExceptionBase.h:
* bindings/js/JSInspectorFrontendHostCustom.cpp:
(WebCore::populateContextMenuItems):
(WebCore::JSInspectorFrontendHost::showContextMenu):
* bindings/js/JSNodeCustom.cpp:
(WebCore::JSNode::insertBefore):
(WebCore::JSNode::replaceChild):
(WebCore::JSNode::removeChild):
(WebCore::JSNode::appendChild):
(WebCore::JSNode::pushEventHandlerScope):
* bindings/js/JSPluginElementFunctions.cpp:
(WebCore::pluginElementPropertyGetter):
* bindings/js/JSReadableStreamPrivateConstructors.cpp:
(WebCore::constructJSReadableStreamDefaultReader):
* bindings/js/JSReadableStreamSourceCustom.cpp:
(WebCore::startReadableStream):
(WebCore::JSReadableStreamSource::start):
(WebCore::pullReadableStream):
* bindings/js/JSSubtleCryptoCustom.cpp:
(WebCore::toCryptoKey):
(WebCore::jsSubtleCryptoFunctionEncryptPromise):
(WebCore::jsSubtleCryptoFunctionDecryptPromise):
(WebCore::jsSubtleCryptoFunctionSignPromise):
(WebCore::jsSubtleCryptoFunctionVerifyPromise):
(WebCore::jsSubtleCryptoFunctionDigestPromise):
(WebCore::jsSubtleCryptoFunctionWrapKeyPromise):
(WebCore::jsSubtleCryptoFunctionUnwrapKeyPromise):
* bindings/js/JSTrackCustom.cpp:
(WebCore::toTrack): Deleted.
* bindings/js/JSTrackCustom.h:
* bindings/js/JSWebKitSubtleCryptoCustom.cpp:
(WebCore::JSWebKitSubtleCrypto::encrypt):
(WebCore::JSWebKitSubtleCrypto::decrypt):
(WebCore::JSWebKitSubtleCrypto::sign):
(WebCore::JSWebKitSubtleCrypto::verify):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::wrapKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):
* bindings/js/JSWorkerGlobalScopeBase.cpp:
(WebCore::JSWorkerGlobalScopeBase::finishCreation):
(WebCore::toJSDedicatedWorkerGlobalScope):
(WebCore::toJSWorkerGlobalScope):
* bindings/js/JSWorkerGlobalScopeBase.h:
* bindings/js/JSXMLHttpRequestCustom.cpp:
(WebCore::JSXMLHttpRequest::send):
* bindings/js/JSXPathNSResolverCustom.cpp:
(WebCore::JSXPathNSResolver::toWrapped):
* bindings/js/ScriptController.cpp:
(WebCore::ScriptController::setupModuleScriptHandlers):
* bindings/js/ScriptModuleLoader.cpp:
(WebCore::ScriptModuleLoader::fetch):
(WebCore::ScriptModuleLoader::evaluate):
* bindings/js/ScriptState.cpp:
(WebCore::domWindowFromExecState):
(WebCore::scriptExecutionContextFromExecState):
* bindings/js/SerializedScriptValue.cpp:
(WebCore::CloneSerializer::isArray):
(WebCore::CloneSerializer::isMap):
(WebCore::CloneSerializer::isSet):
(WebCore::CloneSerializer::dumpArrayBufferView):
(WebCore::CloneSerializer::dumpIfTerminal):
(WebCore::CloneSerializer::serialize):
(WebCore::CloneDeserializer::CloneDeserializer):
(WebCore::CloneDeserializer::readArrayBufferView):
(WebCore::CloneDeserializer::readTerminal):
(WebCore::transferArrayBuffers):
(WebCore::SerializedScriptValue::create):
* bindings/js/StructuredClone.cpp:
(WebCore::structuredCloneArrayBuffer):
(WebCore::structuredCloneArrayBufferView):
* bindings/js/WorkerScriptController.cpp:
(WebCore::WorkerScriptController::evaluate):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateHeader):
(GenerateOverloadedFunctionOrConstructor):
(GenerateImplementation):
* bindings/scripts/test/JS/JSInterfaceName.cpp:
(WebCore::JSInterfaceName::finishCreation):
(WebCore::jsInterfaceNameConstructor):
(WebCore::setJSInterfaceNameConstructor):
(WebCore::JSInterfaceName::toWrapped):
* bindings/scripts/test/JS/JSInterfaceName.h:
* bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
(WebCore::JSTestActiveDOMObject::finishCreation):
(WebCore::BindingCaller<JSTestActiveDOMObject>::castForAttribute):
(WebCore::BindingCaller<JSTestActiveDOMObject>::castForOperation):
(WebCore::jsTestActiveDOMObjectConstructor):
(WebCore::setJSTestActiveDOMObjectConstructor):
(WebCore::JSTestActiveDOMObject::toWrapped):
* bindings/scripts/test/JS/JSTestActiveDOMObject.h:
* bindings/scripts/test/JS/JSTestCEReactions.cpp:
(WebCore::JSTestCEReactions::finishCreation):
(WebCore::BindingCaller<JSTestCEReactions>::castForAttribute):
(WebCore::BindingCaller<JSTestCEReactions>::castForOperation):
(WebCore::jsTestCEReactionsConstructor):
(WebCore::setJSTestCEReactionsConstructor):
(WebCore::JSTestCEReactions::toWrapped):
* bindings/scripts/test/JS/JSTestCEReactions.h:
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
(WebCore::JSTestCEReactionsStringifier::finishCreation):
(WebCore::BindingCaller<JSTestCEReactionsStringifier>::castForAttribute):
(WebCore::BindingCaller<JSTestCEReactionsStringifier>::castForOperation):
(WebCore::jsTestCEReactionsStringifierConstructor):
(WebCore::setJSTestCEReactionsStringifierConstructor):
(WebCore::JSTestCEReactionsStringifier::toWrapped):
* bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
(WebCore::JSTestClassWithJSBuiltinConstructor::finishCreation):
(WebCore::jsTestClassWithJSBuiltinConstructorConstructor):
(WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):
(WebCore::JSTestClassWithJSBuiltinConstructor::toWrapped):
* bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::finishCreation):
(WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):
(WebCore::JSTestCustomConstructorWithNoInterfaceObject::toWrapped):
* bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
* bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
(WebCore::JSTestCustomNamedGetter::finishCreation):
(WebCore::BindingCaller<JSTestCustomNamedGetter>::castForOperation):
(WebCore::jsTestCustomNamedGetterConstructor):
(WebCore::setJSTestCustomNamedGetterConstructor):
(WebCore::JSTestCustomNamedGetter::toWrapped):
* bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
* bindings/scripts/test/JS/JSTestDOMJIT.cpp:
(WebCore::JSTestDOMJIT::finishCreation):
(WebCore::BindingCaller<JSTestDOMJIT>::castForAttribute):
(WebCore::BindingCaller<JSTestDOMJIT>::castForOperation):
(WebCore::jsTestDOMJITConstructor):
(WebCore::setJSTestDOMJITConstructor):
* bindings/scripts/test/JS/JSTestEventConstructor.cpp:
(WebCore::JSTestEventConstructor::finishCreation):
(WebCore::BindingCaller<JSTestEventConstructor>::castForAttribute):
(WebCore::jsTestEventConstructorConstructor):
(WebCore::setJSTestEventConstructorConstructor):
* bindings/scripts/test/JS/JSTestEventTarget.cpp:
(WebCore::JSTestEventTarget::finishCreation):
(WebCore::BindingCaller<JSTestEventTarget>::castForOperation):
(WebCore::jsTestEventTargetConstructor):
(WebCore::setJSTestEventTargetConstructor):
(WebCore::JSTestEventTarget::toWrapped):
* bindings/scripts/test/JS/JSTestEventTarget.h:
* bindings/scripts/test/JS/JSTestException.cpp:
(WebCore::JSTestException::finishCreation):
(WebCore::BindingCaller<JSTestException>::castForAttribute):
(WebCore::jsTestExceptionConstructor):
(WebCore::setJSTestExceptionConstructor):
(WebCore::JSTestException::toWrapped):
* bindings/scripts/test/JS/JSTestException.h:
* bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
(WebCore::JSTestGenerateIsReachable::finishCreation):
(WebCore::jsTestGenerateIsReachableConstructor):
(WebCore::setJSTestGenerateIsReachableConstructor):
(WebCore::JSTestGenerateIsReachable::toWrapped):
* bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
* bindings/scripts/test/JS/JSTestGlobalObject.cpp:
(WebCore::JSTestGlobalObject::finishCreation):
(WebCore::BindingCaller<JSTestGlobalObject>::castForAttribute):
(WebCore::BindingCaller<JSTestGlobalObject>::castForOperation):
(WebCore::jsTestGlobalObjectConstructor):
(WebCore::setJSTestGlobalObjectConstructor):
(WebCore::JSTestGlobalObject::toWrapped):
* bindings/scripts/test/JS/JSTestGlobalObject.h:
* bindings/scripts/test/JS/JSTestInterface.cpp:
(WebCore::JSTestInterface::finishCreation):
(WebCore::BindingCaller<JSTestInterface>::castForAttribute):
(WebCore::BindingCaller<JSTestInterface>::castForOperation):
(WebCore::jsTestInterfaceConstructor):
(WebCore::setJSTestInterfaceConstructor):
(WebCore::JSTestInterface::toWrapped):
* bindings/scripts/test/JS/JSTestInterface.h:
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
(WebCore::JSTestInterfaceLeadingUnderscore::finishCreation):
(WebCore::BindingCaller<JSTestInterfaceLeadingUnderscore>::castForAttribute):
(WebCore::jsTestInterfaceLeadingUnderscoreConstructor):
(WebCore::setJSTestInterfaceLeadingUnderscoreConstructor):
(WebCore::JSTestInterfaceLeadingUnderscore::toWrapped):
* bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
* bindings/scripts/test/JS/JSTestIterable.cpp:
(WebCore::JSTestIterable::finishCreation):
(WebCore::BindingCaller<JSTestIterable>::castForOperation):
(WebCore::jsTestIterableConstructor):
(WebCore::setJSTestIterableConstructor):
(WebCore::JSTestIterable::toWrapped):
* bindings/scripts/test/JS/JSTestIterable.h:
* bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
(WebCore::JSTestJSBuiltinConstructor::finishCreation):
(WebCore::BindingCaller<JSTestJSBuiltinConstructor>::castForAttribute):
(WebCore::BindingCaller<JSTestJSBuiltinConstructor>::castForOperation):
(WebCore::jsTestJSBuiltinConstructorConstructor):
(WebCore::setJSTestJSBuiltinConstructorConstructor):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
(WebCore::JSTestMediaQueryListListener::finishCreation):
(WebCore::BindingCaller<JSTestMediaQueryListListener>::castForOperation):
(WebCore::jsTestMediaQueryListListenerConstructor):
(WebCore::setJSTestMediaQueryListListenerConstructor):
(WebCore::JSTestMediaQueryListListener::toWrapped):
* bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
* bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
(WebCore::JSTestNamedConstructor::finishCreation):
(WebCore::jsTestNamedConstructorConstructor):
(WebCore::setJSTestNamedConstructorConstructor):
(WebCore::JSTestNamedConstructor::toWrapped):
* bindings/scripts/test/JS/JSTestNamedConstructor.h:
* bindings/scripts/test/JS/JSTestNode.cpp:
(WebCore::JSTestNode::finishCreation):
(WebCore::BindingCaller<JSTestNode>::castForAttribute):
(WebCore::BindingCaller<JSTestNode>::castForOperation):
(WebCore::jsTestNodeConstructor):
(WebCore::setJSTestNodeConstructor):
* bindings/scripts/test/JS/JSTestObj.cpp:
(WebCore::JSTestObj::finishCreation):
(WebCore::BindingCaller<JSTestObj>::castForAttribute):
(WebCore::BindingCaller<JSTestObj>::castForOperation):
(WebCore::jsTestObjConstructor):
(WebCore::setJSTestObjConstructor):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethod):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions):
(WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion):
(WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter):
(WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction):
(WebCore::JSTestObj::toWrapped):
* bindings/scripts/test/JS/JSTestObj.h:
* bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
(WebCore::JSTestOverloadedConstructorsConstructor::construct):
(WebCore::JSTestOverloadedConstructors::finishCreation):
(WebCore::jsTestOverloadedConstructorsConstructor):
(WebCore::setJSTestOverloadedConstructorsConstructor):
(WebCore::JSTestOverloadedConstructors::toWrapped):
* bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
(WebCore::JSTestOverloadedConstructorsWithSequence::finishCreation):
(WebCore::jsTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):
(WebCore::JSTestOverloadedConstructorsWithSequence::toWrapped):
* bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
* bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
(WebCore::JSTestOverrideBuiltins::finishCreation):
(WebCore::BindingCaller<JSTestOverrideBuiltins>::castForOperation):
(WebCore::jsTestOverrideBuiltinsConstructor):
(WebCore::setJSTestOverrideBuiltinsConstructor):
(WebCore::JSTestOverrideBuiltins::toWrapped):
* bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
* bindings/scripts/test/JS/JSTestSerialization.cpp:
(WebCore::JSTestSerialization::finishCreation):
(WebCore::BindingCaller<JSTestSerialization>::castForAttribute):
(WebCore::BindingCaller<JSTestSerialization>::castForOperation):
(WebCore::jsTestSerializationConstructor):
(WebCore::setJSTestSerializationConstructor):
(WebCore::JSTestSerialization::toWrapped):
* bindings/scripts/test/JS/JSTestSerialization.h:
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
(WebCore::JSTestSerializedScriptValueInterface::finishCreation):
(WebCore::BindingCaller<JSTestSerializedScriptValueInterface>::castForAttribute):
(WebCore::BindingCaller<JSTestSerializedScriptValueInterface>::castForOperation):
(WebCore::jsTestSerializedScriptValueInterfaceConstructor):
(WebCore::setJSTestSerializedScriptValueInterfaceConstructor):
(WebCore::JSTestSerializedScriptValueInterface::toWrapped):
* bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
* bindings/scripts/test/JS/JSTestTypedefs.cpp:
(WebCore::JSTestTypedefs::finishCreation):
(WebCore::BindingCaller<JSTestTypedefs>::castForAttribute):
(WebCore::BindingCaller<JSTestTypedefs>::castForOperation):
(WebCore::jsTestTypedefsConstructor):
(WebCore::setJSTestTypedefsConstructor):
(WebCore::JSTestTypedefs::toWrapped):
* bindings/scripts/test/JS/JSTestTypedefs.h:
* bridge/c/CRuntimeObject.cpp:
(JSC::Bindings::CRuntimeObject::finishCreation):
* bridge/c/c_instance.cpp:
(JSC::Bindings::CRuntimeMethod::finishCreation):
(JSC::Bindings::CInstance::invokeMethod):
* bridge/c/c_utility.cpp:
(JSC::Bindings::convertValueToNPVariant):
* bridge/objc/ObjCRuntimeObject.mm:
(JSC::Bindings::ObjCRuntimeObject::finishCreation):
* bridge/objc/WebScriptObject.mm:
(-[WebScriptObject setValue:forKey:]):
(+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):
* bridge/objc/objc_instance.mm:
(ObjCRuntimeMethod::finishCreation):
(ObjcInstance::invokeMethod):
* bridge/objc/objc_runtime.mm:
(JSC::Bindings::ObjcFallbackObjectImp::finishCreation):
(JSC::Bindings::callObjCFallbackObject):
* bridge/runtime_array.cpp:
(JSC::RuntimeArray::finishCreation):
(JSC::RuntimeArray::lengthGetter):
* bridge/runtime_method.cpp:
(JSC::RuntimeMethod::finishCreation):
(JSC::RuntimeMethod::lengthGetter):
(JSC::callRuntimeMethod):
* bridge/runtime_object.cpp:
(JSC::Bindings::RuntimeObject::finishCreation):
(JSC::Bindings::callRuntimeObject):
(JSC::Bindings::callRuntimeConstructor):
* css/FontFace.cpp:
(WebCore::FontFace::create):
* html/HTMLMediaElement.cpp:
(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::updateCaptionContainer):
(WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
* inspector/InspectorController.cpp:
(WebCore::InspectorController::canAccessInspectedScriptState):
* inspector/InspectorDOMAgent.cpp:
(WebCore::InspectorDOMAgent::buildObjectForEventListener):
(WebCore::InspectorDOMAgent::scriptValueAsNode):
* inspector/WebInjectedScriptHost.cpp:
(WebCore::WebInjectedScriptHost::subtype):
(WebCore::WebInjectedScriptHost::isHTMLAllCollection):
* inspector/WebInjectedScriptHost.h:
Source/WebKit/mac:
* DOM/DOM.mm:
(+[DOMNode _nodeFromJSWrapper:]):
* DOM/DOMUtility.mm:
(createDOMWrapper):
* DOM/WebDOMOperations.mm:
* Plugins/Hosted/NetscapePluginInstanceProxy.mm:
(WebKit::getObjectID):
(WebKit::NetscapePluginInstanceProxy::retainLocalObject):
(WebKit::NetscapePluginInstanceProxy::releaseLocalObject):
* Plugins/Hosted/ProxyInstance.mm:
(WebKit::ProxyRuntimeMethod::finishCreation):
(WebKit::ProxyInstance::invokeMethod):
* Plugins/Hosted/ProxyRuntimeObject.mm:
(WebKit::ProxyRuntimeObject::finishCreation):
* WebView/WebFrame.mm:
(-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):
* WebView/WebView.mm:
(+[WebView _reportException:inContext:]):
(aeDescFromJSValue):
(-[WebView _notificationIDForTesting:]):
Source/WebKit/win:
* WebFrame.cpp:
(WebFrame::stringByEvaluatingJavaScriptInScriptWorld):
* WebView.cpp:
(WebView::elementFromJS):
Source/WebKit2:
* WebProcess/Automation/WebAutomationSessionProxy.cpp:
(WebKit::WebAutomationSessionProxy::elementForNodeHandle):
* WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
(WebKit::InjectedBundleNodeHandle::getOrCreate):
* WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
(WebKit::InjectedBundleRangeHandle::getOrCreate):
* WebProcess/InjectedBundle/InjectedBundle.cpp:
(WebKit::InjectedBundle::reportException):
(WebKit::InjectedBundle::webNotificationID):
(WebKit::InjectedBundle::createWebDataFromUint8Array):
* WebProcess/Plugins/Netscape/JSNPMethod.cpp:
(WebKit::JSNPMethod::finishCreation):
(WebKit::callMethod):
* WebProcess/Plugins/Netscape/JSNPObject.cpp:
(WebKit::JSNPObject::finishCreation):
(WebKit::callNPJSObject):
(WebKit::constructWithConstructor):
* WebProcess/Plugins/Netscape/NPJSObject.cpp:
(WebKit::NPJSObject::create):
* WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
(WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
* WebProcess/WebPage/WebFrame.cpp:
(WebKit::WebFrame::frameForContext):
(WebKit::WebFrame::counterValue):
Tools:
* DumpRenderTree/TestRunner.cpp:
(setAudioResultCallback):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreAPIJSCallbackConstructorcpp">trunk/Source/JavaScriptCore/API/JSCallbackConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSCallbackFunctioncpp">trunk/Source/JavaScriptCore/API/JSCallbackFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSCallbackObjectFunctionsh">trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSObjectRefcpp">trunk/Source/JavaScriptCore/API/JSObjectRef.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSTypedArraycpp">trunk/Source/JavaScriptCore/API/JSTypedArray.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSValuemm">trunk/Source/JavaScriptCore/API/JSValue.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSValueRefcpp">trunk/Source/JavaScriptCore/API/JSValueRef.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSWeakObjectMapRefPrivatecpp">trunk/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIJSWrapperMapmm">trunk/Source/JavaScriptCore/API/JSWrapperMap.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIObjCCallbackFunctionh">trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreAPIObjCCallbackFunctionmm">trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm</a></li>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCorebindingsScriptFunctionCallcpp">trunk/Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCallVarianth">trunk/Source/JavaScriptCore/bytecode/CallVariant.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeCodeBlockcpp">trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeObjectAllocationProfileh">trunk/Source/JavaScriptCore/bytecode/ObjectAllocationProfile.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeObjectPropertyConditioncpp">trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeObjectPropertyConditionh">trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePropertyConditioncpp">trunk/Source/JavaScriptCore/bytecode/PropertyCondition.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodePropertyConditionh">trunk/Source/JavaScriptCore/bytecode/PropertyCondition.h</a></li>
<li><a href="#trunkSourceJavaScriptCorebytecodeSpeculatedTypecpp">trunk/Source/JavaScriptCore/bytecode/SpeculatedType.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggercpp">trunk/Source/JavaScriptCore/debugger/Debugger.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggerCallFramecpp">trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredebuggerDebuggerScopecpp">trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGAbstractInterpreterh">trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGAbstractInterpreterInlinesh">trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp">trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGConstantFoldingPhasecpp">trunk/Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGDesiredWeakReferencescpp">trunk/Source/JavaScriptCore/dfg/DFGDesiredWeakReferences.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGFixupPhasecpp">trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGFrozenValueh">trunk/Source/JavaScriptCore/dfg/DFGFrozenValue.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGGraphcpp">trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGLazyJSValuecpp">trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGLazyJSValueh">trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGNodecpp">trunk/Source/JavaScriptCore/dfg/DFGNode.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGNodeh">trunk/Source/JavaScriptCore/dfg/DFGNode.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGOperationscpp">trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSafeToExecuteh">trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJITcpp">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGSpeculativeJITh">trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h</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="#trunkSourceJavaScriptCoredfgDFGStrengthReductionPhasecpp">trunk/Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp">trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreftlFTLOperationscpp">trunk/Source/JavaScriptCore/ftl/FTLOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapCodeBlockSetcpp">trunk/Source/JavaScriptCore/heap/CodeBlockSet.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapCodeBlockSeth">trunk/Source/JavaScriptCore/heap/CodeBlockSet.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapGCAssertionsh">trunk/Source/JavaScriptCore/heap/GCAssertions.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapHeapcpp">trunk/Source/JavaScriptCore/heap/Heap.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapHeapSnapshotBuildercpp">trunk/Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreheapSlotVisitorcpp">trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorInjectedScriptHosth">trunk/Source/JavaScriptCore/inspector/InjectedScriptHost.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllercpp">trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostcpp">trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostPrototypecpp">trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSJavaScriptCallFramecpp">trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSJavaScriptCallFrameh">trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSJavaScriptCallFramePrototypecpp">trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFramePrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorScriptArgumentscpp">trunk/Source/JavaScriptCore/inspector/ScriptArguments.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectoragentsInspectorHeapAgentcpp">trunk/Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterInterpretercpp">trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterShadowChickencpp">trunk/Source/JavaScriptCore/interpreter/ShadowChicken.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinterpreterStackVisitorcpp">trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITCodecpp">trunk/Source/JavaScriptCore/jit/JITCode.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitJITOperationscpp">trunk/Source/JavaScriptCore/jit/JITOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejitRepatchcpp">trunk/Source/JavaScriptCore/jit/Repatch.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorejsccpp">trunk/Source/JavaScriptCore/jsc.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorellintLLIntSlowPathscpp">trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeAbstractModuleRecordcpp">trunk/Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArrayBuffercpp">trunk/Source/JavaScriptCore/runtime/ArrayBuffer.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArrayBufferh">trunk/Source/JavaScriptCore/runtime/ArrayBuffer.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArrayConstructorcpp">trunk/Source/JavaScriptCore/runtime/ArrayConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArrayConstructorh">trunk/Source/JavaScriptCore/runtime/ArrayConstructor.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArrayIteratorPrototypecpp">trunk/Source/JavaScriptCore/runtime/ArrayIteratorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArrayPrototypecpp">trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeAsyncFunctionPrototypecpp">trunk/Source/JavaScriptCore/runtime/AsyncFunctionPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeAtomicsObjectcpp">trunk/Source/JavaScriptCore/runtime/AtomicsObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeBooleanObjectcpp">trunk/Source/JavaScriptCore/runtime/BooleanObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeBooleanObjecth">trunk/Source/JavaScriptCore/runtime/BooleanObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeBooleanPrototypecpp">trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeConsoleObjectcpp">trunk/Source/JavaScriptCore/runtime/ConsoleObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeDateConstructorcpp">trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeDateInstancecpp">trunk/Source/JavaScriptCore/runtime/DateInstance.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeDateInstanceh">trunk/Source/JavaScriptCore/runtime/DateInstance.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeDatePrototypecpp">trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeErrorInstancecpp">trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeErrorPrototypecpp">trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExceptionHelperscpp">trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExceptionHelpersh">trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeExecutableBasecpp">trunk/Source/JavaScriptCore/runtime/ExecutableBase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionPrototypecpp">trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorFunctionPrototypecpp">trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGeneratorPrototypecpp">trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGetterSetterh">trunk/Source/JavaScriptCore/runtime/GetterSetter.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeInspectorInstrumentationObjectcpp">trunk/Source/JavaScriptCore/runtime/InspectorInstrumentationObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeInternalFunctioncpp">trunk/Source/JavaScriptCore/runtime/InternalFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeInternalFunctionh">trunk/Source/JavaScriptCore/runtime/InternalFunction.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlCollatorcpp">trunk/Source/JavaScriptCore/runtime/IntlCollator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlCollatorPrototypecpp">trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatcpp">trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatPrototypecpp">trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlNumberFormatcpp">trunk/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlNumberFormatPrototypecpp">trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlObjectcpp">trunk/Source/JavaScriptCore/runtime/IntlObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlObjectInlinesh">trunk/Source/JavaScriptCore/runtime/IntlObjectInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIteratorPrototypecpp">trunk/Source/JavaScriptCore/runtime/IteratorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArrayh">trunk/Source/JavaScriptCore/runtime/JSArray.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArrayBufferh">trunk/Source/JavaScriptCore/runtime/JSArrayBuffer.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArrayBufferConstructorcpp">trunk/Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArrayBufferPrototypecpp">trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArrayBufferViewh">trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArrayBufferViewInlinesh">trunk/Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSBoundFunctioncpp">trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCJSValuecpp">trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCJSValueh">trunk/Source/JavaScriptCore/runtime/JSCJSValue.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCJSValueInlinesh">trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCalleecpp">trunk/Source/JavaScriptCore/runtime/JSCallee.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCellcpp">trunk/Source/JavaScriptCore/runtime/JSCell.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCellh">trunk/Source/JavaScriptCore/runtime/JSCell.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCellInlinesh">trunk/Source/JavaScriptCore/runtime/JSCellInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSCustomGetterSetterFunctioncpp">trunk/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSDataViewPrototypecpp">trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSFunctioncpp">trunk/Source/JavaScriptCore/runtime/JSFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewh">trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewConstructorInlinesh">trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewInlinesh">trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewPrototypeFunctionsh">trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewPrototypeInlinesh">trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjectFunctionscpp">trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSInternalPromiseDeferredcpp">trunk/Source/JavaScriptCore/runtime/JSInternalPromiseDeferred.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSLexicalEnvironmenth">trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSModuleLoadercpp">trunk/Source/JavaScriptCore/runtime/JSModuleLoader.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSModuleNamespaceObjectcpp">trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSModuleRecordcpp">trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSNativeStdFunctioncpp">trunk/Source/JavaScriptCore/runtime/JSNativeStdFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSONObjectcpp">trunk/Source/JavaScriptCore/runtime/JSONObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjectcpp">trunk/Source/JavaScriptCore/runtime/JSObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSObjecth">trunk/Source/JavaScriptCore/runtime/JSObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPromiseDeferredcpp">trunk/Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPropertyNameIteratorcpp">trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSScopecpp">trunk/Source/JavaScriptCore/runtime/JSScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSScopeh">trunk/Source/JavaScriptCore/runtime/JSScope.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSStringcpp">trunk/Source/JavaScriptCore/runtime/JSString.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSStringIteratorcpp">trunk/Source/JavaScriptCore/runtime/JSStringIterator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSTypedArrayViewPrototypecpp">trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeLazyClassStructurecpp">trunk/Source/JavaScriptCore/runtime/LazyClassStructure.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeLookuph">trunk/Source/JavaScriptCore/runtime/Lookup.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeMapConstructorcpp">trunk/Source/JavaScriptCore/runtime/MapConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeMapIteratorPrototypecpp">trunk/Source/JavaScriptCore/runtime/MapIteratorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeMapPrototypecpp">trunk/Source/JavaScriptCore/runtime/MapPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeMathObjectcpp">trunk/Source/JavaScriptCore/runtime/MathObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeModuleLoaderPrototypecpp">trunk/Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNativeErrorConstructorcpp">trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNumberConstructorcpp">trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNumberObjectcpp">trunk/Source/JavaScriptCore/runtime/NumberObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeNumberPrototypecpp">trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeObjectConstructorcpp">trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeObjectPrototypecpp">trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeProxyObjectcpp">trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeReflectObjectcpp">trunk/Source/JavaScriptCore/runtime/ReflectObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpConstructorcpp">trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpConstructorh">trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpObjectcpp">trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpObjecth">trunk/Source/JavaScriptCore/runtime/RegExpObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeRegExpPrototypecpp">trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSamplingProfilercpp">trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeScriptExecutablecpp">trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSetConstructorcpp">trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSetIteratorPrototypecpp">trunk/Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSetPrototypecpp">trunk/Source/JavaScriptCore/runtime/SetPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStackFramecpp">trunk/Source/JavaScriptCore/runtime/StackFrame.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringIteratorPrototypecpp">trunk/Source/JavaScriptCore/runtime/StringIteratorPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringObjectcpp">trunk/Source/JavaScriptCore/runtime/StringObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringObjecth">trunk/Source/JavaScriptCore/runtime/StringObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringPrototypecpp">trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStructureRareDatacpp">trunk/Source/JavaScriptCore/runtime/StructureRareData.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolcpp">trunk/Source/JavaScriptCore/runtime/Symbol.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolConstructorcpp">trunk/Source/JavaScriptCore/runtime/SymbolConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolObjectcpp">trunk/Source/JavaScriptCore/runtime/SymbolObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolPrototypecpp">trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTestRunnerUtilscpp">trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeThrowScopecpp">trunk/Source/JavaScriptCore/runtime/ThrowScope.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeVMcpp">trunk/Source/JavaScriptCore/runtime/VM.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakMapConstructorcpp">trunk/Source/JavaScriptCore/runtime/WeakMapConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakMapPrototypecpp">trunk/Source/JavaScriptCore/runtime/WeakMapPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakSetConstructorcpp">trunk/Source/JavaScriptCore/runtime/WeakSetConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakSetPrototypecpp">trunk/Source/JavaScriptCore/runtime/WeakSetPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsJSDollarVMPrototypecpp">trunk/Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmJSWebAssemblycpp">trunk/Source/JavaScriptCore/wasm/JSWebAssembly.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsJSWebAssemblyHelpersh">trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsJSWebAssemblyInstancecpp">trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsJSWebAssemblyMemorycpp">trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsJSWebAssemblyMemoryh">trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsJSWebAssemblyModulecpp">trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsJSWebAssemblyTablecpp">trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyFunctioncpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyInstanceConstructorcpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstanceConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyMemoryPrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyModulePrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyModuleRecordcpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCorewasmjsWebAssemblyTablePrototypecpp">trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCoreModulesfetchFetchBodycpp">trunk/Source/WebCore/Modules/fetch/FetchBody.cpp</a></li>
<li><a href="#trunkSourceWebCoreModulespluginsQuickTimePluginReplacementmm">trunk/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.mm</a></li>
<li><a href="#trunkSourceWebCorebindingsjsIDBBindingUtilitiescpp">trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCommandLineAPIHostCustomcpp">trunk/Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCryptoAlgorithmDictionarycpp">trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCryptoOperationDatacpp">trunk/Source/WebCore/bindings/js/JSCryptoOperationData.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCustomElementInterfacecpp">trunk/Source/WebCore/bindings/js/JSCustomElementInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingcpp">trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMBindingh">trunk/Source/WebCore/bindings/js/JSDOMBinding.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMConstructorh">trunk/Source/WebCore/bindings/js/JSDOMConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMConverth">trunk/Source/WebCore/bindings/js/JSDOMConvert.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMGlobalObjectcpp">trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMIteratorh">trunk/Source/WebCore/bindings/js/JSDOMIterator.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowBasecpp">trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowBaseh">trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowShellcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowShellh">trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDynamicDowncasth">trunk/Source/WebCore/bindings/js/JSDynamicDowncast.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventListenercpp">trunk/Source/WebCore/bindings/js/JSEventListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventTargetCustomcpp">trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSEventTargetCustomh">trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSExceptionBasecpp">trunk/Source/WebCore/bindings/js/JSExceptionBase.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSExceptionBaseh">trunk/Source/WebCore/bindings/js/JSExceptionBase.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSInspectorFrontendHostCustomcpp">trunk/Source/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeCustomcpp">trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp">trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSReadableStreamPrivateConstructorscpp">trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSReadableStreamSourceCustomcpp">trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSTrackCustomh">trunk/Source/WebCore/bindings/js/JSTrackCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerGlobalScopeBasecpp">trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerGlobalScopeBaseh">trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSXMLHttpRequestCustomcpp">trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSXPathNSResolverCustomcpp">trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptControllercpp">trunk/Source/WebCore/bindings/js/ScriptController.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptModuleLoadercpp">trunk/Source/WebCore/bindings/js/ScriptModuleLoader.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScriptStatecpp">trunk/Source/WebCore/bindings/js/ScriptState.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsSerializedScriptValuecpp">trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsStructuredClonecpp">trunk/Source/WebCore/bindings/js/StructuredClone.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsWorkerScriptControllercpp">trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSInterfaceNameh">trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifierh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGetterh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestEventTargeth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestExceptionh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachableh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjectcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjecth">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscoreh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestIterableh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenerh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestObjh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequenceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializationh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfaceh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptstestJSJSTestTypedefsh">trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h</a></li>
<li><a href="#trunkSourceWebCorebridgecCRuntimeObjectcpp">trunk/Source/WebCore/bridge/c/CRuntimeObject.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgecc_instancecpp">trunk/Source/WebCore/bridge/c/c_instance.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgecc_utilitycpp">trunk/Source/WebCore/bridge/c/c_utility.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeobjcObjCRuntimeObjectmm">trunk/Source/WebCore/bridge/objc/ObjCRuntimeObject.mm</a></li>
<li><a href="#trunkSourceWebCorebridgeobjcWebScriptObjectmm">trunk/Source/WebCore/bridge/objc/WebScriptObject.mm</a></li>
<li><a href="#trunkSourceWebCorebridgeobjcobjc_instancemm">trunk/Source/WebCore/bridge/objc/objc_instance.mm</a></li>
<li><a href="#trunkSourceWebCorebridgeobjcobjc_runtimemm">trunk/Source/WebCore/bridge/objc/objc_runtime.mm</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_arraycpp">trunk/Source/WebCore/bridge/runtime_array.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_methodcpp">trunk/Source/WebCore/bridge/runtime_method.cpp</a></li>
<li><a href="#trunkSourceWebCorebridgeruntime_objectcpp">trunk/Source/WebCore/bridge/runtime_object.cpp</a></li>
<li><a href="#trunkSourceWebCorecssFontFacecpp">trunk/Source/WebCore/css/FontFace.cpp</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorControllercpp">trunk/Source/WebCore/inspector/InspectorController.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorInspectorDOMAgentcpp">trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWebInjectedScriptHostcpp">trunk/Source/WebCore/inspector/WebInjectedScriptHost.cpp</a></li>
<li><a href="#trunkSourceWebCoreinspectorWebInjectedScriptHosth">trunk/Source/WebCore/inspector/WebInjectedScriptHost.h</a></li>
<li><a href="#trunkSourceWebKitmacChangeLog">trunk/Source/WebKit/mac/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMmm">trunk/Source/WebKit/mac/DOM/DOM.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMDOMUtilitymm">trunk/Source/WebKit/mac/DOM/DOMUtility.mm</a></li>
<li><a href="#trunkSourceWebKitmacDOMWebDOMOperationsmm">trunk/Source/WebKit/mac/DOM/WebDOMOperations.mm</a></li>
<li><a href="#trunkSourceWebKitmacPluginsHostedNetscapePluginInstanceProxymm">trunk/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm</a></li>
<li><a href="#trunkSourceWebKitmacPluginsHostedProxyInstancemm">trunk/Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm</a></li>
<li><a href="#trunkSourceWebKitmacPluginsHostedProxyRuntimeObjectmm">trunk/Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebFramemm">trunk/Source/WebKit/mac/WebView/WebFrame.mm</a></li>
<li><a href="#trunkSourceWebKitmacWebViewWebViewmm">trunk/Source/WebKit/mac/WebView/WebView.mm</a></li>
<li><a href="#trunkSourceWebKitwinChangeLog">trunk/Source/WebKit/win/ChangeLog</a></li>
<li><a href="#trunkSourceWebKitwinWebFramecpp">trunk/Source/WebKit/win/WebFrame.cpp</a></li>
<li><a href="#trunkSourceWebKitwinWebViewcpp">trunk/Source/WebKit/win/WebView.cpp</a></li>
<li><a href="#trunkSourceWebKit2ChangeLog">trunk/Source/WebKit2/ChangeLog</a></li>
<li><a href="#trunkSourceWebKit2WebProcessAutomationWebAutomationSessionProxycpp">trunk/Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleNodeHandlecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleRangeHandlecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlecpp">trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsNetscapeJSNPMethodcpp">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsNetscapeJSNPObjectcpp">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsNetscapeNPJSObjectcpp">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessPluginsNetscapeNPRuntimeObjectMapcpp">trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp</a></li>
<li><a href="#trunkSourceWebKit2WebProcessWebPageWebFramecpp">trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp</a></li>
<li><a href="#trunkToolsChangeLog">trunk/Tools/ChangeLog</a></li>
<li><a href="#trunkToolsDumpRenderTreeTestRunnercpp">trunk/Tools/DumpRenderTree/TestRunner.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreAPIJSCallbackConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSCallbackConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSCallbackConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> void JSCallbackConstructor::finishCreation(JSGlobalObject* globalObject, JSClassRef jsClass)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(globalObject->vm());
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(*vm(), info()));
</ins><span class="cx"> if (m_class)
</span><span class="cx"> JSClassRetain(jsClass);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSCallbackFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSCallbackFunction.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackFunction.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSCallbackFunction.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> void JSCallbackFunction::finishCreation(VM& vm, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSCallbackFunction* JSCallbackFunction::create(VM& vm, JSGlobalObject* globalObject, JSObjectCallAsFunctionCallback callback, const String& name)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSCallbackObjectFunctionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSCallbackObjectFunctions.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -44,15 +44,16 @@
</span><span class="cx"> template <class Parent>
</span><span class="cx"> inline JSCallbackObject<Parent>* JSCallbackObject<Parent>::asCallbackObject(JSValue value)
</span><span class="cx"> {
</span><del>- ASSERT(asObject(value)->inherits(info()));
</del><ins>+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), info()));
</ins><span class="cx"> return jsCast<JSCallbackObject*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <class Parent>
</span><del>-inline JSCallbackObject<Parent>* JSCallbackObject<Parent>::asCallbackObject(EncodedJSValue value)
</del><ins>+inline JSCallbackObject<Parent>* JSCallbackObject<Parent>::asCallbackObject(EncodedJSValue encodedValue)
</ins><span class="cx"> {
</span><del>- ASSERT(asObject(JSValue::decode(value))->inherits(info()));
- return jsCast<JSCallbackObject*>(asObject(JSValue::decode(value)));
</del><ins>+ JSValue value = JSValue::decode(encodedValue);
+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), info()));
+ return jsCast<JSCallbackObject*>(asObject(value));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template <class Parent>
</span><span class="lines">@@ -90,8 +91,9 @@
</span><span class="cx"> template <class Parent>
</span><span class="cx"> void JSCallbackObject<Parent>::finishCreation(ExecState* exec)
</span><span class="cx"> {
</span><del>- Base::finishCreation(exec->vm());
- ASSERT(Parent::inherits(info()));
</del><ins>+ VM& vm = exec->vm();
+ Base::finishCreation(vm);
+ ASSERT(Parent::inherits(vm, info()));
</ins><span class="cx"> init(exec);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -99,7 +101,7 @@
</span><span class="cx"> template <class Parent>
</span><span class="cx"> void JSCallbackObject<Parent>::finishCreation(VM& vm)
</span><span class="cx"> {
</span><del>- ASSERT(Parent::inherits(info()));
</del><ins>+ ASSERT(Parent::inherits(vm, info()));
</ins><span class="cx"> ASSERT(Parent::isGlobalObject());
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx"> init(jsCast<JSGlobalObject*>(this)->globalExec());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSObjectRefcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSObjectRef.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSObjectRef.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSObjectRef.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -257,13 +257,14 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx">
</span><span class="cx"> JSObject* jsObject = toJS(object);
</span><span class="cx"> JSValue jsValue = toJS(exec, value);
</span><span class="cx">
</span><del>- if (JSProxy* proxy = jsDynamicCast<JSProxy*>(jsObject)) {
- if (JSGlobalObject* globalObject = jsDynamicCast<JSGlobalObject*>(proxy->target())) {
</del><ins>+ if (JSProxy* proxy = jsDynamicCast<JSProxy*>(vm, jsObject)) {
+ if (JSGlobalObject* globalObject = jsDynamicCast<JSGlobalObject*>(vm, proxy->target())) {
</ins><span class="cx"> globalObject->resetPrototype(exec->vm(), jsValue.isObject() ? jsValue : jsNull());
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -385,17 +386,18 @@
</span><span class="cx"> // during destruction.
</span><span class="cx"> static const ClassInfo* classInfoPrivate(JSObject* jsObject)
</span><span class="cx"> {
</span><del>- VM* vm = jsObject->vm();
</del><ins>+ VM& vm = *jsObject->vm();
</ins><span class="cx">
</span><del>- if (vm->currentlyDestructingCallbackObject != jsObject)
- return jsObject->classInfo();
</del><ins>+ if (vm.currentlyDestructingCallbackObject != jsObject)
+ return jsObject->classInfo(vm);
</ins><span class="cx">
</span><del>- return vm->currentlyDestructingCallbackObjectClassInfo;
</del><ins>+ return vm.currentlyDestructingCallbackObjectClassInfo;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void* JSObjectGetPrivate(JSObjectRef object)
</span><span class="cx"> {
</span><span class="cx"> JSObject* jsObject = uncheckedToJS(object);
</span><ins>+ VM& vm = *jsObject->vm();
</ins><span class="cx">
</span><span class="cx"> const ClassInfo* classInfo = classInfoPrivate(jsObject);
</span><span class="cx">
</span><span class="lines">@@ -402,7 +404,7 @@
</span><span class="cx"> // Get wrapped object if proxied
</span><span class="cx"> if (classInfo->isSubClassOf(JSProxy::info())) {
</span><span class="cx"> jsObject = static_cast<JSProxy*>(jsObject)->target();
</span><del>- classInfo = jsObject->classInfo();
</del><ins>+ classInfo = jsObject->classInfo(vm);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (classInfo->isSubClassOf(JSCallbackObject<JSGlobalObject>::info()))
</span><span class="lines">@@ -420,6 +422,7 @@
</span><span class="cx"> bool JSObjectSetPrivate(JSObjectRef object, void* data)
</span><span class="cx"> {
</span><span class="cx"> JSObject* jsObject = uncheckedToJS(object);
</span><ins>+ VM& vm = *jsObject->vm();
</ins><span class="cx">
</span><span class="cx"> const ClassInfo* classInfo = classInfoPrivate(jsObject);
</span><span class="cx">
</span><span class="lines">@@ -426,7 +429,7 @@
</span><span class="cx"> // Get wrapped object if proxied
</span><span class="cx"> if (classInfo->isSubClassOf(JSProxy::info())) {
</span><span class="cx"> jsObject = static_cast<JSProxy*>(jsObject)->target();
</span><del>- classInfo = jsObject->classInfo();
</del><ins>+ classInfo = jsObject->classInfo(vm);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (classInfo->isSubClassOf(JSCallbackObject<JSGlobalObject>::info())) {
</span><span class="lines">@@ -450,21 +453,23 @@
</span><span class="cx"> JSValueRef JSObjectGetPrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName)
</span><span class="cx"> {
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx"> JSObject* jsObject = toJS(object);
</span><span class="cx"> JSValue result;
</span><span class="cx"> Identifier name(propertyName->identifier(&exec->vm()));
</span><span class="cx">
</span><ins>+
</ins><span class="cx"> // Get wrapped object if proxied
</span><del>- if (jsObject->inherits(JSProxy::info()))
</del><ins>+ if (jsObject->inherits(vm, JSProxy::info()))
</ins><span class="cx"> jsObject = jsCast<JSProxy*>(jsObject)->target();
</span><span class="cx">
</span><del>- if (jsObject->inherits(JSCallbackObject<JSGlobalObject>::info()))
</del><ins>+ if (jsObject->inherits(vm, JSCallbackObject<JSGlobalObject>::info()))
</ins><span class="cx"> result = jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->getPrivateProperty(name);
</span><del>- else if (jsObject->inherits(JSCallbackObject<JSDestructibleObject>::info()))
</del><ins>+ else if (jsObject->inherits(vm, JSCallbackObject<JSDestructibleObject>::info()))
</ins><span class="cx"> result = jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->getPrivateProperty(name);
</span><span class="cx"> #if JSC_OBJC_API_ENABLED
</span><del>- else if (jsObject->inherits(JSCallbackObject<JSAPIWrapperObject>::info()))
</del><ins>+ else if (jsObject->inherits(vm, JSCallbackObject<JSAPIWrapperObject>::info()))
</ins><span class="cx"> result = jsCast<JSCallbackObject<JSAPIWrapperObject>*>(jsObject)->getPrivateProperty(name);
</span><span class="cx"> #endif
</span><span class="cx"> return toRef(exec, result);
</span><span class="lines">@@ -473,6 +478,7 @@
</span><span class="cx"> bool JSObjectSetPrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName, JSValueRef value)
</span><span class="cx"> {
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx"> JSObject* jsObject = toJS(object);
</span><span class="cx"> JSValue jsValue = value ? toJS(exec, value) : JSValue();
</span><span class="lines">@@ -479,19 +485,19 @@
</span><span class="cx"> Identifier name(propertyName->identifier(&exec->vm()));
</span><span class="cx">
</span><span class="cx"> // Get wrapped object if proxied
</span><del>- if (jsObject->inherits(JSProxy::info()))
</del><ins>+ if (jsObject->inherits(vm, JSProxy::info()))
</ins><span class="cx"> jsObject = jsCast<JSProxy*>(jsObject)->target();
</span><span class="cx">
</span><del>- if (jsObject->inherits(JSCallbackObject<JSGlobalObject>::info())) {
</del><ins>+ if (jsObject->inherits(vm, JSCallbackObject<JSGlobalObject>::info())) {
</ins><span class="cx"> jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->setPrivateProperty(exec->vm(), name, jsValue);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (jsObject->inherits(JSCallbackObject<JSDestructibleObject>::info())) {
</del><ins>+ if (jsObject->inherits(vm, JSCallbackObject<JSDestructibleObject>::info())) {
</ins><span class="cx"> jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->setPrivateProperty(exec->vm(), name, jsValue);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> #if JSC_OBJC_API_ENABLED
</span><del>- if (jsObject->inherits(JSCallbackObject<JSAPIWrapperObject>::info())) {
</del><ins>+ if (jsObject->inherits(vm, JSCallbackObject<JSAPIWrapperObject>::info())) {
</ins><span class="cx"> jsCast<JSCallbackObject<JSAPIWrapperObject>*>(jsObject)->setPrivateProperty(exec->vm(), name, jsValue);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="lines">@@ -502,24 +508,25 @@
</span><span class="cx"> bool JSObjectDeletePrivateProperty(JSContextRef ctx, JSObjectRef object, JSStringRef propertyName)
</span><span class="cx"> {
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx"> JSObject* jsObject = toJS(object);
</span><span class="cx"> Identifier name(propertyName->identifier(&exec->vm()));
</span><span class="cx">
</span><span class="cx"> // Get wrapped object if proxied
</span><del>- if (jsObject->inherits(JSProxy::info()))
</del><ins>+ if (jsObject->inherits(vm, JSProxy::info()))
</ins><span class="cx"> jsObject = jsCast<JSProxy*>(jsObject)->target();
</span><span class="cx">
</span><del>- if (jsObject->inherits(JSCallbackObject<JSGlobalObject>::info())) {
</del><ins>+ if (jsObject->inherits(vm, JSCallbackObject<JSGlobalObject>::info())) {
</ins><span class="cx"> jsCast<JSCallbackObject<JSGlobalObject>*>(jsObject)->deletePrivateProperty(name);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (jsObject->inherits(JSCallbackObject<JSDestructibleObject>::info())) {
</del><ins>+ if (jsObject->inherits(vm, JSCallbackObject<JSDestructibleObject>::info())) {
</ins><span class="cx"> jsCast<JSCallbackObject<JSDestructibleObject>*>(jsObject)->deletePrivateProperty(name);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx"> #if JSC_OBJC_API_ENABLED
</span><del>- if (jsObject->inherits(JSCallbackObject<JSAPIWrapperObject>::info())) {
</del><ins>+ if (jsObject->inherits(vm, JSCallbackObject<JSAPIWrapperObject>::info())) {
</ins><span class="cx"> jsCast<JSCallbackObject<JSAPIWrapperObject>*>(jsObject)->deletePrivateProperty(name);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSTypedArraycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSTypedArray.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSTypedArray.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSTypedArray.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -140,6 +140,7 @@
</span><span class="cx"> {
</span><span class="cx">
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx">
</span><span class="cx"> JSValue value = toJS(exec, valueRef);
</span><span class="lines">@@ -147,10 +148,10 @@
</span><span class="cx"> return kJSTypedArrayTypeNone;
</span><span class="cx"> JSObject* object = value.getObject();
</span><span class="cx">
</span><del>- if (jsDynamicCast<JSArrayBuffer*>(object))
</del><ins>+ if (jsDynamicCast<JSArrayBuffer*>(vm, object))
</ins><span class="cx"> return kJSTypedArrayTypeArrayBuffer;
</span><span class="cx">
</span><del>- return toJSTypedArrayType(object->classInfo()->typedArrayStorageType);
</del><ins>+ return toJSTypedArrayType(object->classInfo(vm)->typedArrayStorageType);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSObjectRef JSObjectMakeTypedArray(JSContextRef ctx, JSTypedArrayType arrayType, size_t length, JSValueRef* exception)
</span><span class="lines">@@ -193,12 +194,13 @@
</span><span class="cx"> JSObjectRef JSObjectMakeTypedArrayWithArrayBuffer(JSContextRef ctx, JSTypedArrayType arrayType, JSObjectRef jsBufferRef, JSValueRef* exception)
</span><span class="cx"> {
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx">
</span><span class="cx"> if (arrayType == kJSTypedArrayTypeNone || arrayType == kJSTypedArrayTypeArrayBuffer)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(toJS(jsBufferRef));
</del><ins>+ JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(vm, toJS(jsBufferRef));
</ins><span class="cx"> if (!jsBuffer) {
</span><span class="cx"> setException(exec, exception, createTypeError(exec, "JSObjectMakeTypedArrayWithArrayBuffer expects buffer to be an Array Buffer object"));
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -216,12 +218,13 @@
</span><span class="cx"> JSObjectRef JSObjectMakeTypedArrayWithArrayBufferAndOffset(JSContextRef ctx, JSTypedArrayType arrayType, JSObjectRef jsBufferRef, size_t offset, size_t length, JSValueRef* exception)
</span><span class="cx"> {
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx">
</span><span class="cx"> if (arrayType == kJSTypedArrayTypeNone || arrayType == kJSTypedArrayTypeArrayBuffer)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(toJS(jsBufferRef));
</del><ins>+ JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(vm, toJS(jsBufferRef));
</ins><span class="cx"> if (!jsBuffer) {
</span><span class="cx"> setException(exec, exception, createTypeError(exec, "JSObjectMakeTypedArrayWithArrayBuffer expects buffer to be an Array Buffer object"));
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -236,10 +239,11 @@
</span><span class="cx"> void* JSObjectGetTypedArrayBytesPtr(JSContextRef ctx, JSObjectRef objectRef, JSValueRef*)
</span><span class="cx"> {
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx"> JSObject* object = toJS(objectRef);
</span><span class="cx">
</span><del>- if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(object)) {
</del><ins>+ if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(vm, object)) {
</ins><span class="cx"> ArrayBuffer* buffer = typedArray->possiblySharedBuffer();
</span><span class="cx"> buffer->pinAndLock();
</span><span class="cx"> return buffer->data();
</span><span class="lines">@@ -247,31 +251,37 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-size_t JSObjectGetTypedArrayLength(JSContextRef, JSObjectRef objectRef, JSValueRef*)
</del><ins>+size_t JSObjectGetTypedArrayLength(JSContextRef ctx, JSObjectRef objectRef, JSValueRef*)
</ins><span class="cx"> {
</span><ins>+ ExecState* exec = toJS(ctx);
+ VM& vm = exec->vm();
</ins><span class="cx"> JSObject* object = toJS(objectRef);
</span><span class="cx">
</span><del>- if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(object))
</del><ins>+ if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(vm, object))
</ins><span class="cx"> return typedArray->length();
</span><span class="cx">
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-size_t JSObjectGetTypedArrayByteLength(JSContextRef, JSObjectRef objectRef, JSValueRef*)
</del><ins>+size_t JSObjectGetTypedArrayByteLength(JSContextRef ctx, JSObjectRef objectRef, JSValueRef*)
</ins><span class="cx"> {
</span><ins>+ ExecState* exec = toJS(ctx);
+ VM& vm = exec->vm();
</ins><span class="cx"> JSObject* object = toJS(objectRef);
</span><span class="cx">
</span><del>- if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(object))
- return typedArray->length() * elementSize(typedArray->classInfo()->typedArrayStorageType);
</del><ins>+ if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(vm, object))
+ return typedArray->length() * elementSize(typedArray->classInfo(vm)->typedArrayStorageType);
</ins><span class="cx">
</span><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-size_t JSObjectGetTypedArrayByteOffset(JSContextRef, JSObjectRef objectRef, JSValueRef*)
</del><ins>+size_t JSObjectGetTypedArrayByteOffset(JSContextRef ctx, JSObjectRef objectRef, JSValueRef*)
</ins><span class="cx"> {
</span><ins>+ ExecState* exec = toJS(ctx);
+ VM& vm = exec->vm();
</ins><span class="cx"> JSObject* object = toJS(objectRef);
</span><span class="cx">
</span><del>- if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(object))
</del><ins>+ if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(vm, object))
</ins><span class="cx"> return typedArray->byteOffset();
</span><span class="cx">
</span><span class="cx"> return 0;
</span><span class="lines">@@ -280,10 +290,11 @@
</span><span class="cx"> JSObjectRef JSObjectGetTypedArrayBuffer(JSContextRef ctx, JSObjectRef objectRef, JSValueRef*)
</span><span class="cx"> {
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx"> JSObject* object = toJS(objectRef);
</span><span class="cx">
</span><del>- if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(object))
</del><ins>+ if (JSArrayBufferView* typedArray = jsDynamicCast<JSArrayBufferView*>(vm, object))
</ins><span class="cx"> return toRef(exec->vm().m_typedArrayController->toJS(exec, typedArray->globalObject(), typedArray->possiblySharedBuffer()));
</span><span class="cx">
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -309,10 +320,11 @@
</span><span class="cx"> void* JSObjectGetArrayBufferBytesPtr(JSContextRef ctx, JSObjectRef objectRef, JSValueRef*)
</span><span class="cx"> {
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx"> JSObject* object = toJS(objectRef);
</span><span class="cx">
</span><del>- if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(object)) {
</del><ins>+ if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(vm, object)) {
</ins><span class="cx"> ArrayBuffer* buffer = jsBuffer->impl();
</span><span class="cx"> buffer->pinAndLock();
</span><span class="cx"> return buffer->data();
</span><span class="lines">@@ -320,11 +332,13 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-size_t JSObjectGetArrayBufferByteLength(JSContextRef, JSObjectRef objectRef, JSValueRef*)
</del><ins>+size_t JSObjectGetArrayBufferByteLength(JSContextRef ctx, JSObjectRef objectRef, JSValueRef*)
</ins><span class="cx"> {
</span><ins>+ ExecState* exec = toJS(ctx);
+ VM& vm = exec->vm();
</ins><span class="cx"> JSObject* object = toJS(objectRef);
</span><span class="cx">
</span><del>- if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(object))
</del><ins>+ if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(vm, object))
</ins><span class="cx"> return jsBuffer->impl()->byteLength();
</span><span class="cx">
</span><span class="cx"> return 0;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSValuemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSValue.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSValue.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSValue.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -571,16 +571,16 @@
</span><span class="cx">
</span><span class="cx"> @end
</span><span class="cx">
</span><del>-inline bool isDate(JSObjectRef object, JSGlobalContextRef context)
</del><ins>+inline bool isDate(JSC::VM& vm, JSObjectRef object, JSGlobalContextRef context)
</ins><span class="cx"> {
</span><span class="cx"> JSC::JSLockHolder locker(toJS(context));
</span><del>- return toJS(object)->inherits(JSC::DateInstance::info());
</del><ins>+ return toJS(object)->inherits(vm, JSC::DateInstance::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-inline bool isArray(JSObjectRef object, JSGlobalContextRef context)
</del><ins>+inline bool isArray(JSC::VM& vm, JSObjectRef object, JSGlobalContextRef context)
</ins><span class="cx"> {
</span><span class="cx"> JSC::JSLockHolder locker(toJS(context));
</span><del>- return toJS(object)->inherits(JSC::JSArray::info());
</del><ins>+ return toJS(object)->inherits(vm, JSC::JSArray::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @implementation JSValue(Internal)
</span><span class="lines">@@ -656,6 +656,9 @@
</span><span class="cx">
</span><span class="cx"> static JSContainerConvertor::Task valueToObjectWithoutCopy(JSGlobalContextRef context, JSValueRef value)
</span><span class="cx"> {
</span><ins>+ JSC::ExecState* exec = toJS(context);
+ JSC::VM& vm = exec->vm();
+
</ins><span class="cx"> if (!JSValueIsObject(context, value)) {
</span><span class="cx"> id primitive;
</span><span class="cx"> if (JSValueIsBoolean(context, value))
</span><span class="lines">@@ -685,10 +688,10 @@
</span><span class="cx"> if (id wrapped = tryUnwrapObjcObject(context, object))
</span><span class="cx"> return (JSContainerConvertor::Task){ object, wrapped, ContainerNone };
</span><span class="cx">
</span><del>- if (isDate(object, context))
</del><ins>+ if (isDate(vm, object, context))
</ins><span class="cx"> return (JSContainerConvertor::Task){ object, [NSDate dateWithTimeIntervalSince1970:JSValueToNumber(context, object, 0) / 1000.0], ContainerNone };
</span><span class="cx">
</span><del>- if (isArray(object, context))
</del><ins>+ if (isArray(vm, object, context))
</ins><span class="cx"> return (JSContainerConvertor::Task){ object, [NSMutableArray array], ContainerArray };
</span><span class="cx">
</span><span class="cx"> return (JSContainerConvertor::Task){ object, [NSMutableDictionary dictionary], ContainerDictionary };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSValueRefcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSValueRef.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSValueRef.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSValueRef.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -169,9 +169,10 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx">
</span><del>- return toJS(exec, value).inherits(JSArray::info());
</del><ins>+ return toJS(exec, value).inherits(vm, JSArray::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool JSValueIsDate(JSContextRef ctx, JSValueRef value)
</span><span class="lines">@@ -181,9 +182,10 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx">
</span><del>- return toJS(exec, value).inherits(DateInstance::info());
</del><ins>+ return toJS(exec, value).inherits(vm, DateInstance::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool JSValueIsObjectOfClass(JSContextRef ctx, JSValueRef value, JSClassRef jsClass)
</span><span class="lines">@@ -193,20 +195,21 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx"> ExecState* exec = toJS(ctx);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSLockHolder locker(exec);
</span><span class="cx">
</span><span class="cx"> JSValue jsValue = toJS(exec, value);
</span><span class="cx">
</span><span class="cx"> if (JSObject* o = jsValue.getObject()) {
</span><del>- if (o->inherits(JSProxy::info()))
</del><ins>+ if (o->inherits(vm, JSProxy::info()))
</ins><span class="cx"> o = jsCast<JSProxy*>(o)->target();
</span><span class="cx">
</span><del>- if (o->inherits(JSCallbackObject<JSGlobalObject>::info()))
</del><ins>+ if (o->inherits(vm, JSCallbackObject<JSGlobalObject>::info()))
</ins><span class="cx"> return jsCast<JSCallbackObject<JSGlobalObject>*>(o)->inherits(jsClass);
</span><del>- if (o->inherits(JSCallbackObject<JSDestructibleObject>::info()))
</del><ins>+ if (o->inherits(vm, JSCallbackObject<JSDestructibleObject>::info()))
</ins><span class="cx"> return jsCast<JSCallbackObject<JSDestructibleObject>*>(o)->inherits(jsClass);
</span><span class="cx"> #if JSC_OBJC_API_ENABLED
</span><del>- if (o->inherits(JSCallbackObject<JSAPIWrapperObject>::info()))
</del><ins>+ if (o->inherits(vm, JSCallbackObject<JSAPIWrapperObject>::info()))
</ins><span class="cx"> return jsCast<JSCallbackObject<JSAPIWrapperObject>*>(o)->inherits(jsClass);
</span><span class="cx"> #endif
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSWeakObjectMapRefPrivatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSWeakObjectMapRefPrivate.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -61,9 +61,9 @@
</span><span class="cx"> JSObject* obj = toJS(object);
</span><span class="cx"> if (!obj)
</span><span class="cx"> return;
</span><del>- ASSERT(obj->inherits(JSProxy::info())
- || obj->inherits(JSCallbackObject<JSGlobalObject>::info())
- || obj->inherits(JSCallbackObject<JSDestructibleObject>::info()));
</del><ins>+ ASSERT(obj->inherits(exec->vm(), JSProxy::info())
+ || obj->inherits(exec->vm(), JSCallbackObject<JSGlobalObject>::info())
+ || obj->inherits(exec->vm(), JSCallbackObject<JSDestructibleObject>::info()));
</ins><span class="cx"> map->map().set(key, obj);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIJSWrapperMapmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/JSWrapperMap.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/JSWrapperMap.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/JSWrapperMap.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -639,9 +639,10 @@
</span><span class="cx"> JSObjectRef object = JSValueToObject(context, value, &exception);
</span><span class="cx"> ASSERT(!exception);
</span><span class="cx"> JSC::JSLockHolder locker(toJS(context));
</span><del>- if (toJS(object)->inherits(JSC::JSCallbackObject<JSC::JSAPIWrapperObject>::info()))
</del><ins>+ JSC::VM& vm = toJS(context)->vm();
+ if (toJS(object)->inherits(vm, JSC::JSCallbackObject<JSC::JSAPIWrapperObject>::info()))
</ins><span class="cx"> return (id)JSC::jsCast<JSC::JSAPIWrapperObject*>(toJS(object))->wrappedObject();
</span><del>- if (id target = tryUnwrapConstructor(object))
</del><ins>+ if (id target = tryUnwrapConstructor(&vm, object))
</ins><span class="cx"> return target;
</span><span class="cx"> return nil;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIObjCCallbackFunctionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -36,7 +36,7 @@
</span><span class="cx"> JSObjectRef objCCallbackFunctionForBlock(JSContext *, id);
</span><span class="cx"> JSObjectRef objCCallbackFunctionForInit(JSContext *, Class, Protocol *, SEL, const char* types);
</span><span class="cx">
</span><del>-id tryUnwrapConstructor(JSObjectRef);
</del><ins>+id tryUnwrapConstructor(JSC::VM*, JSObjectRef);
</ins><span class="cx"> #endif
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreAPIObjCCallbackFunctionmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/API/ObjCCallbackFunction.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -715,9 +715,9 @@
</span><span class="cx"> return objCCallbackFunctionForInvocation(context, invocation, CallbackBlock, nil, signature);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-id tryUnwrapConstructor(JSObjectRef object)
</del><ins>+id tryUnwrapConstructor(JSC::VM* vm, JSObjectRef object)
</ins><span class="cx"> {
</span><del>- if (!toJS(object)->inherits(JSC::ObjCCallbackFunction::info()))
</del><ins>+ if (!toJS(object)->inherits(*vm, JSC::ObjCCallbackFunction::info()))
</ins><span class="cx"> return nil;
</span><span class="cx"> JSC::ObjCCallbackFunctionImpl* impl = static_cast<JSC::ObjCCallbackFunction*>(toJS(object))->impl();
</span><span class="cx"> if (!impl->isConstructible())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/ChangeLog        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1,3 +1,667 @@
</span><ins>+2017-01-26 Keith Miller <keith_miller@apple.com>
+
+ classInfo should take a VM so it is not materialized from the object on each call
+ https://bugs.webkit.org/show_bug.cgi?id=167424
+
+ Rubber Stamped by Michael Saboff.
+
+ Previously, classInfo() would get the VM from the target's
+ MarkedBlock. Most callers already have a VM on hand, so it is
+ wasteful to compute the VM from the marked block every time. This
+ patch refactors some of the most common callers of classInfo(),
+ jsDynamicCast and inherits to take a VM as well.
+
+ * API/JSCallbackConstructor.cpp:
+ (JSC::JSCallbackConstructor::finishCreation):
+ * API/JSCallbackFunction.cpp:
+ (JSC::JSCallbackFunction::finishCreation):
+ * API/JSCallbackObjectFunctions.h:
+ (JSC::JSCallbackObject<Parent>::asCallbackObject):
+ (JSC::JSCallbackObject<Parent>::finishCreation):
+ * API/JSObjectRef.cpp:
+ (JSObjectSetPrototype):
+ (classInfoPrivate):
+ (JSObjectGetPrivate):
+ (JSObjectSetPrivate):
+ (JSObjectGetPrivateProperty):
+ (JSObjectSetPrivateProperty):
+ (JSObjectDeletePrivateProperty):
+ * API/JSTypedArray.cpp:
+ (JSValueGetTypedArrayType):
+ (JSObjectMakeTypedArrayWithArrayBuffer):
+ (JSObjectMakeTypedArrayWithArrayBufferAndOffset):
+ (JSObjectGetTypedArrayBytesPtr):
+ (JSObjectGetTypedArrayLength):
+ (JSObjectGetTypedArrayByteLength):
+ (JSObjectGetTypedArrayByteOffset):
+ (JSObjectGetTypedArrayBuffer):
+ (JSObjectGetArrayBufferBytesPtr):
+ (JSObjectGetArrayBufferByteLength):
+ * API/JSValue.mm:
+ (isDate):
+ (isArray):
+ (valueToObjectWithoutCopy):
+ * API/JSValueRef.cpp:
+ (JSValueIsArray):
+ (JSValueIsDate):
+ (JSValueIsObjectOfClass):
+ * API/JSWeakObjectMapRefPrivate.cpp:
+ * API/JSWrapperMap.mm:
+ (tryUnwrapObjcObject):
+ * API/ObjCCallbackFunction.h:
+ * API/ObjCCallbackFunction.mm:
+ (tryUnwrapConstructor):
+ * bindings/ScriptFunctionCall.cpp:
+ (Deprecated::ScriptFunctionCall::call):
+ * bytecode/CallVariant.h:
+ (JSC::CallVariant::internalFunction):
+ (JSC::CallVariant::function):
+ (JSC::CallVariant::isClosureCall):
+ (JSC::CallVariant::executable):
+ (JSC::CallVariant::functionExecutable):
+ (JSC::CallVariant::nativeExecutable):
+ * bytecode/CodeBlock.cpp:
+ (JSC::CodeBlock::finishCreation):
+ (JSC::CodeBlock::setConstantRegisters):
+ (JSC::CodeBlock::replacement):
+ (JSC::CodeBlock::computeCapabilityLevel):
+ (JSC::CodeBlock::nameForRegister):
+ * bytecode/ObjectAllocationProfile.h:
+ (JSC::ObjectAllocationProfile::possibleDefaultPropertyCount):
+ * bytecode/ObjectPropertyCondition.cpp:
+ (JSC::ObjectPropertyCondition::attemptToMakeEquivalenceWithoutBarrier):
+ * bytecode/ObjectPropertyCondition.h:
+ (JSC::ObjectPropertyCondition::isValidValueForPresence):
+ * bytecode/PropertyCondition.cpp:
+ (JSC::PropertyCondition::isValidValueForAttributes):
+ (JSC::PropertyCondition::isValidValueForPresence):
+ (JSC::PropertyCondition::attemptToMakeEquivalenceWithoutBarrier):
+ * bytecode/PropertyCondition.h:
+ * bytecode/SpeculatedType.cpp:
+ (JSC::speculationFromCell):
+ * debugger/Debugger.cpp:
+ * debugger/DebuggerCallFrame.cpp:
+ (JSC::DebuggerCallFrame::functionName):
+ (JSC::DebuggerCallFrame::scope):
+ (JSC::DebuggerCallFrame::type):
+ * debugger/DebuggerScope.cpp:
+ (JSC::DebuggerScope::name):
+ (JSC::DebuggerScope::location):
+ * dfg/DFGAbstractInterpreter.h:
+ * dfg/DFGAbstractInterpreterInlines.h:
+ (JSC::DFG::AbstractInterpreter<AbstractStateType>::AbstractInterpreter):
+ (JSC::DFG::AbstractInterpreter<AbstractStateType>::executeEffects):
+ * dfg/DFGByteCodeParser.cpp:
+ (JSC::DFG::ByteCodeParser::get):
+ (JSC::DFG::ByteCodeParser::handleIntrinsicCall):
+ (JSC::DFG::ByteCodeParser::planLoad):
+ (JSC::DFG::ByteCodeParser::checkPresenceLike):
+ (JSC::DFG::ByteCodeParser::load):
+ (JSC::DFG::ByteCodeParser::parseBlock):
+ * dfg/DFGConstantFoldingPhase.cpp:
+ (JSC::DFG::ConstantFoldingPhase::foldConstants):
+ * dfg/DFGDesiredWeakReferences.cpp:
+ (JSC::DFG::DesiredWeakReferences::reallyAdd):
+ * dfg/DFGFixupPhase.cpp:
+ (JSC::DFG::FixupPhase::fixupMakeRope):
+ * dfg/DFGFrozenValue.h:
+ (JSC::DFG::FrozenValue::FrozenValue):
+ (JSC::DFG::FrozenValue::dynamicCast):
+ * dfg/DFGGraph.cpp:
+ (JSC::DFG::Graph::dump):
+ (JSC::DFG::Graph::tryGetConstantClosureVar):
+ (JSC::DFG::Graph::tryGetFoldableView):
+ (JSC::DFG::Graph::getRegExpPrototypeProperty):
+ (JSC::DFG::Graph::isStringPrototypeMethodSane):
+ (JSC::DFG::Graph::canOptimizeStringObjectAccess):
+ * dfg/DFGLazyJSValue.cpp:
+ (JSC::DFG::LazyJSValue::tryGetStringImpl):
+ (JSC::DFG::LazyJSValue::tryGetString):
+ * dfg/DFGLazyJSValue.h:
+ * dfg/DFGNode.cpp:
+ (JSC::DFG::Node::convertToPutStructureHint):
+ * dfg/DFGNode.h:
+ (JSC::DFG::Node::dynamicCastConstant):
+ (JSC::DFG::Node::castConstant):
+ * dfg/DFGOperations.cpp:
+ * dfg/DFGSafeToExecute.h:
+ (JSC::DFG::safeToExecute):
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileIn):
+ (JSC::DFG::SpeculativeJIT::compileMaterializeNewObject):
+ * dfg/DFGSpeculativeJIT32_64.cpp:
+ (JSC::DFG::SpeculativeJIT::emitCall):
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGSpeculativeJIT64.cpp:
+ (JSC::DFG::SpeculativeJIT::emitCall):
+ (JSC::DFG::SpeculativeJIT::compile):
+ * dfg/DFGStrengthReductionPhase.cpp:
+ (JSC::DFG::StrengthReductionPhase::handleNode):
+ * ftl/FTLLowerDFGToB3.cpp:
+ (JSC::FTL::DFG::LowerDFGToB3::compileDirectCallOrConstruct):
+ (JSC::FTL::DFG::LowerDFGToB3::compileIn):
+ (JSC::FTL::DFG::LowerDFGToB3::compileMaterializeCreateActivation):
+ (JSC::FTL::DFG::LowerDFGToB3::compileStringReplace):
+ * ftl/FTLOperations.cpp:
+ (JSC::FTL::operationMaterializeObjectInOSR):
+ * heap/CodeBlockSet.cpp:
+ (JSC::CodeBlockSet::lastChanceToFinalize):
+ (JSC::CodeBlockSet::deleteUnmarkedAndUnreferenced):
+ * heap/CodeBlockSet.h:
+ * heap/GCAssertions.h:
+ * heap/Heap.cpp:
+ (JSC::Heap::lastChanceToFinalize):
+ (JSC::Heap::protectedObjectTypeCounts):
+ (JSC::Heap::objectTypeCounts):
+ (JSC::Heap::deleteUnmarkedCompiledCode):
+ * heap/HeapSnapshotBuilder.cpp:
+ (JSC::HeapSnapshotBuilder::json):
+ * heap/SlotVisitor.cpp:
+ (JSC::validate):
+ * inspector/InjectedScriptHost.h:
+ * inspector/JSGlobalObjectInspectorController.cpp:
+ (Inspector::JSGlobalObjectInspectorController::reportAPIException):
+ * inspector/JSInjectedScriptHost.cpp:
+ (Inspector::JSInjectedScriptHost::finishCreation):
+ (Inspector::JSInjectedScriptHost::isHTMLAllCollection):
+ (Inspector::JSInjectedScriptHost::subtype):
+ (Inspector::JSInjectedScriptHost::functionDetails):
+ (Inspector::JSInjectedScriptHost::getInternalProperties):
+ (Inspector::JSInjectedScriptHost::proxyTargetValue):
+ (Inspector::JSInjectedScriptHost::weakMapSize):
+ (Inspector::JSInjectedScriptHost::weakMapEntries):
+ (Inspector::JSInjectedScriptHost::weakSetSize):
+ (Inspector::JSInjectedScriptHost::weakSetEntries):
+ (Inspector::JSInjectedScriptHost::iteratorEntries):
+ * inspector/JSInjectedScriptHostPrototype.cpp:
+ (Inspector::JSInjectedScriptHostPrototype::finishCreation):
+ (Inspector::jsInjectedScriptHostPrototypeAttributeEvaluate):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionInternalConstructorName):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionIsHTMLAllCollection):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionProxyTargetValue):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapSize):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionWeakMapEntries):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetSize):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionWeakSetEntries):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionIteratorEntries):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionEvaluateWithScopeExtension):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionSubtype):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionFunctionDetails):
+ (Inspector::jsInjectedScriptHostPrototypeFunctionGetInternalProperties):
+ * inspector/JSJavaScriptCallFrame.cpp:
+ (Inspector::JSJavaScriptCallFrame::finishCreation):
+ (Inspector::toJSJavaScriptCallFrame): Deleted.
+ * inspector/JSJavaScriptCallFrame.h:
+ * inspector/JSJavaScriptCallFramePrototype.cpp:
+ (Inspector::JSJavaScriptCallFramePrototype::finishCreation):
+ (Inspector::jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension):
+ (Inspector::jsJavaScriptCallFramePrototypeFunctionScopeDescriptions):
+ (Inspector::jsJavaScriptCallFrameAttributeCaller):
+ (Inspector::jsJavaScriptCallFrameAttributeSourceID):
+ (Inspector::jsJavaScriptCallFrameAttributeLine):
+ (Inspector::jsJavaScriptCallFrameAttributeColumn):
+ (Inspector::jsJavaScriptCallFrameAttributeFunctionName):
+ (Inspector::jsJavaScriptCallFrameAttributeScopeChain):
+ (Inspector::jsJavaScriptCallFrameAttributeThisObject):
+ (Inspector::jsJavaScriptCallFrameAttributeType):
+ (Inspector::jsJavaScriptCallFrameIsTailDeleted):
+ * inspector/ScriptArguments.cpp:
+ (Inspector::ScriptArguments::getFirstArgumentAsString):
+ * inspector/agents/InspectorHeapAgent.cpp:
+ (Inspector::InspectorHeapAgent::getPreview):
+ * interpreter/Interpreter.cpp:
+ (JSC::notifyDebuggerOfUnwinding):
+ (JSC::Interpreter::unwind):
+ (JSC::Interpreter::notifyDebuggerOfExceptionToBeThrown):
+ (JSC::Interpreter::execute):
+ * interpreter/ShadowChicken.cpp:
+ (JSC::ShadowChicken::update):
+ * interpreter/StackVisitor.cpp:
+ (JSC::StackVisitor::readFrame):
+ (JSC::StackVisitor::readNonInlinedFrame):
+ (JSC::StackVisitor::Frame::calleeSaveRegisters):
+ * jit/JITCode.cpp:
+ (JSC::JITCode::execute):
+ * jit/JITOperations.cpp:
+ (JSC::operationNewFunctionCommon):
+ * jit/Repatch.cpp:
+ (JSC::tryCacheGetByID):
+ * jsc.cpp:
+ (WTF::CustomGetter::customGetter):
+ (WTF::RuntimeArray::finishCreation):
+ (WTF::RuntimeArray::lengthGetter):
+ (WTF::DOMJITGetter::customGetter):
+ (WTF::DOMJITGetterComplex::DOMJITNodeDOMJIT::slowCall):
+ (WTF::DOMJITGetterComplex::functionEnableException):
+ (WTF::DOMJITGetterComplex::customGetter):
+ (WTF::DOMJITFunctionObject::safeFunction):
+ (functionDescribeArray):
+ (functionCreateElement):
+ (functionGetElement):
+ (functionSetElementRoot):
+ (functionGetHiddenValue):
+ (functionSetHiddenValue):
+ (functionSetImpureGetterDelegate):
+ (functionNoFTL):
+ (functionDollarEvalScript):
+ (functionDollarAgentBroadcast):
+ (functionTransferArrayBuffer):
+ (functionFindTypeForExpression):
+ (functionReturnTypeFor):
+ (functionHasBasicBlockExecuted):
+ (functionBasicBlockExecutionCount):
+ (functionEnsureArrayStorage):
+ * llint/LLIntSlowPaths.cpp:
+ (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+ * runtime/AbstractModuleRecord.cpp:
+ (JSC::AbstractModuleRecord::finishCreation):
+ * runtime/ArrayBuffer.cpp:
+ (JSC::ArrayBuffer::transferTo):
+ * runtime/ArrayBuffer.h:
+ * runtime/ArrayConstructor.cpp:
+ (JSC::ArrayConstructor::finishCreation):
+ (JSC::arrayConstructorPrivateFuncIsArraySlow):
+ (JSC::arrayConstructorPrivateFuncIsArrayConstructor):
+ * runtime/ArrayConstructor.h:
+ (JSC::isArrayConstructor): Deleted.
+ * runtime/ArrayIteratorPrototype.cpp:
+ (JSC::ArrayIteratorPrototype::finishCreation):
+ * runtime/ArrayPrototype.cpp:
+ (JSC::ArrayPrototype::finishCreation):
+ * runtime/AsyncFunctionPrototype.cpp:
+ (JSC::AsyncFunctionPrototype::finishCreation):
+ * runtime/AtomicsObject.cpp:
+ (JSC::AtomicsObject::finishCreation):
+ (JSC::atomicsFuncWait):
+ (JSC::atomicsFuncWake):
+ * runtime/BooleanObject.cpp:
+ (JSC::BooleanObject::finishCreation):
+ * runtime/BooleanObject.h:
+ (JSC::asBooleanObject):
+ * runtime/BooleanPrototype.cpp:
+ (JSC::BooleanPrototype::finishCreation):
+ (JSC::booleanProtoFuncToString):
+ (JSC::booleanProtoFuncValueOf):
+ * runtime/ConsoleObject.cpp:
+ (JSC::ConsoleObject::finishCreation):
+ * runtime/DateConstructor.cpp:
+ (JSC::constructDate):
+ * runtime/DateInstance.cpp:
+ (JSC::DateInstance::finishCreation):
+ * runtime/DateInstance.h:
+ (JSC::asDateInstance):
+ * runtime/DatePrototype.cpp:
+ (JSC::formateDateInstance):
+ (JSC::DatePrototype::finishCreation):
+ (JSC::dateProtoFuncToISOString):
+ (JSC::dateProtoFuncToLocaleString):
+ (JSC::dateProtoFuncToLocaleDateString):
+ (JSC::dateProtoFuncToLocaleTimeString):
+ (JSC::dateProtoFuncGetTime):
+ (JSC::dateProtoFuncGetFullYear):
+ (JSC::dateProtoFuncGetUTCFullYear):
+ (JSC::dateProtoFuncGetMonth):
+ (JSC::dateProtoFuncGetUTCMonth):
+ (JSC::dateProtoFuncGetDate):
+ (JSC::dateProtoFuncGetUTCDate):
+ (JSC::dateProtoFuncGetDay):
+ (JSC::dateProtoFuncGetUTCDay):
+ (JSC::dateProtoFuncGetHours):
+ (JSC::dateProtoFuncGetUTCHours):
+ (JSC::dateProtoFuncGetMinutes):
+ (JSC::dateProtoFuncGetUTCMinutes):
+ (JSC::dateProtoFuncGetSeconds):
+ (JSC::dateProtoFuncGetUTCSeconds):
+ (JSC::dateProtoFuncGetMilliSeconds):
+ (JSC::dateProtoFuncGetUTCMilliseconds):
+ (JSC::dateProtoFuncGetTimezoneOffset):
+ (JSC::dateProtoFuncSetTime):
+ (JSC::setNewValueFromTimeArgs):
+ (JSC::setNewValueFromDateArgs):
+ (JSC::dateProtoFuncSetYear):
+ (JSC::dateProtoFuncGetYear):
+ * runtime/ErrorInstance.cpp:
+ (JSC::ErrorInstance::finishCreation):
+ * runtime/ErrorPrototype.cpp:
+ (JSC::ErrorPrototype::finishCreation):
+ * runtime/ExceptionHelpers.cpp:
+ (JSC::isTerminatedExecutionException):
+ * runtime/ExceptionHelpers.h:
+ * runtime/ExecutableBase.cpp:
+ (JSC::ExecutableBase::clearCode):
+ (JSC::ExecutableBase::dump):
+ (JSC::ExecutableBase::hashFor):
+ * runtime/FunctionPrototype.cpp:
+ (JSC::functionProtoFuncToString):
+ * runtime/GeneratorFunctionPrototype.cpp:
+ (JSC::GeneratorFunctionPrototype::finishCreation):
+ * runtime/GeneratorPrototype.cpp:
+ (JSC::GeneratorPrototype::finishCreation):
+ * runtime/GetterSetter.h:
+ * runtime/InspectorInstrumentationObject.cpp:
+ (JSC::InspectorInstrumentationObject::finishCreation):
+ * runtime/InternalFunction.cpp:
+ (JSC::InternalFunction::finishCreation):
+ (JSC::InternalFunction::createSubclassStructure):
+ * runtime/InternalFunction.h:
+ (JSC::asInternalFunction):
+ * runtime/IntlCollator.cpp:
+ (JSC::IntlCollator::finishCreation):
+ * runtime/IntlCollatorPrototype.cpp:
+ (JSC::IntlCollatorPrototypeGetterCompare):
+ (JSC::IntlCollatorPrototypeFuncResolvedOptions):
+ * runtime/IntlDateTimeFormat.cpp:
+ (JSC::IntlDateTimeFormat::finishCreation):
+ * runtime/IntlDateTimeFormatPrototype.cpp:
+ (JSC::IntlDateTimeFormatPrototypeGetterFormat):
+ (JSC::IntlDateTimeFormatPrototypeFuncResolvedOptions):
+ * runtime/IntlNumberFormat.cpp:
+ (JSC::IntlNumberFormat::finishCreation):
+ * runtime/IntlNumberFormatPrototype.cpp:
+ (JSC::IntlNumberFormatPrototypeGetterFormat):
+ (JSC::IntlNumberFormatPrototypeFuncResolvedOptions):
+ * runtime/IntlObject.cpp:
+ (JSC::IntlObject::finishCreation):
+ * runtime/IntlObjectInlines.h:
+ (JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):
+ * runtime/IteratorPrototype.cpp:
+ (JSC::IteratorPrototype::finishCreation):
+ * runtime/JSArray.h:
+ (JSC::asArray):
+ (JSC::isJSArray):
+ * runtime/JSArrayBuffer.h:
+ (JSC::toPossiblySharedArrayBuffer):
+ (JSC::toUnsharedArrayBuffer):
+ (JSC::JSArrayBuffer::toWrapped):
+ * runtime/JSArrayBufferConstructor.cpp:
+ (JSC::arrayBufferFuncIsView):
+ * runtime/JSArrayBufferPrototype.cpp:
+ (JSC::arrayBufferProtoFuncSlice):
+ * runtime/JSArrayBufferView.h:
+ * runtime/JSArrayBufferViewInlines.h:
+ (JSC::JSArrayBufferView::toWrapped):
+ * runtime/JSBoundFunction.cpp:
+ (JSC::isBoundFunction):
+ (JSC::getBoundFunctionStructure):
+ (JSC::JSBoundFunction::finishCreation):
+ * runtime/JSCJSValue.cpp:
+ (JSC::JSValue::dumpForBacktrace):
+ * runtime/JSCJSValue.h:
+ * runtime/JSCJSValueInlines.h:
+ (JSC::JSValue::inherits):
+ (JSC::JSValue::classInfoOrNull):
+ * runtime/JSCallee.cpp:
+ (JSC::JSCallee::finishCreation):
+ * runtime/JSCell.cpp:
+ (JSC::JSCell::dumpToStream):
+ (JSC::JSCell::className):
+ (JSC::JSCell::isAnyWasmCallee):
+ * runtime/JSCell.h:
+ (JSC::jsCast):
+ (JSC::jsDynamicCast):
+ * runtime/JSCellInlines.h:
+ (JSC::JSCell::methodTable):
+ (JSC::JSCell::inherits):
+ (JSC::JSCell::classInfo):
+ * runtime/JSCustomGetterSetterFunction.cpp:
+ (JSC::JSCustomGetterSetterFunction::finishCreation):
+ * runtime/JSDataViewPrototype.cpp:
+ (JSC::getData):
+ (JSC::setData):
+ (JSC::dataViewProtoGetterBuffer):
+ (JSC::dataViewProtoGetterByteLength):
+ (JSC::dataViewProtoGetterByteOffset):
+ * runtime/JSFunction.cpp:
+ (JSC::JSFunction::finishCreation):
+ (JSC::JSFunction::allocateAndInitializeRareData):
+ (JSC::JSFunction::initializeRareData):
+ (JSC::RetrieveArgumentsFunctor::RetrieveArgumentsFunctor):
+ (JSC::RetrieveCallerFunctionFunctor::RetrieveCallerFunctionFunctor):
+ (JSC::RetrieveCallerFunctionFunctor::operator()):
+ (JSC::JSFunction::callerGetter):
+ (JSC::JSFunction::getOwnNonIndexPropertyNames):
+ (JSC::getCalculatedDisplayName):
+ (JSC::JSFunction::reifyBoundNameIfNeeded):
+ * runtime/JSGenericTypedArrayView.h:
+ (JSC::toPossiblySharedNativeTypedView):
+ (JSC::toUnsharedNativeTypedView):
+ (JSC::JSGenericTypedArrayView<Adaptor>::toWrapped):
+ * runtime/JSGenericTypedArrayViewConstructorInlines.h:
+ (JSC::constructGenericTypedArrayViewWithArguments):
+ (JSC::constructGenericTypedArrayView):
+ * runtime/JSGenericTypedArrayViewInlines.h:
+ (JSC::JSGenericTypedArrayView<Adaptor>::set):
+ * runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
+ (JSC::speciesConstruct):
+ (JSC::genericTypedArrayViewProtoFuncSet):
+ (JSC::genericTypedArrayViewProtoFuncSlice):
+ (JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):
+ * runtime/JSGenericTypedArrayViewPrototypeInlines.h:
+ (JSC::JSGenericTypedArrayViewPrototype<ViewClass>::finishCreation):
+ * runtime/JSGlobalObject.cpp:
+ (JSC::getTemplateObject):
+ (JSC::enqueueJob):
+ (JSC::JSGlobalObject::init):
+ * runtime/JSGlobalObjectFunctions.cpp:
+ (JSC::globalFuncProtoGetter):
+ (JSC::globalFuncProtoSetter):
+ * runtime/JSInternalPromiseDeferred.cpp:
+ (JSC::JSInternalPromiseDeferred::create):
+ * runtime/JSLexicalEnvironment.h:
+ (JSC::asActivation):
+ * runtime/JSModuleLoader.cpp:
+ (JSC::JSModuleLoader::finishCreation):
+ (JSC::JSModuleLoader::evaluate):
+ (JSC::JSModuleLoader::getModuleNamespaceObject):
+ * runtime/JSModuleNamespaceObject.cpp:
+ (JSC::JSModuleNamespaceObject::finishCreation):
+ (JSC::moduleNamespaceObjectSymbolIterator):
+ * runtime/JSModuleRecord.cpp:
+ (JSC::JSModuleRecord::finishCreation):
+ * runtime/JSNativeStdFunction.cpp:
+ (JSC::JSNativeStdFunction::finishCreation):
+ * runtime/JSONObject.cpp:
+ (JSC::JSONObject::finishCreation):
+ (JSC::unwrapBoxedPrimitive):
+ (JSC::Stringifier::Stringifier):
+ (JSC::Walker::walk):
+ * runtime/JSObject.cpp:
+ (JSC::JSObject::className):
+ (JSC::JSObject::toStringName):
+ (JSC::JSObject::calculatedClassName):
+ (JSC::JSObject::putInlineSlow):
+ (JSC::JSObject::ensureInt32Slow):
+ (JSC::JSObject::ensureDoubleSlow):
+ (JSC::JSObject::ensureContiguousSlow):
+ (JSC::JSObject::ensureArrayStorageSlow):
+ (JSC::JSObject::deleteProperty):
+ (JSC::JSObject::getOwnStaticPropertySlot):
+ (JSC::JSObject::findPropertyHashEntry):
+ (JSC::JSObject::getOwnNonIndexPropertyNames):
+ (JSC::JSObject::reifyAllStaticProperties):
+ (JSC::JSObject::getOwnPropertyDescriptor):
+ * runtime/JSObject.h:
+ (JSC::JSObject::finishCreation):
+ (JSC::JSNonFinalObject::finishCreation):
+ (JSC::JSFinalObject::finishCreation):
+ * runtime/JSPromiseDeferred.cpp:
+ (JSC::JSPromiseDeferred::create):
+ * runtime/JSPropertyNameIterator.cpp:
+ (JSC::JSPropertyNameIterator::finishCreation):
+ (JSC::propertyNameIteratorFuncNext):
+ * runtime/JSScope.cpp:
+ (JSC::JSScope::symbolTable):
+ * runtime/JSScope.h:
+ * runtime/JSString.cpp:
+ (JSC::JSString::dumpToStream):
+ * runtime/JSStringIterator.cpp:
+ (JSC::JSStringIterator::finishCreation):
+ * runtime/JSTypedArrayViewPrototype.cpp:
+ (JSC::typedArrayViewPrivateFuncIsTypedArrayView):
+ (JSC::typedArrayViewPrivateFuncLength):
+ (JSC::typedArrayViewPrivateFuncGetOriginalConstructor):
+ (JSC::typedArrayViewProtoGetterFuncToStringTag):
+ (JSC::JSTypedArrayViewPrototype::finishCreation):
+ * runtime/LazyClassStructure.cpp:
+ (JSC::LazyClassStructure::Initializer::setConstructor):
+ * runtime/Lookup.h:
+ (JSC::putEntry):
+ * runtime/MapConstructor.cpp:
+ (JSC::MapConstructor::finishCreation):
+ * runtime/MapIteratorPrototype.cpp:
+ (JSC::MapIteratorPrototype::finishCreation):
+ (JSC::MapIteratorPrototypeFuncNext):
+ * runtime/MapPrototype.cpp:
+ (JSC::MapPrototype::finishCreation):
+ (JSC::mapProtoFuncValues):
+ (JSC::mapProtoFuncEntries):
+ (JSC::mapProtoFuncKeys):
+ (JSC::privateFuncMapIterator):
+ (JSC::privateFuncMapIteratorNext):
+ * runtime/MathObject.cpp:
+ (JSC::MathObject::finishCreation):
+ * runtime/ModuleLoaderPrototype.cpp:
+ (JSC::moduleLoaderPrototypeParseModule):
+ (JSC::moduleLoaderPrototypeRequestedModules):
+ (JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):
+ (JSC::moduleLoaderPrototypeResolve):
+ (JSC::moduleLoaderPrototypeFetch):
+ (JSC::moduleLoaderPrototypeInstantiate):
+ (JSC::moduleLoaderPrototypeGetModuleNamespaceObject):
+ (JSC::moduleLoaderPrototypeEvaluate):
+ * runtime/NativeErrorConstructor.cpp:
+ (JSC::NativeErrorConstructor::finishCreation):
+ * runtime/NumberConstructor.cpp:
+ (JSC::NumberConstructor::finishCreation):
+ * runtime/NumberObject.cpp:
+ (JSC::NumberObject::finishCreation):
+ * runtime/NumberPrototype.cpp:
+ (JSC::NumberPrototype::finishCreation):
+ * runtime/ObjectConstructor.cpp:
+ (JSC::ObjectConstructor::finishCreation):
+ * runtime/ObjectPrototype.cpp:
+ (JSC::ObjectPrototype::finishCreation):
+ * runtime/ProxyObject.cpp:
+ (JSC::ProxyObject::toStringName):
+ (JSC::ProxyObject::finishCreation):
+ * runtime/ReflectObject.cpp:
+ (JSC::ReflectObject::finishCreation):
+ (JSC::reflectObjectConstruct):
+ * runtime/RegExpConstructor.cpp:
+ (JSC::RegExpConstructor::finishCreation):
+ (JSC::setRegExpConstructorInput):
+ (JSC::setRegExpConstructorMultiline):
+ (JSC::constructRegExp):
+ * runtime/RegExpConstructor.h:
+ (JSC::asRegExpConstructor):
+ (JSC::isRegExp):
+ * runtime/RegExpObject.cpp:
+ (JSC::RegExpObject::finishCreation):
+ * runtime/RegExpObject.h:
+ (JSC::asRegExpObject):
+ * runtime/RegExpPrototype.cpp:
+ (JSC::RegExpPrototype::finishCreation):
+ (JSC::regExpProtoFuncTestFast):
+ (JSC::regExpProtoFuncExec):
+ (JSC::regExpProtoFuncMatchFast):
+ (JSC::regExpProtoFuncCompile):
+ (JSC::regExpProtoGetterGlobal):
+ (JSC::regExpProtoGetterIgnoreCase):
+ (JSC::regExpProtoGetterMultiline):
+ (JSC::regExpProtoGetterSticky):
+ (JSC::regExpProtoGetterUnicode):
+ (JSC::regExpProtoGetterSource):
+ * runtime/SamplingProfiler.cpp:
+ (JSC::SamplingProfiler::processUnverifiedStackTraces):
+ * runtime/ScriptExecutable.cpp:
+ (JSC::ScriptExecutable::newCodeBlockFor):
+ (JSC::ScriptExecutable::newReplacementCodeBlockFor):
+ * runtime/SetConstructor.cpp:
+ (JSC::SetConstructor::finishCreation):
+ * runtime/SetIteratorPrototype.cpp:
+ (JSC::SetIteratorPrototype::finishCreation):
+ (JSC::SetIteratorPrototypeFuncNext):
+ * runtime/SetPrototype.cpp:
+ (JSC::SetPrototype::finishCreation):
+ (JSC::setProtoFuncValues):
+ (JSC::setProtoFuncEntries):
+ (JSC::privateFuncSetIterator):
+ (JSC::privateFuncSetIteratorNext):
+ * runtime/StackFrame.cpp:
+ (JSC::StackFrame::sourceURL):
+ (JSC::StackFrame::functionName):
+ * runtime/StringIteratorPrototype.cpp:
+ (JSC::StringIteratorPrototype::finishCreation):
+ * runtime/StringObject.cpp:
+ (JSC::StringObject::finishCreation):
+ * runtime/StringObject.h:
+ (JSC::asStringObject):
+ * runtime/StringPrototype.cpp:
+ (JSC::StringPrototype::finishCreation):
+ (JSC::replace):
+ (JSC::stringProtoFuncReplaceUsingRegExp):
+ (JSC::stringProtoFuncToString):
+ * runtime/StructureRareData.cpp:
+ (JSC::StructureRareData::setObjectToStringValue):
+ * runtime/Symbol.cpp:
+ (JSC::Symbol::finishCreation):
+ * runtime/SymbolConstructor.cpp:
+ (JSC::SymbolConstructor::finishCreation):
+ * runtime/SymbolObject.cpp:
+ (JSC::SymbolObject::finishCreation):
+ * runtime/SymbolPrototype.cpp:
+ (JSC::SymbolPrototype::finishCreation):
+ (JSC::symbolProtoFuncToString):
+ (JSC::symbolProtoFuncValueOf):
+ * runtime/TestRunnerUtils.cpp:
+ (JSC::getExecutableForFunction):
+ * runtime/ThrowScope.cpp:
+ (JSC::ThrowScope::throwException):
+ * runtime/VM.cpp:
+ (JSC::VM::throwException):
+ * runtime/WeakMapConstructor.cpp:
+ (JSC::WeakMapConstructor::finishCreation):
+ * runtime/WeakMapPrototype.cpp:
+ (JSC::WeakMapPrototype::finishCreation):
+ (JSC::getWeakMapData):
+ * runtime/WeakSetConstructor.cpp:
+ (JSC::WeakSetConstructor::finishCreation):
+ * runtime/WeakSetPrototype.cpp:
+ (JSC::WeakSetPrototype::finishCreation):
+ (JSC::getWeakMapData):
+ * tools/JSDollarVMPrototype.cpp:
+ (JSC::codeBlockFromArg):
+ * wasm/JSWebAssembly.cpp:
+ (JSC::JSWebAssembly::finishCreation):
+ * wasm/js/JSWebAssemblyHelpers.h:
+ (JSC::getWasmBufferFromValue):
+ * wasm/js/JSWebAssemblyInstance.cpp:
+ (JSC::JSWebAssemblyInstance::finishCreation):
+ * wasm/js/JSWebAssemblyMemory.cpp:
+ (JSC::JSWebAssemblyMemory::grow):
+ (JSC::JSWebAssemblyMemory::finishCreation):
+ (JSC::JSWebAssemblyMemory::destroy):
+ (JSC::JSWebAssemblyMemory::~JSWebAssemblyMemory): Deleted.
+ * wasm/js/JSWebAssemblyMemory.h:
+ * wasm/js/JSWebAssemblyModule.cpp:
+ (JSC::JSWebAssemblyModule::finishCreation):
+ * wasm/js/JSWebAssemblyTable.cpp:
+ (JSC::JSWebAssemblyTable::finishCreation):
+ * wasm/js/WebAssemblyFunction.cpp:
+ (JSC::callWebAssemblyFunction):
+ (JSC::WebAssemblyFunction::finishCreation):
+ * wasm/js/WebAssemblyInstanceConstructor.cpp:
+ (JSC::constructJSWebAssemblyInstance):
+ * wasm/js/WebAssemblyMemoryPrototype.cpp:
+ (JSC::getMemory):
+ * wasm/js/WebAssemblyModulePrototype.cpp:
+ (JSC::webAssemblyModuleProtoCustomSections):
+ * wasm/js/WebAssemblyModuleRecord.cpp:
+ (JSC::WebAssemblyModuleRecord::finishCreation):
+ * wasm/js/WebAssemblyTablePrototype.cpp:
+ (JSC::getTable):
+ (JSC::webAssemblyTableProtoFuncSet):
+
</ins><span class="cx"> 2017-01-26 Mark Lam <mark.lam@apple.com>
</span><span class="cx">
</span><span class="cx"> Fix missing exception check in genericTypedArrayViewProtoFuncSet().
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebindingsScriptFunctionCallcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bindings/ScriptFunctionCall.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx">
</span><span class="cx"> if (exception) {
</span><span class="cx"> // Do not treat a terminated execution exception as having an exception. Just treat it as an empty result.
</span><del>- hadException = !isTerminatedExecutionException(exception);
</del><ins>+ hadException = !isTerminatedExecutionException(vm, exception);
</ins><span class="cx"> return { };
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCallVarianth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CallVariant.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CallVariant.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bytecode/CallVariant.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -85,21 +85,21 @@
</span><span class="cx">
</span><span class="cx"> InternalFunction* internalFunction() const
</span><span class="cx"> {
</span><del>- return jsDynamicCast<InternalFunction*>(m_callee);
</del><ins>+ return jsDynamicCast<InternalFunction*>(*m_callee->vm(), m_callee);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSFunction* function() const
</span><span class="cx"> {
</span><del>- return jsDynamicCast<JSFunction*>(m_callee);
</del><ins>+ return jsDynamicCast<JSFunction*>(*m_callee->vm(), m_callee);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- bool isClosureCall() const { return !!jsDynamicCast<ExecutableBase*>(m_callee); }
</del><ins>+ bool isClosureCall() const { return !!jsDynamicCast<ExecutableBase*>(*m_callee->vm(), m_callee); }
</ins><span class="cx">
</span><span class="cx"> ExecutableBase* executable() const
</span><span class="cx"> {
</span><span class="cx"> if (JSFunction* function = this->function())
</span><span class="cx"> return function->executable();
</span><del>- return jsDynamicCast<ExecutableBase*>(m_callee);
</del><ins>+ return jsDynamicCast<ExecutableBase*>(*m_callee->vm(), m_callee);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSCell* nonExecutableCallee() const
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> FunctionExecutable* functionExecutable() const
</span><span class="cx"> {
</span><span class="cx"> if (ExecutableBase* executable = this->executable())
</span><del>- return jsDynamicCast<FunctionExecutable*>(executable);
</del><ins>+ return jsDynamicCast<FunctionExecutable*>(*m_callee->vm(), executable);
</ins><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> NativeExecutable* nativeExecutable() const
</span><span class="cx"> {
</span><span class="cx"> if (ExecutableBase* executable = this->executable())
</span><del>- return jsDynamicCast<NativeExecutable*>(executable);
</del><ins>+ return jsDynamicCast<NativeExecutable*>(*m_callee->vm(), executable);
</ins><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeCodeBlockcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1948,7 +1948,7 @@
</span><span class="cx">
</span><span class="cx"> // We already have the cloned symbol table for the module environment since we need to instantiate
</span><span class="cx"> // the module environments before linking the code block. We replace the stored symbol table with the already cloned one.
</span><del>- if (UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCodeBlock = jsDynamicCast<UnlinkedModuleProgramCodeBlock*>(unlinkedCodeBlock)) {
</del><ins>+ if (UnlinkedModuleProgramCodeBlock* unlinkedModuleProgramCodeBlock = jsDynamicCast<UnlinkedModuleProgramCodeBlock*>(vm, unlinkedCodeBlock)) {
</ins><span class="cx"> SymbolTable* clonedSymbolTable = jsCast<ModuleProgramExecutable*>(ownerExecutable)->moduleEnvironmentSymbolTable();
</span><span class="cx"> if (m_vm->typeProfiler()) {
</span><span class="cx"> ConcurrentJSLocker locker(clonedSymbolTable->m_lock);
</span><span class="lines">@@ -2405,7 +2405,7 @@
</span><span class="cx"> JSValue constant = constants[i].get();
</span><span class="cx">
</span><span class="cx"> if (!constant.isEmpty()) {
</span><del>- if (SymbolTable* symbolTable = jsDynamicCast<SymbolTable*>(constant)) {
</del><ins>+ if (SymbolTable* symbolTable = jsDynamicCast<SymbolTable*>(*vm(), constant)) {
</ins><span class="cx"> if (hasTypeProfiler) {
</span><span class="cx"> ConcurrentJSLocker locker(symbolTable->m_lock);
</span><span class="cx"> symbolTable->prepareForTypeProfiling(locker);
</span><span class="lines">@@ -2725,8 +2725,9 @@
</span><span class="cx"> // GC we still have not proved liveness, then this code block is toast.
</span><span class="cx"> bool allAreLiveSoFar = true;
</span><span class="cx"> for (unsigned i = 0; i < dfgCommon->weakReferences.size(); ++i) {
</span><del>- ASSERT(!jsDynamicCast<CodeBlock*>(dfgCommon->weakReferences[i].get()));
- if (!Heap::isMarkedConcurrently(dfgCommon->weakReferences[i].get())) {
</del><ins>+ JSCell* reference = dfgCommon->weakReferences[i].get();
+ ASSERT(!jsDynamicCast<CodeBlock*>(*reference->vm(), reference));
+ if (!Heap::isMarkedConcurrently(reference)) {
</ins><span class="cx"> allAreLiveSoFar = false;
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="lines">@@ -3308,7 +3309,7 @@
</span><span class="cx"> #if ENABLE(JIT)
</span><span class="cx"> CodeBlock* CodeBlock::replacement()
</span><span class="cx"> {
</span><del>- const ClassInfo* classInfo = this->classInfo();
</del><ins>+ const ClassInfo* classInfo = this->classInfo(*vm());
</ins><span class="cx">
</span><span class="cx"> if (classInfo == FunctionCodeBlock::info())
</span><span class="cx"> return jsCast<FunctionExecutable*>(ownerExecutable())->codeBlockFor(m_isConstructor ? CodeForConstruct : CodeForCall);
</span><span class="lines">@@ -3328,7 +3329,7 @@
</span><span class="cx">
</span><span class="cx"> DFG::CapabilityLevel CodeBlock::computeCapabilityLevel()
</span><span class="cx"> {
</span><del>- const ClassInfo* classInfo = this->classInfo();
</del><ins>+ const ClassInfo* classInfo = this->classInfo(*vm());
</ins><span class="cx">
</span><span class="cx"> if (classInfo == FunctionCodeBlock::info()) {
</span><span class="cx"> if (m_isConstructor)
</span><span class="lines">@@ -4206,7 +4207,7 @@
</span><span class="cx"> for (auto& constantRegister : m_constantRegisters) {
</span><span class="cx"> if (constantRegister.get().isEmpty())
</span><span class="cx"> continue;
</span><del>- if (SymbolTable* symbolTable = jsDynamicCast<SymbolTable*>(constantRegister.get())) {
</del><ins>+ if (SymbolTable* symbolTable = jsDynamicCast<SymbolTable*>(*vm(), constantRegister.get())) {
</ins><span class="cx"> ConcurrentJSLocker locker(symbolTable->m_lock);
</span><span class="cx"> auto end = symbolTable->end(locker);
</span><span class="cx"> for (auto ptr = symbolTable->begin(locker); ptr != end; ++ptr) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeObjectAllocationProfileh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/ObjectAllocationProfile.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/ObjectAllocationProfile.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bytecode/ObjectAllocationProfile.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx"> JSValue value = prototype->getDirect(vm, propertyNameVector[i]);
</span><span class="cx">
</span><span class="cx"> // Functions are common, and are usually class-level objects that are not overridden.
</span><del>- if (jsDynamicCast<JSFunction*>(value))
</del><ins>+ if (jsDynamicCast<JSFunction*>(vm, value))
</ins><span class="cx"> continue;
</span><span class="cx">
</span><span class="cx"> ++count;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeObjectPropertyConditioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -162,9 +162,9 @@
</span><span class="cx"> m_condition.validateReferences(tracked);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-ObjectPropertyCondition ObjectPropertyCondition::attemptToMakeEquivalenceWithoutBarrier() const
</del><ins>+ObjectPropertyCondition ObjectPropertyCondition::attemptToMakeEquivalenceWithoutBarrier(VM& vm) const
</ins><span class="cx"> {
</span><del>- PropertyCondition result = condition().attemptToMakeEquivalenceWithoutBarrier(object());
</del><ins>+ PropertyCondition result = condition().attemptToMakeEquivalenceWithoutBarrier(vm, object());
</ins><span class="cx"> if (!result)
</span><span class="cx"> return ObjectPropertyCondition();
</span><span class="cx"> return ObjectPropertyCondition(object(), result);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeObjectPropertyConditionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bytecode/ObjectPropertyCondition.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -232,12 +232,12 @@
</span><span class="cx">
</span><span class="cx"> void validateReferences(const TrackedReferences&) const;
</span><span class="cx">
</span><del>- bool isValidValueForPresence(JSValue value) const
</del><ins>+ bool isValidValueForPresence(VM& vm, JSValue value) const
</ins><span class="cx"> {
</span><del>- return condition().isValidValueForPresence(value);
</del><ins>+ return condition().isValidValueForPresence(vm, value);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- ObjectPropertyCondition attemptToMakeEquivalenceWithoutBarrier() const;
</del><ins>+ ObjectPropertyCondition attemptToMakeEquivalenceWithoutBarrier(VM&) const;
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> JSObject* m_object;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePropertyConditioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PropertyCondition.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PropertyCondition.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bytecode/PropertyCondition.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -315,25 +315,25 @@
</span><span class="cx"> tracked.check(requiredValue());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool PropertyCondition::isValidValueForAttributes(JSValue value, unsigned attributes)
</del><ins>+bool PropertyCondition::isValidValueForAttributes(VM& vm, JSValue value, unsigned attributes)
</ins><span class="cx"> {
</span><span class="cx"> bool attributesClaimAccessor = !!(attributes & Accessor);
</span><del>- bool valueClaimsAccessor = !!jsDynamicCast<GetterSetter*>(value);
</del><ins>+ bool valueClaimsAccessor = !!jsDynamicCast<GetterSetter*>(vm, value);
</ins><span class="cx"> return attributesClaimAccessor == valueClaimsAccessor;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool PropertyCondition::isValidValueForPresence(JSValue value) const
</del><ins>+bool PropertyCondition::isValidValueForPresence(VM& vm, JSValue value) const
</ins><span class="cx"> {
</span><del>- return isValidValueForAttributes(value, attributes());
</del><ins>+ return isValidValueForAttributes(vm, value, attributes());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-PropertyCondition PropertyCondition::attemptToMakeEquivalenceWithoutBarrier(JSObject* base) const
</del><ins>+PropertyCondition PropertyCondition::attemptToMakeEquivalenceWithoutBarrier(VM& vm, JSObject* base) const
</ins><span class="cx"> {
</span><span class="cx"> Structure* structure = base->structure();
</span><span class="cx"> if (!structure->isValidOffset(offset()))
</span><span class="cx"> return PropertyCondition();
</span><span class="cx"> JSValue value = base->getDirect(offset());
</span><del>- if (!isValidValueForPresence(value))
</del><ins>+ if (!isValidValueForPresence(vm, value))
</ins><span class="cx"> return PropertyCondition();
</span><span class="cx"> return equivalenceWithoutBarrier(uid(), value);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodePropertyConditionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/PropertyCondition.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/PropertyCondition.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bytecode/PropertyCondition.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -282,11 +282,11 @@
</span><span class="cx">
</span><span class="cx"> void validateReferences(const TrackedReferences&) const;
</span><span class="cx">
</span><del>- static bool isValidValueForAttributes(JSValue value, unsigned attributes);
</del><ins>+ static bool isValidValueForAttributes(VM&, JSValue, unsigned attributes);
</ins><span class="cx">
</span><del>- bool isValidValueForPresence(JSValue) const;
</del><ins>+ bool isValidValueForPresence(VM&, JSValue) const;
</ins><span class="cx">
</span><del>- PropertyCondition attemptToMakeEquivalenceWithoutBarrier(JSObject* base) const;
</del><ins>+ PropertyCondition attemptToMakeEquivalenceWithoutBarrier(VM&, JSObject* base) const;
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> bool isWatchableWhenValid(Structure*, WatchabilityEffort) const;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorebytecodeSpeculatedTypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/bytecode/SpeculatedType.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/bytecode/SpeculatedType.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/bytecode/SpeculatedType.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -414,7 +414,8 @@
</span><span class="cx">
</span><span class="cx"> SpeculatedType speculationFromCell(JSCell* cell)
</span><span class="cx"> {
</span><del>- if (JSString* string = jsDynamicCast<JSString*>(cell)) {
</del><ins>+ if (cell->isString()) {
+ JSString* string = jsCast<JSString*>(cell);
</ins><span class="cx"> if (const StringImpl* impl = string->tryGetValueImpl()) {
</span><span class="cx"> if (impl->isAtomic())
</span><span class="cx"> return SpecStringIdent;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/Debugger.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/Debugger.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/debugger/Debugger.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx">
</span><span class="cx"> JSCell* cell = static_cast<JSCell*>(heapCell);
</span><span class="cx">
</span><del>- JSFunction* function = jsDynamicCast<JSFunction*>(cell);
</del><ins>+ JSFunction* function = jsDynamicCast<JSFunction*>(*cell->vm(), cell);
</ins><span class="cx"> if (!function)
</span><span class="cx"> return IterationStatus::Continue;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggerCallFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/debugger/DebuggerCallFrame.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -136,9 +136,10 @@
</span><span class="cx"> if (!isValid())
</span><span class="cx"> return String();
</span><span class="cx">
</span><ins>+ VM& vm = m_validMachineFrame->vm();
</ins><span class="cx"> if (isTailDeleted()) {
</span><del>- if (JSFunction* func = jsDynamicCast<JSFunction*>(m_shadowChickenFrame.callee))
- return func->calculatedDisplayName(m_validMachineFrame->vm());
</del><ins>+ if (JSFunction* func = jsDynamicCast<JSFunction*>(vm, m_shadowChickenFrame.callee))
+ return func->calculatedDisplayName(vm);
</ins><span class="cx"> return m_shadowChickenFrame.codeBlock->inferredName().data();
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -159,7 +160,7 @@
</span><span class="cx"> scope = m_shadowChickenFrame.scope;
</span><span class="cx"> else if (codeBlock && codeBlock->scopeRegister().isValid())
</span><span class="cx"> scope = m_validMachineFrame->scope(codeBlock->scopeRegister().offset());
</span><del>- else if (JSCallee* callee = jsDynamicCast<JSCallee*>(m_validMachineFrame->jsCallee()))
</del><ins>+ else if (JSCallee* callee = jsDynamicCast<JSCallee*>(vm, m_validMachineFrame->jsCallee()))
</ins><span class="cx"> scope = callee->scope();
</span><span class="cx"> else
</span><span class="cx"> scope = m_validMachineFrame->lexicalGlobalObject()->globalLexicalEnvironment();
</span><span class="lines">@@ -178,7 +179,7 @@
</span><span class="cx"> if (isTailDeleted())
</span><span class="cx"> return FunctionType;
</span><span class="cx">
</span><del>- if (jsDynamicCast<JSFunction*>(m_validMachineFrame->jsCallee()))
</del><ins>+ if (jsDynamicCast<JSFunction*>(m_validMachineFrame->vm(), m_validMachineFrame->jsCallee()))
</ins><span class="cx"> return FunctionType;
</span><span class="cx">
</span><span class="cx"> return ProgramType;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredebuggerDebuggerScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/debugger/DebuggerScope.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -212,7 +212,7 @@
</span><span class="cx">
</span><span class="cx"> String DebuggerScope::name() const
</span><span class="cx"> {
</span><del>- SymbolTable* symbolTable = m_scope->symbolTable();
</del><ins>+ SymbolTable* symbolTable = m_scope->symbolTable(*vm());
</ins><span class="cx"> if (!symbolTable)
</span><span class="cx"> return String();
</span><span class="cx">
</span><span class="lines">@@ -225,7 +225,7 @@
</span><span class="cx">
</span><span class="cx"> DebuggerLocation DebuggerScope::location() const
</span><span class="cx"> {
</span><del>- SymbolTable* symbolTable = m_scope->symbolTable();
</del><ins>+ SymbolTable* symbolTable = m_scope->symbolTable(*vm());
</ins><span class="cx"> if (!symbolTable)
</span><span class="cx"> return DebuggerLocation();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGAbstractInterpreterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreter.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -197,6 +197,7 @@
</span><span class="cx">
</span><span class="cx"> CodeBlock* m_codeBlock;
</span><span class="cx"> Graph& m_graph;
</span><ins>+ VM& m_vm;
</ins><span class="cx"> AbstractStateType& m_state;
</span><span class="cx"> std::unique_ptr<PhiChildren> m_phiChildren;
</span><span class="cx"> };
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGAbstractInterpreterInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -46,6 +46,7 @@
</span><span class="cx"> AbstractInterpreter<AbstractStateType>::AbstractInterpreter(Graph& graph, AbstractStateType& state)
</span><span class="cx"> : m_codeBlock(graph.m_codeBlock)
</span><span class="cx"> , m_graph(graph)
</span><ins>+ , m_vm(m_graph.m_vm)
</ins><span class="cx"> , m_state(state)
</span><span class="cx"> {
</span><span class="cx"> if (m_graph.m_form == SSA)
</span><span class="lines">@@ -559,7 +560,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> case MakeRope: {
</span><del>- forNode(node).set(m_graph, m_graph.m_vm.stringStructure.get());
</del><ins>+ forNode(node).set(m_graph, m_vm.stringStructure.get());
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1090,7 +1091,7 @@
</span><span class="cx"> setConstant(node, jsBoolean(child.value().isEmpty()));
</span><span class="cx"> break;
</span><span class="cx"> case IsTypedArrayView:
</span><del>- setConstant(node, jsBoolean(child.value().isObject() && isTypedView(child.value().getObject()->classInfo()->typedArrayStorageType)));
</del><ins>+ setConstant(node, jsBoolean(child.value().isObject() && isTypedView(child.value().getObject()->classInfo(m_vm)->typedArrayStorageType)));
</ins><span class="cx"> break;
</span><span class="cx"> default:
</span><span class="cx"> constantWasSet = false;
</span><span class="lines">@@ -1257,22 +1258,21 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> case TypeOf: {
</span><del>- VM* vm = m_codeBlock->vm();
</del><span class="cx"> JSValue child = forNode(node->child1()).value();
</span><span class="cx"> AbstractValue& abstractChild = forNode(node->child1());
</span><span class="cx"> if (child) {
</span><del>- JSValue typeString = jsTypeStringForValue(*vm, m_codeBlock->globalObjectFor(node->origin.semantic), child);
</del><ins>+ JSValue typeString = jsTypeStringForValue(m_vm, m_codeBlock->globalObjectFor(node->origin.semantic), child);
</ins><span class="cx"> setConstant(node, *m_graph.freeze(typeString));
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (isFullNumberSpeculation(abstractChild.m_type)) {
</span><del>- setConstant(node, *m_graph.freeze(vm->smallStrings.numberString()));
</del><ins>+ setConstant(node, *m_graph.freeze(m_vm.smallStrings.numberString()));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (isStringSpeculation(abstractChild.m_type)) {
</span><del>- setConstant(node, *m_graph.freeze(vm->smallStrings.stringString()));
</del><ins>+ setConstant(node, *m_graph.freeze(m_vm.smallStrings.stringString()));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1279,22 +1279,22 @@
</span><span class="cx"> // FIXME: We could use the masquerades-as-undefined watchpoint here.
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=144456
</span><span class="cx"> if (!(abstractChild.m_type & ~(SpecObject - SpecObjectOther - SpecFunction))) {
</span><del>- setConstant(node, *m_graph.freeze(vm->smallStrings.objectString()));
</del><ins>+ setConstant(node, *m_graph.freeze(m_vm.smallStrings.objectString()));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (isFunctionSpeculation(abstractChild.m_type)) {
</span><del>- setConstant(node, *m_graph.freeze(vm->smallStrings.functionString()));
</del><ins>+ setConstant(node, *m_graph.freeze(m_vm.smallStrings.functionString()));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (isBooleanSpeculation(abstractChild.m_type)) {
</span><del>- setConstant(node, *m_graph.freeze(vm->smallStrings.booleanString()));
</del><ins>+ setConstant(node, *m_graph.freeze(m_vm.smallStrings.booleanString()));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (isSymbolSpeculation(abstractChild.m_type)) {
</span><del>- setConstant(node, *m_graph.freeze(vm->smallStrings.symbolString()));
</del><ins>+ setConstant(node, *m_graph.freeze(m_vm.smallStrings.symbolString()));
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1504,7 +1504,7 @@
</span><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case StringCharAt:
</span><del>- forNode(node).set(m_graph, m_graph.m_vm.stringStructure.get());
</del><ins>+ forNode(node).set(m_graph, m_vm.stringStructure.get());
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case GetByVal: {
</span><span class="lines">@@ -1545,7 +1545,7 @@
</span><span class="cx"> clobberWorld(node->origin.semantic, clobberLimit);
</span><span class="cx"> forNode(node).makeHeapTop();
</span><span class="cx"> } else
</span><del>- forNode(node).set(m_graph, m_graph.m_vm.stringStructure.get());
</del><ins>+ forNode(node).set(m_graph, m_vm.stringStructure.get());
</ins><span class="cx"> break;
</span><span class="cx"> case Array::DirectArguments:
</span><span class="cx"> case Array::ScopedArguments:
</span><span class="lines">@@ -1728,7 +1728,7 @@
</span><span class="cx"> } else
</span><span class="cx"> clobberWorld(node->origin.semantic, clobberLimit);
</span><span class="cx"> if (JSValue globalObjectValue = forNode(node->child1()).m_value) {
</span><del>- if (JSGlobalObject* globalObject = jsDynamicCast<JSGlobalObject*>(globalObjectValue)) {
</del><ins>+ if (JSGlobalObject* globalObject = jsDynamicCast<JSGlobalObject*>(m_vm, globalObjectValue)) {
</ins><span class="cx"> if (!globalObject->isHavingABadTime()) {
</span><span class="cx"> m_graph.watchpoints().addLazily(globalObject->havingABadTimeWatchpoint());
</span><span class="cx"> Structure* structure = globalObject->regExpMatchesArrayStructure();
</span><span class="lines">@@ -1759,7 +1759,7 @@
</span><span class="cx"> // This doesn't clobber the world. It just reads and writes regexp state.
</span><span class="cx"> } else
</span><span class="cx"> clobberWorld(node->origin.semantic, clobberLimit);
</span><del>- forNode(node).set(m_graph, m_graph.m_vm.stringStructure.get());
</del><ins>+ forNode(node).set(m_graph, m_vm.stringStructure.get());
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case Jump:
</span><span class="lines">@@ -1868,7 +1868,7 @@
</span><span class="cx"> RELEASE_ASSERT_NOT_REACHED();
</span><span class="cx"> break;
</span><span class="cx"> }
</span><del>- forNode(node).set(m_graph, m_graph.m_vm.stringStructure.get());
</del><ins>+ forNode(node).set(m_graph, m_vm.stringStructure.get());
</ins><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1902,7 +1902,7 @@
</span><span class="cx">
</span><span class="cx"> case Spread:
</span><span class="cx"> forNode(node).set(
</span><del>- m_graph, m_graph.m_vm.fixedArrayStructure.get());
</del><ins>+ m_graph, m_vm.fixedArrayStructure.get());
</ins><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case NewArrayBuffer:
</span><span class="lines">@@ -2042,7 +2042,7 @@
</span><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> case GetCallee:
</span><del>- if (FunctionExecutable* executable = jsDynamicCast<FunctionExecutable*>(m_codeBlock->ownerExecutable())) {
</del><ins>+ if (FunctionExecutable* executable = jsDynamicCast<FunctionExecutable*>(m_vm, m_codeBlock->ownerExecutable())) {
</ins><span class="cx"> InferredValue* singleton = executable->singletonFunction();
</span><span class="cx"> if (JSValue value = singleton->inferredValue()) {
</span><span class="cx"> m_graph.watchpoints().addLazily(singleton);
</span><span class="lines">@@ -2092,7 +2092,7 @@
</span><span class="cx">
</span><span class="cx"> case GetScope:
</span><span class="cx"> if (JSValue base = forNode(node->child1()).m_value) {
</span><del>- if (JSFunction* function = jsDynamicCast<JSFunction*>(base)) {
</del><ins>+ if (JSFunction* function = jsDynamicCast<JSFunction*>(m_vm, base)) {
</ins><span class="cx"> setConstant(node, *m_graph.freeze(function->scope()));
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="lines">@@ -2273,7 +2273,7 @@
</span><span class="cx"> const RegisteredStructureSet& set = node->structureSet();
</span><span class="cx">
</span><span class="cx"> if (value.value()) {
</span><del>- if (Structure* structure = jsDynamicCast<Structure*>(value.value())) {
</del><ins>+ if (Structure* structure = jsDynamicCast<Structure*>(m_vm, value.value())) {
</ins><span class="cx"> if (set.contains(m_graph.registerStructure(structure))) {
</span><span class="cx"> m_state.setFoundConstants(true);
</span><span class="cx"> break;
</span><span class="lines">@@ -2288,7 +2288,7 @@
</span><span class="cx"> m_phiChildren->forAllTransitiveIncomingValues(
</span><span class="cx"> node,
</span><span class="cx"> [&] (Node* incoming) {
</span><del>- if (Structure* structure = incoming->dynamicCastConstant<Structure*>()) {
</del><ins>+ if (Structure* structure = incoming->dynamicCastConstant<Structure*>(m_vm)) {
</ins><span class="cx"> if (set.contains(m_graph.registerStructure(structure)))
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -2331,7 +2331,7 @@
</span><span class="cx"> case CheckDOM: {
</span><span class="cx"> JSValue constant = forNode(node->child1()).value();
</span><span class="cx"> if (constant) {
</span><del>- if (constant.isCell() && constant.asCell()->inherits(node->classInfo())) {
</del><ins>+ if (constant.isCell() && constant.asCell()->inherits(m_vm, node->classInfo())) {
</ins><span class="cx"> m_state.setFoundConstants(true);
</span><span class="cx"> ASSERT(constant);
</span><span class="cx"> break;
</span><span class="lines">@@ -2520,7 +2520,7 @@
</span><span class="cx"> case GetGetterSetterByOffset: {
</span><span class="cx"> StorageAccessData& data = node->storageAccessData();
</span><span class="cx"> JSValue result = m_graph.tryGetConstantProperty(forNode(node->child2()), data.offset);
</span><del>- if (result && jsDynamicCast<GetterSetter*>(result)) {
</del><ins>+ if (result && jsDynamicCast<GetterSetter*>(m_vm, result)) {
</ins><span class="cx"> setConstant(node, *m_graph.freeze(result));
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="lines">@@ -2638,7 +2638,7 @@
</span><span class="cx"> case GetExecutable: {
</span><span class="cx"> JSValue value = forNode(node->child1()).value();
</span><span class="cx"> if (value) {
</span><del>- JSFunction* function = jsDynamicCast<JSFunction*>(value);
</del><ins>+ JSFunction* function = jsDynamicCast<JSFunction*>(m_vm, value);
</ins><span class="cx"> if (function) {
</span><span class="cx"> setConstant(node, *m_graph.freeze(function->executable()));
</span><span class="cx"> break;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGByteCodeParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -341,7 +341,7 @@
</span><span class="cx"> // We have to do some constant-folding here because this enables CreateThis folding. Note
</span><span class="cx"> // that we don't have such watchpoint-based folding for inlined uses of Callee, since in that
</span><span class="cx"> // case if the function is a singleton then we already know it.
</span><del>- if (FunctionExecutable* executable = jsDynamicCast<FunctionExecutable*>(m_codeBlock->ownerExecutable())) {
</del><ins>+ if (FunctionExecutable* executable = jsDynamicCast<FunctionExecutable*>(*m_vm, m_codeBlock->ownerExecutable())) {
</ins><span class="cx"> InferredValue* singleton = executable->singletonFunction();
</span><span class="cx"> if (JSValue value = singleton->inferredValue()) {
</span><span class="cx"> m_graph.watchpoints().addLazily(singleton);
</span><span class="lines">@@ -2431,7 +2431,7 @@
</span><span class="cx"> Structure* regExpStructure = globalObject->regExpStructure();
</span><span class="cx"> m_graph.registerStructure(regExpStructure);
</span><span class="cx"> ASSERT(regExpStructure->storedPrototype().isObject());
</span><del>- ASSERT(regExpStructure->storedPrototype().asCell()->classInfo() == RegExpPrototype::info());
</del><ins>+ ASSERT(regExpStructure->storedPrototype().asCell()->classInfo(*m_vm) == RegExpPrototype::info());
</ins><span class="cx">
</span><span class="cx"> FrozenValue* regExpPrototypeObjectValue = m_graph.freeze(regExpStructure->storedPrototype());
</span><span class="cx"> Structure* regExpPrototypeStructure = regExpPrototypeObjectValue->structure();
</span><span class="lines">@@ -2492,7 +2492,7 @@
</span><span class="cx"> Structure* regExpStructure = globalObject->regExpStructure();
</span><span class="cx"> m_graph.registerStructure(regExpStructure);
</span><span class="cx"> ASSERT(regExpStructure->storedPrototype().isObject());
</span><del>- ASSERT(regExpStructure->storedPrototype().asCell()->classInfo() == RegExpPrototype::info());
</del><ins>+ ASSERT(regExpStructure->storedPrototype().asCell()->classInfo(*m_vm) == RegExpPrototype::info());
</ins><span class="cx">
</span><span class="cx"> FrozenValue* regExpPrototypeObjectValue = m_graph.freeze(regExpStructure->storedPrototype());
</span><span class="cx"> Structure* regExpPrototypeStructure = regExpPrototypeObjectValue->structure();
</span><span class="lines">@@ -3153,7 +3153,7 @@
</span><span class="cx"> // because it's the most profitable. Also, there are cases where the presence is watchable but
</span><span class="cx"> // we don't want to watch it unless it became an equivalence (see the relationship between
</span><span class="cx"> // (1), (2), and (3) above).
</span><del>- ObjectPropertyCondition equivalenceCondition = condition.attemptToMakeEquivalenceWithoutBarrier();
</del><ins>+ ObjectPropertyCondition equivalenceCondition = condition.attemptToMakeEquivalenceWithoutBarrier(*m_vm);
</ins><span class="cx"> if (m_graph.watchCondition(equivalenceCondition))
</span><span class="cx"> return GetByOffsetMethod::constant(m_graph.freeze(equivalenceCondition.requiredValue()));
</span><span class="cx">
</span><span class="lines">@@ -3292,7 +3292,7 @@
</span><span class="cx"> void ByteCodeParser::checkPresenceLike(
</span><span class="cx"> Node* base, UniquedStringImpl* uid, PropertyOffset offset, const StructureSet& set)
</span><span class="cx"> {
</span><del>- if (JSObject* knownBase = base->dynamicCastConstant<JSObject*>()) {
</del><ins>+ if (JSObject* knownBase = base->dynamicCastConstant<JSObject*>(*m_vm)) {
</ins><span class="cx"> if (checkPresenceLike(knownBase, uid, offset, set))
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -3311,7 +3311,7 @@
</span><span class="cx">
</span><span class="cx"> UniquedStringImpl* uid = m_graph.identifiers()[identifierNumber];
</span><span class="cx">
</span><del>- if (JSObject* knownBase = base->dynamicCastConstant<JSObject*>()) {
</del><ins>+ if (JSObject* knownBase = base->dynamicCastConstant<JSObject*>(*m_vm)) {
</ins><span class="cx"> // Try to optimize away the structure check. Note that it's not worth doing anything about this
</span><span class="cx"> // if the base's structure is watched.
</span><span class="cx"> Structure* structure = base->constant()->structure();
</span><span class="lines">@@ -3345,7 +3345,7 @@
</span><span class="cx"> presenceLike(knownBase, uid, variant.offset(), variant.structureSet());
</span><span class="cx"> if (presenceCondition) {
</span><span class="cx"> ObjectPropertyCondition equivalenceCondition =
</span><del>- presenceCondition.attemptToMakeEquivalenceWithoutBarrier();
</del><ins>+ presenceCondition.attemptToMakeEquivalenceWithoutBarrier(*m_vm);
</ins><span class="cx"> if (m_graph.watchCondition(equivalenceCondition))
</span><span class="cx"> return weakJSConstant(equivalenceCondition.requiredValue());
</span><span class="cx">
</span><span class="lines">@@ -3882,13 +3882,13 @@
</span><span class="cx"> int calleeOperand = currentInstruction[2].u.operand;
</span><span class="cx"> Node* callee = get(VirtualRegister(calleeOperand));
</span><span class="cx">
</span><del>- JSFunction* function = callee->dynamicCastConstant<JSFunction*>();
</del><ins>+ JSFunction* function = callee->dynamicCastConstant<JSFunction*>(*m_vm);
</ins><span class="cx"> if (!function) {
</span><span class="cx"> JSCell* cachedFunction = currentInstruction[4].u.jsCell.unvalidatedGet();
</span><span class="cx"> if (cachedFunction
</span><span class="cx"> && cachedFunction != JSCell::seenMultipleCalleeObjects()
</span><span class="cx"> && !m_inlineStackTop->m_exitProfile.hasExitSite(m_currentIndex, BadCell)) {
</span><del>- ASSERT(cachedFunction->inherits(JSFunction::info()));
</del><ins>+ ASSERT(cachedFunction->inherits(*m_vm, JSFunction::info()));
</ins><span class="cx">
</span><span class="cx"> FrozenValue* frozen = m_graph.freeze(cachedFunction);
</span><span class="cx"> addToGraph(CheckCell, OpInfo(frozen), callee);
</span><span class="lines">@@ -5012,7 +5012,7 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> }
</span><del>- if (JSScope* scope = localBase->dynamicCastConstant<JSScope*>()) {
</del><ins>+ if (JSScope* scope = localBase->dynamicCastConstant<JSScope*>(*m_vm)) {
</ins><span class="cx"> for (unsigned n = depth; n--;)
</span><span class="cx"> scope = scope->next();
</span><span class="cx"> set(VirtualRegister(dst), weakJSConstant(scope));
</span><span class="lines">@@ -5356,7 +5356,7 @@
</span><span class="cx"> // bytecode-level liveness of the scope register.
</span><span class="cx"> Node* callee = get(VirtualRegister(CallFrameSlot::callee));
</span><span class="cx"> Node* result;
</span><del>- if (JSFunction* function = callee->dynamicCastConstant<JSFunction*>())
</del><ins>+ if (JSFunction* function = callee->dynamicCastConstant<JSFunction*>(*m_vm))
</ins><span class="cx"> result = weakJSConstant(function->scope());
</span><span class="cx"> else
</span><span class="cx"> result = addToGraph(GetScope, callee);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGConstantFoldingPhasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -162,7 +162,7 @@
</span><span class="cx"> case CheckDOM: {
</span><span class="cx"> JSValue constant = m_state.forNode(node->child1()).value();
</span><span class="cx"> if (constant) {
</span><del>- if (constant.isCell() && constant.asCell()->inherits(node->classInfo())) {
</del><ins>+ if (constant.isCell() && constant.asCell()->inherits(m_graph.m_vm, node->classInfo())) {
</ins><span class="cx"> m_interpreter.execute(indexInBlock);
</span><span class="cx"> node->remove();
</span><span class="cx"> eliminated = true;
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> const RegisteredStructureSet& set = node->structureSet();
</span><span class="cx">
</span><span class="cx"> if (value.value()) {
</span><del>- if (Structure* structure = jsDynamicCast<Structure*>(value.value())) {
</del><ins>+ if (Structure* structure = jsDynamicCast<Structure*>(m_graph.m_vm, value.value())) {
</ins><span class="cx"> if (set.contains(m_graph.registerStructure(structure))) {
</span><span class="cx"> m_interpreter.execute(indexInBlock);
</span><span class="cx"> node->remove();
</span><span class="lines">@@ -224,7 +224,7 @@
</span><span class="cx"> phiChildren->forAllTransitiveIncomingValues(
</span><span class="cx"> node,
</span><span class="cx"> [&] (Node* incoming) {
</span><del>- if (Structure* structure = incoming->dynamicCastConstant<Structure*>()) {
</del><ins>+ if (Structure* structure = incoming->dynamicCastConstant<Structure*>(m_graph.m_vm)) {
</ins><span class="cx"> if (set.contains(m_graph.registerStructure(structure)))
</span><span class="cx"> return;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGDesiredWeakReferencescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGDesiredWeakReferences.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGDesiredWeakReferences.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGDesiredWeakReferences.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> void DesiredWeakReferences::reallyAdd(VM& vm, CommonData* common)
</span><span class="cx"> {
</span><span class="cx"> for (JSCell* target : m_references) {
</span><del>- if (Structure* structure = jsDynamicCast<Structure*>(target)) {
</del><ins>+ if (Structure* structure = jsDynamicCast<Structure*>(vm, target)) {
</ins><span class="cx"> common->weakStructureReferences.append(
</span><span class="cx"> WriteBarrier<Structure>(vm, m_codeBlock, structure));
</span><span class="cx"> } else {
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx"> // point to other CodeBlocks. We don't want to have them be
</span><span class="cx"> // part of the weak pointer set. For example, an optimized CodeBlock
</span><span class="cx"> // having a weak pointer to itself will cause it to get collected.
</span><del>- RELEASE_ASSERT(!jsDynamicCast<CodeBlock*>(target));
</del><ins>+ RELEASE_ASSERT(!jsDynamicCast<CodeBlock*>(vm, target));
</ins><span class="cx">
</span><span class="cx"> common->weakReferences.append(
</span><span class="cx"> WriteBarrier<JSCell>(vm, m_codeBlock, target));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGFixupPhasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGFixupPhase.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1947,7 +1947,7 @@
</span><span class="cx"> if (!edge)
</span><span class="cx"> break;
</span><span class="cx"> edge.setUseKind(KnownStringUse);
</span><del>- JSString* string = edge->dynamicCastConstant<JSString*>();
</del><ins>+ JSString* string = edge->dynamicCastConstant<JSString*>(vm());
</ins><span class="cx"> if (!string)
</span><span class="cx"> continue;
</span><span class="cx"> if (string->length())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGFrozenValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGFrozenValue.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGFrozenValue.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGFrozenValue.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> , m_strength(strength)
</span><span class="cx"> {
</span><span class="cx"> ASSERT((!!value && value.isCell()) == !!structure);
</span><del>- ASSERT(!value || !value.isCell() || value.asCell()->classInfo() == structure->classInfo());
</del><ins>+ ASSERT(!value || !value.isCell() || value.asCell()->classInfo(*value.asCell()->vm()) == structure->classInfo());
</ins><span class="cx"> ASSERT(!!structure || (strength == WeakValue));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -70,12 +70,12 @@
</span><span class="cx"> JSCell* cell() const { return m_value.asCell(); }
</span><span class="cx">
</span><span class="cx"> template<typename T>
</span><del>- T dynamicCast()
</del><ins>+ T dynamicCast(VM& vm)
</ins><span class="cx"> {
</span><span class="cx"> JSValue theValue = value();
</span><span class="cx"> if (!theValue)
</span><span class="cx"> return nullptr;
</span><del>- return jsDynamicCast<T>(theValue);
</del><ins>+ return jsDynamicCast<T>(vm, theValue);
</ins><span class="cx"> }
</span><span class="cx"> template<typename T>
</span><span class="cx"> T cast()
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGGraphcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGGraph.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -270,7 +270,7 @@
</span><span class="cx"> if (ExecutableBase* executable = variant.executable()) {
</span><span class="cx"> if (executable->isHostFunction())
</span><span class="cx"> out.print(comma, "<host function>");
</span><del>- else if (FunctionExecutable* functionExecutable = jsDynamicCast<FunctionExecutable*>(executable))
</del><ins>+ else if (FunctionExecutable* functionExecutable = jsDynamicCast<FunctionExecutable*>(m_vm, executable))
</ins><span class="cx"> out.print(comma, FunctionExecutableDump(functionExecutable));
</span><span class="cx"> else
</span><span class="cx"> out.print(comma, "<non-function executable>");
</span><span class="lines">@@ -1318,7 +1318,7 @@
</span><span class="cx"> if (!base)
</span><span class="cx"> return JSValue();
</span><span class="cx">
</span><del>- JSLexicalEnvironment* activation = jsDynamicCast<JSLexicalEnvironment*>(base);
</del><ins>+ JSLexicalEnvironment* activation = jsDynamicCast<JSLexicalEnvironment*>(m_vm, base);
</ins><span class="cx"> if (!activation)
</span><span class="cx"> return JSValue();
</span><span class="cx">
</span><span class="lines">@@ -1366,7 +1366,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (!value)
</span><span class="cx"> return nullptr;
</span><del>- JSArrayBufferView* view = jsDynamicCast<JSArrayBufferView*>(value);
</del><ins>+ JSArrayBufferView* view = jsDynamicCast<JSArrayBufferView*>(m_vm, value);
</ins><span class="cx"> if (!value)
</span><span class="cx"> return nullptr;
</span><span class="cx"> if (!view->length())
</span><span class="lines">@@ -1427,7 +1427,7 @@
</span><span class="cx"> // point to other CodeBlocks. We don't want to have them be
</span><span class="cx"> // part of the weak pointer set. For example, an optimized CodeBlock
</span><span class="cx"> // having a weak pointer to itself will cause it to get collected.
</span><del>- RELEASE_ASSERT(!jsDynamicCast<CodeBlock*>(value));
</del><ins>+ RELEASE_ASSERT(!jsDynamicCast<CodeBlock*>(m_vm, value));
</ins><span class="cx">
</span><span class="cx"> auto result = m_frozenValueMap.add(JSValue::encode(value), nullptr);
</span><span class="cx"> if (LIKELY(!result.isNewEntry))
</span><span class="lines">@@ -1639,9 +1639,9 @@
</span><span class="cx">
</span><span class="cx"> // We only care about functions and getters at this point. If you want to access other properties
</span><span class="cx"> // you'll have to add code for those types.
</span><del>- JSFunction* function = jsDynamicCast<JSFunction*>(value);
</del><ins>+ JSFunction* function = jsDynamicCast<JSFunction*>(m_vm, value);
</ins><span class="cx"> if (!function) {
</span><del>- GetterSetter* getterSetter = jsDynamicCast<GetterSetter*>(value);
</del><ins>+ GetterSetter* getterSetter = jsDynamicCast<GetterSetter*>(m_vm, value);
</ins><span class="cx">
</span><span class="cx"> if (!getterSetter)
</span><span class="cx"> return false;
</span><span class="lines">@@ -1663,7 +1663,7 @@
</span><span class="cx">
</span><span class="cx"> ObjectPropertyCondition equivalenceCondition = conditions.slotBaseCondition();
</span><span class="cx"> RELEASE_ASSERT(equivalenceCondition.hasRequiredValue());
</span><del>- JSFunction* function = jsDynamicCast<JSFunction*>(equivalenceCondition.condition().requiredValue());
</del><ins>+ JSFunction* function = jsDynamicCast<JSFunction*>(m_vm, equivalenceCondition.condition().requiredValue());
</ins><span class="cx"> if (!function)
</span><span class="cx"> return false;
</span><span class="cx">
</span><span class="lines">@@ -1683,7 +1683,7 @@
</span><span class="cx"> Structure* stringObjectStructure = globalObjectFor(codeOrigin)->stringObjectStructure();
</span><span class="cx"> registerStructure(stringObjectStructure);
</span><span class="cx"> ASSERT(stringObjectStructure->storedPrototype().isObject());
</span><del>- ASSERT(stringObjectStructure->storedPrototype().asCell()->classInfo() == StringPrototype::info());
</del><ins>+ ASSERT(stringObjectStructure->storedPrototype().asCell()->classInfo(*stringObjectStructure->storedPrototype().asCell()->vm()) == StringPrototype::info());
</ins><span class="cx">
</span><span class="cx"> if (!watchConditions(generateConditionsForPropertyMissConcurrently(m_vm, globalObject, stringObjectStructure, m_vm.propertyNames->toPrimitiveSymbol.impl())))
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGLazyJSValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> return triState(WTF::equal(stringImpl, string));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-const StringImpl* LazyJSValue::tryGetStringImpl() const
</del><ins>+const StringImpl* LazyJSValue::tryGetStringImpl(VM& vm) const
</ins><span class="cx"> {
</span><span class="cx"> switch (m_kind) {
</span><span class="cx"> case KnownStringImpl:
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> return u.stringImpl;
</span><span class="cx">
</span><span class="cx"> case KnownValue:
</span><del>- if (JSString* string = value()->dynamicCast<JSString*>())
</del><ins>+ if (JSString* string = value()->dynamicCast<JSString*>(vm))
</ins><span class="cx"> return string->tryGetValueImpl();
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx"> return String(&u.character, 1);
</span><span class="cx">
</span><span class="cx"> default:
</span><del>- if (const StringImpl* string = tryGetStringImpl()) {
</del><ins>+ if (const StringImpl* string = tryGetStringImpl(graph.m_vm)) {
</ins><span class="cx"> unsigned ginormousStringLength = 10000;
</span><span class="cx"> if (string->length() > ginormousStringLength)
</span><span class="cx"> return String();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGLazyJSValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGLazyJSValue.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -98,7 +98,7 @@
</span><span class="cx"> return u.character;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- const StringImpl* tryGetStringImpl() const;
</del><ins>+ const StringImpl* tryGetStringImpl(VM&) const;
</ins><span class="cx">
</span><span class="cx"> String tryGetString(Graph&) const;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGNode.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGNode.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGNode.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -175,7 +175,7 @@
</span><span class="cx"> void Node::convertToPutStructureHint(Node* structure)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(m_op == PutStructure);
</span><del>- ASSERT(structure->castConstant<Structure*>() == transition()->next.get());
</del><ins>+ ASSERT(structure->castConstant<Structure*>(*structure->asCell()->vm()) == transition()->next.get());
</ins><span class="cx"> convertToPutHint(StructurePLoc, child1().node(), structure);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGNodeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGNode.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGNode.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGNode.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -738,17 +738,17 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename T>
</span><del>- T dynamicCastConstant()
</del><ins>+ T dynamicCastConstant(VM& vm)
</ins><span class="cx"> {
</span><span class="cx"> if (!isCellConstant())
</span><span class="cx"> return nullptr;
</span><del>- return jsDynamicCast<T>(asCell());
</del><ins>+ return jsDynamicCast<T>(vm, asCell());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename T>
</span><del>- T castConstant()
</del><ins>+ T castConstant(VM& vm)
</ins><span class="cx"> {
</span><del>- T result = dynamicCastConstant<T>();
</del><ins>+ T result = dynamicCastConstant<T>(vm);
</ins><span class="cx"> RELEASE_ASSERT(result);
</span><span class="cx"> return result;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -838,7 +838,7 @@
</span><span class="cx"> JSValue base = JSValue::decode(encodedBase);
</span><span class="cx"> JSValue argument = JSValue::decode(encodedArgument);
</span><span class="cx">
</span><del>- if (!base.inherits(RegExpObject::info()))
</del><ins>+ if (!base.inherits(vm, RegExpObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> JSString* input = argument.toStringOrNull(exec);
</span><span class="lines">@@ -885,7 +885,7 @@
</span><span class="cx"> JSValue base = JSValue::decode(encodedBase);
</span><span class="cx"> JSValue argument = JSValue::decode(encodedArgument);
</span><span class="cx">
</span><del>- if (!base.inherits(RegExpObject::info())) {
</del><ins>+ if (!base.inherits(vm, RegExpObject::info())) {
</ins><span class="cx"> throwTypeError(exec, scope);
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="lines">@@ -1406,7 +1406,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> NativeCallFrameTracer tracer(&vm, exec);
</span><span class="cx">
</span><del>- ASSERT(jsDynamicCast<JSObject*>(object));
</del><ins>+ ASSERT(jsDynamicCast<JSObject*>(vm, object));
</ins><span class="cx">
</span><span class="cx"> if (object->structure(vm)->masqueradesAsUndefined(globalObject))
</span><span class="cx"> return false;
</span><span class="lines">@@ -1426,7 +1426,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> NativeCallFrameTracer tracer(&vm, exec);
</span><span class="cx">
</span><del>- ASSERT(jsDynamicCast<JSObject*>(object));
</del><ins>+ ASSERT(jsDynamicCast<JSObject*>(vm, object));
</ins><span class="cx">
</span><span class="cx"> if (object->structure(vm)->masqueradesAsUndefined(globalObject))
</span><span class="cx"> return false;
</span><span class="lines">@@ -1446,7 +1446,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> NativeCallFrameTracer tracer(&vm, exec);
</span><span class="cx">
</span><del>- ASSERT(jsDynamicCast<JSObject*>(object));
</del><ins>+ ASSERT(jsDynamicCast<JSObject*>(vm, object));
</ins><span class="cx">
</span><span class="cx"> if (object->structure(vm)->masqueradesAsUndefined(globalObject))
</span><span class="cx"> return vm.smallStrings.undefinedString();
</span><span class="lines">@@ -1466,7 +1466,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> NativeCallFrameTracer tracer(&vm, exec);
</span><span class="cx">
</span><del>- ASSERT(jsDynamicCast<JSObject*>(object));
</del><ins>+ ASSERT(jsDynamicCast<JSObject*>(vm, object));
</ins><span class="cx">
</span><span class="cx"> if (object->structure(vm)->masqueradesAsUndefined(globalObject))
</span><span class="cx"> return static_cast<int32_t>(TypeofType::Undefined);
</span><span class="lines">@@ -1946,7 +1946,7 @@
</span><span class="cx"> unsigned length = 0;
</span><span class="cx"> for (unsigned i = 0; i < numItems; i++) {
</span><span class="cx"> JSValue value = JSValue::decode(values[i]);
</span><del>- if (JSFixedArray* array = jsDynamicCast<JSFixedArray*>(value))
</del><ins>+ if (JSFixedArray* array = jsDynamicCast<JSFixedArray*>(vm, value))
</ins><span class="cx"> length += array->size();
</span><span class="cx"> else
</span><span class="cx"> ++length;
</span><span class="lines">@@ -1962,7 +1962,7 @@
</span><span class="cx"> unsigned index = 0;
</span><span class="cx"> for (unsigned i = 0; i < numItems; i++) {
</span><span class="cx"> JSValue value = JSValue::decode(values[i]);
</span><del>- if (JSFixedArray* array = jsDynamicCast<JSFixedArray*>(value)) {
</del><ins>+ if (JSFixedArray* array = jsDynamicCast<JSFixedArray*>(vm, value)) {
</ins><span class="cx"> // We are spreading.
</span><span class="cx"> for (unsigned i = 0; i < array->size(); i++) {
</span><span class="cx"> result->initializeIndex(vm, index, array->get(i));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSafeToExecuteh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGSafeToExecute.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -433,7 +433,7 @@
</span><span class="cx"> PropertyOffset offset = node->storageAccessData().offset;
</span><span class="cx">
</span><span class="cx"> if (state.structureClobberState() == StructuresAreWatched) {
</span><del>- if (JSObject* knownBase = node->child1()->dynamicCastConstant<JSObject*>()) {
</del><ins>+ if (JSObject* knownBase = node->child1()->dynamicCastConstant<JSObject*>(graph.m_vm)) {
</ins><span class="cx"> if (graph.isSafeToLoad(knownBase, offset))
</span><span class="cx"> return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1040,7 +1040,7 @@
</span><span class="cx"> SpeculateCellOperand base(this, node->child2());
</span><span class="cx"> GPRReg baseGPR = base.gpr();
</span><span class="cx">
</span><del>- if (JSString* string = node->child1()->dynamicCastConstant<JSString*>()) {
</del><ins>+ if (JSString* string = node->child1()->dynamicCastConstant<JSString*>(*m_jit.vm())) {
</ins><span class="cx"> if (string->tryGetValueImpl() && string->tryGetValueImpl()->isAtomic()) {
</span><span class="cx"> StructureStubInfo* stubInfo = m_jit.codeBlock()->addStubInfo(AccessType::In);
</span><span class="cx">
</span><span class="lines">@@ -9269,7 +9269,7 @@
</span><span class="cx"> void SpeculativeJIT::compileMaterializeNewObject(Node* node)
</span><span class="cx"> {
</span><span class="cx"> RegisteredStructure structure = node->structureSet().at(0);
</span><del>- ASSERT(m_jit.graph().varArgChild(node, 0)->dynamicCastConstant<Structure*>() == structure.get());
</del><ins>+ ASSERT(m_jit.graph().varArgChild(node, 0)->dynamicCastConstant<Structure*>(*m_jit.vm()) == structure.get());
</ins><span class="cx">
</span><span class="cx"> ObjectMaterializationData& data = node->objectMaterializationData();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJITh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx"> // point to other CodeBlocks. We don't want to have them be
</span><span class="cx"> // part of the weak pointer set. For example, an optimized CodeBlock
</span><span class="cx"> // having a weak pointer to itself will cause it to get collected.
</span><del>- ASSERT(!jsDynamicCast<CodeBlock*>(cell));
</del><ins>+ ASSERT(!jsDynamicCast<CodeBlock*>(graph.m_vm, cell));
</ins><span class="cx">
</span><span class="cx"> graph.m_plan.weakReferences.addLazily(cell);
</span><span class="cx"> return TrustedImmPtr(bitwise_cast<size_t>(cell));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT32_64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -743,7 +743,7 @@
</span><span class="cx"> FunctionExecutable* functionExecutable = nullptr;
</span><span class="cx"> if (isDirect) {
</span><span class="cx"> executable = node->castOperand<ExecutableBase*>();
</span><del>- functionExecutable = jsDynamicCast<FunctionExecutable*>(executable);
</del><ins>+ functionExecutable = jsDynamicCast<FunctionExecutable*>(*m_jit.vm(), executable);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> unsigned numPassedArgs = 0;
</span><span class="lines">@@ -3221,7 +3221,7 @@
</span><span class="cx"> if (node->child1().useKind() == StringUse
</span><span class="cx"> && node->child2().useKind() == RegExpObjectUse
</span><span class="cx"> && node->child3().useKind() == StringUse) {
</span><del>- if (JSString* replace = node->child3()->dynamicCastConstant<JSString*>()) {
</del><ins>+ if (JSString* replace = node->child3()->dynamicCastConstant<JSString*>(*m_jit.vm())) {
</ins><span class="cx"> if (!replace->length()) {
</span><span class="cx"> SpeculateCellOperand string(this, node->child1());
</span><span class="cx"> SpeculateCellOperand regExp(this, node->child2());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGSpeculativeJIT64cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -719,7 +719,7 @@
</span><span class="cx"> FunctionExecutable* functionExecutable = nullptr;
</span><span class="cx"> if (isDirect) {
</span><span class="cx"> executable = node->castOperand<ExecutableBase*>();
</span><del>- functionExecutable = jsDynamicCast<FunctionExecutable*>(executable);
</del><ins>+ functionExecutable = jsDynamicCast<FunctionExecutable*>(*m_jit.vm(), executable);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> unsigned numPassedArgs = 0;
</span><span class="lines">@@ -3281,7 +3281,7 @@
</span><span class="cx"> if (node->child1().useKind() == StringUse
</span><span class="cx"> && node->child2().useKind() == RegExpObjectUse
</span><span class="cx"> && node->child3().useKind() == StringUse) {
</span><del>- if (JSString* replace = node->child3()->dynamicCastConstant<JSString*>()) {
</del><ins>+ if (JSString* replace = node->child3()->dynamicCastConstant<JSString*>(*m_jit.vm())) {
</ins><span class="cx"> if (!replace->length()) {
</span><span class="cx"> SpeculateCellOperand string(this, node->child1());
</span><span class="cx"> SpeculateCellOperand regExp(this, node->child2());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGStrengthReductionPhasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/dfg/DFGStrengthReductionPhase.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -404,7 +404,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> case GetGlobalObject: {
</span><del>- if (JSObject* object = m_node->child1()->dynamicCastConstant<JSObject*>()) {
</del><ins>+ if (JSObject* object = m_node->child1()->dynamicCastConstant<JSObject*>(vm())) {
</ins><span class="cx"> m_graph.convertToConstant(m_node, object->globalObject());
</span><span class="cx"> m_changed = true;
</span><span class="cx"> break;
</span><span class="lines">@@ -414,7 +414,7 @@
</span><span class="cx">
</span><span class="cx"> case RegExpExec:
</span><span class="cx"> case RegExpTest: {
</span><del>- JSGlobalObject* globalObject = m_node->child1()->dynamicCastConstant<JSGlobalObject*>();
</del><ins>+ JSGlobalObject* globalObject = m_node->child1()->dynamicCastConstant<JSGlobalObject*>(vm());
</ins><span class="cx"> if (!globalObject) {
</span><span class="cx"> if (verbose)
</span><span class="cx"> dataLog("Giving up because no global object.\n");
</span><span class="lines">@@ -429,7 +429,7 @@
</span><span class="cx">
</span><span class="cx"> Node* regExpObjectNode = m_node->child2().node();
</span><span class="cx"> RegExp* regExp;
</span><del>- if (RegExpObject* regExpObject = regExpObjectNode->dynamicCastConstant<RegExpObject*>())
</del><ins>+ if (RegExpObject* regExpObject = regExpObjectNode->dynamicCastConstant<RegExpObject*>(vm()))
</ins><span class="cx"> regExp = regExpObject->regExp();
</span><span class="cx"> else if (regExpObjectNode->op() == NewRegexp)
</span><span class="cx"> regExp = regExpObjectNode->castOperand<RegExp*>();
</span><span class="lines">@@ -670,7 +670,7 @@
</span><span class="cx">
</span><span class="cx"> Node* regExpObjectNode = m_node->child2().node();
</span><span class="cx"> RegExp* regExp;
</span><del>- if (RegExpObject* regExpObject = regExpObjectNode->dynamicCastConstant<RegExpObject*>())
</del><ins>+ if (RegExpObject* regExpObject = regExpObjectNode->dynamicCastConstant<RegExpObject*>(vm()))
</ins><span class="cx"> regExp = regExpObject->regExp();
</span><span class="cx"> else if (regExpObjectNode->op() == NewRegexp)
</span><span class="cx"> regExp = regExpObjectNode->castOperand<RegExp*>();
</span><span class="lines">@@ -767,7 +767,7 @@
</span><span class="cx"> case TailCall: {
</span><span class="cx"> ExecutableBase* executable = nullptr;
</span><span class="cx"> Edge callee = m_graph.varArgChild(m_node, 0);
</span><del>- if (JSFunction* function = callee->dynamicCastConstant<JSFunction*>())
</del><ins>+ if (JSFunction* function = callee->dynamicCastConstant<JSFunction*>(vm()))
</ins><span class="cx"> executable = function->executable();
</span><span class="cx"> else if (callee->isFunctionAllocation())
</span><span class="cx"> executable = callee->castOperand<FunctionExecutable*>();
</span><span class="lines">@@ -775,7 +775,7 @@
</span><span class="cx"> if (!executable)
</span><span class="cx"> break;
</span><span class="cx">
</span><del>- if (FunctionExecutable* functionExecutable = jsDynamicCast<FunctionExecutable*>(executable)) {
</del><ins>+ if (FunctionExecutable* functionExecutable = jsDynamicCast<FunctionExecutable*>(vm(), executable)) {
</ins><span class="cx"> // We need to update m_parameterSlots before we get to the backend, but we don't
</span><span class="cx"> // want to do too much of this.
</span><span class="cx"> unsigned numAllocatedArgs =
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLLowerDFGToB3cpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -5972,7 +5972,7 @@
</span><span class="cx"> bool isConstruct = node->op() == DirectConstruct;
</span><span class="cx">
</span><span class="cx"> ExecutableBase* executable = node->castOperand<ExecutableBase*>();
</span><del>- FunctionExecutable* functionExecutable = jsDynamicCast<FunctionExecutable*>(executable);
</del><ins>+ FunctionExecutable* functionExecutable = jsDynamicCast<FunctionExecutable*>(vm(), executable);
</ins><span class="cx">
</span><span class="cx"> unsigned numPassedArgs = node->numChildren() - 1;
</span><span class="cx"> unsigned numAllocatedArgs = numPassedArgs;
</span><span class="lines">@@ -8044,7 +8044,7 @@
</span><span class="cx"> Node* node = m_node;
</span><span class="cx"> Edge base = node->child2();
</span><span class="cx"> LValue cell = lowCell(base);
</span><del>- if (JSString* string = node->child1()->dynamicCastConstant<JSString*>()) {
</del><ins>+ if (JSString* string = node->child1()->dynamicCastConstant<JSString*>(vm())) {
</ins><span class="cx"> if (string->tryGetValueImpl() && string->tryGetValueImpl()->isAtomic()) {
</span><span class="cx"> UniquedStringImpl* str = bitwise_cast<UniquedStringImpl*>(string->tryGetValueImpl());
</span><span class="cx"> B3::PatchpointValue* patchpoint = m_out.patchpoint(Int64);
</span><span class="lines">@@ -8224,7 +8224,7 @@
</span><span class="cx"> void compileOverridesHasInstance()
</span><span class="cx"> {
</span><span class="cx"> FrozenValue* defaultHasInstanceFunction = m_node->cellOperand();
</span><del>- ASSERT(defaultHasInstanceFunction->cell()->inherits(JSFunction::info()));
</del><ins>+ ASSERT(defaultHasInstanceFunction->cell()->inherits(vm(), JSFunction::info()));
</ins><span class="cx">
</span><span class="cx"> LValue constructor = lowCell(m_node->child1());
</span><span class="cx"> LValue hasInstance = lowJSValue(m_node->child2());
</span><span class="lines">@@ -8892,7 +8892,7 @@
</span><span class="cx">
</span><span class="cx"> LValue scope = lowCell(m_graph.varArgChild(m_node, 1));
</span><span class="cx"> SymbolTable* table = m_node->castOperand<SymbolTable*>();
</span><del>- ASSERT(table == m_graph.varArgChild(m_node, 0)->castConstant<SymbolTable*>());
</del><ins>+ ASSERT(table == m_graph.varArgChild(m_node, 0)->castConstant<SymbolTable*>(vm()));
</ins><span class="cx"> RegisteredStructure structure = m_graph.registerStructure(m_graph.globalObjectFor(m_node->origin.semantic)->activationStructure());
</span><span class="cx">
</span><span class="cx"> LBasicBlock slowPath = m_out.newBlock();
</span><span class="lines">@@ -9046,7 +9046,7 @@
</span><span class="cx"> void compileNewRegexp()
</span><span class="cx"> {
</span><span class="cx"> FrozenValue* regexp = m_node->cellOperand();
</span><del>- ASSERT(regexp->cell()->inherits(RegExp::info()));
</del><ins>+ ASSERT(regexp->cell()->inherits(vm(), RegExp::info()));
</ins><span class="cx"> LValue result = vmCall(
</span><span class="cx"> pointerType(),
</span><span class="cx"> m_out.operation(operationNewRegexp), m_callFrame,
</span><span class="lines">@@ -9067,7 +9067,7 @@
</span><span class="cx"> && m_node->child2().useKind() == RegExpObjectUse
</span><span class="cx"> && m_node->child3().useKind() == StringUse) {
</span><span class="cx">
</span><del>- if (JSString* replace = m_node->child3()->dynamicCastConstant<JSString*>()) {
</del><ins>+ if (JSString* replace = m_node->child3()->dynamicCastConstant<JSString*>(vm())) {
</ins><span class="cx"> if (!replace->length()) {
</span><span class="cx"> LValue string = lowString(m_node->child1());
</span><span class="cx"> LValue regExp = lowRegExpObject(m_node->child2());
</span><span class="lines">@@ -13700,7 +13700,7 @@
</span><span class="cx"> // point to other CodeBlocks. We don't want to have them be
</span><span class="cx"> // part of the weak pointer set. For example, an optimized CodeBlock
</span><span class="cx"> // having a weak pointer to itself will cause it to get collected.
</span><del>- RELEASE_ASSERT(!jsDynamicCast<CodeBlock*>(pointer));
</del><ins>+ RELEASE_ASSERT(!jsDynamicCast<CodeBlock*>(vm(), pointer));
</ins><span class="cx">
</span><span class="cx"> addWeakReference(pointer);
</span><span class="cx"> return m_out.weakPointer(m_graph, pointer);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreftlFTLOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ftl/FTLOperations.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ftl/FTLOperations.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/ftl/FTLOperations.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -437,7 +437,7 @@
</span><span class="cx"> if (property.location().kind() == NewArrayWithSpreadArgumentPLoc) {
</span><span class="cx"> ++numProperties;
</span><span class="cx"> JSValue value = JSValue::decode(values[i]);
</span><del>- if (JSFixedArray* fixedArray = jsDynamicCast<JSFixedArray*>(value))
</del><ins>+ if (JSFixedArray* fixedArray = jsDynamicCast<JSFixedArray*>(vm, value))
</ins><span class="cx"> arraySize += fixedArray->size();
</span><span class="cx"> else
</span><span class="cx"> arraySize += 1;
</span><span class="lines">@@ -476,7 +476,7 @@
</span><span class="cx">
</span><span class="cx"> unsigned arrayIndex = 0;
</span><span class="cx"> for (JSValue value : arguments) {
</span><del>- if (JSFixedArray* fixedArray = jsDynamicCast<JSFixedArray*>(value)) {
</del><ins>+ if (JSFixedArray* fixedArray = jsDynamicCast<JSFixedArray*>(vm, value)) {
</ins><span class="cx"> for (unsigned i = 0; i < fixedArray->size(); i++) {
</span><span class="cx"> ASSERT(fixedArray->get(i));
</span><span class="cx"> result->initializeIndex(vm, arrayIndex, fixedArray->get(i));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapCodeBlockSetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/CodeBlockSet.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/CodeBlockSet.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/heap/CodeBlockSet.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -61,17 +61,17 @@
</span><span class="cx"> codeBlock->clearVisitWeaklyHasBeenCalled();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void CodeBlockSet::lastChanceToFinalize()
</del><ins>+void CodeBlockSet::lastChanceToFinalize(VM& vm)
</ins><span class="cx"> {
</span><span class="cx"> LockHolder locker(&m_lock);
</span><span class="cx"> for (CodeBlock* codeBlock : m_newCodeBlocks)
</span><del>- codeBlock->structure()->classInfo()->methodTable.destroy(codeBlock);
</del><ins>+ codeBlock->structure(vm)->classInfo()->methodTable.destroy(codeBlock);
</ins><span class="cx">
</span><span class="cx"> for (CodeBlock* codeBlock : m_oldCodeBlocks)
</span><del>- codeBlock->structure()->classInfo()->methodTable.destroy(codeBlock);
</del><ins>+ codeBlock->structure(vm)->classInfo()->methodTable.destroy(codeBlock);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-void CodeBlockSet::deleteUnmarkedAndUnreferenced(CollectionScope scope)
</del><ins>+void CodeBlockSet::deleteUnmarkedAndUnreferenced(VM& vm, CollectionScope scope)
</ins><span class="cx"> {
</span><span class="cx"> LockHolder locker(&m_lock);
</span><span class="cx"> Vector<CodeBlock*> unmarked;
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> unmarked.append(codeBlock);
</span><span class="cx"> }
</span><span class="cx"> for (CodeBlock* codeBlock : unmarked) {
</span><del>- codeBlock->structure()->classInfo()->methodTable.destroy(codeBlock);
</del><ins>+ codeBlock->structure(vm)->classInfo()->methodTable.destroy(codeBlock);
</ins><span class="cx"> set.remove(codeBlock);
</span><span class="cx"> }
</span><span class="cx"> unmarked.resize(0);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapCodeBlockSeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/CodeBlockSet.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/CodeBlockSet.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/heap/CodeBlockSet.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,6 +38,7 @@
</span><span class="cx"> class CodeBlock;
</span><span class="cx"> class Heap;
</span><span class="cx"> class JSCell;
</span><ins>+class VM;
</ins><span class="cx">
</span><span class="cx"> // CodeBlockSet tracks all CodeBlocks. Every CodeBlock starts out with one
</span><span class="cx"> // reference coming in from GC. The GC is responsible for freeing CodeBlocks
</span><span class="lines">@@ -50,7 +51,7 @@
</span><span class="cx"> CodeBlockSet();
</span><span class="cx"> ~CodeBlockSet();
</span><span class="cx">
</span><del>- void lastChanceToFinalize();
</del><ins>+ void lastChanceToFinalize(VM&);
</ins><span class="cx">
</span><span class="cx"> // Add a CodeBlock. This is only called by CodeBlock constructors.
</span><span class="cx"> void add(CodeBlock*);
</span><span class="lines">@@ -67,7 +68,7 @@
</span><span class="cx">
</span><span class="cx"> // Delete all code blocks that are only referenced by this set (i.e. owned
</span><span class="cx"> // by this set), and that have not been marked.
</span><del>- void deleteUnmarkedAndUnreferenced(CollectionScope);
</del><ins>+ void deleteUnmarkedAndUnreferenced(VM&, CollectionScope);
</ins><span class="cx">
</span><span class="cx"> void clearCurrentlyExecuting();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapGCAssertionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/GCAssertions.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/GCAssertions.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/heap/GCAssertions.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx">
</span><span class="cx"> #define ASSERT_GC_OBJECT_INHERITS(object, classInfo) do {\
</span><span class="cx"> ASSERT_GC_OBJECT_LOOKS_VALID(object); \
</span><del>- RELEASE_ASSERT(object->inherits(classInfo)); \
</del><ins>+ RELEASE_ASSERT(object->inherits(*object->JSCell::vm(), classInfo)); \
</ins><span class="cx"> } while (0)
</span><span class="cx">
</span><span class="cx"> // Used to avoid triggering -Wundefined-bool-conversion.
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx">
</span><span class="cx"> #define ASSERT_THIS_GC_OBJECT_INHERITS(classInfo) do {\
</span><span class="cx"> ASSERT_THIS_GC_OBJECT_LOOKS_VALID(); \
</span><del>- RELEASE_ASSERT(this->inherits(classInfo)); \
</del><ins>+ RELEASE_ASSERT(this->inherits(*this->vm(), classInfo)); \
</ins><span class="cx"> } while (0)
</span><span class="cx">
</span><span class="cx"> #else
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapHeapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/Heap.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/Heap.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/heap/Heap.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -130,10 +130,10 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void recordType(TypeCountSet& set, JSCell* cell)
</del><ins>+void recordType(VM& vm, TypeCountSet& set, JSCell* cell)
</ins><span class="cx"> {
</span><span class="cx"> const char* typeName = "[unknown]";
</span><del>- const ClassInfo* info = cell->classInfo();
</del><ins>+ const ClassInfo* info = cell->classInfo(vm);
</ins><span class="cx"> if (info && info->className)
</span><span class="cx"> typeName = info->className;
</span><span class="cx"> set.add(typeName);
</span><span class="lines">@@ -364,7 +364,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> m_arrayBuffers.lastChanceToFinalize();
</span><del>- m_codeBlocks->lastChanceToFinalize();
</del><ins>+ m_codeBlocks->lastChanceToFinalize(*m_vm);
</ins><span class="cx"> m_objectSpace.stopAllocating();
</span><span class="cx"> m_objectSpace.lastChanceToFinalize();
</span><span class="cx"> releaseDelayedReleasedObjects();
</span><span class="lines">@@ -887,7 +887,7 @@
</span><span class="cx"> std::unique_ptr<TypeCountSet> result = std::make_unique<TypeCountSet>();
</span><span class="cx"> forEachProtectedCell(
</span><span class="cx"> [&] (JSCell* cell) {
</span><del>- recordType(*result, cell);
</del><ins>+ recordType(*vm(), *result, cell);
</ins><span class="cx"> });
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="lines">@@ -900,7 +900,7 @@
</span><span class="cx"> iterationScope,
</span><span class="cx"> [&] (HeapCell* cell, HeapCell::Kind kind) -> IterationStatus {
</span><span class="cx"> if (kind == HeapCell::JSCell)
</span><del>- recordType(*result, static_cast<JSCell*>(cell));
</del><ins>+ recordType(*vm(), *result, static_cast<JSCell*>(cell));
</ins><span class="cx"> return IterationStatus::Continue;
</span><span class="cx"> });
</span><span class="cx"> return result;
</span><span class="lines">@@ -960,7 +960,7 @@
</span><span class="cx"> void Heap::deleteUnmarkedCompiledCode()
</span><span class="cx"> {
</span><span class="cx"> clearUnmarkedExecutables();
</span><del>- m_codeBlocks->deleteUnmarkedAndUnreferenced(*m_lastCollectionScope);
</del><ins>+ m_codeBlocks->deleteUnmarkedAndUnreferenced(*m_vm, *m_lastCollectionScope);
</ins><span class="cx"> m_jitStubRoutines->deleteUnmarkedJettisonedStubRoutines();
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapHeapSnapshotBuildercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/heap/HeapSnapshotBuilder.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -225,7 +225,7 @@
</span><span class="cx">
</span><span class="cx"> allowedNodeIdentifiers.set(node.cell, node.identifier);
</span><span class="cx">
</span><del>- auto result = classNameIndexes.add(node.cell->classInfo()->className, nextClassNameIndex);
</del><ins>+ auto result = classNameIndexes.add(node.cell->classInfo(vm)->className, nextClassNameIndex);
</ins><span class="cx"> if (result.isNewEntry)
</span><span class="cx"> nextClassNameIndex++;
</span><span class="cx"> unsigned classNameIndex = result.iterator->value;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreheapSlotVisitorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/heap/SlotVisitor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -56,13 +56,14 @@
</span><span class="cx">
</span><span class="cx"> // Both the cell's structure, and the cell's structure's structure should be the Structure Structure.
</span><span class="cx"> // I hate this sentence.
</span><del>- if (cell->structure()->structure()->JSCell::classInfo() != cell->structure()->JSCell::classInfo()) {
</del><ins>+ VM& vm = *cell->vm();
+ if (cell->structure()->structure()->JSCell::classInfo(vm) != cell->structure()->JSCell::classInfo(vm)) {
</ins><span class="cx"> const char* parentClassName = 0;
</span><span class="cx"> const char* ourClassName = 0;
</span><del>- if (cell->structure()->structure() && cell->structure()->structure()->JSCell::classInfo())
- parentClassName = cell->structure()->structure()->JSCell::classInfo()->className;
- if (cell->structure()->JSCell::classInfo())
- ourClassName = cell->structure()->JSCell::classInfo()->className;
</del><ins>+ if (cell->structure()->structure() && cell->structure()->structure()->JSCell::classInfo(vm))
+ parentClassName = cell->structure()->structure()->JSCell::classInfo(vm)->className;
+ if (cell->structure()->JSCell::classInfo(vm))
+ ourClassName = cell->structure()->JSCell::classInfo(vm)->className;
</ins><span class="cx"> dataLogF("parent structure (%p <%s>) of cell at %p doesn't match cell's structure (%p <%s>)\n",
</span><span class="cx"> cell->structure()->structure(), parentClassName, cell, cell->structure(), ourClassName);
</span><span class="cx"> CRASH();
</span><span class="lines">@@ -69,7 +70,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Make sure we can walk the ClassInfo chain
</span><del>- const ClassInfo* info = cell->classInfo();
</del><ins>+ const ClassInfo* info = cell->classInfo(vm);
</ins><span class="cx"> do { } while ((info = info->parentClass));
</span><span class="cx"> }
</span><span class="cx"> #endif
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorInjectedScriptHosth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/InjectedScriptHost.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/InjectedScriptHost.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/InjectedScriptHost.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> virtual ~InjectedScriptHost();
</span><span class="cx">
</span><span class="cx"> virtual JSC::JSValue subtype(JSC::ExecState*, JSC::JSValue) { return JSC::jsUndefined(); }
</span><del>- virtual bool isHTMLAllCollection(JSC::JSValue) { return false; }
</del><ins>+ virtual bool isHTMLAllCollection(JSC::VM&, JSC::JSValue) { return false; }
</ins><span class="cx">
</span><span class="cx"> JSC::JSValue wrapper(JSC::ExecState*, JSC::JSGlobalObject*);
</span><span class="cx"> void clearAllWrappers();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSGlobalObjectInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -220,10 +220,10 @@
</span><span class="cx">
</span><span class="cx"> void JSGlobalObjectInspectorController::reportAPIException(ExecState* exec, Exception* exception)
</span><span class="cx"> {
</span><del>- if (isTerminatedExecutionException(exception))
</del><ins>+ VM& vm = exec->vm();
+ if (isTerminatedExecutionException(vm, exception))
</ins><span class="cx"> return;
</span><span class="cx">
</span><del>- VM& vm = exec->vm();
</del><span class="cx"> auto scope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx"> ErrorHandlingScope errorScope(vm);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> void JSInjectedScriptHost::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSObject* JSInjectedScriptHost::createPrototype(VM& vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -128,12 +128,14 @@
</span><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- return jsBoolean(impl().isHTMLAllCollection(value));
</del><ins>+ return jsBoolean(impl().isHTMLAllCollection(vm, value));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValue JSInjectedScriptHost::subtype(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="lines">@@ -153,46 +155,46 @@
</span><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("error"));
</span><span class="cx">
</span><span class="cx"> // Consider class constructor functions class objects.
</span><del>- JSFunction* function = jsDynamicCast<JSFunction*>(value);
</del><ins>+ JSFunction* function = jsDynamicCast<JSFunction*>(vm, value);
</ins><span class="cx"> if (function && function->isClassConstructorFunction())
</span><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("class"));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (value.inherits(JSArray::info()))
</del><ins>+ if (value.inherits(vm, JSArray::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("array"));
</span><del>- if (value.inherits(DirectArguments::info()) || value.inherits(ScopedArguments::info()))
</del><ins>+ if (value.inherits(vm, DirectArguments::info()) || value.inherits(vm, ScopedArguments::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("array"));
</span><span class="cx">
</span><del>- if (value.inherits(DateInstance::info()))
</del><ins>+ if (value.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("date"));
</span><del>- if (value.inherits(RegExpObject::info()))
</del><ins>+ if (value.inherits(vm, RegExpObject::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("regexp"));
</span><del>- if (value.inherits(ProxyObject::info()))
</del><ins>+ if (value.inherits(vm, ProxyObject::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("proxy"));
</span><span class="cx">
</span><del>- if (value.inherits(JSMap::info()))
</del><ins>+ if (value.inherits(vm, JSMap::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("map"));
</span><del>- if (value.inherits(JSSet::info()))
</del><ins>+ if (value.inherits(vm, JSSet::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("set"));
</span><del>- if (value.inherits(JSWeakMap::info()))
</del><ins>+ if (value.inherits(vm, JSWeakMap::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("weakmap"));
</span><del>- if (value.inherits(JSWeakSet::info()))
</del><ins>+ if (value.inherits(vm, JSWeakSet::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("weakset"));
</span><span class="cx">
</span><del>- if (value.inherits(JSMapIterator::info())
- || value.inherits(JSSetIterator::info())
- || value.inherits(JSStringIterator::info())
- || value.inherits(JSPropertyNameIterator::info()))
</del><ins>+ if (value.inherits(vm, JSMapIterator::info())
+ || value.inherits(vm, JSSetIterator::info())
+ || value.inherits(vm, JSStringIterator::info())
+ || value.inherits(vm, JSPropertyNameIterator::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("iterator"));
</span><span class="cx">
</span><span class="cx"> if (object && object->getDirect(exec->vm(), exec->vm().propertyNames->builtinNames().arrayIteratorNextIndexPrivateName()))
</span><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("iterator"));
</span><span class="cx">
</span><del>- if (value.inherits(JSInt8Array::info()) || value.inherits(JSInt16Array::info()) || value.inherits(JSInt32Array::info()))
</del><ins>+ if (value.inherits(vm, JSInt8Array::info()) || value.inherits(vm, JSInt16Array::info()) || value.inherits(vm, JSInt32Array::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("array"));
</span><del>- if (value.inherits(JSUint8Array::info()) || value.inherits(JSUint16Array::info()) || value.inherits(JSUint32Array::info()))
</del><ins>+ if (value.inherits(vm, JSUint8Array::info()) || value.inherits(vm, JSUint16Array::info()) || value.inherits(vm, JSUint32Array::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("array"));
</span><del>- if (value.inherits(JSFloat32Array::info()) || value.inherits(JSFloat64Array::info()))
</del><ins>+ if (value.inherits(vm, JSFloat32Array::info()) || value.inherits(vm, JSFloat64Array::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("array"));
</span><span class="cx">
</span><span class="cx"> return impl().subtype(exec, value);
</span><span class="lines">@@ -203,8 +205,9 @@
</span><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- if (!value.asCell()->inherits(JSFunction::info()))
</del><ins>+ if (!value.asCell()->inherits(vm, JSFunction::info()))
</ins><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="cx"> // FIXME: This should provide better details for JSBoundFunctions.
</span><span class="lines">@@ -222,7 +225,6 @@
</span><span class="cx"> if (columnNumber)
</span><span class="cx"> columnNumber -= 1;
</span><span class="cx">
</span><del>- VM& vm = exec->vm();
</del><span class="cx"> String scriptID = String::number(sourceCode->provider()->asID());
</span><span class="cx"> JSObject* location = constructEmptyObject(exec);
</span><span class="cx"> location->putDirect(vm, Identifier::fromString(exec, "scriptId"), jsString(exec, scriptID));
</span><span class="lines">@@ -263,7 +265,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><span class="cx">
</span><del>- if (JSPromise* promise = jsDynamicCast<JSPromise*>(value)) {
</del><ins>+ if (JSPromise* promise = jsDynamicCast<JSPromise*>(vm, value)) {
</ins><span class="cx"> unsigned index = 0;
</span><span class="cx"> JSArray* array = constructEmptyArray(exec, nullptr);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="lines">@@ -289,7 +291,7 @@
</span><span class="cx"> RELEASE_ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (JSBoundFunction* boundFunction = jsDynamicCast<JSBoundFunction*>(value)) {
</del><ins>+ if (JSBoundFunction* boundFunction = jsDynamicCast<JSBoundFunction*>(vm, value)) {
</ins><span class="cx"> unsigned index = 0;
</span><span class="cx"> JSArray* array = constructEmptyArray(exec, nullptr);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="lines">@@ -305,7 +307,7 @@
</span><span class="cx"> return array;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (ProxyObject* proxy = jsDynamicCast<ProxyObject*>(value)) {
</del><ins>+ if (ProxyObject* proxy = jsDynamicCast<ProxyObject*>(vm, value)) {
</ins><span class="cx"> unsigned index = 0;
</span><span class="cx"> JSArray* array = constructEmptyArray(exec, nullptr, 2);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="lines">@@ -316,7 +318,7 @@
</span><span class="cx"> return array;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (JSObject* iteratorObject = jsDynamicCast<JSObject*>(value)) {
</del><ins>+ if (JSObject* iteratorObject = jsDynamicCast<JSObject*>(vm, value)) {
</ins><span class="cx"> if (iteratorObject->getDirect(exec->vm(), exec->vm().propertyNames->builtinNames().arrayIteratorNextIndexPrivateName())) {
</span><span class="cx"> JSValue iteratedValue = iteratorObject->getDirect(exec->vm(), exec->vm().propertyNames->builtinNames().iteratedObjectPrivateName());
</span><span class="cx"> JSValue kind = iteratorObject->getDirect(exec->vm(), exec->vm().propertyNames->builtinNames().arrayIteratorKindPrivateName());
</span><span class="lines">@@ -332,7 +334,7 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (JSMapIterator* mapIterator = jsDynamicCast<JSMapIterator*>(value)) {
</del><ins>+ if (JSMapIterator* mapIterator = jsDynamicCast<JSMapIterator*>(vm, value)) {
</ins><span class="cx"> String kind;
</span><span class="cx"> switch (mapIterator->kind()) {
</span><span class="cx"> case IterateKey:
</span><span class="lines">@@ -355,7 +357,7 @@
</span><span class="cx"> return array;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (JSSetIterator* setIterator = jsDynamicCast<JSSetIterator*>(value)) {
</del><ins>+ if (JSSetIterator* setIterator = jsDynamicCast<JSSetIterator*>(vm, value)) {
</ins><span class="cx"> String kind;
</span><span class="cx"> switch (setIterator->kind()) {
</span><span class="cx"> case IterateKey:
</span><span class="lines">@@ -378,7 +380,7 @@
</span><span class="cx"> return array;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (JSStringIterator* stringIterator = jsDynamicCast<JSStringIterator*>(value)) {
</del><ins>+ if (JSStringIterator* stringIterator = jsDynamicCast<JSStringIterator*>(vm, value)) {
</ins><span class="cx"> unsigned index = 0;
</span><span class="cx"> JSArray* array = constructEmptyArray(exec, nullptr, 1);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="lines">@@ -387,7 +389,7 @@
</span><span class="cx"> return array;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (JSPropertyNameIterator* propertyNameIterator = jsDynamicCast<JSPropertyNameIterator*>(value)) {
</del><ins>+ if (JSPropertyNameIterator* propertyNameIterator = jsDynamicCast<JSPropertyNameIterator*>(vm, value)) {
</ins><span class="cx"> unsigned index = 0;
</span><span class="cx"> JSArray* array = constructEmptyArray(exec, nullptr, 1);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="lines">@@ -404,13 +406,14 @@
</span><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- ProxyObject* proxy = jsDynamicCast<ProxyObject*>(value);
</del><ins>+ ProxyObject* proxy = jsDynamicCast<ProxyObject*>(vm, value);
</ins><span class="cx"> if (!proxy)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="cx"> JSObject* target = proxy->target();
</span><del>- while (ProxyObject* proxy = jsDynamicCast<ProxyObject*>(target))
</del><ins>+ while (ProxyObject* proxy = jsDynamicCast<ProxyObject*>(vm, target))
</ins><span class="cx"> target = proxy->target();
</span><span class="cx">
</span><span class="cx"> return target;
</span><span class="lines">@@ -421,8 +424,9 @@
</span><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- JSWeakMap* weakMap = jsDynamicCast<JSWeakMap*>(value);
</del><ins>+ JSWeakMap* weakMap = jsDynamicCast<JSWeakMap*>(vm, value);
</ins><span class="cx"> if (!weakMap)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="lines">@@ -437,7 +441,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- JSWeakMap* weakMap = jsDynamicCast<JSWeakMap*>(value);
</del><ins>+ JSWeakMap* weakMap = jsDynamicCast<JSWeakMap*>(vm, value);
</ins><span class="cx"> if (!weakMap)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="lines">@@ -469,8 +473,9 @@
</span><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- JSWeakSet* weakSet = jsDynamicCast<JSWeakSet*>(value);
</del><ins>+ JSWeakSet* weakSet = jsDynamicCast<JSWeakSet*>(vm, value);
</ins><span class="cx"> if (!weakSet)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="lines">@@ -485,7 +490,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- JSWeakSet* weakSet = jsDynamicCast<JSWeakSet*>(value);
</del><ins>+ JSWeakSet* weakSet = jsDynamicCast<JSWeakSet*>(vm, value);
</ins><span class="cx"> if (!weakSet)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="lines">@@ -531,17 +536,17 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue iterator;
</span><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- if (JSMapIterator* mapIterator = jsDynamicCast<JSMapIterator*>(value))
</del><ins>+ if (JSMapIterator* mapIterator = jsDynamicCast<JSMapIterator*>(vm, value))
</ins><span class="cx"> iterator = mapIterator->clone(exec);
</span><del>- else if (JSSetIterator* setIterator = jsDynamicCast<JSSetIterator*>(value))
</del><ins>+ else if (JSSetIterator* setIterator = jsDynamicCast<JSSetIterator*>(vm, value))
</ins><span class="cx"> iterator = setIterator->clone(exec);
</span><del>- else if (JSStringIterator* stringIterator = jsDynamicCast<JSStringIterator*>(value))
</del><ins>+ else if (JSStringIterator* stringIterator = jsDynamicCast<JSStringIterator*>(vm, value))
</ins><span class="cx"> iterator = stringIterator->clone(exec);
</span><del>- else if (JSPropertyNameIterator* propertyNameIterator = jsDynamicCast<JSPropertyNameIterator*>(value)) {
</del><ins>+ else if (JSPropertyNameIterator* propertyNameIterator = jsDynamicCast<JSPropertyNameIterator*>(vm, value)) {
</ins><span class="cx"> iterator = propertyNameIterator->clone(exec);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, JSValue());
</span><span class="cx"> } else {
</span><del>- if (JSObject* iteratorObject = jsDynamicCast<JSObject*>(value)) {
</del><ins>+ if (JSObject* iteratorObject = jsDynamicCast<JSObject*>(vm, value)) {
</ins><span class="cx"> // Array Iterators are created in JS for performance reasons. Thus the only way to know we have one is to
</span><span class="cx"> // look for a property that is unique to them.
</span><span class="cx"> if (JSValue nextIndex = iteratorObject->getDirect(vm, vm.propertyNames->builtinNames().arrayIteratorNextIndexPrivateName()))
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHostPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> void JSInjectedScriptHostPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION("subtype", jsInjectedScriptHostPrototypeFunctionSubtype, DontEnum, 1);
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -148,7 +148,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -187,7 +187,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -200,7 +200,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -213,7 +213,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -226,7 +226,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(thisValue);
</del><ins>+ JSInjectedScriptHost* castedThis = jsDynamicCast<JSInjectedScriptHost*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSJavaScriptCallFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> void JSJavaScriptCallFrame::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSObject* JSJavaScriptCallFrame::createPrototype(VM& vm, JSGlobalObject* globalObject)
</span><span class="lines">@@ -233,10 +233,5 @@
</span><span class="cx"> return javaScriptCallFrame;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSJavaScriptCallFrame* toJSJavaScriptCallFrame(JSValue value)
-{
- return value.inherits(JSJavaScriptCallFrame::info()) ? jsCast<JSJavaScriptCallFrame*>(value) : nullptr;
-}
-
</del><span class="cx"> } // namespace Inspector
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSJavaScriptCallFrameh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -90,6 +90,5 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSC::JSGlobalObject*, JavaScriptCallFrame*);
</span><del>-JSJavaScriptCallFrame* toJSJavaScriptCallFrame(JSC::JSValue);
</del><span class="cx">
</span><span class="cx"> } // namespace Inspector
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSJavaScriptCallFramePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFramePrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFramePrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFramePrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> void JSJavaScriptCallFramePrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION("evaluateWithScopeExtension", jsJavaScriptCallFramePrototypeFunctionEvaluateWithScopeExtension, DontEnum, 1);
</span><span class="lines">@@ -79,7 +79,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -131,7 +131,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -144,7 +144,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -170,7 +170,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -183,7 +183,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -196,7 +196,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -209,7 +209,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(thisValue);
</del><ins>+ JSJavaScriptCallFrame* castedThis = jsDynamicCast<JSJavaScriptCallFrame*>(vm, thisValue);
</ins><span class="cx"> if (!castedThis)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorScriptArgumentscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/ScriptArguments.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/ScriptArguments.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/ScriptArguments.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSC::JSValue value = argumentAt(0).jsValue();
</span><del>- if (JSC::jsDynamicCast<JSC::ProxyObject*>(value)) {
</del><ins>+ if (JSC::jsDynamicCast<JSC::ProxyObject*>(globalState()->vm(), value)) {
</ins><span class="cx"> result = ASCIILiteral("[object Proxy]");
</span><span class="cx"> return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectoragentsInspectorHeapAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/inspector/agents/InspectorHeapAgent.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -276,7 +276,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // Function preview.
</span><del>- if (cell->inherits(JSFunction::info())) {
</del><ins>+ if (cell->inherits(vm, JSFunction::info())) {
</ins><span class="cx"> injectedScript.functionDetails(errorString, cell, &functionDetails);
</span><span class="cx"> return;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterInterpretercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -576,7 +576,7 @@
</span><span class="cx"> auto catchScope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx"> if (Debugger* debugger = callFrame->vmEntryGlobalObject()->debugger()) {
</span><span class="cx"> SuspendExceptionScope scope(&vm);
</span><del>- if (jsDynamicCast<JSFunction*>(callFrame->jsCallee()))
</del><ins>+ if (jsDynamicCast<JSFunction*>(vm, callFrame->jsCallee()))
</ins><span class="cx"> debugger->unwindEvent(callFrame);
</span><span class="cx"> else
</span><span class="cx"> debugger->didExecuteProgram(callFrame);
</span><span class="lines">@@ -681,7 +681,7 @@
</span><span class="cx">
</span><span class="cx"> // Calculate an exception handler vPC, unwinding call frames as necessary.
</span><span class="cx"> HandlerInfo* handler = nullptr;
</span><del>- UnwindFunctor functor(callFrame, isTerminatedExecutionException(exception), codeBlock, handler);
</del><ins>+ UnwindFunctor functor(callFrame, isTerminatedExecutionException(vm, exception), codeBlock, handler);
</ins><span class="cx"> callFrame->iterate(functor);
</span><span class="cx"> if (!handler)
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -691,6 +691,7 @@
</span><span class="cx">
</span><span class="cx"> void Interpreter::notifyDebuggerOfExceptionToBeThrown(CallFrame* callFrame, Exception* exception)
</span><span class="cx"> {
</span><ins>+ VM& vm = callFrame->vm();
</ins><span class="cx"> Debugger* debugger = callFrame->vmEntryGlobalObject()->debugger();
</span><span class="cx"> if (debugger && debugger->needsExceptionCallbacks() && !exception->didNotifyInspectorOfThrow()) {
</span><span class="cx"> // This code assumes that if the debugger is enabled then there is no inlining.
</span><span class="lines">@@ -699,7 +700,7 @@
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=121754
</span><span class="cx">
</span><span class="cx"> bool hasCatchHandler;
</span><del>- bool isTermination = isTerminatedExecutionException(exception);
</del><ins>+ bool isTermination = isTerminatedExecutionException(vm, exception);
</ins><span class="cx"> if (isTermination)
</span><span class="cx"> hasCatchHandler = false;
</span><span class="cx"> else {
</span><span class="lines">@@ -850,7 +851,7 @@
</span><span class="cx"> {
</span><span class="cx"> CodeBlock* tempCodeBlock;
</span><span class="cx"> JSObject* error = program->prepareForExecution<ProgramExecutable>(vm, nullptr, scope, CodeForCall, tempCodeBlock);
</span><del>- ASSERT(!throwScope.exception() || throwScope.exception() == jsDynamicCast<Exception*>(error));
</del><ins>+ ASSERT(!throwScope.exception() || throwScope.exception() == jsDynamicCast<Exception*>(vm, error));
</ins><span class="cx"> if (error)
</span><span class="cx"> return checkedReturn(throwException(callFrame, throwScope, error));
</span><span class="cx"> codeBlock = jsCast<ProgramCodeBlock*>(tempCodeBlock);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterShadowChickencpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/ShadowChicken.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/ShadowChicken.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/interpreter/ShadowChicken.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> *m_logCursor++ = packet;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-void ShadowChicken::update(VM&, ExecState* exec)
</del><ins>+void ShadowChicken::update(VM& vm, ExecState* exec)
</ins><span class="cx"> {
</span><span class="cx"> if (verbose) {
</span><span class="cx"> dataLog("Running update on: ", *this, "\n");
</span><span class="lines">@@ -300,11 +300,11 @@
</span><span class="cx"> CodeBlock* codeBlock = callFrame->codeBlock();
</span><span class="cx"> if (codeBlock && codeBlock->wasCompiledWithDebuggingOpcodes() && codeBlock->scopeRegister().isValid()) {
</span><span class="cx"> scope = callFrame->scope(codeBlock->scopeRegister().offset());
</span><del>- RELEASE_ASSERT(scope->inherits(JSScope::info()));
</del><ins>+ RELEASE_ASSERT(scope->inherits(vm, JSScope::info()));
</ins><span class="cx"> } else if (foundFrame) {
</span><span class="cx"> scope = m_log[indexInLog].scope;
</span><span class="cx"> if (scope)
</span><del>- RELEASE_ASSERT(scope->inherits(JSScope::info()));
</del><ins>+ RELEASE_ASSERT(scope->inherits(vm, JSScope::info()));
</ins><span class="cx"> }
</span><span class="cx"> toPush.append(Frame(jsCast<JSObject*>(visitor->callee()), callFrame, isTailDeleted, callFrame->thisValue(), scope, codeBlock, callFrame->callSiteIndex()));
</span><span class="cx">
</span><span class="lines">@@ -349,7 +349,7 @@
</span><span class="cx"> }
</span><span class="cx"> Packet packet = m_log[indexInLog];
</span><span class="cx"> bool isTailDeleted = true;
</span><del>- RELEASE_ASSERT(tailPacket.scope->inherits(JSScope::info()));
</del><ins>+ RELEASE_ASSERT(tailPacket.scope->inherits(vm, JSScope::info()));
</ins><span class="cx"> toPush.append(Frame(packet.callee, packet.frame, isTailDeleted, tailPacket.thisValue, tailPacket.scope, tailPacket.codeBlock, tailPacket.callSiteIndex));
</span><span class="cx"> }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterStackVisitorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/interpreter/StackVisitor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -103,7 +103,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (callFrame->callee()->isAnyWasmCallee()) {
</del><ins>+ if (callFrame->callee()->isAnyWasmCallee(callFrame->vm())) {
</ins><span class="cx"> readNonInlinedFrame(callFrame);
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="lines">@@ -158,7 +158,7 @@
</span><span class="cx"> JSCell* callee = callFrame->callee();
</span><span class="cx"> m_frame.m_callee = callee;
</span><span class="cx">
</span><del>- if (callee->isAnyWasmCallee()) {
</del><ins>+ if (callee->isAnyWasmCallee(*callee->vm())) {
</ins><span class="cx"> m_frame.m_isWasmFrame = true;
</span><span class="cx"> m_frame.m_codeBlock = nullptr;
</span><span class="cx"> m_frame.m_bytecodeOffset = 0;
</span><span class="lines">@@ -255,7 +255,7 @@
</span><span class="cx"> #if ENABLE(WEBASSEMBLY)
</span><span class="cx"> if (isWasmFrame()) {
</span><span class="cx"> if (JSCell* callee = this->callee()) {
</span><del>- if (JSWebAssemblyCallee* wasmCallee = jsDynamicCast<JSWebAssemblyCallee*>(callee))
</del><ins>+ if (JSWebAssemblyCallee* wasmCallee = jsDynamicCast<JSWebAssemblyCallee*>(*callee->vm(), callee))
</ins><span class="cx"> return wasmCallee->calleeSaveRegisters();
</span><span class="cx"> // Other wasm callees (e.g, stubs) don't use callee save registers, so nothing needs
</span><span class="cx"> // to be restored for them.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITCodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITCode.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITCode.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/jit/JITCode.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> {
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(*vm);
</span><span class="cx"> void* entryAddress;
</span><del>- JSFunction* function = jsDynamicCast<JSFunction*>(protoCallFrame->callee());
</del><ins>+ JSFunction* function = jsDynamicCast<JSFunction*>(*vm, protoCallFrame->callee());
</ins><span class="cx">
</span><span class="cx"> if (!function || !protoCallFrame->needArityCheck()) {
</span><span class="cx"> ASSERT(!protoCallFrame->needArityCheck());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -229,7 +229,7 @@
</span><span class="cx"> PropertySlot slot(baseValue, PropertySlot::InternalMethodType::Get);
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, uid);
</span><span class="cx">
</span><del>- LOG_IC((ICEvent::OperationGetById, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationGetById, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx"> return JSValue::encode(baseValue.get(exec, ident, slot));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -243,7 +243,7 @@
</span><span class="cx"> JSValue baseValue = JSValue::decode(base);
</span><span class="cx"> PropertySlot slot(baseValue, PropertySlot::InternalMethodType::Get);
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, uid);
</span><del>- LOG_IC((ICEvent::OperationGetByIdGeneric, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationGetByIdGeneric, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx"> return JSValue::encode(baseValue.get(exec, ident, slot));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -256,7 +256,7 @@
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, uid);
</span><span class="cx">
</span><span class="cx"> JSValue baseValue = JSValue::decode(base);
</span><del>- LOG_IC((ICEvent::OperationGetByIdOptimize, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationGetByIdOptimize, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx">
</span><span class="cx"> return JSValue::encode(baseValue.getPropertySlot(exec, ident, [&] (bool found, PropertySlot& slot) -> JSValue {
</span><span class="cx"> if (stubInfo->considerCaching(baseValue.structureOrNull()))
</span><span class="lines">@@ -281,7 +281,7 @@
</span><span class="cx"> AccessType accessType = static_cast<AccessType>(stubInfo->accessType);
</span><span class="cx">
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, key);
</span><del>- LOG_IC((ICEvent::OperationInOptimize, base->classInfo(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationInOptimize, base->classInfo(*vm), ident));
</ins><span class="cx"> PropertySlot slot(base, PropertySlot::InternalMethodType::HasProperty);
</span><span class="cx"> bool result = asObject(base)->getPropertySlot(exec, ident, slot);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><span class="lines">@@ -310,7 +310,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, key);
</span><del>- LOG_IC((ICEvent::OperationIn, base->classInfo(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationIn, base->classInfo(*vm), ident));
</ins><span class="cx"> return JSValue::encode(jsBoolean(asObject(base)->hasProperty(exec, ident)));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -335,7 +335,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue baseValue = JSValue::decode(encodedBase);
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, uid);
</span><del>- LOG_IC((ICEvent::OperationPutByIdStrict, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationPutByIdStrict, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx">
</span><span class="cx"> PutPropertySlot slot(baseValue, true, exec->codeBlock()->putByIdContext());
</span><span class="cx"> baseValue.putInline(exec, ident, JSValue::decode(encodedValue), slot);
</span><span class="lines">@@ -352,7 +352,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue baseValue = JSValue::decode(encodedBase);
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, uid);
</span><del>- LOG_IC((ICEvent::OperationPutByIdNonStrict, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationPutByIdNonStrict, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx"> PutPropertySlot slot(baseValue, false, exec->codeBlock()->putByIdContext());
</span><span class="cx"> baseValue.putInline(exec, ident, JSValue::decode(encodedValue), slot);
</span><span class="cx"> }
</span><span class="lines">@@ -368,7 +368,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue baseValue = JSValue::decode(encodedBase);
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, uid);
</span><del>- LOG_IC((ICEvent::OperationPutByIdDirectStrict, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationPutByIdDirectStrict, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx"> PutPropertySlot slot(baseValue, true, exec->codeBlock()->putByIdContext());
</span><span class="cx"> asObject(baseValue)->putDirect(exec->vm(), ident, JSValue::decode(encodedValue), slot);
</span><span class="cx"> }
</span><span class="lines">@@ -384,7 +384,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue baseValue = JSValue::decode(encodedBase);
</span><span class="cx"> Identifier ident = Identifier::fromUid(vm, uid);
</span><del>- LOG_IC((ICEvent::OperationPutByIdDirectNonStrict, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationPutByIdDirectNonStrict, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx"> PutPropertySlot slot(baseValue, false, exec->codeBlock()->putByIdContext());
</span><span class="cx"> asObject(baseValue)->putDirect(exec->vm(), ident, JSValue::decode(encodedValue), slot);
</span><span class="cx"> }
</span><span class="lines">@@ -402,7 +402,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><span class="cx"> JSValue baseValue = JSValue::decode(encodedBase);
</span><del>- LOG_IC((ICEvent::OperationPutByIdStrictOptimize, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationPutByIdStrictOptimize, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx"> PutPropertySlot slot(baseValue, true, exec->codeBlock()->putByIdContext());
</span><span class="cx">
</span><span class="cx"> Structure* structure = baseValue.isCell() ? baseValue.asCell()->structure(*vm) : nullptr;
</span><span class="lines">@@ -429,7 +429,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><span class="cx"> JSValue baseValue = JSValue::decode(encodedBase);
</span><del>- LOG_IC((ICEvent::OperationPutByIdNonStrictOptimize, baseValue.classInfoOrNull(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationPutByIdNonStrictOptimize, baseValue.classInfoOrNull(*vm), ident));
</ins><span class="cx"> PutPropertySlot slot(baseValue, false, exec->codeBlock()->putByIdContext());
</span><span class="cx">
</span><span class="cx"> Structure* structure = baseValue.isCell() ? baseValue.asCell()->structure(*vm) : nullptr;
</span><span class="lines">@@ -455,7 +455,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><span class="cx"> JSObject* baseObject = asObject(JSValue::decode(encodedBase));
</span><del>- LOG_IC((ICEvent::OperationPutByIdDirectStrictOptimize, baseObject->classInfo(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationPutByIdDirectStrictOptimize, baseObject->classInfo(*vm), ident));
</ins><span class="cx"> PutPropertySlot slot(baseObject, true, exec->codeBlock()->putByIdContext());
</span><span class="cx">
</span><span class="cx"> Structure* structure = baseObject->structure(*vm);
</span><span class="lines">@@ -480,7 +480,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><span class="cx"> JSObject* baseObject = asObject(JSValue::decode(encodedBase));
</span><del>- LOG_IC((ICEvent::OperationPutByIdDirectNonStrictOptimize, baseObject->classInfo(), ident));
</del><ins>+ LOG_IC((ICEvent::OperationPutByIdDirectNonStrictOptimize, baseObject->classInfo(*vm), ident));
</ins><span class="cx"> PutPropertySlot slot(baseObject, false, exec->codeBlock()->putByIdContext());
</span><span class="cx">
</span><span class="cx"> Structure* structure = baseObject->structure(*vm);
</span><span class="lines">@@ -1126,8 +1126,8 @@
</span><span class="cx"> template<typename FunctionType>
</span><span class="cx"> static EncodedJSValue operationNewFunctionCommon(ExecState* exec, JSScope* scope, JSCell* functionExecutable, bool isInvalidated)
</span><span class="cx"> {
</span><del>- ASSERT(functionExecutable->inherits(FunctionExecutable::info()));
</del><span class="cx"> VM& vm = exec->vm();
</span><ins>+ ASSERT(functionExecutable->inherits(vm, FunctionExecutable::info()));
</ins><span class="cx"> NativeCallFrameTracer tracer(&vm, exec);
</span><span class="cx"> if (isInvalidated)
</span><span class="cx"> return JSValue::encode(FunctionType::createWithInvalidatedReallocationWatchpoint(vm, static_cast<FunctionExecutable*>(functionExecutable), scope));
</span><span class="lines">@@ -2703,7 +2703,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> RELEASE_ASSERT(!!scope.exception());
</span><span class="cx">
</span><del>- if (isTerminatedExecutionException(scope.exception())) {
</del><ins>+ if (isTerminatedExecutionException(vm, scope.exception())) {
</ins><span class="cx"> genericUnwind(&vm, exec);
</span><span class="cx"> return 1;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitRepatchcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/Repatch.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/Repatch.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/jit/Repatch.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -179,12 +179,12 @@
</span><span class="cx"> newCase = AccessCase::getLength(vm, codeBlock, AccessCase::ArrayLength);
</span><span class="cx"> } else if (isJSString(baseValue))
</span><span class="cx"> newCase = AccessCase::getLength(vm, codeBlock, AccessCase::StringLength);
</span><del>- else if (DirectArguments* arguments = jsDynamicCast<DirectArguments*>(baseValue)) {
</del><ins>+ else if (DirectArguments* arguments = jsDynamicCast<DirectArguments*>(vm, baseValue)) {
</ins><span class="cx"> // If there were overrides, then we can handle this as a normal property load! Guarding
</span><span class="cx"> // this with such a check enables us to add an IC case for that load if needed.
</span><span class="cx"> if (!arguments->overrodeThings())
</span><span class="cx"> newCase = AccessCase::getLength(vm, codeBlock, AccessCase::DirectArgumentsLength);
</span><del>- } else if (ScopedArguments* arguments = jsDynamicCast<ScopedArguments*>(baseValue)) {
</del><ins>+ } else if (ScopedArguments* arguments = jsDynamicCast<ScopedArguments*>(vm, baseValue)) {
</ins><span class="cx"> // Ditto.
</span><span class="cx"> if (!arguments->overrodeThings())
</span><span class="cx"> newCase = AccessCase::getLength(vm, codeBlock, AccessCase::ScopedArgumentsLength);
</span><span class="lines">@@ -261,7 +261,7 @@
</span><span class="cx">
</span><span class="cx"> JSFunction* getter = nullptr;
</span><span class="cx"> if (slot.isCacheableGetter())
</span><del>- getter = jsDynamicCast<JSFunction*>(slot.getterSetter()->getter());
</del><ins>+ getter = jsDynamicCast<JSFunction*>(vm, slot.getterSetter()->getter());
</ins><span class="cx">
</span><span class="cx"> DOMJIT::GetterSetter* domJIT = nullptr;
</span><span class="cx"> if (slot.isCacheableCustom() && slot.domJIT())
</span><span class="lines">@@ -302,12 +302,12 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- LOG_IC((ICEvent::GetByIdAddAccessCase, baseValue.classInfoOrNull(), propertyName));
</del><ins>+ LOG_IC((ICEvent::GetByIdAddAccessCase, baseValue.classInfoOrNull(vm), propertyName));
</ins><span class="cx">
</span><span class="cx"> AccessGenerationResult result = stubInfo.addAccessCase(codeBlock, propertyName, WTFMove(newCase));
</span><span class="cx">
</span><span class="cx"> if (result.generatedSomeCode()) {
</span><del>- LOG_IC((ICEvent::GetByIdReplaceWithJump, baseValue.classInfoOrNull(), propertyName));
</del><ins>+ LOG_IC((ICEvent::GetByIdReplaceWithJump, baseValue.classInfoOrNull(vm), propertyName));
</ins><span class="cx">
</span><span class="cx"> RELEASE_ASSERT(result.code());
</span><span class="cx"> InlineAccess::rewireStubAsJump(exec->vm(), stubInfo, CodeLocationLabel(result.code()));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/jsc.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -383,7 +383,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- CustomGetter* thisObject = jsDynamicCast<CustomGetter*>(JSValue::decode(thisValue));
</del><ins>+ CustomGetter* thisObject = jsDynamicCast<CustomGetter*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> bool shouldThrow = thisObject->get(exec, PropertyName(Identifier::fromString(exec, "shouldThrow"))).toBoolean(exec);
</span><span class="lines">@@ -473,8 +473,9 @@
</span><span class="cx"> protected:
</span><span class="cx"> void finishCreation(ExecState* exec)
</span><span class="cx"> {
</span><del>- Base::finishCreation(exec->vm());
- ASSERT(inherits(info()));
</del><ins>+ VM& vm = exec->vm();
+ Base::finishCreation(vm);
+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> for (size_t i = 0; i < exec->argumentCount(); i++)
</span><span class="cx"> m_vector.append(exec->argument(i).toInt32(exec));
</span><span class="lines">@@ -491,7 +492,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- RuntimeArray* thisObject = jsDynamicCast<RuntimeArray*>(JSValue::decode(thisValue));
</del><ins>+ RuntimeArray* thisObject = jsDynamicCast<RuntimeArray*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> return JSValue::encode(jsNumber(thisObject->getLength()));
</span><span class="lines">@@ -676,7 +677,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- DOMJITNode* thisObject = jsDynamicCast<DOMJITNode*>(JSValue::decode(thisValue));
</del><ins>+ DOMJITNode* thisObject = jsDynamicCast<DOMJITNode*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> return JSValue::encode(jsNumber(thisObject->value()));
</span><span class="lines">@@ -725,7 +726,7 @@
</span><span class="cx"> NativeCallFrameTracer tracer(&vm, exec);
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> auto* object = static_cast<DOMJITNode*>(pointer);
</span><del>- auto* domjitGetterComplex = jsDynamicCast<DOMJITGetterComplex*>(object);
</del><ins>+ auto* domjitGetterComplex = jsDynamicCast<DOMJITGetterComplex*>(vm, object);
</ins><span class="cx"> if (domjitGetterComplex) {
</span><span class="cx"> if (domjitGetterComplex->m_enableException)
</span><span class="cx"> return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral("DOMJITGetterComplex slow call exception"))));
</span><span class="lines">@@ -772,7 +773,8 @@
</span><span class="cx">
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL functionEnableException(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto* object = jsDynamicCast<DOMJITGetterComplex*>(exec->thisValue());
</del><ins>+ VM& vm = exec->vm();
+ auto* object = jsDynamicCast<DOMJITGetterComplex*>(vm, exec->thisValue());
</ins><span class="cx"> if (object)
</span><span class="cx"> object->m_enableException = true;
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -783,10 +785,10 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- auto* thisObject = jsDynamicCast<DOMJITNode*>(JSValue::decode(thisValue));
</del><ins>+ auto* thisObject = jsDynamicCast<DOMJITNode*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><del>- if (auto* domjitGetterComplex = jsDynamicCast<DOMJITGetterComplex*>(JSValue::decode(thisValue))) {
</del><ins>+ if (auto* domjitGetterComplex = jsDynamicCast<DOMJITGetterComplex*>(vm, JSValue::decode(thisValue))) {
</ins><span class="cx"> if (domjitGetterComplex->m_enableException)
</span><span class="cx"> return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral("DOMJITGetterComplex slow call exception"))));
</span><span class="cx"> }
</span><span class="lines">@@ -825,7 +827,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- DOMJITNode* thisObject = jsDynamicCast<DOMJITNode*>(exec->thisValue());
</del><ins>+ DOMJITNode* thisObject = jsDynamicCast<DOMJITNode*>(vm, exec->thisValue());
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> return JSValue::encode(jsNumber(thisObject->value()));
</span><span class="lines">@@ -1758,7 +1760,8 @@
</span><span class="cx"> {
</span><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- JSObject* object = jsDynamicCast<JSObject*>(exec->argument(0));
</del><ins>+ VM& vm = exec->vm();
+ JSObject* object = jsDynamicCast<JSObject*>(vm, exec->argument(0));
</ins><span class="cx"> if (!object)
</span><span class="cx"> return JSValue::encode(jsNontrivialString(exec, ASCIILiteral("<not object>")));
</span><span class="cx"> return JSValue::encode(jsNontrivialString(exec, toString("<Butterfly: ", RawPointer(object->butterfly()), "; public length: ", object->getArrayLength(), "; vector length: ", object->getVectorLength(), ">")));
</span><span class="lines">@@ -1818,7 +1821,7 @@
</span><span class="cx"> JSLockHolder lock(vm);
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- Root* root = jsDynamicCast<Root*>(exec->argument(0));
</del><ins>+ Root* root = jsDynamicCast<Root*>(vm, exec->argument(0));
</ins><span class="cx"> if (!root)
</span><span class="cx"> return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral("Cannot create Element without a Root."))));
</span><span class="cx"> return JSValue::encode(Element::create(vm, exec->lexicalGlobalObject(), root));
</span><span class="lines">@@ -1827,7 +1830,8 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionGetElement(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSLockHolder lock(exec);
</span><del>- Root* root = jsDynamicCast<Root*>(exec->argument(0));
</del><ins>+ VM& vm = exec->vm();
+ Root* root = jsDynamicCast<Root*>(vm, exec->argument(0));
</ins><span class="cx"> if (!root)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> Element* result = root->element();
</span><span class="lines">@@ -1837,8 +1841,9 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionSetElementRoot(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSLockHolder lock(exec);
</span><del>- Element* element = jsDynamicCast<Element*>(exec->argument(0));
- Root* root = jsDynamicCast<Root*>(exec->argument(1));
</del><ins>+ VM& vm = exec->vm();
+ Element* element = jsDynamicCast<Element*>(vm, exec->argument(0));
+ Root* root = jsDynamicCast<Root*>(vm, exec->argument(1));
</ins><span class="cx"> if (element && root)
</span><span class="cx"> element->setRoot(exec->vm(), root);
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -1856,7 +1861,7 @@
</span><span class="cx"> JSLockHolder lock(vm);
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- SimpleObject* simpleObject = jsDynamicCast<SimpleObject*>(exec->argument(0));
</del><ins>+ SimpleObject* simpleObject = jsDynamicCast<SimpleObject*>(vm, exec->argument(0));
</ins><span class="cx"> if (UNLIKELY(!simpleObject)) {
</span><span class="cx"> throwTypeError(exec, scope, ASCIILiteral("Invalid use of getHiddenValue test function"));
</span><span class="cx"> return encodedJSValue();
</span><span class="lines">@@ -1870,7 +1875,7 @@
</span><span class="cx"> JSLockHolder lock(vm);
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- SimpleObject* simpleObject = jsDynamicCast<SimpleObject*>(exec->argument(0));
</del><ins>+ SimpleObject* simpleObject = jsDynamicCast<SimpleObject*>(vm, exec->argument(0));
</ins><span class="cx"> if (UNLIKELY(!simpleObject)) {
</span><span class="cx"> throwTypeError(exec, scope, ASCIILiteral("Invalid use of setHiddenValue test function"));
</span><span class="cx"> return encodedJSValue();
</span><span class="lines">@@ -1963,7 +1968,7 @@
</span><span class="cx"> JSValue delegate = exec->argument(1);
</span><span class="cx"> if (!delegate.isObject())
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><del>- ImpureGetter* impureGetter = jsDynamicCast<ImpureGetter*>(asObject(base.asCell()));
</del><ins>+ ImpureGetter* impureGetter = jsDynamicCast<ImpureGetter*>(vm, asObject(base.asCell()));
</ins><span class="cx"> if (UNLIKELY(!impureGetter)) {
</span><span class="cx"> throwTypeError(exec, scope, ASCIILiteral("argument is not an ImpureGetter"));
</span><span class="cx"> return encodedJSValue();
</span><span class="lines">@@ -2309,7 +2314,8 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionNoFTL(ExecState* exec)
</span><span class="cx"> {
</span><del>- if (JSFunction* function = jsDynamicCast<JSFunction*>(exec->argument(0))) {
</del><ins>+ VM& vm = exec->vm();
+ if (JSFunction* function = jsDynamicCast<JSFunction*>(vm, exec->argument(0))) {
</ins><span class="cx"> FunctionExecutable* executable = function->jsExecutable();
</span><span class="cx"> executable->setNeverFTLOptimize(true);
</span><span class="cx"> }
</span><span class="lines">@@ -2463,7 +2469,7 @@
</span><span class="cx"> String sourceCode = exec->argument(0).toWTFString(exec);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><span class="cx">
</span><del>- GlobalObject* globalObject = jsDynamicCast<GlobalObject*>(
</del><ins>+ GlobalObject* globalObject = jsDynamicCast<GlobalObject*>(vm,
</ins><span class="cx"> exec->thisValue().get(exec, Identifier::fromString(exec, "global")));
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><span class="cx"> if (!globalObject)
</span><span class="lines">@@ -2583,7 +2589,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(exec->argument(0));
</del><ins>+ JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(vm, exec->argument(0));
</ins><span class="cx"> if (!jsBuffer || !jsBuffer->isShared())
</span><span class="cx"> return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral("Expected SharedArrayBuffer"))));
</span><span class="cx">
</span><span class="lines">@@ -2594,7 +2600,7 @@
</span><span class="cx"> [&] (const AbstractLocker& locker, Worker& worker) {
</span><span class="cx"> ArrayBuffer* nativeBuffer = jsBuffer->impl();
</span><span class="cx"> ArrayBufferContents contents;
</span><del>- nativeBuffer->transferTo(contents); // "transferTo" means "share" if the buffer is shared.
</del><ins>+ nativeBuffer->transferTo(vm, contents); // "transferTo" means "share" if the buffer is shared.
</ins><span class="cx"> RefPtr<Message> message = adoptRef(new Message(WTFMove(contents), index));
</span><span class="cx"> worker.enqueue(locker, message);
</span><span class="cx"> });
</span><span class="lines">@@ -2672,12 +2678,12 @@
</span><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral("Not enough arguments"))));
</span><span class="cx">
</span><del>- JSArrayBuffer* buffer = jsDynamicCast<JSArrayBuffer*>(exec->argument(0));
</del><ins>+ JSArrayBuffer* buffer = jsDynamicCast<JSArrayBuffer*>(vm, exec->argument(0));
</ins><span class="cx"> if (!buffer)
</span><span class="cx"> return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral("Expected an array buffer"))));
</span><span class="cx">
</span><span class="cx"> ArrayBufferContents dummyContents;
</span><del>- buffer->impl()->transferTo(dummyContents);
</del><ins>+ buffer->impl()->transferTo(vm, dummyContents);
</ins><span class="cx">
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="lines">@@ -2745,12 +2751,13 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionFindTypeForExpression(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> RELEASE_ASSERT(exec->vm().typeProfiler());
</span><del>- exec->vm().typeProfilerLog()->processLogEntries(ASCIILiteral("jsc Testing API: functionFindTypeForExpression"));
</del><ins>+ vm.typeProfilerLog()->processLogEntries(ASCIILiteral("jsc Testing API: functionFindTypeForExpression"));
</ins><span class="cx">
</span><span class="cx"> JSValue functionValue = exec->argument(0);
</span><span class="cx"> RELEASE_ASSERT(functionValue.isFunction());
</span><del>- FunctionExecutable* executable = (jsDynamicCast<JSFunction*>(functionValue.asCell()->getObject()))->jsExecutable();
</del><ins>+ FunctionExecutable* executable = (jsDynamicCast<JSFunction*>(vm, functionValue.asCell()->getObject()))->jsExecutable();
</ins><span class="cx">
</span><span class="cx"> RELEASE_ASSERT(exec->argument(1).isString());
</span><span class="cx"> String substring = asString(exec->argument(1))->value(exec);
</span><span class="lines">@@ -2763,12 +2770,13 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionReturnTypeFor(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> RELEASE_ASSERT(exec->vm().typeProfiler());
</span><del>- exec->vm().typeProfilerLog()->processLogEntries(ASCIILiteral("jsc Testing API: functionReturnTypeFor"));
</del><ins>+ vm.typeProfilerLog()->processLogEntries(ASCIILiteral("jsc Testing API: functionReturnTypeFor"));
</ins><span class="cx">
</span><span class="cx"> JSValue functionValue = exec->argument(0);
</span><span class="cx"> RELEASE_ASSERT(functionValue.isFunction());
</span><del>- FunctionExecutable* executable = (jsDynamicCast<JSFunction*>(functionValue.asCell()->getObject()))->jsExecutable();
</del><ins>+ FunctionExecutable* executable = (jsDynamicCast<JSFunction*>(vm, functionValue.asCell()->getObject()))->jsExecutable();
</ins><span class="cx">
</span><span class="cx"> unsigned offset = executable->typeProfilingStartOffset();
</span><span class="cx"> String jsonString = exec->vm().typeProfiler()->typeInformationForExpressionAtOffset(TypeProfilerSearchDescriptorFunctionReturn, offset, executable->sourceID(), exec->vm());
</span><span class="lines">@@ -2784,11 +2792,12 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionHasBasicBlockExecuted(ExecState* exec)
</span><span class="cx"> {
</span><del>- RELEASE_ASSERT(exec->vm().controlFlowProfiler());
</del><ins>+ VM& vm = exec->vm();
+ RELEASE_ASSERT(vm.controlFlowProfiler());
</ins><span class="cx">
</span><span class="cx"> JSValue functionValue = exec->argument(0);
</span><span class="cx"> RELEASE_ASSERT(functionValue.isFunction());
</span><del>- FunctionExecutable* executable = (jsDynamicCast<JSFunction*>(functionValue.asCell()->getObject()))->jsExecutable();
</del><ins>+ FunctionExecutable* executable = (jsDynamicCast<JSFunction*>(vm, functionValue.asCell()->getObject()))->jsExecutable();
</ins><span class="cx">
</span><span class="cx"> RELEASE_ASSERT(exec->argument(1).isString());
</span><span class="cx"> String substring = asString(exec->argument(1))->value(exec);
</span><span class="lines">@@ -2796,17 +2805,18 @@
</span><span class="cx"> RELEASE_ASSERT(sourceCodeText.contains(substring));
</span><span class="cx"> int offset = sourceCodeText.find(substring) + executable->source().startOffset();
</span><span class="cx">
</span><del>- bool hasExecuted = exec->vm().controlFlowProfiler()->hasBasicBlockAtTextOffsetBeenExecuted(offset, executable->sourceID(), exec->vm());
</del><ins>+ bool hasExecuted = vm.controlFlowProfiler()->hasBasicBlockAtTextOffsetBeenExecuted(offset, executable->sourceID(), vm);
</ins><span class="cx"> return JSValue::encode(jsBoolean(hasExecuted));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionBasicBlockExecutionCount(ExecState* exec)
</span><span class="cx"> {
</span><del>- RELEASE_ASSERT(exec->vm().controlFlowProfiler());
</del><ins>+ VM& vm = exec->vm();
+ RELEASE_ASSERT(vm.controlFlowProfiler());
</ins><span class="cx">
</span><span class="cx"> JSValue functionValue = exec->argument(0);
</span><span class="cx"> RELEASE_ASSERT(functionValue.isFunction());
</span><del>- FunctionExecutable* executable = (jsDynamicCast<JSFunction*>(functionValue.asCell()->getObject()))->jsExecutable();
</del><ins>+ FunctionExecutable* executable = (jsDynamicCast<JSFunction*>(vm, functionValue.asCell()->getObject()))->jsExecutable();
</ins><span class="cx">
</span><span class="cx"> RELEASE_ASSERT(exec->argument(1).isString());
</span><span class="cx"> String substring = asString(exec->argument(1))->value(exec);
</span><span class="lines">@@ -2814,7 +2824,7 @@
</span><span class="cx"> RELEASE_ASSERT(sourceCodeText.contains(substring));
</span><span class="cx"> int offset = sourceCodeText.find(substring) + executable->source().startOffset();
</span><span class="cx">
</span><del>- size_t executionCount = exec->vm().controlFlowProfiler()->basicBlockExecutionCountAtTextOffset(offset, executable->sourceID(), exec->vm());
</del><ins>+ size_t executionCount = vm.controlFlowProfiler()->basicBlockExecutionCountAtTextOffset(offset, executable->sourceID(), exec->vm());
</ins><span class="cx"> return JSValue::encode(JSValue(executionCount));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2941,8 +2951,9 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL functionEnsureArrayStorage(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> for (unsigned i = 0; i < exec->argumentCount(); ++i) {
</span><del>- if (JSObject* object = jsDynamicCast<JSObject*>(exec->argument(0)))
</del><ins>+ if (JSObject* object = jsDynamicCast<JSObject*>(vm, exec->argument(0)))
</ins><span class="cx"> object->ensureArrayStorage(exec->vm());
</span><span class="cx"> }
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1600,7 +1600,7 @@
</span><span class="cx"> LLINT_BEGIN();
</span><span class="cx"> RELEASE_ASSERT(!!throwScope.exception());
</span><span class="cx">
</span><del>- if (isTerminatedExecutionException(throwScope.exception()))
</del><ins>+ if (isTerminatedExecutionException(vm, throwScope.exception()))
</ins><span class="cx"> LLINT_RETURN_TWO(pc, bitwise_cast<void*>(static_cast<uintptr_t>(1)));
</span><span class="cx"> LLINT_RETURN_TWO(pc, 0);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeAbstractModuleRecordcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/AbstractModuleRecord.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> void AbstractModuleRecord::finishCreation(ExecState* exec, VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirect(vm, Identifier::fromString(&vm, ASCIILiteral("registryEntry")), jsUndefined());
</span><span class="cx"> putDirect(vm, Identifier::fromString(&vm, ASCIILiteral("evaluated")), jsBoolean(false));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArrayBuffercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ArrayBuffer.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ArrayBuffer.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ArrayBuffer.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -284,7 +284,7 @@
</span><span class="cx"> makeShared();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool ArrayBuffer::transferTo(ArrayBufferContents& result)
</del><ins>+bool ArrayBuffer::transferTo(VM& vm, ArrayBufferContents& result)
</ins><span class="cx"> {
</span><span class="cx"> Ref<ArrayBuffer> protect(*this);
</span><span class="cx">
</span><span class="lines">@@ -310,9 +310,9 @@
</span><span class="cx"> m_contents.transferTo(result);
</span><span class="cx"> for (size_t i = numberOfIncomingReferences(); i--;) {
</span><span class="cx"> JSCell* cell = incomingReferenceAt(i);
</span><del>- if (JSArrayBufferView* view = jsDynamicCast<JSArrayBufferView*>(cell))
</del><ins>+ if (JSArrayBufferView* view = jsDynamicCast<JSArrayBufferView*>(vm, cell))
</ins><span class="cx"> view->neuter();
</span><del>- else if (ArrayBufferNeuteringWatchpoint* watchpoint = jsDynamicCast<ArrayBufferNeuteringWatchpoint*>(cell))
</del><ins>+ else if (ArrayBufferNeuteringWatchpoint* watchpoint = jsDynamicCast<ArrayBufferNeuteringWatchpoint*>(vm, cell))
</ins><span class="cx"> watchpoint->fireAll();
</span><span class="cx"> }
</span><span class="cx"> return true;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArrayBufferh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ArrayBuffer.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ArrayBuffer.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ArrayBuffer.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -34,6 +34,7 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><ins>+class VM;
</ins><span class="cx"> class ArrayBuffer;
</span><span class="cx"> class ArrayBufferView;
</span><span class="cx"> class JSArrayBuffer;
</span><span class="lines">@@ -129,7 +130,7 @@
</span><span class="cx"> inline void unpin();
</span><span class="cx"> inline void pinAndLock();
</span><span class="cx">
</span><del>- JS_EXPORT_PRIVATE bool transferTo(ArrayBufferContents&);
</del><ins>+ JS_EXPORT_PRIVATE bool transferTo(VM&, ArrayBufferContents&);
</ins><span class="cx"> bool isNeutered() { return !m_contents.m_data; }
</span><span class="cx">
</span><span class="cx"> static ptrdiff_t offsetOfData() { return OBJECT_OFFSETOF(ArrayBuffer, m_contents) + OBJECT_OFFSETOF(ArrayBufferContents, m_data); }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArrayConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ArrayConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ArrayConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ArrayConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx">
</span><span class="cx"> void ArrayConstructor::finishCreation(VM& vm, JSGlobalObject* globalObject, ArrayPrototype* arrayPrototype, GetterSetter* speciesSymbol)
</span><span class="cx"> {
</span><del>- Base::finishCreation(vm, arrayPrototype->classInfo()->className);
</del><ins>+ Base::finishCreation(vm, arrayPrototype->classInfo(vm)->className);
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, arrayPrototype, DontEnum | DontDelete | ReadOnly);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(1), ReadOnly | DontEnum | DontDelete);
</span><span class="cx"> putDirectNonIndexAccessor(vm, vm.propertyNames->speciesSymbol, speciesSymbol, Accessor | ReadOnly | DontEnum);
</span><span class="lines">@@ -152,13 +152,14 @@
</span><span class="cx"> // https://tc39.github.io/ecma262/#sec-isarray
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL arrayConstructorPrivateFuncIsArraySlow(ExecState* exec)
</span><span class="cx"> {
</span><del>- ASSERT(jsDynamicCast<ProxyObject*>(exec->argument(0)));
</del><ins>+ ASSERT(jsDynamicCast<ProxyObject*>(exec->vm(), exec->argument(0)));
</ins><span class="cx"> return JSValue::encode(jsBoolean(isArraySlowInline(exec, jsCast<ProxyObject*>(exec->uncheckedArgument(0)))));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL arrayConstructorPrivateFuncIsArrayConstructor(ExecState* exec)
</span><span class="cx"> {
</span><del>- return JSValue::encode(jsBoolean(jsDynamicCast<ArrayConstructor*>(exec->uncheckedArgument(0))));
</del><ins>+ VM& vm = exec->vm();
+ return JSValue::encode(jsBoolean(jsDynamicCast<ArrayConstructor*>(vm, exec->uncheckedArgument(0))));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArrayConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ArrayConstructor.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ArrayConstructor.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ArrayConstructor.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -82,12 +82,4 @@
</span><span class="cx"> return isArraySlow(exec, jsCast<ProxyObject*>(argument));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline bool isArrayConstructor(JSValue argumentValue)
-{
- if (!argumentValue.isObject())
- return false;
-
- return jsCast<JSObject*>(argumentValue)->classInfo() == ArrayConstructor::info();
-}
-
</del><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArrayIteratorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ArrayIteratorPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ArrayIteratorPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ArrayIteratorPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> void ArrayIteratorPrototype::finishCreation(VM& vm, JSGlobalObject*)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Array Iterator"), DontEnum | ReadOnly);
</span><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArrayPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx"> void ArrayPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toString, globalObject->arrayProtoToStringFunction(), DontEnum);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeAsyncFunctionPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/AsyncFunctionPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/AsyncFunctionPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/AsyncFunctionPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> void AsyncFunctionPrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "AsyncFunction"), DontEnum | ReadOnly);
</span><span class="cx"> vm.prototypeMap.addPrototype(this);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeAtomicsObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/AtomicsObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/AtomicsObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/AtomicsObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> void AtomicsObject::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> #define PUT_DIRECT_NATIVE_FUNC(lowerName, upperName, count) \
</span><span class="cx"> putDirectNativeFunctionWithoutTransition(vm, globalObject, Identifier::fromString(&vm, #lowerName), count, atomicsFunc ## upperName, Atomics ## upperName ## Intrinsic, DontEnum);
</span><span class="lines">@@ -287,7 +287,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSInt32Array* typedArray = jsDynamicCast<JSInt32Array*>(exec->argument(0));
</del><ins>+ JSInt32Array* typedArray = jsDynamicCast<JSInt32Array*>(vm, exec->argument(0));
</ins><span class="cx"> if (!typedArray) {
</span><span class="cx"> throwTypeError(exec, scope, ASCIILiteral("Typed array for wait/wake must be an Int32Array."));
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -357,7 +357,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSInt32Array* typedArray = jsDynamicCast<JSInt32Array*>(exec->argument(0));
</del><ins>+ JSInt32Array* typedArray = jsDynamicCast<JSInt32Array*>(vm, exec->argument(0));
</ins><span class="cx"> if (!typedArray) {
</span><span class="cx"> throwTypeError(exec, scope, ASCIILiteral("Typed array for wait/wake must be an Int32Array."));
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeBooleanObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/BooleanObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/BooleanObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/BooleanObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> void BooleanObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeBooleanObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/BooleanObject.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/BooleanObject.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/BooleanObject.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx">
</span><span class="cx"> inline BooleanObject* asBooleanObject(JSValue value)
</span><span class="cx"> {
</span><del>- ASSERT(asObject(value)->inherits(BooleanObject::info()));
</del><ins>+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), BooleanObject::info()));
</ins><span class="cx"> return static_cast<BooleanObject*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeBooleanPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/BooleanPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx"> setInternalValue(vm, jsBoolean(false));
</span><span class="cx">
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // ------------------------------ Functions ---------------------------
</span><span class="lines">@@ -67,33 +67,34 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL booleanProtoFuncToString(ExecState* exec)
</span><span class="cx"> {
</span><del>- VM* vm = &exec->vm();
- auto scope = DECLARE_THROW_SCOPE(*vm);
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><span class="cx"> if (thisValue == jsBoolean(false))
</span><del>- return JSValue::encode(vm->smallStrings.falseString());
</del><ins>+ return JSValue::encode(vm.smallStrings.falseString());
</ins><span class="cx">
</span><span class="cx"> if (thisValue == jsBoolean(true))
</span><del>- return JSValue::encode(vm->smallStrings.trueString());
</del><ins>+ return JSValue::encode(vm.smallStrings.trueString());
</ins><span class="cx">
</span><del>- if (!thisValue.inherits(BooleanObject::info()))
</del><ins>+ if (!thisValue.inherits(vm, BooleanObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> if (asBooleanObject(thisValue)->internalValue() == jsBoolean(false))
</span><del>- return JSValue::encode(vm->smallStrings.falseString());
</del><ins>+ return JSValue::encode(vm.smallStrings.falseString());
</ins><span class="cx">
</span><span class="cx"> ASSERT(asBooleanObject(thisValue)->internalValue() == jsBoolean(true));
</span><del>- return JSValue::encode(vm->smallStrings.trueString());
</del><ins>+ return JSValue::encode(vm.smallStrings.trueString());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL booleanProtoFuncValueOf(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><span class="cx"> if (thisValue.isBoolean())
</span><span class="cx"> return JSValue::encode(thisValue);
</span><span class="cx">
</span><del>- if (!thisValue.inherits(BooleanObject::info()))
</del><ins>+ if (!thisValue.inherits(vm, BooleanObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> return JSValue::encode(asBooleanObject(thisValue)->internalValue());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeConsoleObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ConsoleObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ConsoleObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ConsoleObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> void ConsoleObject::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> // For legacy reasons, console properties are enumerable, writable, deleteable,
</span><span class="cx"> // and all have a length of 0. This may change if Console is standardized.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeDateConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -154,7 +154,7 @@
</span><span class="cx"> if (numArgs == 0) // new Date() ECMA 15.9.3.3
</span><span class="cx"> value = NORMAL_OR_DETERMINISTIC_FUNCTION(jsCurrentTime(), deterministicCurrentTime(globalObject));
</span><span class="cx"> else if (numArgs == 1) {
</span><del>- if (args.at(0).inherits(DateInstance::info()))
</del><ins>+ if (args.at(0).inherits(vm, DateInstance::info()))
</ins><span class="cx"> value = asDateInstance(args.at(0))->internalNumber();
</span><span class="cx"> else {
</span><span class="cx"> JSValue primitive = args.at(0).toPrimitive(exec);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeDateInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/DateInstance.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/DateInstance.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/DateInstance.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> void DateInstance::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> setInternalValue(vm, jsNaN());
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -49,7 +49,7 @@
</span><span class="cx"> void DateInstance::finishCreation(VM& vm, double time)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> setInternalValue(vm, jsNumber(timeClip(time)));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeDateInstanceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/DateInstance.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/DateInstance.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/DateInstance.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx">
</span><span class="cx"> inline DateInstance* asDateInstance(JSValue value)
</span><span class="cx"> {
</span><del>- ASSERT(asObject(value)->inherits(DateInstance::info()));
</del><ins>+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), DateInstance::info()));
</ins><span class="cx"> return static_cast<DateInstance*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeDatePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -320,9 +320,10 @@
</span><span class="cx">
</span><span class="cx"> static EncodedJSValue formateDateInstance(ExecState* exec, DateTimeFormat format, bool asUTCVariant)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -488,7 +489,7 @@
</span><span class="cx"> void DatePrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> Identifier toUTCStringName = Identifier::fromString(&vm, ASCIILiteral("toUTCString"));
</span><span class="cx"> JSFunction* toUTCStringFunction = JSFunction::create(vm, globalObject, 0, toUTCStringName.string(), dateProtoFuncToUTCString);
</span><span class="lines">@@ -523,9 +524,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncToISOString(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -570,9 +572,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncToLocaleString(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -581,9 +584,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncToLocaleDateString(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -592,9 +596,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncToLocaleTimeString(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -626,9 +631,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetTime(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> return JSValue::encode(asDateInstance(thisValue)->internalValue());
</span><span class="lines">@@ -636,9 +642,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetFullYear(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -651,9 +658,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetUTCFullYear(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -666,9 +674,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetMonth(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -681,9 +690,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetUTCMonth(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -696,9 +706,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetDate(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -711,9 +722,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetUTCDate(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -726,9 +738,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetDay(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -741,9 +754,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetUTCDay(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -756,9 +770,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetHours(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -771,9 +786,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetUTCHours(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -786,9 +802,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetMinutes(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -801,9 +818,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetUTCMinutes(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -816,9 +834,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetSeconds(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -831,9 +850,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetUTCSeconds(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -846,9 +866,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetMilliSeconds(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -863,9 +884,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetUTCMilliseconds(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -880,9 +902,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetTimezoneOffset(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -895,9 +918,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncSetTime(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="lines">@@ -904,21 +928,21 @@
</span><span class="cx">
</span><span class="cx"> double milli = timeClip(exec->argument(0).toNumber(exec));
</span><span class="cx"> JSValue result = jsNumber(milli);
</span><del>- thisDateObj->setInternalValue(exec->vm(), result);
</del><ins>+ thisDateObj->setInternalValue(vm, result);
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static EncodedJSValue setNewValueFromTimeArgs(ExecState* exec, int numArgsToUse, WTF::TimeType inputTimeType)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="cx"> double milli = thisDateObj->internalNumber();
</span><del>- VM& vm = exec->vm();
-
</del><ins>+
</ins><span class="cx"> if (!exec->argumentCount() || std::isnan(milli)) {
</span><span class="cx"> JSValue result = jsNaN();
</span><span class="cx"> thisDateObj->setInternalValue(vm, result);
</span><span class="lines">@@ -950,19 +974,19 @@
</span><span class="cx">
</span><span class="cx"> static EncodedJSValue setNewValueFromDateArgs(ExecState* exec, int numArgsToUse, WTF::TimeType inputTimeType)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="cx"> if (!exec->argumentCount()) {
</span><span class="cx"> JSValue result = jsNaN();
</span><del>- thisDateObj->setInternalValue(exec->vm(), result);
</del><ins>+ thisDateObj->setInternalValue(vm, result);
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- VM& vm = exec->vm();
</del><span class="cx"> double milli = thisDateObj->internalNumber();
</span><span class="cx"> double ms = 0;
</span><span class="cx">
</span><span class="lines">@@ -1063,12 +1087,12 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncSetYear(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><del>- VM& vm = exec->vm();
</del><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span><span class="cx"> if (!exec->argumentCount()) {
</span><span class="cx"> JSValue result = jsNaN();
</span><span class="lines">@@ -1107,9 +1131,10 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL dateProtoFuncGetYear(ExecState* exec)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(exec->vm());
</del><ins>+ VM& vm = exec->vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(DateInstance::info()))
</del><ins>+ if (!thisValue.inherits(vm, DateInstance::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> DateInstance* thisDateObj = asDateInstance(thisValue);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeErrorInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -147,7 +147,7 @@
</span><span class="cx"> void ErrorInstance::finishCreation(ExecState* exec, VM& vm, const String& message, bool useCurrentFrame)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> if (!message.isNull())
</span><span class="cx"> putDirect(vm, vm.propertyNames->message, jsString(&vm, message), DontEnum);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeErrorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -57,7 +57,7 @@
</span><span class="cx"> void ErrorPrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirect(vm, vm.propertyNames->name, jsNontrivialString(&vm, String(ASCIILiteral("Error"))), DontEnum);
</span><span class="cx"> putDirect(vm, vm.propertyNames->message, jsEmptyString(&vm), DontEnum);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExceptionHelperscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -59,12 +59,12 @@
</span><span class="cx"> return TerminatedExecutionError::create(*vm);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool isTerminatedExecutionException(Exception* exception)
</del><ins>+bool isTerminatedExecutionException(VM& vm, Exception* exception)
</ins><span class="cx"> {
</span><span class="cx"> if (!exception->value().isObject())
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- return exception->value().inherits(TerminatedExecutionError::info());
</del><ins>+ return exception->value().inherits(vm, TerminatedExecutionError::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSObject* createStackOverflowError(ExecState* exec)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExceptionHelpersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ExceptionHelpers.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> String defaultSourceAppender(const String&, const String&, RuntimeType, ErrorInstance::SourceTextWhereErrorOccurred);
</span><span class="cx">
</span><span class="cx"> JSObject* createTerminatedExecutionException(VM*);
</span><del>-JS_EXPORT_PRIVATE bool isTerminatedExecutionException(Exception*);
</del><ins>+JS_EXPORT_PRIVATE bool isTerminatedExecutionException(VM&, Exception*);
</ins><span class="cx"> JS_EXPORT_PRIVATE JSObject* createError(ExecState*, JSValue, const String&, ErrorInstance::SourceAppender);
</span><span class="cx"> JS_EXPORT_PRIVATE JSObject* createStackOverflowError(ExecState*);
</span><span class="cx"> JSObject* createUndefinedVariableError(ExecState*, const Identifier&);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExecutableBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ExecutableBase.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ExecutableBase.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ExecutableBase.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -59,8 +59,10 @@
</span><span class="cx"> #endif
</span><span class="cx"> m_numParametersForCall = NUM_PARAMETERS_NOT_COMPILED;
</span><span class="cx"> m_numParametersForConstruct = NUM_PARAMETERS_NOT_COMPILED;
</span><ins>+ VM& vm = *this->vm();
</ins><span class="cx">
</span><del>- if (structure()->classInfo() == FunctionExecutable::info()) {
</del><ins>+
+ if (structure(vm)->classInfo() == FunctionExecutable::info()) {
</ins><span class="cx"> FunctionExecutable* executable = static_cast<FunctionExecutable*>(this);
</span><span class="cx"> executable->m_codeBlockForCall.clear();
</span><span class="cx"> executable->m_codeBlockForConstruct.clear();
</span><span class="lines">@@ -67,7 +69,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (structure()->classInfo() == EvalExecutable::info()) {
</del><ins>+ if (structure(vm)->classInfo() == EvalExecutable::info()) {
</ins><span class="cx"> EvalExecutable* executable = static_cast<EvalExecutable*>(this);
</span><span class="cx"> executable->m_evalCodeBlock.clear();
</span><span class="cx"> executable->m_unlinkedEvalCodeBlock.clear();
</span><span class="lines">@@ -74,7 +76,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (structure()->classInfo() == ProgramExecutable::info()) {
</del><ins>+ if (structure(vm)->classInfo() == ProgramExecutable::info()) {
</ins><span class="cx"> ProgramExecutable* executable = static_cast<ProgramExecutable*>(this);
</span><span class="cx"> executable->m_programCodeBlock.clear();
</span><span class="cx"> executable->m_unlinkedProgramCodeBlock.clear();
</span><span class="lines">@@ -81,7 +83,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (structure()->classInfo() == ModuleProgramExecutable::info()) {
</del><ins>+ if (structure(vm)->classInfo() == ModuleProgramExecutable::info()) {
</ins><span class="cx"> ModuleProgramExecutable* executable = static_cast<ModuleProgramExecutable*>(this);
</span><span class="cx"> executable->m_moduleProgramCodeBlock.clear();
</span><span class="cx"> executable->m_unlinkedModuleProgramCodeBlock.clear();
</span><span class="lines">@@ -89,20 +91,21 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- ASSERT(structure()->classInfo() == NativeExecutable::info());
</del><ins>+ ASSERT(structure(vm)->classInfo() == NativeExecutable::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void ExecutableBase::dump(PrintStream& out) const
</span><span class="cx"> {
</span><ins>+ VM& vm = *this->vm();
</ins><span class="cx"> ExecutableBase* realThis = const_cast<ExecutableBase*>(this);
</span><del>-
- if (classInfo() == NativeExecutable::info()) {
</del><ins>+
+ if (classInfo(vm) == NativeExecutable::info()) {
</ins><span class="cx"> NativeExecutable* native = jsCast<NativeExecutable*>(realThis);
</span><span class="cx"> out.print("NativeExecutable:", RawPointer(bitwise_cast<void*>(native->function())), "/", RawPointer(bitwise_cast<void*>(native->constructor())));
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (classInfo() == EvalExecutable::info()) {
</del><ins>+ if (classInfo(vm) == EvalExecutable::info()) {
</ins><span class="cx"> EvalExecutable* eval = jsCast<EvalExecutable*>(realThis);
</span><span class="cx"> if (CodeBlock* codeBlock = eval->codeBlock())
</span><span class="cx"> out.print(*codeBlock);
</span><span class="lines">@@ -111,7 +114,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (classInfo() == ProgramExecutable::info()) {
</del><ins>+ if (classInfo(vm) == ProgramExecutable::info()) {
</ins><span class="cx"> ProgramExecutable* eval = jsCast<ProgramExecutable*>(realThis);
</span><span class="cx"> if (CodeBlock* codeBlock = eval->codeBlock())
</span><span class="cx"> out.print(*codeBlock);
</span><span class="lines">@@ -120,7 +123,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (classInfo() == ModuleProgramExecutable::info()) {
</del><ins>+ if (classInfo(vm) == ModuleProgramExecutable::info()) {
</ins><span class="cx"> ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(realThis);
</span><span class="cx"> if (CodeBlock* codeBlock = executable->codeBlock())
</span><span class="cx"> out.print(*codeBlock);
</span><span class="lines">@@ -143,7 +146,7 @@
</span><span class="cx">
</span><span class="cx"> CodeBlockHash ExecutableBase::hashFor(CodeSpecializationKind kind) const
</span><span class="cx"> {
</span><del>- if (this->classInfo() == NativeExecutable::info())
</del><ins>+ if (this->classInfo(*this->vm()) == NativeExecutable::info())
</ins><span class="cx"> return jsCast<const NativeExecutable*>(this)->hashFor(kind);
</span><span class="cx">
</span><span class="cx"> return jsCast<const ScriptExecutable*>(this)->hashFor(kind);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/FunctionPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -93,7 +93,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (thisValue.inherits(JSFunction::info())) {
</del><ins>+ if (thisValue.inherits(vm, JSFunction::info())) {
</ins><span class="cx"> JSFunction* function = jsCast<JSFunction*>(thisValue);
</span><span class="cx"> if (function->isHostOrBuiltinFunction()) {
</span><span class="cx"> scope.release();
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx"> return JSValue::encode(jsString(exec, classSource.toStringWithoutCopying()));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (thisValue.inherits(JSAsyncFunction::info())) {
</del><ins>+ if (thisValue.inherits(vm, JSAsyncFunction::info())) {
</ins><span class="cx"> String functionHeader = executable->isArrowFunction() ? "async " : "async function ";
</span><span class="cx">
</span><span class="cx"> StringView source = executable->source().provider()->getRange(
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx"> return JSValue::encode(jsMakeNontrivialString(exec, functionHeader, function->name(vm), source));
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (thisValue.inherits(InternalFunction::info())) {
</del><ins>+ if (thisValue.inherits(vm, InternalFunction::info())) {
</ins><span class="cx"> InternalFunction* function = asInternalFunction(thisValue);
</span><span class="cx"> scope.release();
</span><span class="cx"> return JSValue::encode(jsMakeNontrivialString(exec, "function ", function->name(), "() {\n [native code]\n}"));
</span><span class="lines">@@ -135,7 +135,7 @@
</span><span class="cx"> if (object->inlineTypeFlags() & TypeOfShouldCallGetCallData) {
</span><span class="cx"> CallData callData;
</span><span class="cx"> if (object->methodTable(vm)->getCallData(object, callData) != CallType::None) {
</span><del>- if (auto* classInfo = object->classInfo()) {
</del><ins>+ if (auto* classInfo = object->classInfo(vm)) {
</ins><span class="cx"> scope.release();
</span><span class="cx"> return JSValue::encode(jsMakeNontrivialString(exec, "function ", classInfo->className, "() {\n [native code]\n}"));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorFunctionPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorFunctionPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> void GeneratorFunctionPrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), ReadOnly | DontEnum);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "GeneratorFunction"), DontEnum | ReadOnly);
</span><span class="cx"> vm.prototypeMap.addPrototype(this);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGeneratorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/GeneratorPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> void GeneratorPrototype::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Generator"), DontEnum | ReadOnly);
</span><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGetterSetterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/GetterSetter.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GetterSetter.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/GetterSetter.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -73,8 +73,8 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- bool isGetterNull() const { return !!jsDynamicCast<NullGetterFunction*>(m_getter.get()); }
- bool isSetterNull() const { return !!jsDynamicCast<NullSetterFunction*>(m_setter.get()); }
</del><ins>+ bool isGetterNull() const { return !!jsDynamicCast<NullGetterFunction*>(*m_getter.get()->vm(), m_getter.get()); }
+ bool isSetterNull() const { return !!jsDynamicCast<NullSetterFunction*>(*m_setter.get()->vm(), m_setter.get()); }
</ins><span class="cx">
</span><span class="cx"> // Set the getter. It's only valid to call this if you've never set the getter on this
</span><span class="cx"> // object.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeInspectorInstrumentationObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/InspectorInstrumentationObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/InspectorInstrumentationObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/InspectorInstrumentationObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> void InspectorInstrumentationObject::finishCreation(VM& vm, JSGlobalObject*)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->isEnabled, jsBoolean(false));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeInternalFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/InternalFunction.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/InternalFunction.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/InternalFunction.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> void InternalFunction::finishCreation(VM& vm, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> ASSERT(methodTable()->getCallData != InternalFunction::info()->methodTable.getCallData);
</span><span class="cx"> JSString* nameString = jsString(&vm, name);
</span><span class="cx"> m_originalName.set(vm, this, nameString);
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx">
</span><span class="cx"> if (newTarget && newTarget != exec->jsCallee()) {
</span><span class="cx"> // newTarget may be an InternalFunction if we were called from Reflect.construct.
</span><del>- JSFunction* targetFunction = jsDynamicCast<JSFunction*>(newTarget);
</del><ins>+ JSFunction* targetFunction = jsDynamicCast<JSFunction*>(vm, newTarget);
</ins><span class="cx">
</span><span class="cx"> if (LIKELY(targetFunction)) {
</span><span class="cx"> Structure* structure = targetFunction->rareData(vm)->internalFunctionAllocationStructure();
</span><span class="lines">@@ -114,12 +114,12 @@
</span><span class="cx"> // Note, Reflect.construct might cause the profile to churn but we don't care.
</span><span class="cx"> JSValue prototypeValue = newTarget.get(exec, exec->propertyNames().prototype);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, nullptr);
</span><del>- if (JSObject* prototype = jsDynamicCast<JSObject*>(prototypeValue))
</del><ins>+ if (JSObject* prototype = jsDynamicCast<JSObject*>(vm, prototypeValue))
</ins><span class="cx"> return targetFunction->rareData(vm)->createInternalFunctionAllocationStructureFromBase(vm, prototype, baseClass);
</span><span class="cx"> } else {
</span><span class="cx"> JSValue prototypeValue = newTarget.get(exec, exec->propertyNames().prototype);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, nullptr);
</span><del>- if (JSObject* prototype = jsDynamicCast<JSObject*>(prototypeValue)) {
</del><ins>+ if (JSObject* prototype = jsDynamicCast<JSObject*>(vm, prototypeValue)) {
</ins><span class="cx"> // This only happens if someone Reflect.constructs our builtin constructor with another builtin constructor as the new.target.
</span><span class="cx"> // Thus, we don't care about the cost of looking up the structure from our hash table every time.
</span><span class="cx"> return vm.prototypeMap.emptyStructureForPrototypeFromBaseStructure(prototype, baseClass);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeInternalFunctionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/InternalFunction.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/InternalFunction.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/InternalFunction.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx">
</span><span class="cx"> inline InternalFunction* asInternalFunction(JSValue value)
</span><span class="cx"> {
</span><del>- ASSERT(asObject(value)->inherits(InternalFunction::info()));
</del><ins>+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), InternalFunction::info()));
</ins><span class="cx"> return static_cast<InternalFunction*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlCollatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlCollator.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlCollator.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IntlCollator.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx"> void IntlCollator::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void IntlCollator::destroy(JSCell* cell)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlCollatorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">
</span><span class="cx"> // 10.3.3 Intl.Collator.prototype.compare (ECMA-402 2.0)
</span><span class="cx"> // 1. Let collator be this Collator object.
</span><del>- IntlCollator* collator = jsDynamicCast<IntlCollator*>(state->thisValue());
</del><ins>+ IntlCollator* collator = jsDynamicCast<IntlCollator*>(vm, state->thisValue());
</ins><span class="cx"> if (!collator)
</span><span class="cx"> return JSValue::encode(throwTypeError(state, scope, ASCIILiteral("Intl.Collator.prototype.compare called on value that's not an object initialized as a Collator")));
</span><span class="cx">
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> // 10.3.5 Intl.Collator.prototype.resolvedOptions() (ECMA-402 2.0)
</span><del>- IntlCollator* collator = jsDynamicCast<IntlCollator*>(state->thisValue());
</del><ins>+ IntlCollator* collator = jsDynamicCast<IntlCollator*>(vm, state->thisValue());
</ins><span class="cx"> if (!collator)
</span><span class="cx"> return JSValue::encode(throwTypeError(state, scope, ASCIILiteral("Intl.Collator.prototype.resolvedOptions called on value that's not an object initialized as a Collator")));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> void IntlDateTimeFormat::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void IntlDateTimeFormat::destroy(JSCell* cell)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx">
</span><span class="cx"> // 12.3.3 Intl.DateTimeFormat.prototype.format (ECMA-402 2.0)
</span><span class="cx"> // 1. Let dtf be this DateTimeFormat object.
</span><del>- IntlDateTimeFormat* dtf = jsDynamicCast<IntlDateTimeFormat*>(state->thisValue());
</del><ins>+ IntlDateTimeFormat* dtf = jsDynamicCast<IntlDateTimeFormat*>(vm, state->thisValue());
</ins><span class="cx">
</span><span class="cx"> // FIXME: Workaround to provide compatibility with ECMA-402 1.0 call/apply patterns.
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=153679
</span><span class="lines">@@ -123,7 +123,7 @@
</span><span class="cx"> if (!dtf) {
</span><span class="cx"> JSValue value = state->thisValue().get(state, vm.propertyNames->builtinNames().intlSubstituteValuePrivateName());
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><del>- dtf = jsDynamicCast<IntlDateTimeFormat*>(value);
</del><ins>+ dtf = jsDynamicCast<IntlDateTimeFormat*>(vm, value);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // 2. ReturnIfAbrupt(dtf).
</span><span class="lines">@@ -153,7 +153,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> // 12.3.5 Intl.DateTimeFormat.prototype.resolvedOptions() (ECMA-402 2.0)
</span><del>- IntlDateTimeFormat* dateTimeFormat = jsDynamicCast<IntlDateTimeFormat*>(state->thisValue());
</del><ins>+ IntlDateTimeFormat* dateTimeFormat = jsDynamicCast<IntlDateTimeFormat*>(vm, state->thisValue());
</ins><span class="cx">
</span><span class="cx"> // FIXME: Workaround to provide compatibility with ECMA-402 1.0 call/apply patterns.
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=153679
</span><span class="lines">@@ -160,7 +160,7 @@
</span><span class="cx"> if (!dateTimeFormat) {
</span><span class="cx"> JSValue value = state->thisValue().get(state, vm.propertyNames->builtinNames().intlSubstituteValuePrivateName());
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><del>- dateTimeFormat = jsDynamicCast<IntlDateTimeFormat*>(value);
</del><ins>+ dateTimeFormat = jsDynamicCast<IntlDateTimeFormat*>(vm, value);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (!dateTimeFormat)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlNumberFormatcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -69,7 +69,7 @@
</span><span class="cx"> void IntlNumberFormat::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void IntlNumberFormat::destroy(JSCell* cell)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlNumberFormatPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx">
</span><span class="cx"> // 11.3.3 Intl.NumberFormat.prototype.format (ECMA-402 2.0)
</span><span class="cx"> // 1. Let nf be this NumberFormat object.
</span><del>- IntlNumberFormat* nf = jsDynamicCast<IntlNumberFormat*>(state->thisValue());
</del><ins>+ IntlNumberFormat* nf = jsDynamicCast<IntlNumberFormat*>(vm, state->thisValue());
</ins><span class="cx">
</span><span class="cx"> // FIXME: Workaround to provide compatibility with ECMA-402 1.0 call/apply patterns.
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=153679
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> if (!nf) {
</span><span class="cx"> JSValue value = state->thisValue().get(state, vm.propertyNames->builtinNames().intlSubstituteValuePrivateName());
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><del>- nf = jsDynamicCast<IntlNumberFormat*>(value);
</del><ins>+ nf = jsDynamicCast<IntlNumberFormat*>(vm, value);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (!nf)
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> // 11.3.5 Intl.NumberFormat.prototype.resolvedOptions() (ECMA-402 2.0)
</span><del>- IntlNumberFormat* numberFormat = jsDynamicCast<IntlNumberFormat*>(state->thisValue());
</del><ins>+ IntlNumberFormat* numberFormat = jsDynamicCast<IntlNumberFormat*>(vm, state->thisValue());
</ins><span class="cx">
</span><span class="cx"> // FIXME: Workaround to provide compatibility with ECMA-402 1.0 call/apply patterns.
</span><span class="cx"> // https://bugs.webkit.org/show_bug.cgi?id=153679
</span><span class="lines">@@ -148,7 +148,7 @@
</span><span class="cx"> if (!numberFormat) {
</span><span class="cx"> JSValue value = state->thisValue().get(state, vm.propertyNames->builtinNames().intlSubstituteValuePrivateName());
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><del>- numberFormat = jsDynamicCast<IntlNumberFormat*>(value);
</del><ins>+ numberFormat = jsDynamicCast<IntlNumberFormat*>(vm, value);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (!numberFormat)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IntlObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx"> void IntlObject::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> // Set up Collator.
</span><span class="cx"> IntlCollatorPrototype* collatorPrototype = IntlCollatorPrototype::create(vm, globalObject, IntlCollatorPrototype::createStructure(vm, globalObject, globalObject->objectPrototype()));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlObjectInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlObjectInlines.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlObjectInlines.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IntlObjectInlines.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> VM& vm = state.vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- if (!jsDynamicCast<IntlInstance*>(thisValue)) {
</del><ins>+ if (!jsDynamicCast<IntlInstance*>(vm, thisValue)) {
</ins><span class="cx"> JSValue prototype = callee->getDirect(vm, vm.propertyNames->prototype);
</span><span class="cx"> bool hasInstance = JSObject::defaultHasInstance(&state, thisValue, prototype);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, JSValue());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIteratorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IteratorPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IteratorPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/IteratorPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> void IteratorPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSFunction* iteratorPrototypeFunction = JSFunction::createBuiltinFunction(vm, iteratorPrototypeSymbolIteratorGetterCodeGenerator(vm), globalObject, "[Symbol.iterator]");
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArray.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArray.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSArray.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -274,7 +274,7 @@
</span><span class="cx">
</span><span class="cx"> inline JSArray* asArray(JSCell* cell)
</span><span class="cx"> {
</span><del>- ASSERT(cell->inherits(JSArray::info()));
</del><ins>+ ASSERT(cell->inherits(*cell->vm(), JSArray::info()));
</ins><span class="cx"> return jsCast<JSArray*>(cell);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -285,7 +285,7 @@
</span><span class="cx">
</span><span class="cx"> inline bool isJSArray(JSCell* cell)
</span><span class="cx"> {
</span><del>- ASSERT((cell->classInfo() == JSArray::info()) == (cell->type() == ArrayType));
</del><ins>+ ASSERT((cell->classInfo(*cell->vm()) == JSArray::info()) == (cell->type() == ArrayType));
</ins><span class="cx"> return cell->type() == ArrayType;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBuffer.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBuffer.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBuffer.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> DECLARE_EXPORT_INFO;
</span><span class="cx">
</span><span class="cx"> // This is the default DOM unwrapping. It calls toUnsharedArrayBuffer().
</span><del>- static ArrayBuffer* toWrapped(JSValue);
</del><ins>+ static ArrayBuffer* toWrapped(VM&, JSValue);
</ins><span class="cx">
</span><span class="cx"> protected:
</span><span class="cx">
</span><span class="lines">@@ -69,25 +69,25 @@
</span><span class="cx"> ArrayBuffer* m_impl;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-inline ArrayBuffer* toPossiblySharedArrayBuffer(JSValue value)
</del><ins>+inline ArrayBuffer* toPossiblySharedArrayBuffer(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><del>- JSArrayBuffer* wrapper = jsDynamicCast<JSArrayBuffer*>(value);
</del><ins>+ JSArrayBuffer* wrapper = jsDynamicCast<JSArrayBuffer*>(vm, value);
</ins><span class="cx"> if (!wrapper)
</span><span class="cx"> return nullptr;
</span><span class="cx"> return wrapper->impl();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline ArrayBuffer* toUnsharedArrayBuffer(JSValue value)
</del><ins>+inline ArrayBuffer* toUnsharedArrayBuffer(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><del>- ArrayBuffer* result = toPossiblySharedArrayBuffer(value);
</del><ins>+ ArrayBuffer* result = toPossiblySharedArrayBuffer(vm, value);
</ins><span class="cx"> if (!result || result->isShared())
</span><span class="cx"> return nullptr;
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline ArrayBuffer* JSArrayBuffer::toWrapped(JSValue value)
</del><ins>+inline ArrayBuffer* JSArrayBuffer::toWrapped(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><del>- return toUnsharedArrayBuffer(value);
</del><ins>+ return toUnsharedArrayBuffer(vm, value);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> // ECMA 24.1.3.1
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL arrayBufferFuncIsView(ExecState* exec)
</span><span class="cx"> {
</span><del>- return JSValue::encode(jsBoolean(jsDynamicCast<JSArrayBufferView*>(exec->argument(0))));
</del><ins>+ return JSValue::encode(jsBoolean(jsDynamicCast<JSArrayBufferView*>(exec->vm(), exec->argument(0))));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx">
</span><span class="cx"> JSFunction* callee = jsCast<JSFunction*>(exec->jsCallee());
</span><span class="cx">
</span><del>- JSArrayBuffer* thisObject = jsDynamicCast<JSArrayBuffer*>(exec->thisValue());
</del><ins>+ JSArrayBuffer* thisObject = jsDynamicCast<JSArrayBuffer*>(vm, exec->thisValue());
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("Receiver of slice must be an array buffer."));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBufferView.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx"> static ptrdiff_t offsetOfLength() { return OBJECT_OFFSETOF(JSArrayBufferView, m_length); }
</span><span class="cx"> static ptrdiff_t offsetOfMode() { return OBJECT_OFFSETOF(JSArrayBufferView, m_mode); }
</span><span class="cx">
</span><del>- static RefPtr<ArrayBufferView> toWrapped(JSValue);
</del><ins>+ static RefPtr<ArrayBufferView> toWrapped(VM&, JSValue);
</ins><span class="cx">
</span><span class="cx"> private:
</span><span class="cx"> static void finalize(JSCell*);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferViewInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBufferViewInlines.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -89,9 +89,9 @@
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline RefPtr<ArrayBufferView> JSArrayBufferView::toWrapped(JSValue value)
</del><ins>+inline RefPtr<ArrayBufferView> JSArrayBufferView::toWrapped(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><del>- if (JSArrayBufferView* view = jsDynamicCast<JSArrayBufferView*>(value)) {
</del><ins>+ if (JSArrayBufferView* view = jsDynamicCast<JSArrayBufferView*>(vm, value)) {
</ins><span class="cx"> if (!view->isShared())
</span><span class="cx"> return view->unsharedImpl();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSBoundFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL isBoundFunction(ExecState* exec)
</span><span class="cx"> {
</span><del>- return JSValue::encode(JSValue(static_cast<bool>(jsDynamicCast<JSBoundFunction*>(exec->uncheckedArgument(0)))));
</del><ins>+ return JSValue::encode(JSValue(static_cast<bool>(jsDynamicCast<JSBoundFunction*>(exec->vm(), exec->uncheckedArgument(0)))));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL hasInstanceBoundFunction(ExecState* exec)
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue prototype = targetFunction->getPrototype(vm, exec);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, nullptr);
</span><del>- JSFunction* targetJSFunction = jsDynamicCast<JSFunction*>(targetFunction);
</del><ins>+ JSFunction* targetJSFunction = jsDynamicCast<JSFunction*>(vm, targetFunction);
</ins><span class="cx">
</span><span class="cx"> // We only cache the structure of the bound function if the bindee is a JSFunction since there
</span><span class="cx"> // isn't any good place to put the structure on Internal Functions.
</span><span class="lines">@@ -195,7 +195,7 @@
</span><span class="cx"> {
</span><span class="cx"> String name; // We lazily create our 'name' string property.
</span><span class="cx"> Base::finishCreation(vm, executable, length, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> putDirectNonIndexAccessor(vm, vm.propertyNames->arguments, globalObject()->throwTypeErrorArgumentsCalleeAndCallerGetterSetter(), DontDelete | DontEnum | Accessor);
</span><span class="cx"> putDirectNonIndexAccessor(vm, vm.propertyNames->caller, globalObject()->throwTypeErrorArgumentsCalleeAndCallerGetterSetter(), DontDelete | DontEnum | Accessor);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCJSValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -298,7 +298,7 @@
</span><span class="cx"> else if (isDouble())
</span><span class="cx"> out.printf("%lf", asDouble());
</span><span class="cx"> else if (isCell()) {
</span><del>- if (asCell()->inherits(JSString::info())) {
</del><ins>+ if (asCell()->inherits(*asCell()->vm(), JSString::info())) {
</ins><span class="cx"> JSString* string = asString(asCell());
</span><span class="cx"> const StringImpl* impl = string->tryGetValueImpl();
</span><span class="cx"> if (impl)
</span><span class="lines">@@ -305,7 +305,7 @@
</span><span class="cx"> out.print("\"", impl, "\"");
</span><span class="cx"> else
</span><span class="cx"> out.print("(unresolved string)");
</span><del>- } else if (asCell()->inherits(Structure::info())) {
</del><ins>+ } else if (asCell()->inherits(*asCell()->vm(), Structure::info())) {
</ins><span class="cx"> out.print("Structure[ ", asCell()->structure()->classInfo()->className);
</span><span class="cx"> #if USE(JSVALUE64)
</span><span class="cx"> out.print(" ID: ", asCell()->structureID());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCJSValueh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCJSValue.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCJSValue.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSCJSValue.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -228,8 +228,8 @@
</span><span class="cx"> bool isGetterSetter() const;
</span><span class="cx"> bool isCustomGetterSetter() const;
</span><span class="cx"> bool isObject() const;
</span><del>- bool inherits(const ClassInfo*) const;
- const ClassInfo* classInfoOrNull() const;
</del><ins>+ bool inherits(VM&, const ClassInfo*) const;
+ const ClassInfo* classInfoOrNull(VM&) const;
</ins><span class="cx">
</span><span class="cx"> // Extracting the value.
</span><span class="cx"> bool getString(ExecState*, WTF::String&) const;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCJSValueInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -767,14 +767,14 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // this method is here to be after the inline declaration of JSCell::inherits
</span><del>-inline bool JSValue::inherits(const ClassInfo* classInfo) const
</del><ins>+inline bool JSValue::inherits(VM& vm, const ClassInfo* classInfo) const
</ins><span class="cx"> {
</span><del>- return isCell() && asCell()->inherits(classInfo);
</del><ins>+ return isCell() && asCell()->inherits(vm, classInfo);
</ins><span class="cx"> }
</span><span class="cx">
</span><del>-inline const ClassInfo* JSValue::classInfoOrNull() const
</del><ins>+inline const ClassInfo* JSValue::classInfoOrNull(VM& vm) const
</ins><span class="cx"> {
</span><del>- return isCell() ? asCell()->classInfo() : nullptr;
</del><ins>+ return isCell() ? asCell()->classInfo(vm) : nullptr;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline JSValue JSValue::toThis(ExecState* exec, ECMAMode ecmaMode) const
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCalleecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCallee.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCallee.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSCallee.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> void JSCallee::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSCallee::visitChildren(JSCell* cell, SlotVisitor& visitor)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCell.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCell.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSCell.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx">
</span><span class="cx"> void JSCell::dumpToStream(const JSCell* cell, PrintStream& out)
</span><span class="cx"> {
</span><del>- out.printf("<%p, %s>", cell, cell->className());
</del><ins>+ out.printf("<%p, %s>", cell, cell->className(*cell->vm()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> size_t JSCell::estimatedSizeInBytes() const
</span><span class="lines">@@ -225,9 +225,9 @@
</span><span class="cx"> return String();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-const char* JSCell::className() const
</del><ins>+const char* JSCell::className(VM& vm) const
</ins><span class="cx"> {
</span><del>- return classInfo()->className;
</del><ins>+ return classInfo(vm)->className;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSCell::getPropertyNames(JSObject*, ExecState*, PropertyNameArray&, EnumerationMode)
</span><span class="lines">@@ -295,11 +295,12 @@
</span><span class="cx"> RELEASE_ASSERT_NOT_REACHED();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool JSCell::isAnyWasmCallee() const
</del><ins>+bool JSCell::isAnyWasmCallee(VM& vm) const
</ins><span class="cx"> {
</span><span class="cx"> #if ENABLE(WEBASSEMBLY)
</span><del>- return inherits(JSWebAssemblyCallee::info()) || inherits(WebAssemblyToJSCallee::info());
</del><ins>+ return inherits(vm, JSWebAssemblyCallee::info()) || inherits(vm, WebAssemblyToJSCallee::info());
</ins><span class="cx"> #else
</span><ins>+ UNUSED_PARAM(vm);
</ins><span class="cx"> return false;
</span><span class="cx"> #endif
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCellh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCell.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCell.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSCell.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -101,11 +101,11 @@
</span><span class="cx"> bool isString() const;
</span><span class="cx"> bool isSymbol() const;
</span><span class="cx"> bool isObject() const;
</span><del>- bool isAnyWasmCallee() const;
</del><ins>+ bool isAnyWasmCallee(VM&) const;
</ins><span class="cx"> bool isGetterSetter() const;
</span><span class="cx"> bool isCustomGetterSetter() const;
</span><span class="cx"> bool isProxy() const;
</span><del>- bool inherits(const ClassInfo*) const;
</del><ins>+ bool inherits(VM&, const ClassInfo*) const;
</ins><span class="cx"> bool isAPIValueWrapper() const;
</span><span class="cx">
</span><span class="cx"> // Each cell has a built-in lock. Currently it's simply available for use if you need it. It's
</span><span class="lines">@@ -128,7 +128,7 @@
</span><span class="cx">
</span><span class="cx"> TypeInfo::InlineTypeFlags inlineTypeFlags() const { return m_flags; }
</span><span class="cx">
</span><del>- const char* className() const;
</del><ins>+ const char* className(VM&) const;
</ins><span class="cx">
</span><span class="cx"> // Extracting the value.
</span><span class="cx"> JS_EXPORT_PRIVATE bool getString(ExecState*, String&) const;
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx"> JS_EXPORT_PRIVATE static void heapSnapshot(JSCell*, HeapSnapshotBuilder&);
</span><span class="cx">
</span><span class="cx"> // Object operations, with the toObject operation included.
</span><del>- const ClassInfo* classInfo() const;
</del><ins>+ const ClassInfo* classInfo(VM&) const;
</ins><span class="cx"> const MethodTable* methodTable() const;
</span><span class="cx"> const MethodTable* methodTable(VM&) const;
</span><span class="cx"> static bool put(JSCell*, ExecState*, PropertyName, JSValue, PutPropertySlot&);
</span><span class="lines">@@ -270,7 +270,7 @@
</span><span class="cx"> template<typename To, typename From>
</span><span class="cx"> inline To jsCast(From* from)
</span><span class="cx"> {
</span><del>- ASSERT_WITH_SECURITY_IMPLICATION(!from || from->JSCell::inherits(std::remove_pointer<To>::type::info()));
</del><ins>+ ASSERT_WITH_SECURITY_IMPLICATION(!from || from->JSCell::inherits(*from->JSCell::vm(), std::remove_pointer<To>::type::info()));
</ins><span class="cx"> return static_cast<To>(from);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -277,22 +277,22 @@
</span><span class="cx"> template<typename To>
</span><span class="cx"> inline To jsCast(JSValue from)
</span><span class="cx"> {
</span><del>- ASSERT_WITH_SECURITY_IMPLICATION(from.isCell() && from.asCell()->JSCell::inherits(std::remove_pointer<To>::type::info()));
</del><ins>+ ASSERT_WITH_SECURITY_IMPLICATION(from.isCell() && from.asCell()->JSCell::inherits(*from.asCell()->vm(), std::remove_pointer<To>::type::info()));
</ins><span class="cx"> return static_cast<To>(from.asCell());
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename To, typename From>
</span><del>-inline To jsDynamicCast(From* from)
</del><ins>+inline To jsDynamicCast(VM& vm, From* from)
</ins><span class="cx"> {
</span><del>- if (LIKELY(from->inherits(std::remove_pointer<To>::type::info())))
</del><ins>+ if (LIKELY(from->JSCell::inherits(vm, std::remove_pointer<To>::type::info())))
</ins><span class="cx"> return static_cast<To>(from);
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename To>
</span><del>-inline To jsDynamicCast(JSValue from)
</del><ins>+inline To jsDynamicCast(VM& vm, JSValue from)
</ins><span class="cx"> {
</span><del>- if (LIKELY(from.isCell() && from.asCell()->inherits(std::remove_pointer<To>::type::info())))
</del><ins>+ if (LIKELY(from.isCell() && from.asCell()->inherits(vm, std::remove_pointer<To>::type::info())))
</ins><span class="cx"> return static_cast<To>(from.asCell());
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCellInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCellInlines.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCellInlines.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSCellInlines.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -240,11 +240,7 @@
</span><span class="cx"> inline const MethodTable* JSCell::methodTable() const
</span><span class="cx"> {
</span><span class="cx"> VM& vm = *Heap::heap(this)->vm();
</span><del>- Structure* structure = this->structure(vm);
- if (Structure* rootStructure = structure->structure(vm))
- RELEASE_ASSERT(rootStructure == rootStructure->structure(vm));
-
- return &structure->classInfo()->methodTable;
</del><ins>+ return methodTable(vm);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline const MethodTable* JSCell::methodTable(VM& vm) const
</span><span class="lines">@@ -251,14 +247,14 @@
</span><span class="cx"> {
</span><span class="cx"> Structure* structure = this->structure(vm);
</span><span class="cx"> if (Structure* rootStructure = structure->structure(vm))
</span><del>- RELEASE_ASSERT(rootStructure == rootStructure->structure(vm));
</del><ins>+ ASSERT_UNUSED(rootStructure, rootStructure == rootStructure->structure(vm));
</ins><span class="cx">
</span><span class="cx"> return &structure->classInfo()->methodTable;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline bool JSCell::inherits(const ClassInfo* info) const
</del><ins>+inline bool JSCell::inherits(VM& vm, const ClassInfo* info) const
</ins><span class="cx"> {
</span><del>- return classInfo()->isSubClassOf(info);
</del><ins>+ return classInfo(vm)->isSubClassOf(info);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ALWAYS_INLINE JSValue JSCell::fastGetOwnProperty(VM& vm, Structure& structure, PropertyName name)
</span><span class="lines">@@ -277,21 +273,15 @@
</span><span class="cx"> && !structure.typeInfo().overridesGetOwnPropertySlot();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-ALWAYS_INLINE const ClassInfo* JSCell::classInfo() const
</del><ins>+ALWAYS_INLINE const ClassInfo* JSCell::classInfo(VM& vm) const
</ins><span class="cx"> {
</span><del>- VM* vm;
- if (isLargeAllocation())
- vm = largeAllocation().vm();
- else
- vm = markedBlock().vm();
-
</del><span class="cx"> // What we really want to assert here is that we're not currently destructing this object (which makes its classInfo
</span><span class="cx"> // invalid). If mutatorState() == MutatorState::Running, then we're not currently sweeping, and therefore cannot be
</span><span class="cx"> // destructing the object. The GC thread or JIT threads, unlike the mutator thread, are able to access classInfo
</span><span class="cx"> // independent of whether the mutator thread is sweeping or not. Hence, we also check for ownerThread() !=
</span><span class="cx"> // std::this_thread::get_id() to allow the GC thread or JIT threads to pass this assertion.
</span><del>- ASSERT(vm->heap.mutatorState() == MutatorState::Running || vm->apiLock().ownerThread() != std::this_thread::get_id());
- return structure(*vm)->classInfo();
</del><ins>+ ASSERT(vm.heap.mutatorState() == MutatorState::Running || vm.apiLock().ownerThread() != std::this_thread::get_id());
+ return structure(vm)->classInfo();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> inline bool JSCell::toBoolean(ExecState* exec) const
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCustomGetterSetterFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSCustomGetterSetterFunction.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx"> void JSCustomGetterSetterFunction::finishCreation(VM& vm, NativeExecutable* executable, CustomGetterSetter* getterSetter, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, executable, isSetter(), name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> ASSERT(getterSetter);
</span><span class="cx"> m_getterSetter.set(vm, this, getterSetter);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSDataViewPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSDataView* dataView = jsDynamicCast<JSDataView*>(exec->thisValue());
</del><ins>+ JSDataView* dataView = jsDynamicCast<JSDataView*>(vm, exec->thisValue());
</ins><span class="cx"> if (!dataView)
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("Receiver of DataView method must be a DataView"));
</span><span class="cx">
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSDataView* dataView = jsDynamicCast<JSDataView*>(exec->thisValue());
</del><ins>+ JSDataView* dataView = jsDynamicCast<JSDataView*>(vm, exec->thisValue());
</ins><span class="cx"> if (!dataView)
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("Receiver of DataView method must be a DataView"));
</span><span class="cx">
</span><span class="lines">@@ -218,7 +218,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSDataView* view = jsDynamicCast<JSDataView*>(exec->thisValue());
</del><ins>+ JSDataView* view = jsDynamicCast<JSDataView*>(vm, exec->thisValue());
</ins><span class="cx"> if (!view)
</span><span class="cx"> return throwVMTypeError(exec, scope, "DataView.prototype.buffer expects |this| to be a DataView object");
</span><span class="cx">
</span><span class="lines">@@ -230,7 +230,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSDataView* view = jsDynamicCast<JSDataView*>(exec->thisValue());
</del><ins>+ JSDataView* view = jsDynamicCast<JSDataView*>(vm, exec->thisValue());
</ins><span class="cx"> if (!view)
</span><span class="cx"> return throwVMTypeError(exec, scope, "DataView.prototype.buffer expects |this| to be a DataView object");
</span><span class="cx">
</span><span class="lines">@@ -242,7 +242,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSDataView* view = jsDynamicCast<JSDataView*>(exec->thisValue());
</del><ins>+ JSDataView* view = jsDynamicCast<JSDataView*>(vm, exec->thisValue());
</ins><span class="cx"> if (!view)
</span><span class="cx"> return throwVMTypeError(exec, scope, "DataView.prototype.buffer expects |this| to be a DataView object");
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunction.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -92,7 +92,7 @@
</span><span class="cx"> void JSFunction::finishCreation(VM& vm, NativeExecutable* executable, int length, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> m_executable.set(vm, this, executable);
</span><span class="cx"> // Some NativeExecutable functions, like JSBoundFunction, decide to lazily allocate their name string.
</span><span class="cx"> if (!name.isNull())
</span><span class="lines">@@ -133,7 +133,7 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(!m_rareData);
</span><span class="cx"> VM& vm = exec->vm();
</span><del>- JSObject* prototype = jsDynamicCast<JSObject*>(get(exec, vm.propertyNames->prototype));
</del><ins>+ JSObject* prototype = jsDynamicCast<JSObject*>(vm, get(exec, vm.propertyNames->prototype));
</ins><span class="cx"> if (!prototype)
</span><span class="cx"> prototype = globalObject(vm)->objectPrototype();
</span><span class="cx"> FunctionRareData* rareData = FunctionRareData::create(vm);
</span><span class="lines">@@ -151,7 +151,7 @@
</span><span class="cx"> {
</span><span class="cx"> ASSERT(!!m_rareData);
</span><span class="cx"> VM& vm = exec->vm();
</span><del>- JSObject* prototype = jsDynamicCast<JSObject*>(get(exec, vm.propertyNames->prototype));
</del><ins>+ JSObject* prototype = jsDynamicCast<JSObject*>(vm, get(exec, vm.propertyNames->prototype));
</ins><span class="cx"> if (!prototype)
</span><span class="cx"> prototype = globalObject(vm)->objectPrototype();
</span><span class="cx"> m_rareData->initializeObjectAllocationProfile(vm, prototype, inlineCapacity);
</span><span class="lines">@@ -226,7 +226,7 @@
</span><span class="cx"> class RetrieveArgumentsFunctor {
</span><span class="cx"> public:
</span><span class="cx"> RetrieveArgumentsFunctor(JSFunction* functionObj)
</span><del>- : m_targetCallee(jsDynamicCast<JSObject*>(functionObj))
</del><ins>+ : m_targetCallee(functionObj)
</ins><span class="cx"> , m_result(jsNull())
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="lines">@@ -266,7 +266,7 @@
</span><span class="cx"> class RetrieveCallerFunctionFunctor {
</span><span class="cx"> public:
</span><span class="cx"> RetrieveCallerFunctionFunctor(JSFunction* functionObj)
</span><del>- : m_targetCallee(jsDynamicCast<JSObject*>(functionObj))
</del><ins>+ : m_targetCallee(functionObj)
</ins><span class="cx"> , m_hasFoundFrame(false)
</span><span class="cx"> , m_hasSkippedToCallerFrame(false)
</span><span class="cx"> , m_result(jsNull())
</span><span class="lines">@@ -279,7 +279,7 @@
</span><span class="cx"> {
</span><span class="cx"> JSCell* callee = visitor->callee();
</span><span class="cx">
</span><del>- if (callee && callee->inherits(JSBoundFunction::info()))
</del><ins>+ if (callee && callee->inherits(*callee->vm(), JSBoundFunction::info()))
</ins><span class="cx"> return StackVisitor::Continue;
</span><span class="cx">
</span><span class="cx"> if (!m_hasFoundFrame && (callee != m_targetCallee))
</span><span class="lines">@@ -320,9 +320,9 @@
</span><span class="cx"> JSValue caller = retrieveCallerFunction(exec, thisObj);
</span><span class="cx">
</span><span class="cx"> // See ES5.1 15.3.5.4 - Function.caller may not be used to retrieve a strict caller.
</span><del>- if (!caller.isObject() || !asObject(caller)->inherits(JSFunction::info())) {
</del><ins>+ if (!caller.isObject() || !asObject(caller)->inherits(vm, JSFunction::info())) {
</ins><span class="cx"> // It isn't a JSFunction, but if it is a JSCallee from a program or call eval, return null.
</span><del>- if (jsDynamicCast<JSCallee*>(caller))
</del><ins>+ if (jsDynamicCast<JSCallee*>(vm, caller))
</ins><span class="cx"> return JSValue::encode(jsNull());
</span><span class="cx"> return JSValue::encode(caller);
</span><span class="cx"> }
</span><span class="lines">@@ -388,8 +388,8 @@
</span><span class="cx"> void JSFunction::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode)
</span><span class="cx"> {
</span><span class="cx"> JSFunction* thisObject = jsCast<JSFunction*>(object);
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> if (!thisObject->isHostOrBuiltinFunction() && mode.includeDontEnumProperties()) {
</span><del>- VM& vm = exec->vm();
</del><span class="cx"> // Make sure prototype has been reified.
</span><span class="cx"> PropertySlot slot(thisObject, PropertySlot::InternalMethodType::VMInquiry);
</span><span class="cx"> thisObject->methodTable(vm)->getOwnPropertySlot(thisObject, exec, vm.propertyNames->prototype, slot);
</span><span class="lines">@@ -402,7 +402,7 @@
</span><span class="cx"> propertyNames.add(vm.propertyNames->length);
</span><span class="cx"> if (!thisObject->hasReifiedName())
</span><span class="cx"> propertyNames.add(vm.propertyNames->name);
</span><del>- } else if (thisObject->isHostOrBuiltinFunction() && mode.includeDontEnumProperties() && thisObject->inherits(JSBoundFunction::info()) && !thisObject->hasReifiedName())
</del><ins>+ } else if (thisObject->isHostOrBuiltinFunction() && mode.includeDontEnumProperties() && thisObject->inherits(vm, JSBoundFunction::info()) && !thisObject->hasReifiedName())
</ins><span class="cx"> propertyNames.add(exec->vm().propertyNames->name);
</span><span class="cx"> Base::getOwnNonIndexPropertyNames(thisObject, exec, propertyNames, mode);
</span><span class="cx"> }
</span><span class="lines">@@ -576,9 +576,9 @@
</span><span class="cx">
</span><span class="cx"> String getCalculatedDisplayName(VM& vm, JSObject* object)
</span><span class="cx"> {
</span><del>- if (JSFunction* function = jsDynamicCast<JSFunction*>(object))
</del><ins>+ if (JSFunction* function = jsDynamicCast<JSFunction*>(vm, object))
</ins><span class="cx"> return function->calculatedDisplayName(vm);
</span><del>- if (InternalFunction* function = jsDynamicCast<InternalFunction*>(object))
</del><ins>+ if (InternalFunction* function = jsDynamicCast<InternalFunction*>(vm, object))
</ins><span class="cx"> return function->calculatedDisplayName(vm);
</span><span class="cx"> return emptyString();
</span><span class="cx"> }
</span><span class="lines">@@ -688,7 +688,7 @@
</span><span class="cx"> if (hasReifiedName())
</span><span class="cx"> return LazyPropertyType::IsLazyProperty;
</span><span class="cx">
</span><del>- if (this->inherits(JSBoundFunction::info())) {
</del><ins>+ if (this->inherits(vm, JSBoundFunction::info())) {
</ins><span class="cx"> FunctionRareData* rareData = this->rareData(vm);
</span><span class="cx"> String name = makeString("bound ", static_cast<NativeExecutable*>(m_executable.get())->name());
</span><span class="cx"> unsigned initialAttributes = DontEnum | ReadOnly;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -267,7 +267,7 @@
</span><span class="cx"> static const TypedArrayType TypedArrayStorageType = Adaptor::typeValue;
</span><span class="cx">
</span><span class="cx"> // This is the default DOM unwrapping. It calls toUnsharedNativeTypedView().
</span><del>- static RefPtr<typename Adaptor::ViewType> toWrapped(JSValue);
</del><ins>+ static RefPtr<typename Adaptor::ViewType> toWrapped(VM&, JSValue);
</ins><span class="cx">
</span><span class="cx"> protected:
</span><span class="cx"> friend struct TypedArrayClassInfos;
</span><span class="lines">@@ -360,9 +360,9 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> template<typename Adaptor>
</span><del>-inline RefPtr<typename Adaptor::ViewType> toPossiblySharedNativeTypedView(JSValue value)
</del><ins>+inline RefPtr<typename Adaptor::ViewType> toPossiblySharedNativeTypedView(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><del>- typename Adaptor::JSViewType* wrapper = jsDynamicCast<typename Adaptor::JSViewType*>(value);
</del><ins>+ typename Adaptor::JSViewType* wrapper = jsDynamicCast<typename Adaptor::JSViewType*>(vm, value);
</ins><span class="cx"> if (!wrapper)
</span><span class="cx"> return nullptr;
</span><span class="cx"> return wrapper->possiblySharedTypedImpl();
</span><span class="lines">@@ -369,9 +369,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename Adaptor>
</span><del>-inline RefPtr<typename Adaptor::ViewType> toUnsharedNativeTypedView(JSValue value)
</del><ins>+inline RefPtr<typename Adaptor::ViewType> toUnsharedNativeTypedView(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><del>- RefPtr<typename Adaptor::ViewType> result = toPossiblySharedNativeTypedView<Adaptor>(value);
</del><ins>+ RefPtr<typename Adaptor::ViewType> result = toPossiblySharedNativeTypedView<Adaptor>(vm, value);
</ins><span class="cx"> if (!result || result->isShared())
</span><span class="cx"> return nullptr;
</span><span class="cx"> return result;
</span><span class="lines">@@ -378,9 +378,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename Adaptor>
</span><del>-RefPtr<typename Adaptor::ViewType> JSGenericTypedArrayView<Adaptor>::toWrapped(JSValue value)
</del><ins>+RefPtr<typename Adaptor::ViewType> JSGenericTypedArrayView<Adaptor>::toWrapped(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><del>- return JSC::toUnsharedNativeTypedView<Adaptor>(value);
</del><ins>+ return JSC::toUnsharedNativeTypedView<Adaptor>(vm, value);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace JSC
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewConstructorInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -122,7 +122,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue firstValue = JSValue::decode(firstArgument);
</span><span class="cx">
</span><del>- if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(firstValue)) {
</del><ins>+ if (JSArrayBuffer* jsBuffer = jsDynamicCast<JSArrayBuffer*>(vm, firstValue)) {
</ins><span class="cx"> RefPtr<ArrayBuffer> buffer = jsBuffer->impl();
</span><span class="cx"> unsigned length = 0;
</span><span class="cx">
</span><span class="lines">@@ -146,10 +146,10 @@
</span><span class="cx"> // - Another array. This creates a copy of the of that array.
</span><span class="cx"> // - An integer. This creates a new typed array of that length and zero-initializes it.
</span><span class="cx">
</span><del>- if (JSObject* object = jsDynamicCast<JSObject*>(firstValue)) {
</del><ins>+ if (JSObject* object = jsDynamicCast<JSObject*>(vm, firstValue)) {
</ins><span class="cx"> unsigned length;
</span><span class="cx">
</span><del>- if (isTypedView(object->classInfo()->typedArrayStorageType))
</del><ins>+ if (isTypedView(object->classInfo(vm)->typedArrayStorageType))
</ins><span class="cx"> length = jsCast<JSArrayBufferView*>(object)->length();
</span><span class="cx"> else {
</span><span class="cx"> // This getPropertySlot operation should not be observed by the Proxy.
</span><span class="lines">@@ -238,7 +238,7 @@
</span><span class="cx"> JSValue firstValue = exec->uncheckedArgument(0);
</span><span class="cx"> unsigned offset = 0;
</span><span class="cx"> std::optional<unsigned> length = std::nullopt;
</span><del>- if (jsDynamicCast<JSArrayBuffer*>(firstValue) && argCount > 1) {
</del><ins>+ if (jsDynamicCast<JSArrayBuffer*>(vm, firstValue) && argCount > 1) {
</ins><span class="cx"> offset = exec->uncheckedArgument(1).toIndex(exec, "byteOffset");
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewInlines.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -245,7 +245,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- const ClassInfo* ci = object->classInfo();
</del><ins>+ const ClassInfo* ci = object->classInfo(vm);
</ins><span class="cx"> if (ci->typedArrayStorageType == Adaptor::typeValue) {
</span><span class="cx"> // The super fast case: we can just memcpy since we're the same type.
</span><span class="cx"> JSGenericTypedArrayView* other = jsCast<JSGenericTypedArrayView*>(object);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewPrototypeFunctionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> JSValue result = construct(exec, species, args, "species is not a constructor");
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, nullptr);
</span><span class="cx">
</span><del>- if (JSArrayBufferView* view = jsDynamicCast<JSArrayBufferView*>(result)) {
</del><ins>+ if (JSArrayBufferView* view = jsDynamicCast<JSArrayBufferView*>(vm, result)) {
</ins><span class="cx"> if (!view->isNeutered())
</span><span class="cx"> return view;
</span><span class="cx">
</span><span class="lines">@@ -123,12 +123,12 @@
</span><span class="cx"> if (UNLIKELY(thisObject->isNeutered()))
</span><span class="cx"> return throwVMTypeError(exec, scope, typedArrayBufferHasBeenDetachedErrorMessage);
</span><span class="cx">
</span><del>- JSObject* sourceArray = jsDynamicCast<JSObject*>(exec->uncheckedArgument(0));
</del><ins>+ JSObject* sourceArray = jsDynamicCast<JSObject*>(vm, exec->uncheckedArgument(0));
</ins><span class="cx"> if (UNLIKELY(!sourceArray))
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("First argument should be an object"));
</span><span class="cx">
</span><span class="cx"> unsigned length;
</span><del>- if (isTypedView(sourceArray->classInfo()->typedArrayStorageType)) {
</del><ins>+ if (isTypedView(sourceArray->classInfo(vm)->typedArrayStorageType)) {
</ins><span class="cx"> JSArrayBufferView* sourceView = jsCast<JSArrayBufferView*>(sourceArray);
</span><span class="cx"> if (UNLIKELY(sourceView->isNeutered()))
</span><span class="cx"> return throwVMTypeError(exec, scope, typedArrayBufferHasBeenDetachedErrorMessage);
</span><span class="lines">@@ -468,7 +468,7 @@
</span><span class="cx">
</span><span class="cx"> // The species constructor may return an array with any arbitrary length.
</span><span class="cx"> length = std::min(length, result->length());
</span><del>- switch (result->classInfo()->typedArrayStorageType) {
</del><ins>+ switch (result->classInfo(vm)->typedArrayStorageType) {
</ins><span class="cx"> case TypeInt8:
</span><span class="cx"> scope.release();
</span><span class="cx"> jsCast<JSInt8Array*>(result)->set(exec, 0, thisObject, begin, length, CopyType::LeftToRight);
</span><span class="lines">@@ -569,7 +569,7 @@
</span><span class="cx"> JSObject* result = construct(exec, species, args, "species is not a constructor");
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><span class="cx">
</span><del>- if (jsDynamicCast<JSArrayBufferView*>(result))
</del><ins>+ if (jsDynamicCast<JSArrayBufferView*>(vm, result))
</ins><span class="cx"> return JSValue::encode(result);
</span><span class="cx">
</span><span class="cx"> throwTypeError(exec, scope, ASCIILiteral("species constructor did not return a TypedArray View"));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewPrototypeInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeInlines.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx">
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> putDirect(vm, vm.propertyNames->BYTES_PER_ELEMENT, jsNumber(ViewClass::elementSize), DontEnum | ReadOnly | DontDelete);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -302,7 +302,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL getTemplateObject(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- ASSERT(thisValue.inherits(JSTemplateRegistryKey::info()));
</del><ins>+ ASSERT(thisValue.inherits(exec->vm(), JSTemplateRegistryKey::info()));
</ins><span class="cx"> return JSValue::encode(exec->lexicalGlobalObject()->templateRegistry().getTemplateObject(exec, jsCast<JSTemplateRegistryKey*>(thisValue)));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -314,7 +314,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue job = exec->argument(0);
</span><span class="cx"> JSValue arguments = exec->argument(1);
</span><del>- ASSERT(arguments.inherits(JSArray::info()));
</del><ins>+ ASSERT(arguments.inherits(vm, JSArray::info()));
</ins><span class="cx">
</span><span class="cx"> globalObject->queueMicrotask(createJSJob(vm, job, jsCast<JSArray*>(arguments)));
</span><span class="cx">
</span><span class="lines">@@ -924,7 +924,7 @@
</span><span class="cx"> RELEASE_ASSERT(slot.isCacheableValue());
</span><span class="cx"> JSValue functionValue = slot.getValue(exec, ident);
</span><span class="cx"> ASSERT(!catchScope.exception());
</span><del>- ASSERT(jsDynamicCast<JSFunction*>(functionValue));
</del><ins>+ ASSERT(jsDynamicCast<JSFunction*>(vm, functionValue));
</ins><span class="cx">
</span><span class="cx"> ObjectPropertyCondition condition = generateConditionForSelfEquivalence(m_vm, nullptr, base, ident.impl());
</span><span class="cx"> RELEASE_ASSERT(condition.requiredValue() == functionValue);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -890,7 +890,7 @@
</span><span class="cx"> if (thisValue.isUndefinedOrNull())
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral(ObjectProtoCalledOnNullOrUndefinedError));
</span><span class="cx">
</span><del>- JSObject* thisObject = jsDynamicCast<JSObject*>(thisValue);
</del><ins>+ JSObject* thisObject = jsDynamicCast<JSObject*>(vm, thisValue);
</ins><span class="cx"> if (!thisObject) {
</span><span class="cx"> JSObject* prototype = exec->thisValue().synthesizePrototype(exec);
</span><span class="cx"> if (UNLIKELY(!prototype))
</span><span class="lines">@@ -912,7 +912,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue value = exec->argument(0);
</span><span class="cx">
</span><del>- JSObject* thisObject = jsDynamicCast<JSObject*>(thisValue);
</del><ins>+ JSObject* thisObject = jsDynamicCast<JSObject*>(vm, thisValue);
</ins><span class="cx">
</span><span class="cx"> // Setting __proto__ of a primitive should have no effect.
</span><span class="cx"> if (!thisObject)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSInternalPromiseDeferredcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSInternalPromiseDeferred.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSInternalPromiseDeferred.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSInternalPromiseDeferred.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> JSValue deferred = newPromiseCapability(exec, globalObject, globalObject->internalPromiseConstructor());
</span><span class="cx">
</span><span class="cx"> JSValue promise = deferred.get(exec, vm.propertyNames->builtinNames().promisePrivateName());
</span><del>- ASSERT(promise.inherits(JSInternalPromise::info()));
</del><ins>+ ASSERT(promise.inherits(vm, JSInternalPromise::info()));
</ins><span class="cx"> JSValue resolve = deferred.get(exec, vm.propertyNames->builtinNames().resolvePrivateName());
</span><span class="cx"> JSValue reject = deferred.get(exec, vm.propertyNames->builtinNames().rejectPrivateName());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSLexicalEnvironmenth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSLexicalEnvironment.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -81,7 +81,7 @@
</span><span class="cx">
</span><span class="cx"> inline JSLexicalEnvironment* asActivation(JSValue value)
</span><span class="cx"> {
</span><del>- ASSERT(asObject(value)->inherits(JSLexicalEnvironment::info()));
</del><ins>+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), JSLexicalEnvironment::info()));
</ins><span class="cx"> return jsCast<JSLexicalEnvironment*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSModuleLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSModuleLoader.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSModuleLoader.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSModuleLoader.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> auto scope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> JSMap* map = JSMap::create(exec, vm, globalObject->mapStructure());
</span><span class="cx"> RELEASE_ASSERT(!scope.exception());
</span><span class="cx"> putDirect(vm, Identifier::fromString(&vm, "registry"), map);
</span><span class="lines">@@ -232,7 +232,7 @@
</span><span class="cx"> if (globalObject->globalObjectMethodTable()->moduleLoaderEvaluate)
</span><span class="cx"> return globalObject->globalObjectMethodTable()->moduleLoaderEvaluate(globalObject, exec, this, key, moduleRecordValue, scriptFetcher);
</span><span class="cx">
</span><del>- JSModuleRecord* moduleRecord = jsDynamicCast<JSModuleRecord*>(moduleRecordValue);
</del><ins>+ JSModuleRecord* moduleRecord = jsDynamicCast<JSModuleRecord*>(exec->vm(), moduleRecordValue);
</ins><span class="cx"> if (!moduleRecord)
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> return moduleRecord->evaluate(exec);
</span><span class="lines">@@ -243,7 +243,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- auto* moduleRecord = jsDynamicCast<AbstractModuleRecord*>(moduleRecordValue);
</del><ins>+ auto* moduleRecord = jsDynamicCast<AbstractModuleRecord*>(vm, moduleRecordValue);
</ins><span class="cx"> if (!moduleRecord) {
</span><span class="cx"> throwTypeError(exec, scope);
</span><span class="cx"> return nullptr;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSModuleNamespaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSModuleNamespaceObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> // http://www.ecma-international.org/ecma-262/6.0/#sec-module-namespace-exotic-objects
</span><span class="cx"> // Quoted from the spec:
</span><span class="lines">@@ -213,7 +213,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSModuleNamespaceObject* object = jsDynamicCast<JSModuleNamespaceObject*>(exec->thisValue());
</del><ins>+ JSModuleNamespaceObject* object = jsDynamicCast<JSModuleNamespaceObject*>(vm, exec->thisValue());
</ins><span class="cx"> if (!object)
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("|this| should be a module namespace object"));
</span><span class="cx"> return JSValue::encode(JSPropertyNameIterator::create(exec, exec->lexicalGlobalObject()->propertyNameIteratorStructure(), object));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSModuleRecordcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx"> void JSModuleRecord::finishCreation(ExecState* exec, VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(exec, vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSModuleRecord::visitChildren(JSCell* cell, SlotVisitor& visitor)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSNativeStdFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSNativeStdFunction.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSNativeStdFunction.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSNativeStdFunction.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -53,7 +53,7 @@
</span><span class="cx"> void JSNativeStdFunction::finishCreation(VM& vm, NativeExecutable* executable, int length, const String& name, NativeStdFunctionCell* functionCell)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, executable, length, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> m_functionCell.set(vm, this, functionCell);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSONObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSONObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSONObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSONObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> void JSONObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "JSON"), DontEnum | ReadOnly);
</span><span class="cx"> }
</span><span class="lines">@@ -141,14 +141,15 @@
</span><span class="cx">
</span><span class="cx"> static inline JSValue unwrapBoxedPrimitive(ExecState* exec, JSValue value)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> if (!value.isObject())
</span><span class="cx"> return value;
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- if (object->inherits(NumberObject::info()))
</del><ins>+ if (object->inherits(vm, NumberObject::info()))
</ins><span class="cx"> return jsNumber(object->toNumber(exec));
</span><del>- if (object->inherits(StringObject::info()))
</del><ins>+ if (object->inherits(vm, StringObject::info()))
</ins><span class="cx"> return object->toString(exec);
</span><del>- if (object->inherits(BooleanObject::info()))
</del><ins>+ if (object->inherits(vm, BooleanObject::info()))
</ins><span class="cx"> return object->toPrimitive(exec);
</span><span class="cx">
</span><span class="cx"> // Do not unwrap SymbolObject to Symbol. It is not performed in the spec.
</span><span class="lines">@@ -236,7 +237,7 @@
</span><span class="cx"> if (!m_replacer.isObject())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- if (m_replacer.asObject()->inherits(JSArray::info())) {
</del><ins>+ if (m_replacer.asObject()->inherits(vm, JSArray::info())) {
</ins><span class="cx"> m_usingArrayReplacer = true;
</span><span class="cx"> Handle<JSObject> array = m_replacer.asObject();
</span><span class="cx"> unsigned length = array->get(exec, vm.propertyNames->length).toUInt32(exec);
</span><span class="lines">@@ -248,7 +249,7 @@
</span><span class="cx"> break;
</span><span class="cx">
</span><span class="cx"> if (name.isObject()) {
</span><del>- if (!asObject(name)->inherits(NumberObject::info()) && !asObject(name)->inherits(StringObject::info()))
</del><ins>+ if (!asObject(name)->inherits(vm, NumberObject::info()) && !asObject(name)->inherits(vm, StringObject::info()))
</ins><span class="cx"> continue;
</span><span class="cx"> } else if (!name.isNumber() && !name.isString())
</span><span class="cx"> continue;
</span><span class="lines">@@ -642,7 +643,7 @@
</span><span class="cx"> arrayStartState:
</span><span class="cx"> case ArrayStartState: {
</span><span class="cx"> ASSERT(inValue.isObject());
</span><del>- ASSERT(isJSArray(asObject(inValue)) || asObject(inValue)->inherits(JSArray::info()));
</del><ins>+ ASSERT(isJSArray(asObject(inValue)) || asObject(inValue)->inherits(vm, JSArray::info()));
</ins><span class="cx"> if (objectStack.size() + arrayStack.size() > maximumFilterRecursion)
</span><span class="cx"> return throwStackOverflowError(m_exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -697,7 +698,7 @@
</span><span class="cx"> objectStartState:
</span><span class="cx"> case ObjectStartState: {
</span><span class="cx"> ASSERT(inValue.isObject());
</span><del>- ASSERT(!isJSArray(asObject(inValue)) && !asObject(inValue)->inherits(JSArray::info()));
</del><ins>+ ASSERT(!isJSArray(asObject(inValue)) && !asObject(inValue)->inherits(vm, JSArray::info()));
</ins><span class="cx"> if (objectStack.size() + arrayStack.size() > maximumFilterRecursion)
</span><span class="cx"> return throwStackOverflowError(m_exec, scope);
</span><span class="cx">
</span><span class="lines">@@ -758,7 +759,7 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> JSObject* object = asObject(inValue);
</span><del>- if (isJSArray(object) || object->inherits(JSArray::info()))
</del><ins>+ if (isJSArray(object) || object->inherits(vm, JSArray::info()))
</ins><span class="cx"> goto arrayStartState;
</span><span class="cx"> goto objectStartState;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -511,7 +511,7 @@
</span><span class="cx">
</span><span class="cx"> String JSObject::className(const JSObject* object)
</span><span class="cx"> {
</span><del>- const ClassInfo* info = object->classInfo();
</del><ins>+ const ClassInfo* info = object->classInfo(*object->vm());
</ins><span class="cx"> ASSERT(info);
</span><span class="cx"> return info->className;
</span><span class="cx"> }
</span><span class="lines">@@ -518,7 +518,7 @@
</span><span class="cx">
</span><span class="cx"> String JSObject::toStringName(const JSObject* object, ExecState*)
</span><span class="cx"> {
</span><del>- const ClassInfo* info = object->classInfo();
</del><ins>+ const ClassInfo* info = object->classInfo(*object->vm());
</ins><span class="cx"> ASSERT(info);
</span><span class="cx"> return info->methodTable.className(object);
</span><span class="cx"> }
</span><span class="lines">@@ -539,9 +539,9 @@
</span><span class="cx"> if (constructorValue.isCell()) {
</span><span class="cx"> if (JSCell* constructorCell = constructorValue.asCell()) {
</span><span class="cx"> if (JSObject* ctorObject = constructorCell->getObject()) {
</span><del>- if (JSFunction* constructorFunction = jsDynamicCast<JSFunction*>(ctorObject))
</del><ins>+ if (JSFunction* constructorFunction = jsDynamicCast<JSFunction*>(vm, ctorObject))
</ins><span class="cx"> prototypeFunctionName = constructorFunction->calculatedDisplayName(vm);
</span><del>- else if (InternalFunction* constructorFunction = jsDynamicCast<InternalFunction*>(ctorObject))
</del><ins>+ else if (InternalFunction* constructorFunction = jsDynamicCast<InternalFunction*>(vm, ctorObject))
</ins><span class="cx"> prototypeFunctionName = constructorFunction->calculatedDisplayName(vm);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -557,7 +557,7 @@
</span><span class="cx"> if (!tableClassName.isNull() && tableClassName != "Object")
</span><span class="cx"> return tableClassName;
</span><span class="cx">
</span><del>- String classInfoName = object->classInfo()->className;
</del><ins>+ String classInfoName = object->classInfo(vm)->className;
</ins><span class="cx"> if (!classInfoName.isNull())
</span><span class="cx"> return classInfoName;
</span><span class="cx">
</span><span class="lines">@@ -790,8 +790,8 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx"> if (!obj->staticPropertiesReified()) {
</span><del>- if (obj->classInfo()->hasStaticSetterOrReadonlyProperties()) {
- if (auto* entry = obj->findPropertyHashEntry(propertyName))
</del><ins>+ if (obj->classInfo(vm)->hasStaticSetterOrReadonlyProperties()) {
+ if (auto* entry = obj->findPropertyHashEntry(vm, propertyName))
</ins><span class="cx"> return putEntry(exec, entry, obj, this, propertyName, value, slot);
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -1426,7 +1426,7 @@
</span><span class="cx">
</span><span class="cx"> ContiguousJSValues JSObject::ensureInt32Slow(VM& vm)
</span><span class="cx"> {
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> if (structure(vm)->hijacksIndexingHeader())
</span><span class="cx"> return ContiguousJSValues();
</span><span class="lines">@@ -1453,7 +1453,7 @@
</span><span class="cx">
</span><span class="cx"> ContiguousDoubles JSObject::ensureDoubleSlow(VM& vm)
</span><span class="cx"> {
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> if (structure(vm)->hijacksIndexingHeader())
</span><span class="cx"> return ContiguousDoubles();
</span><span class="lines">@@ -1482,7 +1482,7 @@
</span><span class="cx">
</span><span class="cx"> ContiguousJSValues JSObject::ensureContiguousSlow(VM& vm)
</span><span class="cx"> {
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> if (structure(vm)->hijacksIndexingHeader())
</span><span class="cx"> return ContiguousJSValues();
</span><span class="lines">@@ -1513,7 +1513,7 @@
</span><span class="cx">
</span><span class="cx"> ArrayStorage* JSObject::ensureArrayStorageSlow(VM& vm)
</span><span class="cx"> {
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> if (structure(vm)->hijacksIndexingHeader())
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -1790,7 +1790,7 @@
</span><span class="cx"> unsigned attributes;
</span><span class="cx">
</span><span class="cx"> if (!thisObject->staticPropertiesReified()) {
</span><del>- if (auto* entry = thisObject->findPropertyHashEntry(propertyName)) {
</del><ins>+ if (auto* entry = thisObject->findPropertyHashEntry(vm, propertyName)) {
</ins><span class="cx"> // If the static table contains a non-configurable (DontDelete) property then we can return early;
</span><span class="cx"> // if there is a property in the storage array it too must be non-configurable (the language does
</span><span class="cx"> // not allow repacement of a non-configurable property with a configurable one).
</span><span class="lines">@@ -1979,7 +1979,7 @@
</span><span class="cx">
</span><span class="cx"> bool JSObject::getOwnStaticPropertySlot(VM& vm, PropertyName propertyName, PropertySlot& slot)
</span><span class="cx"> {
</span><del>- for (auto* info = classInfo(); info; info = info->parentClass) {
</del><ins>+ for (auto* info = classInfo(vm); info; info = info->parentClass) {
</ins><span class="cx"> if (auto* table = info->staticPropHashTable) {
</span><span class="cx"> if (getStaticPropertySlotFromTable(vm, *table, this, propertyName, slot))
</span><span class="cx"> return true;
</span><span class="lines">@@ -1988,9 +1988,9 @@
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-const HashTableValue* JSObject::findPropertyHashEntry(PropertyName propertyName) const
</del><ins>+const HashTableValue* JSObject::findPropertyHashEntry(VM& vm, PropertyName propertyName) const
</ins><span class="cx"> {
</span><del>- for (const ClassInfo* info = classInfo(); info; info = info->parentClass) {
</del><ins>+ for (const ClassInfo* info = classInfo(vm); info; info = info->parentClass) {
</ins><span class="cx"> if (const HashTable* propHashTable = info->staticPropHashTable) {
</span><span class="cx"> if (const HashTableValue* entry = propHashTable->entry(propertyName))
</span><span class="cx"> return entry;
</span><span class="lines">@@ -2175,13 +2175,13 @@
</span><span class="cx">
</span><span class="cx"> void JSObject::getOwnNonIndexPropertyNames(JSObject* object, ExecState* exec, PropertyNameArray& propertyNames, EnumerationMode mode)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> if (!object->staticPropertiesReified())
</span><del>- getClassPropertyNames(exec, object->classInfo(), propertyNames, mode);
</del><ins>+ getClassPropertyNames(exec, object->classInfo(vm), propertyNames, mode);
</ins><span class="cx">
</span><span class="cx"> if (!mode.includeJSObjectProperties())
</span><span class="cx"> return;
</span><span class="cx">
</span><del>- VM& vm = exec->vm();
</del><span class="cx"> object->structure(vm)->getPropertyNamesFromStructure(vm, propertyNames, mode);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -2265,7 +2265,7 @@
</span><span class="cx"> if (!structure(vm)->isDictionary())
</span><span class="cx"> setStructure(vm, Structure::toCacheableDictionaryTransition(vm, structure(vm)));
</span><span class="cx">
</span><del>- for (const ClassInfo* info = classInfo(); info; info = info->parentClass) {
</del><ins>+ for (const ClassInfo* info = classInfo(vm); info; info = info->parentClass) {
</ins><span class="cx"> const HashTable* hashTable = info->staticPropHashTable;
</span><span class="cx"> if (!hashTable)
</span><span class="cx"> continue;
</span><span class="lines">@@ -3182,8 +3182,9 @@
</span><span class="cx">
</span><span class="cx"> bool JSObject::getOwnPropertyDescriptor(ExecState* exec, PropertyName propertyName, PropertyDescriptor& descriptor)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSC::PropertySlot slot(this, PropertySlot::InternalMethodType::GetOwnProperty);
</span><del>- if (!methodTable(exec->vm())->getOwnPropertySlot(this, exec, propertyName, slot))
</del><ins>+ if (!methodTable(vm)->getOwnPropertySlot(this, exec, propertyName, slot))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> // DebuggerScope::getOwnPropertySlot() (and possibly others) may return attributes from the prototype chain
</span><span class="lines">@@ -3190,10 +3191,10 @@
</span><span class="cx"> // but getOwnPropertyDescriptor() should only work for 'own' properties so we exit early if we detect that
</span><span class="cx"> // the property is not an own property.
</span><span class="cx"> if (slot.slotBase() != this && slot.slotBase()) {
</span><del>- JSProxy* jsProxy = jsDynamicCast<JSProxy*>(this);
</del><ins>+ JSProxy* jsProxy = jsDynamicCast<JSProxy*>(vm, this);
</ins><span class="cx"> if (!jsProxy || jsProxy->target() != slot.slotBase()) {
</span><span class="cx"> // Try ProxyObject.
</span><del>- ProxyObject* proxyObject = jsDynamicCast<ProxyObject*>(this);
</del><ins>+ ProxyObject* proxyObject = jsDynamicCast<ProxyObject*>(vm, this);
</ins><span class="cx"> if (!proxyObject || proxyObject->target() != slot.slotBase())
</span><span class="cx"> return false;
</span><span class="cx"> }
</span><span class="lines">@@ -3205,7 +3206,7 @@
</span><span class="cx"> descriptor.setCustomDescriptor(slot.attributes());
</span><span class="cx">
</span><span class="cx"> JSObject* thisObject = this;
</span><del>- if (auto* proxy = jsDynamicCast<JSProxy*>(this))
</del><ins>+ if (auto* proxy = jsDynamicCast<JSProxy*>(vm, this))
</ins><span class="cx"> thisObject = proxy->target();
</span><span class="cx">
</span><span class="cx"> CustomGetterSetter* getterSetter;
</span><span class="lines">@@ -3219,7 +3220,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ASSERT(maybeGetterSetter);
</span><del>- getterSetter = jsDynamicCast<CustomGetterSetter*>(maybeGetterSetter);
</del><ins>+ getterSetter = jsDynamicCast<CustomGetterSetter*>(vm, maybeGetterSetter);
</ins><span class="cx"> }
</span><span class="cx"> ASSERT(getterSetter);
</span><span class="cx"> if (!getterSetter)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -858,10 +858,10 @@
</span><span class="cx"> void finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> ASSERT(getPrototypeDirect().isNull() || Heap::heap(this) == Heap::heap(getPrototypeDirect()));
</span><span class="cx"> ASSERT(structure()->isObject());
</span><del>- ASSERT(classInfo());
</del><ins>+ ASSERT(classInfo(vm));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static Structure* createStructure(VM& vm, JSGlobalObject* globalObject, JSValue prototype)
</span><span class="lines">@@ -1006,7 +1006,7 @@
</span><span class="cx"> void fillCustomGetterPropertySlot(PropertySlot&, JSValue, unsigned, Structure*);
</span><span class="cx">
</span><span class="cx"> JS_EXPORT_PRIVATE bool getOwnStaticPropertySlot(VM&, PropertyName, PropertySlot&);
</span><del>- JS_EXPORT_PRIVATE const HashTableValue* findPropertyHashEntry(PropertyName) const;
</del><ins>+ JS_EXPORT_PRIVATE const HashTableValue* findPropertyHashEntry(VM&, PropertyName) const;
</ins><span class="cx">
</span><span class="cx"> bool putIndexedDescriptor(ExecState*, SparseArrayEntry*, const PropertyDescriptor&, PropertyDescriptor& old);
</span><span class="cx">
</span><span class="lines">@@ -1064,7 +1064,7 @@
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx"> ASSERT(!this->structure()->hasInlineStorage());
</span><del>- ASSERT(classInfo());
</del><ins>+ ASSERT(classInfo(vm));
</ins><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -1117,7 +1117,7 @@
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx"> ASSERT(structure()->totalStorageCapacity() == structure()->inlineCapacity());
</span><del>- ASSERT(classInfo());
</del><ins>+ ASSERT(classInfo(vm));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> private:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPromiseDeferredcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, nullptr);
</span><span class="cx">
</span><span class="cx"> JSValue promise = deferred.get(exec, vm.propertyNames->builtinNames().promisePrivateName());
</span><del>- ASSERT(promise.inherits(JSPromise::info()));
</del><ins>+ ASSERT(promise.inherits(vm, JSPromise::info()));
</ins><span class="cx"> JSValue resolve = deferred.get(exec, vm.propertyNames->builtinNames().resolvePrivateName());
</span><span class="cx"> JSValue reject = deferred.get(exec, vm.propertyNames->builtinNames().rejectPrivateName());
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPropertyNameIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -73,7 +73,7 @@
</span><span class="cx"> void JSPropertyNameIterator::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> JSC_NATIVE_FUNCTION(vm.propertyNames->next, propertyNameIteratorFuncNext, DontEnum, 0);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSPropertyNameIterator* iterator = jsDynamicCast<JSPropertyNameIterator*>(exec->thisValue());
</del><ins>+ JSPropertyNameIterator* iterator = jsDynamicCast<JSPropertyNameIterator*>(vm, exec->thisValue());
</ins><span class="cx"> if (!iterator)
</span><span class="cx"> return JSValue::encode(throwTypeError(exec, scope, ASCIILiteral("Cannot call PropertyNameIterator.next() on a non-PropertyNameIterator object")));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSScope.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSScope.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSScope.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -350,9 +350,9 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-SymbolTable* JSScope::symbolTable()
</del><ins>+SymbolTable* JSScope::symbolTable(VM& vm)
</ins><span class="cx"> {
</span><del>- if (JSSymbolTableObject* symbolTableObject = jsDynamicCast<JSSymbolTableObject*>(this))
</del><ins>+ if (JSSymbolTableObject* symbolTableObject = jsDynamicCast<JSSymbolTableObject*>(vm, this))
</ins><span class="cx"> return symbolTableObject->symbolTable();
</span><span class="cx">
</span><span class="cx"> return nullptr;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSScopeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSScope.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSScope.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSScope.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> JSGlobalObject* globalObject(VM&);
</span><span class="cx"> JSObject* globalThis();
</span><span class="cx">
</span><del>- SymbolTable* symbolTable();
</del><ins>+ SymbolTable* symbolTable(VM&);
</ins><span class="cx">
</span><span class="cx"> protected:
</span><span class="cx"> JSScope(VM&, Structure*, JSScope* next);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSStringcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSString.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSString.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSString.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -57,8 +57,9 @@
</span><span class="cx">
</span><span class="cx"> void JSString::dumpToStream(const JSCell* cell, PrintStream& out)
</span><span class="cx"> {
</span><ins>+ VM& vm = *cell->vm();
</ins><span class="cx"> const JSString* thisObject = jsCast<const JSString*>(cell);
</span><del>- out.printf("<%p, %s, [%u], ", thisObject, thisObject->className(), thisObject->length());
</del><ins>+ out.printf("<%p, %s, [%u], ", thisObject, thisObject->className(vm), thisObject->length());
</ins><span class="cx"> if (thisObject->isRope())
</span><span class="cx"> out.printf("[rope]");
</span><span class="cx"> else {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSStringIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSStringIterator.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSStringIterator.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSStringIterator.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -37,7 +37,7 @@
</span><span class="cx"> void JSStringIterator::finishCreation(VM& vm, JSGlobalObject*, JSString* iteratedString)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirect(vm, vm.propertyNames->builtinNames().iteratedStringPrivateName(), iteratedString);
</span><span class="cx"> putDirect(vm, vm.propertyNames->builtinNames().stringIteratorNextIndexPrivateName(), jsNumber(0));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSTypedArrayViewPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/JSTypedArrayViewPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx"> namespace JSC {
</span><span class="cx">
</span><span class="cx"> #define CALL_GENERIC_TYPEDARRAY_PROTOTYPE_FUNCTION(functionName) do { \
</span><del>- switch (thisValue.getObject()->classInfo()->typedArrayStorageType) { \
</del><ins>+ switch (thisValue.getObject()->classInfo(vm)->typedArrayStorageType) { \
</ins><span class="cx"> case TypeUint8Clamped: \
</span><span class="cx"> return functionName<JSUint8ClampedArray>(vm, exec); \
</span><span class="cx"> case TypeInt32: \
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL typedArrayViewPrivateFuncIsTypedArrayView(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><del>- return JSValue::encode(jsBoolean(value.isCell() && isTypedView(value.asCell()->classInfo()->typedArrayStorageType)));
</del><ins>+ return JSValue::encode(jsBoolean(value.isCell() && isTypedView(value.asCell()->classInfo(exec->vm())->typedArrayStorageType)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL typedArrayViewPrivateFuncLength(ExecState* exec)
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue argument = exec->argument(0);
</span><del>- if (!argument.isCell() || !isTypedView(argument.asCell()->classInfo()->typedArrayStorageType))
</del><ins>+ if (!argument.isCell() || !isTypedView(argument.asCell()->classInfo(vm)->typedArrayStorageType))
</ins><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("Receiver should be a typed array view"));
</span><span class="cx">
</span><span class="cx"> JSArrayBufferView* thisObject = jsCast<JSArrayBufferView*>(argument);
</span><span class="lines">@@ -89,8 +89,9 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL typedArrayViewPrivateFuncGetOriginalConstructor(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> JSGlobalObject* globalObject = exec->lexicalGlobalObject();
</span><del>- TypedArrayType type = exec->uncheckedArgument(0).getObject()->classInfo()->typedArrayStorageType;
</del><ins>+ TypedArrayType type = exec->uncheckedArgument(0).getObject()->classInfo(vm)->typedArrayStorageType;
</ins><span class="cx"> ASSERT(isTypedView(type));
</span><span class="cx"> return JSValue::encode(globalObject->typedArrayConstructor(type));
</span><span class="cx"> }
</span><span class="lines">@@ -254,7 +255,7 @@
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx">
</span><span class="cx"> VM& vm = exec->vm();
</span><del>- switch (thisValue.getObject()->classInfo()->typedArrayStorageType) {
</del><ins>+ switch (thisValue.getObject()->classInfo(vm)->typedArrayStorageType) {
</ins><span class="cx"> case TypeUint8Clamped:
</span><span class="cx"> return JSValue::encode(jsString(&vm, "Uint8ClampedArray"));
</span><span class="cx"> case TypeInt32:
</span><span class="lines">@@ -292,7 +293,7 @@
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx">
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toString, globalObject->arrayProtoToStringFunction(), DontEnum);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeLazyClassStructurecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/LazyClassStructure.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/LazyClassStructure.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/LazyClassStructure.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -77,9 +77,9 @@
</span><span class="cx"> void LazyClassStructure::Initializer::setConstructor(JSObject* constructor)
</span><span class="cx"> {
</span><span class="cx"> String name;
</span><del>- if (InternalFunction* internalFunction = jsDynamicCast<InternalFunction*>(constructor))
</del><ins>+ if (InternalFunction* internalFunction = jsDynamicCast<InternalFunction*>(vm, constructor))
</ins><span class="cx"> name = internalFunction->name();
</span><del>- else if (JSFunction* function = jsDynamicCast<JSFunction*>(constructor))
</del><ins>+ else if (JSFunction* function = jsDynamicCast<JSFunction*>(vm, constructor))
</ins><span class="cx"> name = function->name(vm);
</span><span class="cx"> else
</span><span class="cx"> RELEASE_ASSERT_NOT_REACHED();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeLookuph"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Lookup.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Lookup.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/Lookup.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -269,7 +269,7 @@
</span><span class="cx"> if (!(entry->attributes() & ReadOnly)) {
</span><span class="cx"> // If this is a function or lazy property put then we just do the put because
</span><span class="cx"> // logically the object already had the property, so this is just a replace.
</span><del>- if (JSObject* thisObject = jsDynamicCast<JSObject*>(thisValue))
</del><ins>+ if (JSObject* thisObject = jsDynamicCast<JSObject*>(vm, thisValue))
</ins><span class="cx"> thisObject->putDirect(vm, propertyName, value);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeMapConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/MapConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/MapConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/MapConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">
</span><span class="cx"> void MapConstructor::finishCreation(VM& vm, MapPrototype* mapPrototype, GetterSetter* speciesSymbol)
</span><span class="cx"> {
</span><del>- Base::finishCreation(vm, mapPrototype->classInfo()->className);
</del><ins>+ Base::finishCreation(vm, mapPrototype->classInfo(vm)->className);
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, mapPrototype, DontEnum | DontDelete | ReadOnly);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), DontEnum | ReadOnly);
</span><span class="cx"> putDirectNonIndexAccessor(vm, vm.propertyNames->speciesSymbol, speciesSymbol, Accessor | ReadOnly | DontEnum);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeMapIteratorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/MapIteratorPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/MapIteratorPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/MapIteratorPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> void MapIteratorPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, MapIteratorPrototypeFuncNext, DontEnum, 0);
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> VM& vm = callFrame->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSMapIterator* iterator = jsDynamicCast<JSMapIterator*>(callFrame->thisValue());
</del><ins>+ JSMapIterator* iterator = jsDynamicCast<JSMapIterator*>(vm, callFrame->thisValue());
</ins><span class="cx"> if (!iterator)
</span><span class="cx"> return JSValue::encode(throwTypeError(callFrame, scope, ASCIILiteral("Cannot call MapIterator.next() on a non-MapIterator object")));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeMapPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/MapPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/MapPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/MapPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> void MapPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->clear, mapProtoFuncClear, DontEnum, 0);
</span><span class="lines">@@ -155,7 +155,7 @@
</span><span class="cx"> VM& vm = callFrame->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSMap* thisObj = jsDynamicCast<JSMap*>(callFrame->thisValue());
</del><ins>+ JSMap* thisObj = jsDynamicCast<JSMap*>(vm, callFrame->thisValue());
</ins><span class="cx"> if (!thisObj)
</span><span class="cx"> return JSValue::encode(throwTypeError(callFrame, scope, ASCIILiteral("Cannot create a Map value iterator for a non-Map object.")));
</span><span class="cx"> return JSValue::encode(JSMapIterator::create(vm, callFrame->jsCallee()->globalObject()->mapIteratorStructure(), thisObj, IterateValue));
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx"> VM& vm = callFrame->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSMap* thisObj = jsDynamicCast<JSMap*>(callFrame->thisValue());
</del><ins>+ JSMap* thisObj = jsDynamicCast<JSMap*>(vm, callFrame->thisValue());
</ins><span class="cx"> if (!thisObj)
</span><span class="cx"> return JSValue::encode(throwTypeError(callFrame, scope, ASCIILiteral("Cannot create a Map entry iterator for a non-Map object.")));
</span><span class="cx"> return JSValue::encode(JSMapIterator::create(vm, callFrame->jsCallee()->globalObject()->mapIteratorStructure(), thisObj, IterateKeyValue));
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx"> VM& vm = callFrame->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSMap* thisObj = jsDynamicCast<JSMap*>(callFrame->thisValue());
</del><ins>+ JSMap* thisObj = jsDynamicCast<JSMap*>(vm, callFrame->thisValue());
</ins><span class="cx"> if (!thisObj)
</span><span class="cx"> return JSValue::encode(throwTypeError(callFrame, scope, ASCIILiteral("Cannot create a Map key iterator for a non-Map object.")));
</span><span class="cx"> return JSValue::encode(JSMapIterator::create(vm, callFrame->jsCallee()->globalObject()->mapIteratorStructure(), thisObj, IterateKey));
</span><span class="lines">@@ -185,7 +185,7 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL privateFuncMapIterator(ExecState* exec)
</span><span class="cx"> {
</span><del>- ASSERT(jsDynamicCast<JSMap*>(exec->uncheckedArgument(0)));
</del><ins>+ ASSERT(jsDynamicCast<JSMap*>(exec->vm(), exec->uncheckedArgument(0)));
</ins><span class="cx"> JSMap* map = jsCast<JSMap*>(exec->uncheckedArgument(0));
</span><span class="cx"> return JSValue::encode(JSMapIterator::create(exec->vm(), exec->jsCallee()->globalObject()->mapIteratorStructure(), map, IterateKeyValue));
</span><span class="cx"> }
</span><span class="lines">@@ -194,7 +194,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><del>- ASSERT(jsDynamicCast<JSMapIterator*>(exec->thisValue()));
</del><ins>+ ASSERT(jsDynamicCast<JSMapIterator*>(vm, exec->thisValue()));
</ins><span class="cx"> JSMapIterator* iterator = jsCast<JSMapIterator*>(exec->thisValue());
</span><span class="cx"> JSValue key, value;
</span><span class="cx"> if (iterator->nextKeyValue(exec, key, value)) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeMathObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/MathObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/MathObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/MathObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -76,7 +76,7 @@
</span><span class="cx"> void MathObject::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> putDirectWithoutTransition(vm, Identifier::fromString(&vm, "E"), jsNumber(exp(1.0)), DontDelete | DontEnum | ReadOnly);
</span><span class="cx"> putDirectWithoutTransition(vm, Identifier::fromString(&vm, "LN2"), jsNumber(log(2.0)), DontDelete | DontEnum | ReadOnly);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeModuleLoaderPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -112,7 +112,7 @@
</span><span class="cx"> const Identifier moduleKey = exec->argument(0).toPropertyKey(exec);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><span class="cx">
</span><del>- auto* jsSourceCode = jsDynamicCast<JSSourceCode*>(exec->argument(1));
</del><ins>+ auto* jsSourceCode = jsDynamicCast<JSSourceCode*>(vm, exec->argument(1));
</ins><span class="cx"> if (!jsSourceCode)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> SourceCode sourceCode = jsSourceCode->sourceCode();
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSModuleRecord* moduleRecord = jsDynamicCast<JSModuleRecord*>(exec->argument(0));
</del><ins>+ JSModuleRecord* moduleRecord = jsDynamicCast<JSModuleRecord*>(vm, exec->argument(0));
</ins><span class="cx"> if (!moduleRecord) {
</span><span class="cx"> scope.release();
</span><span class="cx"> return JSValue::encode(constructEmptyArray(exec, nullptr));
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSModuleRecord* moduleRecord = jsDynamicCast<JSModuleRecord*>(exec->argument(0));
</del><ins>+ JSModuleRecord* moduleRecord = jsDynamicCast<JSModuleRecord*>(vm, exec->argument(0));
</ins><span class="cx"> if (!moduleRecord)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx">
</span><span class="lines">@@ -178,11 +178,12 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL moduleLoaderPrototypeResolve(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> // Hook point, Loader.resolve.
</span><span class="cx"> // https://whatwg.github.io/loader/#browser-resolve
</span><span class="cx"> // Take the name and resolve it to the unique identifier for the resource location.
</span><span class="cx"> // For example, take the "jquery" and return the URL for the resource.
</span><del>- JSModuleLoader* loader = jsDynamicCast<JSModuleLoader*>(exec->thisValue());
</del><ins>+ JSModuleLoader* loader = jsDynamicCast<JSModuleLoader*>(vm, exec->thisValue());
</ins><span class="cx"> if (!loader)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return JSValue::encode(loader->resolve(exec, exec->argument(0), exec->argument(1), exec->argument(2)));
</span><span class="lines">@@ -190,12 +191,13 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL moduleLoaderPrototypeFetch(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> // Hook point, Loader.fetch
</span><span class="cx"> // https://whatwg.github.io/loader/#browser-fetch
</span><span class="cx"> // Take the key and fetch the resource actually.
</span><span class="cx"> // For example, JavaScriptCore shell can provide the hook fetching the resource
</span><span class="cx"> // from the local file system.
</span><del>- JSModuleLoader* loader = jsDynamicCast<JSModuleLoader*>(exec->thisValue());
</del><ins>+ JSModuleLoader* loader = jsDynamicCast<JSModuleLoader*>(vm, exec->thisValue());
</ins><span class="cx"> if (!loader)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return JSValue::encode(loader->fetch(exec, exec->argument(0), exec->argument(1)));
</span><span class="lines">@@ -203,6 +205,7 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL moduleLoaderPrototypeInstantiate(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> // Hook point, Loader.instantiate
</span><span class="cx"> // https://whatwg.github.io/loader/#browser-instantiate
</span><span class="cx"> // Take the key and the fetched source code, and instantiate the module record
</span><span class="lines">@@ -209,7 +212,7 @@
</span><span class="cx"> // by parsing the module source code.
</span><span class="cx"> // It has the chance to provide the optional module instance that is different from
</span><span class="cx"> // the ordinary one.
</span><del>- JSModuleLoader* loader = jsDynamicCast<JSModuleLoader*>(exec->thisValue());
</del><ins>+ JSModuleLoader* loader = jsDynamicCast<JSModuleLoader*>(vm, exec->thisValue());
</ins><span class="cx"> if (!loader)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return JSValue::encode(loader->instantiate(exec, exec->argument(0), exec->argument(1), exec->argument(2)));
</span><span class="lines">@@ -220,7 +223,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- auto* loader = jsDynamicCast<JSModuleLoader*>(exec->thisValue());
</del><ins>+ auto* loader = jsDynamicCast<JSModuleLoader*>(vm, exec->thisValue());
</ins><span class="cx"> if (!loader)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> auto* moduleNamespaceObject = loader->getModuleNamespaceObject(exec, exec->argument(0));
</span><span class="lines">@@ -235,7 +238,8 @@
</span><span class="cx"> // To instrument and retrieve the errors raised from the module execution,
</span><span class="cx"> // we inserted the hook point here.
</span><span class="cx">
</span><del>- JSModuleLoader* loader = jsDynamicCast<JSModuleLoader*>(exec->thisValue());
</del><ins>+ VM& vm = exec->vm();
+ JSModuleLoader* loader = jsDynamicCast<JSModuleLoader*>(vm, exec->thisValue());
</ins><span class="cx"> if (!loader)
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return JSValue::encode(loader->evaluate(exec, exec->argument(0), exec->argument(1), exec->argument(2)));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNativeErrorConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> void NativeErrorConstructor::finishCreation(VM& vm, JSGlobalObject* globalObject, Structure* prototypeStructure, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> NativeErrorPrototype* prototype = NativeErrorPrototype::create(vm, prototypeStructure, name, this);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNumberConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -62,7 +62,7 @@
</span><span class="cx"> void NumberConstructor::finishCreation(VM& vm, NumberPrototype* numberPrototype)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, NumberPrototype::info()->className);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> // Number.Prototype
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, numberPrototype, DontEnum | DontDelete | ReadOnly);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNumberObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NumberObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NumberObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/NumberObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> void NumberObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> NumberObject* constructNumber(ExecState* exec, JSGlobalObject* globalObject, JSValue number)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNumberPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/NumberPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -85,7 +85,7 @@
</span><span class="cx"> UNUSED_PARAM(globalObject);
</span><span class="cx"> #endif // ENABLE(INTL)
</span><span class="cx">
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // ------------------------------ Functions ---------------------------
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeObjectConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -95,7 +95,7 @@
</span><span class="cx">
</span><span class="cx"> void ObjectConstructor::finishCreation(VM& vm, JSGlobalObject* globalObject, ObjectPrototype* objectPrototype)
</span><span class="cx"> {
</span><del>- Base::finishCreation(vm, objectPrototype->classInfo()->className);
</del><ins>+ Base::finishCreation(vm, objectPrototype->classInfo(vm)->className);
</ins><span class="cx"> // ECMA 15.2.3.1
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, objectPrototype, DontEnum | DontDelete | ReadOnly);
</span><span class="cx"> // no. of arguments for constructor
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeObjectPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -55,7 +55,7 @@
</span><span class="cx"> void ObjectPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->toString, objectProtoFuncToString, DontEnum, 0);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeProxyObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -58,11 +58,11 @@
</span><span class="cx"> while (proxy) {
</span><span class="cx"> const JSObject* target = proxy->target();
</span><span class="cx"> if (isArray(exec, target))
</span><del>- return target->classInfo()->methodTable.toStringName(target, exec);
</del><ins>+ return target->classInfo(vm)->methodTable.toStringName(target, exec);
</ins><span class="cx"> if (UNLIKELY(scope.exception()))
</span><span class="cx"> break;
</span><span class="cx">
</span><del>- proxy = jsDynamicCast<const ProxyObject*>(target);
</del><ins>+ proxy = jsDynamicCast<const ProxyObject*>(vm, target);
</ins><span class="cx"> }
</span><span class="cx"> return ASCIILiteral("Object");
</span><span class="cx"> }
</span><span class="lines">@@ -87,7 +87,7 @@
</span><span class="cx"> throwTypeError(exec, scope, ASCIILiteral("A Proxy's 'target' should be an Object"));
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- if (ProxyObject* targetAsProxy = jsDynamicCast<ProxyObject*>(target)) {
</del><ins>+ if (ProxyObject* targetAsProxy = jsDynamicCast<ProxyObject*>(vm, target)) {
</ins><span class="cx"> if (targetAsProxy->handler().isNull()) {
</span><span class="cx"> throwTypeError(exec, scope, ASCIILiteral("If a Proxy's handler is another Proxy object, the other Proxy should not have been revoked"));
</span><span class="cx"> return;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeReflectObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ReflectObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ReflectObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ReflectObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -84,7 +84,7 @@
</span><span class="cx"> void ReflectObject::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->builtinNames().ownKeysPrivateName(), reflectObjectOwnKeys, DontEnum | DontDelete | ReadOnly, 1);
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->builtinNames().getOwnPropertyDescriptorPrivateName(), reflectObjectGetOwnPropertyDescriptor, DontEnum | DontDelete | ReadOnly, 2);
</span><span class="lines">@@ -115,7 +115,7 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> MarkedArgumentBuffer arguments;
</span><del>- JSObject* argumentsObject = jsDynamicCast<JSObject*>(exec->argument(1));
</del><ins>+ JSObject* argumentsObject = jsDynamicCast<JSObject*>(vm, exec->argument(1));
</ins><span class="cx"> if (!argumentsObject)
</span><span class="cx"> return JSValue::encode(throwTypeError(exec, scope, ASCIILiteral("Reflect.construct requires the second argument be an object")));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> void RegExpConstructor::finishCreation(VM& vm, RegExpPrototype* regExpPrototype, GetterSetter* speciesSymbol)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, ASCIILiteral("RegExp"));
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, regExpPrototype, DontEnum | DontDelete | ReadOnly);
</span><span class="cx">
</span><span class="lines">@@ -183,7 +183,7 @@
</span><span class="cx">
</span><span class="cx"> bool setRegExpConstructorInput(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue value)
</span><span class="cx"> {
</span><del>- if (auto constructor = jsDynamicCast<RegExpConstructor*>(JSValue::decode(thisValue))) {
</del><ins>+ if (auto constructor = jsDynamicCast<RegExpConstructor*>(exec->vm(), JSValue::decode(thisValue))) {
</ins><span class="cx"> constructor->setInput(exec, JSValue::decode(value).toString(exec));
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="lines">@@ -192,7 +192,7 @@
</span><span class="cx">
</span><span class="cx"> bool setRegExpConstructorMultiline(ExecState* exec, EncodedJSValue thisValue, EncodedJSValue value)
</span><span class="cx"> {
</span><del>- if (auto constructor = jsDynamicCast<RegExpConstructor*>(JSValue::decode(thisValue))) {
</del><ins>+ if (auto constructor = jsDynamicCast<RegExpConstructor*>(exec->vm(), JSValue::decode(thisValue))) {
</ins><span class="cx"> constructor->setMultiline(JSValue::decode(value).toBoolean(exec));
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="lines">@@ -255,7 +255,7 @@
</span><span class="cx"> JSValue patternArg = args.at(0);
</span><span class="cx"> JSValue flagsArg = args.at(1);
</span><span class="cx">
</span><del>- bool isPatternRegExp = patternArg.inherits(RegExpObject::info());
</del><ins>+ bool isPatternRegExp = patternArg.inherits(vm, RegExpObject::info());
</ins><span class="cx"> bool constructAsRegexp = isRegExp(vm, exec, patternArg);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, nullptr);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">
</span><span class="cx"> inline RegExpConstructor* asRegExpConstructor(JSValue value)
</span><span class="cx"> {
</span><del>- ASSERT(asObject(value)->inherits(RegExpConstructor::info()));
</del><ins>+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), RegExpConstructor::info()));
</ins><span class="cx"> return static_cast<RegExpConstructor*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx"> if (!matchValue.isUndefined())
</span><span class="cx"> return matchValue.toBoolean(exec);
</span><span class="cx">
</span><del>- return object->inherits(RegExpObject::info());
</del><ins>+ return object->inherits(vm, RegExpObject::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL esSpecRegExpCreate(ExecState*);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> void RegExpObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RegExpObject::visitChildren(JSCell* cell, SlotVisitor& visitor)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpObject.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpObject.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/RegExpObject.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -124,7 +124,7 @@
</span><span class="cx">
</span><span class="cx"> inline RegExpObject* asRegExpObject(JSValue value)
</span><span class="cx"> {
</span><del>- ASSERT(asObject(value)->inherits(RegExpObject::info()));
</del><ins>+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), RegExpObject::info()));
</ins><span class="cx"> return static_cast<RegExpObject*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> void RegExpPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->compile, regExpProtoFuncCompile, DontEnum, 2);
</span><span class="cx"> JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->exec, regExpProtoFuncExec, DontEnum, 1, RegExpExecIntrinsic);
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->toString, regExpProtoFuncToString, DontEnum, 0);
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(RegExpObject::info()))
</del><ins>+ if (!thisValue.inherits(vm, RegExpObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> JSString* string = exec->argument(0).toStringOrNull(exec);
</span><span class="cx"> ASSERT(!!scope.exception() == !string);
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(RegExpObject::info()))
</del><ins>+ if (!thisValue.inherits(vm, RegExpObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope, "Builtin RegExp exec can only be called on a RegExp object");
</span><span class="cx"> JSString* string = exec->argument(0).toStringOrNull(exec);
</span><span class="cx"> ASSERT(!!scope.exception() == !string);
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(RegExpObject::info()))
</del><ins>+ if (!thisValue.inherits(vm, RegExpObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> JSString* string = exec->argument(0).toStringOrNull(exec);
</span><span class="cx"> ASSERT(!!scope.exception() == !string);
</span><span class="lines">@@ -154,7 +154,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(RegExpObject::info()))
</del><ins>+ if (!thisValue.inherits(vm, RegExpObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> RegExp* regExp;
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> JSValue arg0 = exec->argument(0);
</span><span class="cx"> JSValue arg1 = exec->argument(1);
</span><span class="cx">
</span><del>- if (arg0.inherits(RegExpObject::info())) {
</del><ins>+ if (arg0.inherits(vm, RegExpObject::info())) {
</ins><span class="cx"> if (!arg1.isUndefined())
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("Cannot supply flags when constructing one RegExp from another."));
</span><span class="cx"> regExp = asRegExpObject(arg0)->regExp();
</span><span class="lines">@@ -261,8 +261,8 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (UNLIKELY(!thisValue.inherits(RegExpObject::info()))) {
- if (thisValue.inherits(RegExpPrototype::info()))
</del><ins>+ if (UNLIKELY(!thisValue.inherits(vm, RegExpObject::info()))) {
+ if (thisValue.inherits(vm, RegExpPrototype::info()))
</ins><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("The RegExp.prototype.global getter can only be called on a RegExp object"));
</span><span class="cx"> }
</span><span class="lines">@@ -276,8 +276,8 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (UNLIKELY(!thisValue.inherits(RegExpObject::info()))) {
- if (thisValue.inherits(RegExpPrototype::info()))
</del><ins>+ if (UNLIKELY(!thisValue.inherits(vm, RegExpObject::info()))) {
+ if (thisValue.inherits(vm, RegExpPrototype::info()))
</ins><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("The RegExp.prototype.ignoreCase getter can only be called on a RegExp object"));
</span><span class="cx"> }
</span><span class="lines">@@ -291,8 +291,8 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (UNLIKELY(!thisValue.inherits(RegExpObject::info()))) {
- if (thisValue.inherits(RegExpPrototype::info()))
</del><ins>+ if (UNLIKELY(!thisValue.inherits(vm, RegExpObject::info()))) {
+ if (thisValue.inherits(vm, RegExpPrototype::info()))
</ins><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("The RegExp.prototype.multiline getter can only be called on a RegExp object"));
</span><span class="cx"> }
</span><span class="lines">@@ -306,8 +306,8 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (UNLIKELY(!thisValue.inherits(RegExpObject::info()))) {
- if (thisValue.inherits(RegExpPrototype::info()))
</del><ins>+ if (UNLIKELY(!thisValue.inherits(vm, RegExpObject::info()))) {
+ if (thisValue.inherits(vm, RegExpPrototype::info()))
</ins><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("The RegExp.prototype.sticky getter can only be called on a RegExp object"));
</span><span class="cx"> }
</span><span class="lines">@@ -321,8 +321,8 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (UNLIKELY(!thisValue.inherits(RegExpObject::info()))) {
- if (thisValue.inherits(RegExpPrototype::info()))
</del><ins>+ if (UNLIKELY(!thisValue.inherits(vm, RegExpObject::info()))) {
+ if (thisValue.inherits(vm, RegExpPrototype::info()))
</ins><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("The RegExp.prototype.unicode getter can only be called on a RegExp object"));
</span><span class="cx"> }
</span><span class="lines">@@ -457,8 +457,8 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (UNLIKELY(!thisValue.inherits(RegExpObject::info()))) {
- if (thisValue.inherits(RegExpPrototype::info()))
</del><ins>+ if (UNLIKELY(!thisValue.inherits(vm, RegExpObject::info()))) {
+ if (thisValue.inherits(vm, RegExpPrototype::info()))
</ins><span class="cx"> return JSValue::encode(jsString(exec, ASCIILiteral("(?:)")));
</span><span class="cx"> return throwVMTypeError(exec, scope, ASCIILiteral("The RegExp.prototype.source getter can only be called on a RegExp object"));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSamplingProfilercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/SamplingProfiler.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -415,7 +415,7 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> if (calleeCell->type() != JSFunctionType) {
</span><del>- if (JSObject* object = jsDynamicCast<JSObject*>(calleeCell))
</del><ins>+ if (JSObject* object = jsDynamicCast<JSObject*>(*calleeCell->vm(), calleeCell))
</ins><span class="cx"> addCallee(object);
</span><span class="cx">
</span><span class="cx"> if (!alreadyHasExecutable)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeScriptExecutablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ScriptExecutable.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -176,7 +176,7 @@
</span><span class="cx"> ASSERT(vm->heap.isDeferred());
</span><span class="cx"> ASSERT(endColumn() != UINT_MAX);
</span><span class="cx">
</span><del>- if (classInfo() == EvalExecutable::info()) {
</del><ins>+ if (classInfo(*vm) == EvalExecutable::info()) {
</ins><span class="cx"> EvalExecutable* executable = jsCast<EvalExecutable*>(this);
</span><span class="cx"> RELEASE_ASSERT(kind == CodeForCall);
</span><span class="cx"> RELEASE_ASSERT(!executable->m_evalCodeBlock);
</span><span class="lines">@@ -186,7 +186,7 @@
</span><span class="cx"> executable->source().provider());
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (classInfo() == ProgramExecutable::info()) {
</del><ins>+ if (classInfo(*vm) == ProgramExecutable::info()) {
</ins><span class="cx"> ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
</span><span class="cx"> RELEASE_ASSERT(kind == CodeForCall);
</span><span class="cx"> RELEASE_ASSERT(!executable->m_programCodeBlock);
</span><span class="lines">@@ -196,7 +196,7 @@
</span><span class="cx"> executable->source().provider(), startColumn());
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (classInfo() == ModuleProgramExecutable::info()) {
</del><ins>+ if (classInfo(*vm) == ModuleProgramExecutable::info()) {
</ins><span class="cx"> ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
</span><span class="cx"> RELEASE_ASSERT(kind == CodeForCall);
</span><span class="cx"> RELEASE_ASSERT(!executable->m_moduleProgramCodeBlock);
</span><span class="lines">@@ -206,7 +206,7 @@
</span><span class="cx"> executable->source().provider(), startColumn());
</span><span class="cx"> }
</span><span class="cx">
</span><del>- RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
</del><ins>+ RELEASE_ASSERT(classInfo(*vm) == FunctionExecutable::info());
</ins><span class="cx"> RELEASE_ASSERT(function);
</span><span class="cx"> FunctionExecutable* executable = jsCast<FunctionExecutable*>(this);
</span><span class="cx"> RELEASE_ASSERT(!executable->codeBlockFor(kind));
</span><span class="lines">@@ -235,46 +235,47 @@
</span><span class="cx"> CodeBlock* ScriptExecutable::newReplacementCodeBlockFor(
</span><span class="cx"> CodeSpecializationKind kind)
</span><span class="cx"> {
</span><del>- if (classInfo() == EvalExecutable::info()) {
</del><ins>+ VM& vm = *this->vm();
+ if (classInfo(vm) == EvalExecutable::info()) {
</ins><span class="cx"> RELEASE_ASSERT(kind == CodeForCall);
</span><span class="cx"> EvalExecutable* executable = jsCast<EvalExecutable*>(this);
</span><span class="cx"> EvalCodeBlock* baseline = static_cast<EvalCodeBlock*>(
</span><span class="cx"> executable->m_evalCodeBlock->baselineVersion());
</span><del>- EvalCodeBlock* result = EvalCodeBlock::create(vm(),
</del><ins>+ EvalCodeBlock* result = EvalCodeBlock::create(&vm,
</ins><span class="cx"> CodeBlock::CopyParsedBlock, *baseline);
</span><del>- result->setAlternative(*vm(), baseline);
</del><ins>+ result->setAlternative(vm, baseline);
</ins><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (classInfo() == ProgramExecutable::info()) {
</del><ins>+ if (classInfo(vm) == ProgramExecutable::info()) {
</ins><span class="cx"> RELEASE_ASSERT(kind == CodeForCall);
</span><span class="cx"> ProgramExecutable* executable = jsCast<ProgramExecutable*>(this);
</span><span class="cx"> ProgramCodeBlock* baseline = static_cast<ProgramCodeBlock*>(
</span><span class="cx"> executable->m_programCodeBlock->baselineVersion());
</span><del>- ProgramCodeBlock* result = ProgramCodeBlock::create(vm(),
</del><ins>+ ProgramCodeBlock* result = ProgramCodeBlock::create(&vm,
</ins><span class="cx"> CodeBlock::CopyParsedBlock, *baseline);
</span><del>- result->setAlternative(*vm(), baseline);
</del><ins>+ result->setAlternative(vm, baseline);
</ins><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (classInfo() == ModuleProgramExecutable::info()) {
</del><ins>+ if (classInfo(vm) == ModuleProgramExecutable::info()) {
</ins><span class="cx"> RELEASE_ASSERT(kind == CodeForCall);
</span><span class="cx"> ModuleProgramExecutable* executable = jsCast<ModuleProgramExecutable*>(this);
</span><span class="cx"> ModuleProgramCodeBlock* baseline = static_cast<ModuleProgramCodeBlock*>(
</span><span class="cx"> executable->m_moduleProgramCodeBlock->baselineVersion());
</span><del>- ModuleProgramCodeBlock* result = ModuleProgramCodeBlock::create(vm(),
</del><ins>+ ModuleProgramCodeBlock* result = ModuleProgramCodeBlock::create(&vm,
</ins><span class="cx"> CodeBlock::CopyParsedBlock, *baseline);
</span><del>- result->setAlternative(*vm(), baseline);
</del><ins>+ result->setAlternative(vm, baseline);
</ins><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- RELEASE_ASSERT(classInfo() == FunctionExecutable::info());
</del><ins>+ RELEASE_ASSERT(classInfo(vm) == FunctionExecutable::info());
</ins><span class="cx"> FunctionExecutable* executable = jsCast<FunctionExecutable*>(this);
</span><span class="cx"> FunctionCodeBlock* baseline = static_cast<FunctionCodeBlock*>(
</span><span class="cx"> executable->codeBlockFor(kind)->baselineVersion());
</span><del>- FunctionCodeBlock* result = FunctionCodeBlock::create(vm(),
</del><ins>+ FunctionCodeBlock* result = FunctionCodeBlock::create(&vm,
</ins><span class="cx"> CodeBlock::CopyParsedBlock, *baseline);
</span><del>- result->setAlternative(*vm(), baseline);
</del><ins>+ result->setAlternative(vm, baseline);
</ins><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSetConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx">
</span><span class="cx"> void SetConstructor::finishCreation(VM& vm, SetPrototype* setPrototype, GetterSetter* speciesSymbol)
</span><span class="cx"> {
</span><del>- Base::finishCreation(vm, setPrototype->classInfo()->className);
</del><ins>+ Base::finishCreation(vm, setPrototype->classInfo(vm)->className);
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, setPrototype, DontEnum | DontDelete | ReadOnly);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), DontEnum | ReadOnly);
</span><span class="cx"> putDirectNonIndexAccessor(vm, vm.propertyNames->speciesSymbol, speciesSymbol, Accessor | ReadOnly | DontEnum);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSetIteratorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/SetIteratorPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx"> void SetIteratorPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, SetIteratorPrototypeFuncNext, DontEnum, 0);
</span><span class="lines">@@ -52,7 +52,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue result;
</span><del>- JSSetIterator* iterator = jsDynamicCast<JSSetIterator*>(callFrame->thisValue());
</del><ins>+ JSSetIterator* iterator = jsDynamicCast<JSSetIterator*>(vm, callFrame->thisValue());
</ins><span class="cx"> if (!iterator)
</span><span class="cx"> return JSValue::encode(throwTypeError(callFrame, scope, ASCIILiteral("Cannot call SetIterator.next() on a non-SetIterator object")));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSetPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SetPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SetPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/SetPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> void SetPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->add, setProtoFuncAdd, DontEnum, 1);
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx"> VM& vm = callFrame->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSSet* thisObj = jsDynamicCast<JSSet*>(callFrame->thisValue());
</del><ins>+ JSSet* thisObj = jsDynamicCast<JSSet*>(vm, callFrame->thisValue());
</ins><span class="cx"> if (!thisObj)
</span><span class="cx"> return JSValue::encode(throwTypeError(callFrame, scope, ASCIILiteral("Cannot create a Set value iterator for a non-Set object.")));
</span><span class="cx"> return JSValue::encode(JSSetIterator::create(vm, callFrame->jsCallee()->globalObject()->setIteratorStructure(), thisObj, IterateValue));
</span><span class="lines">@@ -152,7 +152,7 @@
</span><span class="cx"> VM& vm = callFrame->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSSet* thisObj = jsDynamicCast<JSSet*>(callFrame->thisValue());
</del><ins>+ JSSet* thisObj = jsDynamicCast<JSSet*>(vm, callFrame->thisValue());
</ins><span class="cx"> if (!thisObj)
</span><span class="cx"> return JSValue::encode(throwTypeError(callFrame, scope, ASCIILiteral("Cannot create a Set entry iterator for a non-Set object.")));
</span><span class="cx"> return JSValue::encode(JSSetIterator::create(vm, callFrame->jsCallee()->globalObject()->setIteratorStructure(), thisObj, IterateKeyValue));
</span><span class="lines">@@ -160,7 +160,8 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL privateFuncSetIterator(ExecState* exec)
</span><span class="cx"> {
</span><del>- ASSERT(jsDynamicCast<JSSet*>(exec->uncheckedArgument(0)));
</del><ins>+
+ ASSERT(jsDynamicCast<JSSet*>(exec->vm(), exec->uncheckedArgument(0)));
</ins><span class="cx"> JSSet* set = jsCast<JSSet*>(exec->uncheckedArgument(0));
</span><span class="cx"> return JSValue::encode(JSSetIterator::create(exec->vm(), exec->jsCallee()->globalObject()->setIteratorStructure(), set, IterateKey));
</span><span class="cx"> }
</span><span class="lines">@@ -167,7 +168,7 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL privateFuncSetIteratorNext(ExecState* exec)
</span><span class="cx"> {
</span><del>- ASSERT(jsDynamicCast<JSSetIterator*>(exec->thisValue()));
</del><ins>+ ASSERT(jsDynamicCast<JSSetIterator*>(exec->vm(), exec->thisValue()));
</ins><span class="cx"> JSSetIterator* iterator = jsCast<JSSetIterator*>(exec->thisValue());
</span><span class="cx"> JSValue result;
</span><span class="cx"> if (iterator->next(exec, result)) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStackFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StackFrame.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StackFrame.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/StackFrame.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> String StackFrame::sourceURL() const
</span><span class="cx"> {
</span><span class="cx"> if (!m_codeBlock) {
</span><del>- if (m_callee && m_callee->isAnyWasmCallee())
</del><ins>+ if (m_callee && m_callee->isAnyWasmCallee(*m_callee->vm()))
</ins><span class="cx"> return ASCIILiteral("[wasm code]");
</span><span class="cx"> return ASCIILiteral("[native code]");
</span><span class="cx"> }
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx"> if (m_callee) {
</span><span class="cx"> if (m_callee->isObject())
</span><span class="cx"> name = getCalculatedDisplayName(vm, jsCast<JSObject*>(m_callee.get())).impl();
</span><del>- else if (m_callee->isAnyWasmCallee())
</del><ins>+ else if (m_callee->isAnyWasmCallee(*m_callee->vm()))
</ins><span class="cx"> return ASCIILiteral("<wasm>");
</span><span class="cx"> }
</span><span class="cx"> return name.isNull() ? emptyString() : name;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringIteratorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringIteratorPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringIteratorPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/StringIteratorPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> void StringIteratorPrototype::finishCreation(VM& vm, JSGlobalObject*)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "String Iterator"), DontEnum | ReadOnly);
</span><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/StringObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx"> void StringObject::finishCreation(VM& vm, JSString* string)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> setInternalValue(vm, string);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringObject.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringObject.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/StringObject.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx">
</span><span class="cx"> inline StringObject* asStringObject(JSValue value)
</span><span class="cx"> {
</span><del>- ASSERT(asObject(value)->inherits(StringObject::info()));
</del><ins>+ ASSERT(asObject(value)->inherits(*value.getObject()->vm(), StringObject::info()));
</ins><span class="cx"> return static_cast<StringObject*>(asObject(value));
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx"> void StringPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject, JSString* nameAndMessage)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, nameAndMessage);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->toString, stringProtoFuncToString, DontEnum, 0, StringPrototypeValueOfIntrinsic);
</span><span class="cx"> JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->valueOf, stringProtoFuncToString, DontEnum, 0, StringPrototypeValueOfIntrinsic);
</span><span class="lines">@@ -836,7 +836,7 @@
</span><span class="cx"> ALWAYS_INLINE EncodedJSValue replace(
</span><span class="cx"> VM& vm, ExecState* exec, JSString* string, JSValue searchValue, JSValue replaceValue)
</span><span class="cx"> {
</span><del>- if (searchValue.inherits(RegExpObject::info()))
</del><ins>+ if (searchValue.inherits(vm, RegExpObject::info()))
</ins><span class="cx"> return replaceUsingRegExpSearch(vm, exec, string, searchValue, replaceValue);
</span><span class="cx"> return replaceUsingStringSearch(vm, exec, string, searchValue, replaceValue);
</span><span class="cx"> }
</span><span class="lines">@@ -863,7 +863,7 @@
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, encodedJSValue());
</span><span class="cx">
</span><span class="cx"> JSValue searchValue = exec->argument(0);
</span><del>- if (!searchValue.inherits(RegExpObject::info()))
</del><ins>+ if (!searchValue.inherits(vm, RegExpObject::info()))
</ins><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx">
</span><span class="cx"> scope.release();
</span><span class="lines">@@ -905,7 +905,7 @@
</span><span class="cx"> if (thisValue.isString())
</span><span class="cx"> return JSValue::encode(thisValue);
</span><span class="cx">
</span><del>- if (thisValue.inherits(StringObject::info()))
</del><ins>+ if (thisValue.inherits(vm, StringObject::info()))
</ins><span class="cx"> return JSValue::encode(asStringObject(thisValue)->internalValue());
</span><span class="cx">
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStructureRareDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StructureRareData.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StructureRareData.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/StructureRareData.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -142,7 +142,7 @@
</span><span class="cx"> if (condition.condition().kind() == PropertyCondition::Presence) {
</span><span class="cx"> ASSERT(isValidOffset(condition.offset()));
</span><span class="cx"> condition.object()->structure(vm)->startWatchingPropertyForReplacements(vm, condition.offset());
</span><del>- equivCondition = condition.attemptToMakeEquivalenceWithoutBarrier();
</del><ins>+ equivCondition = condition.attemptToMakeEquivalenceWithoutBarrier(vm);
</ins><span class="cx">
</span><span class="cx"> // The equivalence condition won't be watchable if we have already seen a replacement.
</span><span class="cx"> if (!equivCondition.isWatchable()) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Symbol.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Symbol.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/Symbol.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> void Symbol::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> vm.symbolImplToSymbolMap.set(&m_privateName.uid(), this);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SymbolConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SymbolConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/SymbolConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -66,7 +66,7 @@
</span><span class="cx">
</span><span class="cx"> void SymbolConstructor::finishCreation(VM& vm, SymbolPrototype* prototype)
</span><span class="cx"> {
</span><del>- Base::finishCreation(vm, prototype->classInfo()->className);
</del><ins>+ Base::finishCreation(vm, prototype->classInfo(vm)->className);
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, DontEnum | DontDelete | ReadOnly);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), DontDelete | ReadOnly | DontEnum);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SymbolObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SymbolObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/SymbolObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> void SymbolObject::finishCreation(VM& vm, Symbol* symbol)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> setInternalValue(vm, symbol);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/SymbolPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->toStringTagSymbol, jsString(&vm, "Symbol"), DontEnum | ReadOnly);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION(vm.propertyNames->toPrimitiveSymbol, symbolProtoFuncValueOf, DontEnum | ReadOnly, 1);
</span><span class="cx"> }
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> if (!thisValue.isObject())
</span><span class="cx"> return throwVMTypeError(exec, scope, SymbolToStringTypeError);
</span><span class="cx"> JSObject* thisObject = asObject(thisValue);
</span><del>- if (!thisObject->inherits(SymbolObject::info()))
</del><ins>+ if (!thisObject->inherits(vm, SymbolObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope, SymbolToStringTypeError);
</span><span class="cx"> symbol = asSymbol(jsCast<SymbolObject*>(thisObject)->internalValue());
</span><span class="cx"> }
</span><span class="lines">@@ -104,7 +104,7 @@
</span><span class="cx"> return throwVMTypeError(exec, scope, SymbolValueOfTypeError);
</span><span class="cx">
</span><span class="cx"> JSObject* thisObject = asObject(thisValue);
</span><del>- if (!thisObject->inherits(SymbolObject::info()))
</del><ins>+ if (!thisObject->inherits(vm, SymbolObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope, SymbolValueOfTypeError);
</span><span class="cx">
</span><span class="cx"> return JSValue::encode(jsCast<SymbolObject*>(thisObject)->internalValue());
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTestRunnerUtilscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/TestRunnerUtils.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -36,11 +36,15 @@
</span><span class="cx">
</span><span class="cx"> FunctionExecutable* getExecutableForFunction(JSValue theFunctionValue)
</span><span class="cx"> {
</span><del>- JSFunction* theFunction = jsDynamicCast<JSFunction*>(theFunctionValue);
</del><ins>+ if (!theFunctionValue.isCell())
+ return nullptr;
+
+ VM& vm = *theFunctionValue.asCell()->vm();
+ JSFunction* theFunction = jsDynamicCast<JSFunction*>(vm, theFunctionValue);
</ins><span class="cx"> if (!theFunction)
</span><del>- return 0;
</del><ins>+ return nullptr;
</ins><span class="cx">
</span><del>- FunctionExecutable* executable = jsDynamicCast<FunctionExecutable*>(
</del><ins>+ FunctionExecutable* executable = jsDynamicCast<FunctionExecutable*>(vm,
</ins><span class="cx"> theFunction->executable());
</span><span class="cx"> return executable;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeThrowScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ThrowScope.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ThrowScope.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/ThrowScope.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -80,7 +80,7 @@
</span><span class="cx">
</span><span class="cx"> JSValue ThrowScope::throwException(ExecState* exec, JSValue error)
</span><span class="cx"> {
</span><del>- if (!error.isCell() || !jsDynamicCast<Exception*>(error.asCell()))
</del><ins>+ if (!error.isCell() || !jsDynamicCast<Exception*>(m_vm, error.asCell()))
</ins><span class="cx"> m_vm.verifyExceptionCheckNeedIsSatisfied(m_recursionDepth, m_location);
</span><span class="cx">
</span><span class="cx"> return m_vm.throwException(exec, error);
</span><span class="lines">@@ -88,7 +88,7 @@
</span><span class="cx">
</span><span class="cx"> JSObject* ThrowScope::throwException(ExecState* exec, JSObject* obj)
</span><span class="cx"> {
</span><del>- if (!jsDynamicCast<Exception*>(obj))
</del><ins>+ if (!jsDynamicCast<Exception*>(m_vm, obj))
</ins><span class="cx"> m_vm.verifyExceptionCheckNeedIsSatisfied(m_recursionDepth, m_location);
</span><span class="cx">
</span><span class="cx"> return m_vm.throwException(exec, obj);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeVMcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/VM.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/VM.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/VM.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -623,7 +623,8 @@
</span><span class="cx">
</span><span class="cx"> JSValue VM::throwException(ExecState* exec, JSValue thrownValue)
</span><span class="cx"> {
</span><del>- Exception* exception = jsDynamicCast<Exception*>(thrownValue);
</del><ins>+ VM& vm = exec->vm();
+ Exception* exception = jsDynamicCast<Exception*>(vm, thrownValue);
</ins><span class="cx"> if (!exception)
</span><span class="cx"> exception = Exception::create(*this, thrownValue);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakMapConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakMapConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakMapConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/WeakMapConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">
</span><span class="cx"> void WeakMapConstructor::finishCreation(VM& vm, WeakMapPrototype* prototype)
</span><span class="cx"> {
</span><del>- Base::finishCreation(vm, prototype->classInfo()->className);
</del><ins>+ Base::finishCreation(vm, prototype->classInfo(vm)->className);
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, DontEnum | DontDelete | ReadOnly);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), DontEnum | ReadOnly);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakMapPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakMapPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakMapPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/WeakMapPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -42,7 +42,7 @@
</span><span class="cx"> void WeakMapPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->deleteKeyword, protoFuncWeakMapDelete, DontEnum, 1);
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (JSWeakMap* weakMap = jsDynamicCast<JSWeakMap*>(value))
</del><ins>+ if (JSWeakMap* weakMap = jsDynamicCast<JSWeakMap*>(vm, value))
</ins><span class="cx"> return weakMap->weakMapData();
</span><span class="cx">
</span><span class="cx"> throwTypeError(callFrame, scope, WTF::ASCIILiteral("Called WeakMap function on a non-WeakMap object"));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakSetConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakSetConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakSetConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/WeakSetConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">
</span><span class="cx"> void WeakSetConstructor::finishCreation(VM& vm, WeakSetPrototype* prototype)
</span><span class="cx"> {
</span><del>- Base::finishCreation(vm, prototype->classInfo()->className);
</del><ins>+ Base::finishCreation(vm, prototype->classInfo(vm)->className);
</ins><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->prototype, prototype, DontEnum | DontDelete | ReadOnly);
</span><span class="cx"> putDirectWithoutTransition(vm, vm.propertyNames->length, jsNumber(0), DontEnum | ReadOnly);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakSetPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakSetPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakSetPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/runtime/WeakSetPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -41,7 +41,7 @@
</span><span class="cx"> void WeakSetPrototype::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> vm.prototypeMap.addPrototype(this);
</span><span class="cx">
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->deleteKeyword, protoFuncWeakSetDelete, DontEnum, 1);
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (JSWeakSet* weakSet = jsDynamicCast<JSWeakSet*>(value))
</del><ins>+ if (JSWeakSet* weakSet = jsDynamicCast<JSWeakSet*>(vm, value))
</ins><span class="cx"> return weakSet->weakMapData();
</span><span class="cx">
</span><span class="cx"> throwTypeError(callFrame, scope, WTF::ASCIILiteral("Called WeakSet function on a non-WeakSet object"));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsJSDollarVMPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -276,6 +276,7 @@
</span><span class="cx">
</span><span class="cx"> static CodeBlock* codeBlockFromArg(ExecState* exec)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> if (exec->argumentCount() < 1)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="lines">@@ -282,7 +283,7 @@
</span><span class="cx"> JSValue value = exec->uncheckedArgument(0);
</span><span class="cx"> CodeBlock* candidateCodeBlock = nullptr;
</span><span class="cx"> if (value.isCell()) {
</span><del>- JSFunction* func = jsDynamicCast<JSFunction*>(value.asCell());
</del><ins>+ JSFunction* func = jsDynamicCast<JSFunction*>(vm, value.asCell());
</ins><span class="cx"> if (func) {
</span><span class="cx"> if (func->isHostFunction())
</span><span class="cx"> candidateCodeBlock = nullptr;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmJSWebAssemblycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/JSWebAssembly.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/JSWebAssembly.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/JSWebAssembly.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> void JSWebAssembly::finishCreation(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION("validate", webAssemblyValidateFunc, DontEnum, 1);
</span><span class="cx"> JSC_NATIVE_FUNCTION_WITHOUT_TRANSITION("compile", webAssemblyCompileFunc, DontEnum, 1);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsJSWebAssemblyHelpersh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyHelpers.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -52,8 +52,8 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> // If the given bytes argument is not a BufferSource, a TypeError exception is thrown.
</span><del>- JSArrayBuffer* arrayBuffer = value.getObject() ? jsDynamicCast<JSArrayBuffer*>(value.getObject()) : nullptr;
- JSArrayBufferView* arrayBufferView = value.getObject() ? jsDynamicCast<JSArrayBufferView*>(value.getObject()) : nullptr;
</del><ins>+ JSArrayBuffer* arrayBuffer = value.getObject() ? jsDynamicCast<JSArrayBuffer*>(vm, value.getObject()) : nullptr;
+ JSArrayBufferView* arrayBufferView = value.getObject() ? jsDynamicCast<JSArrayBufferView*>(vm, value.getObject()) : nullptr;
</ins><span class="cx"> if (!(arrayBuffer || arrayBufferView)) {
</span><span class="cx"> throwException(exec, throwScope, createTypeError(exec,
</span><span class="cx"> ASCIILiteral("first argument must be an ArrayBufferView or an ArrayBuffer"), defaultSourceAppender, runtimeTypeForValue(value)));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsJSWebAssemblyInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyInstance.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -61,7 +61,7 @@
</span><span class="cx"> void JSWebAssemblyInstance::finishCreation(VM& vm, JSWebAssemblyModule* module, JSModuleNamespaceObject* moduleNamespaceObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> const size_t extraMemorySize = module->moduleInformation().globals.size() * sizeof(Register);
</span><span class="cx"> m_globals = MallocPtr<uint64_t>::malloc(extraMemorySize);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsJSWebAssemblyMemorycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -55,15 +55,6 @@
</span><span class="cx"> {
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSWebAssemblyMemory::~JSWebAssemblyMemory()
-{
- if (m_buffer) {
- ArrayBufferContents dummyContents;
- m_buffer->transferTo(dummyContents);
- m_buffer = nullptr;
- }
-}
-
</del><span class="cx"> JSArrayBuffer* JSWebAssemblyMemory::buffer(VM& vm, JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> if (m_bufferWrapper)
</span><span class="lines">@@ -114,7 +105,7 @@
</span><span class="cx"> // Neuter the old array.
</span><span class="cx"> if (m_buffer) {
</span><span class="cx"> ArrayBufferContents dummyContents;
</span><del>- m_buffer->transferTo(dummyContents);
</del><ins>+ m_buffer->transferTo(vm, dummyContents);
</ins><span class="cx"> m_buffer = nullptr;
</span><span class="cx"> m_bufferWrapper.clear();
</span><span class="cx"> }
</span><span class="lines">@@ -125,12 +116,22 @@
</span><span class="cx"> void JSWebAssemblyMemory::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSWebAssemblyMemory::destroy(JSCell* cell)
</span><span class="cx"> {
</span><del>- static_cast<JSWebAssemblyMemory*>(cell)->JSWebAssemblyMemory::~JSWebAssemblyMemory();
</del><ins>+ auto memory = static_cast<JSWebAssemblyMemory*>(cell);
+ ASSERT(memory->classInfo() == info());
+ VM& vm = *memory->vm();
+
+ if (memory->m_buffer) {
+ ArrayBufferContents dummyContents;
+ memory->m_buffer->transferTo(vm, dummyContents);
+ memory->m_buffer = nullptr;
+ }
+
+ memory->JSWebAssemblyMemory::~JSWebAssemblyMemory();
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSWebAssemblyMemory::visitChildren(JSCell* cell, SlotVisitor& visitor)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsJSWebAssemblyMemoryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyMemory.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -55,7 +55,6 @@
</span><span class="cx">
</span><span class="cx"> protected:
</span><span class="cx"> JSWebAssemblyMemory(VM&, Structure*, Wasm::Memory&&);
</span><del>- ~JSWebAssemblyMemory();
</del><span class="cx"> void finishCreation(VM&);
</span><span class="cx"> static void destroy(JSCell*);
</span><span class="cx"> static void visitChildren(JSCell*, SlotVisitor&);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsJSWebAssemblyModulecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyModule.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -63,7 +63,7 @@
</span><span class="cx"> void JSWebAssemblyModule::finishCreation(VM& vm, SymbolTable* exportSymbolTable)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> m_exportSymbolTable.set(vm, this, exportSymbolTable);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsJSWebAssemblyTablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/JSWebAssemblyTable.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> void JSWebAssemblyTable::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSWebAssemblyTable::destroy(JSCell* cell)
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -50,7 +50,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><del>- WebAssemblyFunction* wasmFunction = jsDynamicCast<WebAssemblyFunction*>(exec->jsCallee());
</del><ins>+ WebAssemblyFunction* wasmFunction = jsDynamicCast<WebAssemblyFunction*>(vm, exec->jsCallee());
</ins><span class="cx"> if (!wasmFunction)
</span><span class="cx"> return JSValue::encode(throwException(exec, scope, createTypeError(exec, "expected a WebAssembly function", defaultSourceAppender, runtimeTypeForValue(exec->jsCallee()))));
</span><span class="cx"> Wasm::SignatureIndex signatureIndex = wasmFunction->signatureIndex();
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> void WebAssemblyFunction::finishCreation(VM& vm, NativeExecutable* executable, unsigned length, const String& name, JSWebAssemblyInstance* instance, JSWebAssemblyCallee* jsEntrypoint, JSWebAssemblyCallee* wasmEntrypoint)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, executable, length, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> m_instance.set(vm, this, instance);
</span><span class="cx"> ASSERT(jsEntrypoint != wasmEntrypoint);
</span><span class="cx"> m_jsEntrypoint.set(vm, this, jsEntrypoint);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyInstanceConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstanceConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstanceConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyInstanceConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -60,7 +60,7 @@
</span><span class="cx"> auto* globalObject = exec->lexicalGlobalObject();
</span><span class="cx">
</span><span class="cx"> // If moduleObject is not a WebAssembly.Module instance, a TypeError is thrown.
</span><del>- JSWebAssemblyModule* jsModule = jsDynamicCast<JSWebAssemblyModule*>(exec->argument(0));
</del><ins>+ JSWebAssemblyModule* jsModule = jsDynamicCast<JSWebAssemblyModule*>(vm, exec->argument(0));
</ins><span class="cx"> if (!jsModule)
</span><span class="cx"> return JSValue::encode(throwException(exec, throwScope, createTypeError(exec, ASCIILiteral("first argument to WebAssembly.Instance must be a WebAssembly.Module"), defaultSourceAppender, runtimeTypeForValue(exec->argument(0)))));
</span><span class="cx"> const Wasm::ModuleInformation& moduleInformation = jsModule->moduleInformation();
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> return JSValue::encode(throwException(exec, throwScope, createJSWebAssemblyLinkError(exec, vm, ASCIILiteral("import function must be callable"))));
</span><span class="cx"> JSCell* cell = value.asCell();
</span><span class="cx"> // ii. If v is an Exported Function Exotic Object:
</span><del>- if (WebAssemblyFunction* importedExport = jsDynamicCast<WebAssemblyFunction*>(cell)) {
</del><ins>+ if (WebAssemblyFunction* importedExport = jsDynamicCast<WebAssemblyFunction*>(vm, cell)) {
</ins><span class="cx"> // a. If the signature of v does not match the signature of i, throw a WebAssembly.LinkError.
</span><span class="cx"> Wasm::SignatureIndex importedSignatureIndex = importedExport->signatureIndex();
</span><span class="cx"> Wasm::SignatureIndex expectedSignatureIndex = moduleInformation.importFunctionSignatureIndices[import.kindIndex];
</span><span class="lines">@@ -140,7 +140,7 @@
</span><span class="cx"> RELEASE_ASSERT(!hasTableImport); // This should be guaranteed by a validation failure.
</span><span class="cx"> // 7. Otherwise (i is a table import):
</span><span class="cx"> hasTableImport = true;
</span><del>- JSWebAssemblyTable* table = jsDynamicCast<JSWebAssemblyTable*>(value);
</del><ins>+ JSWebAssemblyTable* table = jsDynamicCast<JSWebAssemblyTable*>(vm, value);
</ins><span class="cx"> // i. If v is not a WebAssembly.Table object, throw a WebAssembly.LinkError.
</span><span class="cx"> if (!table)
</span><span class="cx"> return JSValue::encode(throwException(exec, throwScope, createJSWebAssemblyLinkError(exec, vm, ASCIILiteral("Table import is not an instance of WebAssembly.Table"))));
</span><span class="lines">@@ -172,7 +172,7 @@
</span><span class="cx"> RELEASE_ASSERT(!hasMemoryImport); // This should be guaranteed by a validation failure.
</span><span class="cx"> RELEASE_ASSERT(moduleInformation.memory);
</span><span class="cx"> hasMemoryImport = true;
</span><del>- JSWebAssemblyMemory* memory = jsDynamicCast<JSWebAssemblyMemory*>(value);
</del><ins>+ JSWebAssemblyMemory* memory = jsDynamicCast<JSWebAssemblyMemory*>(vm, value);
</ins><span class="cx"> // i. If v is not a WebAssembly.Memory object, throw a WebAssembly.LinkError.
</span><span class="cx"> if (!memory)
</span><span class="cx"> return JSValue::encode(throwException(exec, throwScope, createJSWebAssemblyLinkError(exec, vm, ASCIILiteral("Memory import is not an instance of WebAssembly.Memory"))));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyMemoryPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyMemoryPrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -58,7 +58,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSWebAssemblyMemory* memory = jsDynamicCast<JSWebAssemblyMemory*>(value);
</del><ins>+ JSWebAssemblyMemory* memory = jsDynamicCast<JSWebAssemblyMemory*>(vm, value);
</ins><span class="cx"> if (!memory) {
</span><span class="cx"> throwException(exec, throwScope,
</span><span class="cx"> createTypeError(exec, ASCIILiteral("WebAssembly.Memory.prototype.buffer getter called with non WebAssembly.Memory |this| value")));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyModulePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModulePrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -56,7 +56,7 @@
</span><span class="cx"> auto* globalObject = exec->lexicalGlobalObject();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSWebAssemblyModule* module = jsDynamicCast<JSWebAssemblyModule*>(exec->thisValue());
</del><ins>+ JSWebAssemblyModule* module = jsDynamicCast<JSWebAssemblyModule*>(vm, exec->thisValue());
</ins><span class="cx"> if (!module)
</span><span class="cx"> throwException(exec, throwScope, createTypeError(exec, ASCIILiteral("WebAssembly.Module.prototype.customSections called with non WebAssembly.Module |this| value")));
</span><span class="cx"> RETURN_IF_EXCEPTION(throwScope, { });
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyModuleRecordcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -71,7 +71,7 @@
</span><span class="cx"> void WebAssemblyModuleRecord::finishCreation(ExecState* exec, VM& vm, const Wasm::ModuleInformation& moduleInformation)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(exec, vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> for (const auto& exp : moduleInformation.exports)
</span><span class="cx"> addExportEntry(ExportEntry::createLocal(exp.field, exp.field));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorewasmjsWebAssemblyTablePrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/JavaScriptCore/wasm/js/WebAssemblyTablePrototype.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -47,7 +47,7 @@
</span><span class="cx"> static ALWAYS_INLINE JSWebAssemblyTable* getTable(ExecState* exec, VM& vm, JSValue v)
</span><span class="cx"> {
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSWebAssemblyTable* result = jsDynamicCast<JSWebAssemblyTable*>(v);
</del><ins>+ JSWebAssemblyTable* result = jsDynamicCast<JSWebAssemblyTable*>(vm, v);
</ins><span class="cx"> if (!result) {
</span><span class="cx"> throwException(exec, throwScope,
</span><span class="cx"> createTypeError(exec, ASCIILiteral("expected |this| value to be an instance of WebAssembly.Table")));
</span><span class="lines">@@ -120,7 +120,7 @@
</span><span class="cx"> RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
</span><span class="cx">
</span><span class="cx"> JSValue value = exec->argument(1);
</span><del>- WebAssemblyFunction* function = jsDynamicCast<WebAssemblyFunction*>(value);
</del><ins>+ WebAssemblyFunction* function = jsDynamicCast<WebAssemblyFunction*>(vm, value);
</ins><span class="cx"> if (!value.isNull() && !function) {
</span><span class="cx"> throwException(exec, throwScope,
</span><span class="cx"> createTypeError(exec, ASCIILiteral("WebAssembly.Table.prototype.set expects the second argument to be null or an instance of WebAssembly.Function")));
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/ChangeLog        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1,3 +1,423 @@
</span><ins>+2017-01-26 Keith Miller <keith_miller@apple.com>
+
+ classInfo should take a VM so it is not materialized from the object on each call
+ https://bugs.webkit.org/show_bug.cgi?id=167424
+
+ Rubber Stamped by Michael Saboff.
+
+ Previously, classInfo() would get the VM from the target's
+ MarkedBlock. Most callers already have a VM on hand, so it is
+ wasteful to compute the VM from the marked block every time. This
+ patch refactors some of the most common callers of classInfo(),
+ jsDynamicCast and inherits to take a VM as well.
+
+ * Modules/fetch/FetchBody.cpp:
+ (WebCore::FetchBody::extract):
+ * Modules/plugins/QuickTimePluginReplacement.mm:
+ (WebCore::QuickTimePluginReplacement::installReplacement):
+ * bindings/js/IDBBindingUtilities.cpp:
+ (WebCore::createIDBKeyFromValue):
+ * bindings/js/JSCommandLineAPIHostCustom.cpp:
+ (WebCore::JSCommandLineAPIHost::getEventListeners):
+ (WebCore::JSCommandLineAPIHost::databaseId):
+ (WebCore::JSCommandLineAPIHost::storageId):
+ * bindings/js/JSCryptoAlgorithmDictionary.cpp:
+ (WebCore::JSCryptoAlgorithmDictionary::parseAlgorithmIdentifier):
+ (WebCore::createRsaKeyGenParams):
+ * bindings/js/JSCryptoCustom.cpp:
+ (WebCore::JSCrypto::getRandomValues):
+ * bindings/js/JSCryptoOperationData.cpp:
+ (WebCore::cryptoOperationDataFromJSValue):
+ * bindings/js/JSCustomElementInterface.cpp:
+ (WebCore::constructCustomElementSynchronously):
+ (WebCore::JSCustomElementInterface::upgradeElement):
+ * bindings/js/JSDOMBinding.cpp:
+ (WebCore::valueToDate):
+ (WebCore::reportException):
+ (WebCore::retrieveErrorMessage):
+ * bindings/js/JSDOMBinding.h:
+ (WebCore::castThisValue):
+ (WebCore::toPossiblySharedArrayBufferView):
+ (WebCore::toUnsharedArrayBufferView):
+ (WebCore::toPossiblySharedInt8Array):
+ (WebCore::toPossiblySharedInt16Array):
+ (WebCore::toPossiblySharedInt32Array):
+ (WebCore::toPossiblySharedUint8Array):
+ (WebCore::toPossiblySharedUint8ClampedArray):
+ (WebCore::toPossiblySharedUint16Array):
+ (WebCore::toPossiblySharedUint32Array):
+ (WebCore::toPossiblySharedFloat32Array):
+ (WebCore::toPossiblySharedFloat64Array):
+ (WebCore::toUnsharedInt8Array):
+ (WebCore::toUnsharedInt16Array):
+ (WebCore::toUnsharedInt32Array):
+ (WebCore::toUnsharedUint8Array):
+ (WebCore::toUnsharedUint8ClampedArray):
+ (WebCore::toUnsharedUint16Array):
+ (WebCore::toUnsharedUint32Array):
+ (WebCore::toUnsharedFloat32Array):
+ (WebCore::toUnsharedFloat64Array):
+ (WebCore::toRefNativeArray):
+ * bindings/js/JSDOMConstructor.h:
+ (WebCore::JSDOMConstructorNotConstructable<JSClass>::finishCreation):
+ (WebCore::JSDOMConstructor<JSClass>::finishCreation):
+ (WebCore::JSDOMNamedConstructor<JSClass>::finishCreation):
+ (WebCore::JSBuiltinConstructor<JSClass>::finishCreation):
+ * bindings/js/JSDOMConvert.h:
+ (WebCore::Converter<IDLInterface<T>>::convert):
+ (WebCore::Converter<IDLXPathNSResolver<T>>::convert):
+ * bindings/js/JSDOMGlobalObject.cpp:
+ (WebCore::JSDOMGlobalObject::finishCreation):
+ (WebCore::JSDOMGlobalObject::scriptExecutionContext):
+ * bindings/js/JSDOMIterator.h:
+ (WebCore::IteratorTraits>::next):
+ (WebCore::IteratorTraits>::finishCreation):
+ * bindings/js/JSDOMWindowBase.cpp:
+ (WebCore::JSDOMWindowBase::finishCreation):
+ (WebCore::toJSDOMWindow):
+ * bindings/js/JSDOMWindowBase.h:
+ * bindings/js/JSDOMWindowCustom.cpp:
+ (WebCore::jsDOMWindowWebKit):
+ (WebCore::JSDOMWindow::toWrapped):
+ * bindings/js/JSDOMWindowShell.cpp:
+ (WebCore::JSDOMWindowShell::finishCreation):
+ (WebCore::JSDOMWindowShell::toWrapped):
+ * bindings/js/JSDOMWindowShell.h:
+ * bindings/js/JSDocumentCustom.cpp:
+ (WebCore::cachedDocumentWrapper):
+ (WebCore::JSDocument::createTouchList):
+ * bindings/js/JSDynamicDowncast.h:
+ (WebCore::JSDynamicCastTrait::cast):
+ (WebCore::JSDynamicCastTrait<JSNode>::cast):
+ (WebCore::JSDynamicCastTrait<JSElement>::cast):
+ (WebCore::JSDynamicCastTrait<JSDocument>::cast):
+ (WebCore::JSDynamicCastTrait<JSEvent>::cast):
+ (WebCore::jsDynamicDowncast):
+ * bindings/js/JSEventListener.cpp:
+ (WebCore::JSEventListener::handleEvent):
+ * bindings/js/JSEventTargetCustom.cpp:
+ (WebCore::JSEventTarget::toWrapped):
+ (WebCore::jsEventTargetCast):
+ * bindings/js/JSEventTargetCustom.h:
+ (WebCore::BindingCaller<JSEventTarget>::callOperation):
+ * bindings/js/JSExceptionBase.cpp:
+ (WebCore::toExceptionBase):
+ * bindings/js/JSExceptionBase.h:
+ * bindings/js/JSInspectorFrontendHostCustom.cpp:
+ (WebCore::populateContextMenuItems):
+ (WebCore::JSInspectorFrontendHost::showContextMenu):
+ * bindings/js/JSNodeCustom.cpp:
+ (WebCore::JSNode::insertBefore):
+ (WebCore::JSNode::replaceChild):
+ (WebCore::JSNode::removeChild):
+ (WebCore::JSNode::appendChild):
+ (WebCore::JSNode::pushEventHandlerScope):
+ * bindings/js/JSPluginElementFunctions.cpp:
+ (WebCore::pluginElementPropertyGetter):
+ * bindings/js/JSReadableStreamPrivateConstructors.cpp:
+ (WebCore::constructJSReadableStreamDefaultReader):
+ * bindings/js/JSReadableStreamSourceCustom.cpp:
+ (WebCore::startReadableStream):
+ (WebCore::JSReadableStreamSource::start):
+ (WebCore::pullReadableStream):
+ * bindings/js/JSSubtleCryptoCustom.cpp:
+ (WebCore::toCryptoKey):
+ (WebCore::jsSubtleCryptoFunctionEncryptPromise):
+ (WebCore::jsSubtleCryptoFunctionDecryptPromise):
+ (WebCore::jsSubtleCryptoFunctionSignPromise):
+ (WebCore::jsSubtleCryptoFunctionVerifyPromise):
+ (WebCore::jsSubtleCryptoFunctionDigestPromise):
+ (WebCore::jsSubtleCryptoFunctionWrapKeyPromise):
+ (WebCore::jsSubtleCryptoFunctionUnwrapKeyPromise):
+ * bindings/js/JSTrackCustom.cpp:
+ (WebCore::toTrack): Deleted.
+ * bindings/js/JSTrackCustom.h:
+ * bindings/js/JSWebKitSubtleCryptoCustom.cpp:
+ (WebCore::JSWebKitSubtleCrypto::encrypt):
+ (WebCore::JSWebKitSubtleCrypto::decrypt):
+ (WebCore::JSWebKitSubtleCrypto::sign):
+ (WebCore::JSWebKitSubtleCrypto::verify):
+ (WebCore::JSWebKitSubtleCrypto::exportKey):
+ (WebCore::JSWebKitSubtleCrypto::wrapKey):
+ (WebCore::JSWebKitSubtleCrypto::unwrapKey):
+ * bindings/js/JSWorkerGlobalScopeBase.cpp:
+ (WebCore::JSWorkerGlobalScopeBase::finishCreation):
+ (WebCore::toJSDedicatedWorkerGlobalScope):
+ (WebCore::toJSWorkerGlobalScope):
+ * bindings/js/JSWorkerGlobalScopeBase.h:
+ * bindings/js/JSXMLHttpRequestCustom.cpp:
+ (WebCore::JSXMLHttpRequest::send):
+ * bindings/js/JSXPathNSResolverCustom.cpp:
+ (WebCore::JSXPathNSResolver::toWrapped):
+ * bindings/js/ScriptController.cpp:
+ (WebCore::ScriptController::setupModuleScriptHandlers):
+ * bindings/js/ScriptModuleLoader.cpp:
+ (WebCore::ScriptModuleLoader::fetch):
+ (WebCore::ScriptModuleLoader::evaluate):
+ * bindings/js/ScriptState.cpp:
+ (WebCore::domWindowFromExecState):
+ (WebCore::scriptExecutionContextFromExecState):
+ * bindings/js/SerializedScriptValue.cpp:
+ (WebCore::CloneSerializer::isArray):
+ (WebCore::CloneSerializer::isMap):
+ (WebCore::CloneSerializer::isSet):
+ (WebCore::CloneSerializer::dumpArrayBufferView):
+ (WebCore::CloneSerializer::dumpIfTerminal):
+ (WebCore::CloneSerializer::serialize):
+ (WebCore::CloneDeserializer::CloneDeserializer):
+ (WebCore::CloneDeserializer::readArrayBufferView):
+ (WebCore::CloneDeserializer::readTerminal):
+ (WebCore::transferArrayBuffers):
+ (WebCore::SerializedScriptValue::create):
+ * bindings/js/StructuredClone.cpp:
+ (WebCore::structuredCloneArrayBuffer):
+ (WebCore::structuredCloneArrayBufferView):
+ * bindings/js/WorkerScriptController.cpp:
+ (WebCore::WorkerScriptController::evaluate):
+ * bindings/scripts/CodeGeneratorJS.pm:
+ (GenerateHeader):
+ (GenerateOverloadedFunctionOrConstructor):
+ (GenerateImplementation):
+ * bindings/scripts/test/JS/JSInterfaceName.cpp:
+ (WebCore::JSInterfaceName::finishCreation):
+ (WebCore::jsInterfaceNameConstructor):
+ (WebCore::setJSInterfaceNameConstructor):
+ (WebCore::JSInterfaceName::toWrapped):
+ * bindings/scripts/test/JS/JSInterfaceName.h:
+ * bindings/scripts/test/JS/JSTestActiveDOMObject.cpp:
+ (WebCore::JSTestActiveDOMObject::finishCreation):
+ (WebCore::BindingCaller<JSTestActiveDOMObject>::castForAttribute):
+ (WebCore::BindingCaller<JSTestActiveDOMObject>::castForOperation):
+ (WebCore::jsTestActiveDOMObjectConstructor):
+ (WebCore::setJSTestActiveDOMObjectConstructor):
+ (WebCore::JSTestActiveDOMObject::toWrapped):
+ * bindings/scripts/test/JS/JSTestActiveDOMObject.h:
+ * bindings/scripts/test/JS/JSTestCEReactions.cpp:
+ (WebCore::JSTestCEReactions::finishCreation):
+ (WebCore::BindingCaller<JSTestCEReactions>::castForAttribute):
+ (WebCore::BindingCaller<JSTestCEReactions>::castForOperation):
+ (WebCore::jsTestCEReactionsConstructor):
+ (WebCore::setJSTestCEReactionsConstructor):
+ (WebCore::JSTestCEReactions::toWrapped):
+ * bindings/scripts/test/JS/JSTestCEReactions.h:
+ * bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp:
+ (WebCore::JSTestCEReactionsStringifier::finishCreation):
+ (WebCore::BindingCaller<JSTestCEReactionsStringifier>::castForAttribute):
+ (WebCore::BindingCaller<JSTestCEReactionsStringifier>::castForOperation):
+ (WebCore::jsTestCEReactionsStringifierConstructor):
+ (WebCore::setJSTestCEReactionsStringifierConstructor):
+ (WebCore::JSTestCEReactionsStringifier::toWrapped):
+ * bindings/scripts/test/JS/JSTestCEReactionsStringifier.h:
+ * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp:
+ (WebCore::JSTestClassWithJSBuiltinConstructor::finishCreation):
+ (WebCore::jsTestClassWithJSBuiltinConstructorConstructor):
+ (WebCore::setJSTestClassWithJSBuiltinConstructorConstructor):
+ (WebCore::JSTestClassWithJSBuiltinConstructor::toWrapped):
+ * bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h:
+ * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp:
+ (WebCore::JSTestCustomConstructorWithNoInterfaceObject::finishCreation):
+ (WebCore::jsTestCustomConstructorWithNoInterfaceObjectConstructor):
+ (WebCore::setJSTestCustomConstructorWithNoInterfaceObjectConstructor):
+ (WebCore::JSTestCustomConstructorWithNoInterfaceObject::toWrapped):
+ * bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h:
+ * bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp:
+ (WebCore::JSTestCustomNamedGetter::finishCreation):
+ (WebCore::BindingCaller<JSTestCustomNamedGetter>::castForOperation):
+ (WebCore::jsTestCustomNamedGetterConstructor):
+ (WebCore::setJSTestCustomNamedGetterConstructor):
+ (WebCore::JSTestCustomNamedGetter::toWrapped):
+ * bindings/scripts/test/JS/JSTestCustomNamedGetter.h:
+ * bindings/scripts/test/JS/JSTestDOMJIT.cpp:
+ (WebCore::JSTestDOMJIT::finishCreation):
+ (WebCore::BindingCaller<JSTestDOMJIT>::castForAttribute):
+ (WebCore::BindingCaller<JSTestDOMJIT>::castForOperation):
+ (WebCore::jsTestDOMJITConstructor):
+ (WebCore::setJSTestDOMJITConstructor):
+ * bindings/scripts/test/JS/JSTestEventConstructor.cpp:
+ (WebCore::JSTestEventConstructor::finishCreation):
+ (WebCore::BindingCaller<JSTestEventConstructor>::castForAttribute):
+ (WebCore::jsTestEventConstructorConstructor):
+ (WebCore::setJSTestEventConstructorConstructor):
+ * bindings/scripts/test/JS/JSTestEventTarget.cpp:
+ (WebCore::JSTestEventTarget::finishCreation):
+ (WebCore::BindingCaller<JSTestEventTarget>::castForOperation):
+ (WebCore::jsTestEventTargetConstructor):
+ (WebCore::setJSTestEventTargetConstructor):
+ (WebCore::JSTestEventTarget::toWrapped):
+ * bindings/scripts/test/JS/JSTestEventTarget.h:
+ * bindings/scripts/test/JS/JSTestException.cpp:
+ (WebCore::JSTestException::finishCreation):
+ (WebCore::BindingCaller<JSTestException>::castForAttribute):
+ (WebCore::jsTestExceptionConstructor):
+ (WebCore::setJSTestExceptionConstructor):
+ (WebCore::JSTestException::toWrapped):
+ * bindings/scripts/test/JS/JSTestException.h:
+ * bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp:
+ (WebCore::JSTestGenerateIsReachable::finishCreation):
+ (WebCore::jsTestGenerateIsReachableConstructor):
+ (WebCore::setJSTestGenerateIsReachableConstructor):
+ (WebCore::JSTestGenerateIsReachable::toWrapped):
+ * bindings/scripts/test/JS/JSTestGenerateIsReachable.h:
+ * bindings/scripts/test/JS/JSTestGlobalObject.cpp:
+ (WebCore::JSTestGlobalObject::finishCreation):
+ (WebCore::BindingCaller<JSTestGlobalObject>::castForAttribute):
+ (WebCore::BindingCaller<JSTestGlobalObject>::castForOperation):
+ (WebCore::jsTestGlobalObjectConstructor):
+ (WebCore::setJSTestGlobalObjectConstructor):
+ (WebCore::JSTestGlobalObject::toWrapped):
+ * bindings/scripts/test/JS/JSTestGlobalObject.h:
+ * bindings/scripts/test/JS/JSTestInterface.cpp:
+ (WebCore::JSTestInterface::finishCreation):
+ (WebCore::BindingCaller<JSTestInterface>::castForAttribute):
+ (WebCore::BindingCaller<JSTestInterface>::castForOperation):
+ (WebCore::jsTestInterfaceConstructor):
+ (WebCore::setJSTestInterfaceConstructor):
+ (WebCore::JSTestInterface::toWrapped):
+ * bindings/scripts/test/JS/JSTestInterface.h:
+ * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp:
+ (WebCore::JSTestInterfaceLeadingUnderscore::finishCreation):
+ (WebCore::BindingCaller<JSTestInterfaceLeadingUnderscore>::castForAttribute):
+ (WebCore::jsTestInterfaceLeadingUnderscoreConstructor):
+ (WebCore::setJSTestInterfaceLeadingUnderscoreConstructor):
+ (WebCore::JSTestInterfaceLeadingUnderscore::toWrapped):
+ * bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h:
+ * bindings/scripts/test/JS/JSTestIterable.cpp:
+ (WebCore::JSTestIterable::finishCreation):
+ (WebCore::BindingCaller<JSTestIterable>::castForOperation):
+ (WebCore::jsTestIterableConstructor):
+ (WebCore::setJSTestIterableConstructor):
+ (WebCore::JSTestIterable::toWrapped):
+ * bindings/scripts/test/JS/JSTestIterable.h:
+ * bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp:
+ (WebCore::JSTestJSBuiltinConstructor::finishCreation):
+ (WebCore::BindingCaller<JSTestJSBuiltinConstructor>::castForAttribute):
+ (WebCore::BindingCaller<JSTestJSBuiltinConstructor>::castForOperation):
+ (WebCore::jsTestJSBuiltinConstructorConstructor):
+ (WebCore::setJSTestJSBuiltinConstructorConstructor):
+ * bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp:
+ (WebCore::JSTestMediaQueryListListener::finishCreation):
+ (WebCore::BindingCaller<JSTestMediaQueryListListener>::castForOperation):
+ (WebCore::jsTestMediaQueryListListenerConstructor):
+ (WebCore::setJSTestMediaQueryListListenerConstructor):
+ (WebCore::JSTestMediaQueryListListener::toWrapped):
+ * bindings/scripts/test/JS/JSTestMediaQueryListListener.h:
+ * bindings/scripts/test/JS/JSTestNamedConstructor.cpp:
+ (WebCore::JSTestNamedConstructor::finishCreation):
+ (WebCore::jsTestNamedConstructorConstructor):
+ (WebCore::setJSTestNamedConstructorConstructor):
+ (WebCore::JSTestNamedConstructor::toWrapped):
+ * bindings/scripts/test/JS/JSTestNamedConstructor.h:
+ * bindings/scripts/test/JS/JSTestNode.cpp:
+ (WebCore::JSTestNode::finishCreation):
+ (WebCore::BindingCaller<JSTestNode>::castForAttribute):
+ (WebCore::BindingCaller<JSTestNode>::castForOperation):
+ (WebCore::jsTestNodeConstructor):
+ (WebCore::setJSTestNodeConstructor):
+ * bindings/scripts/test/JS/JSTestObj.cpp:
+ (WebCore::JSTestObj::finishCreation):
+ (WebCore::BindingCaller<JSTestObj>::castForAttribute):
+ (WebCore::BindingCaller<JSTestObj>::castForOperation):
+ (WebCore::jsTestObjConstructor):
+ (WebCore::setJSTestObjConstructor):
+ (WebCore::jsTestObjPrototypeFunctionOverloadedMethod):
+ (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter):
+ (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion):
+ (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions):
+ (WebCore::jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion):
+ (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableUnion):
+ (WebCore::jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter):
+ (WebCore::jsTestObjPrototypeFunctionTestPromiseOverloadedFunction):
+ (WebCore::JSTestObj::toWrapped):
+ * bindings/scripts/test/JS/JSTestObj.h:
+ * bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp:
+ (WebCore::JSTestOverloadedConstructorsConstructor::construct):
+ (WebCore::JSTestOverloadedConstructors::finishCreation):
+ (WebCore::jsTestOverloadedConstructorsConstructor):
+ (WebCore::setJSTestOverloadedConstructorsConstructor):
+ (WebCore::JSTestOverloadedConstructors::toWrapped):
+ * bindings/scripts/test/JS/JSTestOverloadedConstructors.h:
+ * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp:
+ (WebCore::JSTestOverloadedConstructorsWithSequence::finishCreation):
+ (WebCore::jsTestOverloadedConstructorsWithSequenceConstructor):
+ (WebCore::setJSTestOverloadedConstructorsWithSequenceConstructor):
+ (WebCore::JSTestOverloadedConstructorsWithSequence::toWrapped):
+ * bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h:
+ * bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp:
+ (WebCore::JSTestOverrideBuiltins::finishCreation):
+ (WebCore::BindingCaller<JSTestOverrideBuiltins>::castForOperation):
+ (WebCore::jsTestOverrideBuiltinsConstructor):
+ (WebCore::setJSTestOverrideBuiltinsConstructor):
+ (WebCore::JSTestOverrideBuiltins::toWrapped):
+ * bindings/scripts/test/JS/JSTestOverrideBuiltins.h:
+ * bindings/scripts/test/JS/JSTestSerialization.cpp:
+ (WebCore::JSTestSerialization::finishCreation):
+ (WebCore::BindingCaller<JSTestSerialization>::castForAttribute):
+ (WebCore::BindingCaller<JSTestSerialization>::castForOperation):
+ (WebCore::jsTestSerializationConstructor):
+ (WebCore::setJSTestSerializationConstructor):
+ (WebCore::JSTestSerialization::toWrapped):
+ * bindings/scripts/test/JS/JSTestSerialization.h:
+ * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp:
+ (WebCore::JSTestSerializedScriptValueInterface::finishCreation):
+ (WebCore::BindingCaller<JSTestSerializedScriptValueInterface>::castForAttribute):
+ (WebCore::BindingCaller<JSTestSerializedScriptValueInterface>::castForOperation):
+ (WebCore::jsTestSerializedScriptValueInterfaceConstructor):
+ (WebCore::setJSTestSerializedScriptValueInterfaceConstructor):
+ (WebCore::JSTestSerializedScriptValueInterface::toWrapped):
+ * bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h:
+ * bindings/scripts/test/JS/JSTestTypedefs.cpp:
+ (WebCore::JSTestTypedefs::finishCreation):
+ (WebCore::BindingCaller<JSTestTypedefs>::castForAttribute):
+ (WebCore::BindingCaller<JSTestTypedefs>::castForOperation):
+ (WebCore::jsTestTypedefsConstructor):
+ (WebCore::setJSTestTypedefsConstructor):
+ (WebCore::JSTestTypedefs::toWrapped):
+ * bindings/scripts/test/JS/JSTestTypedefs.h:
+ * bridge/c/CRuntimeObject.cpp:
+ (JSC::Bindings::CRuntimeObject::finishCreation):
+ * bridge/c/c_instance.cpp:
+ (JSC::Bindings::CRuntimeMethod::finishCreation):
+ (JSC::Bindings::CInstance::invokeMethod):
+ * bridge/c/c_utility.cpp:
+ (JSC::Bindings::convertValueToNPVariant):
+ * bridge/objc/ObjCRuntimeObject.mm:
+ (JSC::Bindings::ObjCRuntimeObject::finishCreation):
+ * bridge/objc/WebScriptObject.mm:
+ (-[WebScriptObject setValue:forKey:]):
+ (+[WebScriptObject _convertValueToObjcValue:originRootObject:rootObject:]):
+ * bridge/objc/objc_instance.mm:
+ (ObjCRuntimeMethod::finishCreation):
+ (ObjcInstance::invokeMethod):
+ * bridge/objc/objc_runtime.mm:
+ (JSC::Bindings::ObjcFallbackObjectImp::finishCreation):
+ (JSC::Bindings::callObjCFallbackObject):
+ * bridge/runtime_array.cpp:
+ (JSC::RuntimeArray::finishCreation):
+ (JSC::RuntimeArray::lengthGetter):
+ * bridge/runtime_method.cpp:
+ (JSC::RuntimeMethod::finishCreation):
+ (JSC::RuntimeMethod::lengthGetter):
+ (JSC::callRuntimeMethod):
+ * bridge/runtime_object.cpp:
+ (JSC::Bindings::RuntimeObject::finishCreation):
+ (JSC::Bindings::callRuntimeObject):
+ (JSC::Bindings::callRuntimeConstructor):
+ * css/FontFace.cpp:
+ (WebCore::FontFace::create):
+ * html/HTMLMediaElement.cpp:
+ (WebCore::controllerJSValue):
+ (WebCore::HTMLMediaElement::updateCaptionContainer):
+ (WebCore::HTMLMediaElement::didAddUserAgentShadowRoot):
+ * inspector/InspectorController.cpp:
+ (WebCore::InspectorController::canAccessInspectedScriptState):
+ * inspector/InspectorDOMAgent.cpp:
+ (WebCore::InspectorDOMAgent::buildObjectForEventListener):
+ (WebCore::InspectorDOMAgent::scriptValueAsNode):
+ * inspector/WebInjectedScriptHost.cpp:
+ (WebCore::WebInjectedScriptHost::subtype):
+ (WebCore::WebInjectedScriptHost::isHTMLAllCollection):
+ * inspector/WebInjectedScriptHost.h:
+
</ins><span class="cx"> 2017-01-26 Dean Jackson <dino@apple.com>
</span><span class="cx">
</span><span class="cx"> WebGL content in Safari sticks to GPU that it was started on, sometimes causing extra battery drain and difficulty interacting with UI
</span></span></pre></div>
<a id="trunkSourceWebCoreModulesfetchFetchBodycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/fetch/FetchBody.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/fetch/FetchBody.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/Modules/fetch/FetchBody.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,14 +48,15 @@
</span><span class="cx">
</span><span class="cx"> std::optional<FetchBody> FetchBody::extract(ScriptExecutionContext& context, JSC::ExecState& state, JSC::JSValue value, String& contentType)
</span><span class="cx"> {
</span><del>- if (value.inherits(JSBlob::info())) {
- auto& blob = *JSBlob::toWrapped(value);
</del><ins>+ JSC::VM& vm = state.vm();
+ if (value.inherits(vm, JSBlob::info())) {
+ auto& blob = *JSBlob::toWrapped(vm, value);
</ins><span class="cx"> contentType = blob.type();
</span><span class="cx"> return FetchBody(blob);
</span><span class="cx"> }
</span><del>- if (value.inherits(JSDOMFormData::info())) {
</del><ins>+ if (value.inherits(vm, JSDOMFormData::info())) {
</ins><span class="cx"> ASSERT(!context.isWorkerGlobalScope());
</span><del>- auto& domFormData = *JSDOMFormData::toWrapped(value);
</del><ins>+ auto& domFormData = *JSDOMFormData::toWrapped(vm, value);
</ins><span class="cx"> auto formData = FormData::createMultiPart(domFormData, domFormData.encoding(), &static_cast<Document&>(context));
</span><span class="cx"> contentType = makeString("multipart/form-data; boundary=", formData->boundary().data());
</span><span class="cx"> return FetchBody(WTFMove(formData));
</span><span class="lines">@@ -64,22 +65,22 @@
</span><span class="cx"> contentType = HTTPHeaderValues::textPlainContentType();
</span><span class="cx"> return FetchBody(String { asString(value)->value(&state) });
</span><span class="cx"> }
</span><del>- if (value.inherits(JSURLSearchParams::info())) {
</del><ins>+ if (value.inherits(vm, JSURLSearchParams::info())) {
</ins><span class="cx"> contentType = HTTPHeaderValues::formURLEncodedContentType();
</span><del>- return FetchBody(*JSURLSearchParams::toWrapped(value));
</del><ins>+ return FetchBody(*JSURLSearchParams::toWrapped(vm, value));
</ins><span class="cx"> }
</span><del>- if (value.inherits(JSReadableStream::info())) {
</del><ins>+ if (value.inherits(vm, JSReadableStream::info())) {
</ins><span class="cx"> FetchBody body;
</span><span class="cx"> body.m_isReadableStream = true;
</span><span class="cx"> return WTFMove(body);
</span><span class="cx"> }
</span><del>- if (value.inherits(JSC::JSArrayBuffer::info())) {
- ArrayBuffer* data = toUnsharedArrayBuffer(value);
</del><ins>+ if (value.inherits(vm, JSC::JSArrayBuffer::info())) {
+ ArrayBuffer* data = toUnsharedArrayBuffer(vm, value);
</ins><span class="cx"> ASSERT(data);
</span><span class="cx"> return FetchBody(*data);
</span><span class="cx"> }
</span><del>- if (value.inherits(JSC::JSArrayBufferView::info()))
- return FetchBody(toUnsharedArrayBufferView(value).releaseConstNonNull());
</del><ins>+ if (value.inherits(vm, JSC::JSArrayBufferView::info()))
+ return FetchBody(toUnsharedArrayBufferView(vm, value).releaseConstNonNull());
</ins><span class="cx">
</span><span class="cx"> return std::nullopt;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCoreModulespluginsQuickTimePluginReplacementmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/Modules/plugins/QuickTimePluginReplacement.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -221,7 +221,7 @@
</span><span class="cx"> // Get the <video> created to replace the plug-in.
</span><span class="cx"> JSC::JSValue value = replacement.get(exec, JSC::Identifier::fromString(exec, "video"));
</span><span class="cx"> if (!scope.exception() && !value.isUndefinedOrNull())
</span><del>- m_mediaElement = JSHTMLVideoElement::toWrapped(value);
</del><ins>+ m_mediaElement = JSHTMLVideoElement::toWrapped(vm, value);
</ins><span class="cx">
</span><span class="cx"> if (!m_mediaElement) {
</span><span class="cx"> LOG(Plugins, "%p - Failed to find <video> element created by QuickTime plugin replacement script.", this);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsIDBBindingUtilitiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -144,6 +144,7 @@
</span><span class="cx">
</span><span class="cx"> static RefPtr<IDBKey> createIDBKeyFromValue(ExecState& exec, JSValue value, Vector<JSArray*>& stack)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec.vm();
</ins><span class="cx"> if (value.isNumber() && !std::isnan(value.toNumber(&exec)))
</span><span class="cx"> return IDBKey::createNumber(value.toNumber(&exec));
</span><span class="cx">
</span><span class="lines">@@ -150,12 +151,12 @@
</span><span class="cx"> if (value.isString())
</span><span class="cx"> return IDBKey::createString(asString(value)->value(&exec));
</span><span class="cx">
</span><del>- if (value.inherits(DateInstance::info()) && !std::isnan(valueToDate(&exec, value)))
</del><ins>+ if (value.inherits(vm, DateInstance::info()) && !std::isnan(valueToDate(&exec, value)))
</ins><span class="cx"> return IDBKey::createDate(valueToDate(&exec, value));
</span><span class="cx">
</span><span class="cx"> if (value.isObject()) {
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- if (isJSArray(object) || object->inherits(JSArray::info())) {
</del><ins>+ if (isJSArray(object) || object->inherits(vm, JSArray::info())) {
</ins><span class="cx"> JSArray* array = asArray(object);
</span><span class="cx"> size_t length = array->length();
</span><span class="cx">
</span><span class="lines">@@ -181,10 +182,10 @@
</span><span class="cx"> return IDBKey::createArray(subkeys);
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (auto* arrayBuffer = jsDynamicCast<JSArrayBuffer*>(value))
</del><ins>+ if (auto* arrayBuffer = jsDynamicCast<JSArrayBuffer*>(vm, value))
</ins><span class="cx"> return IDBKey::createBinary(*arrayBuffer);
</span><span class="cx">
</span><del>- if (auto* arrayBufferView = jsDynamicCast<JSArrayBufferView*>(value))
</del><ins>+ if (auto* arrayBufferView = jsDynamicCast<JSArrayBufferView*>(vm, value))
</ins><span class="cx"> return IDBKey::createBinary(*arrayBufferView);
</span><span class="cx"> }
</span><span class="cx"> return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCommandLineAPIHostCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -101,11 +101,12 @@
</span><span class="cx"> if (state.argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><ins>+ VM& vm = state.vm();
</ins><span class="cx"> JSValue value = state.uncheckedArgument(0);
</span><span class="cx"> if (!value.isObject() || value.isNull())
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><del>- Node* node = JSNode::toWrapped(value);
</del><ins>+ Node* node = JSNode::toWrapped(vm, value);
</ins><span class="cx"> if (!node)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><span class="lines">@@ -138,7 +139,8 @@
</span><span class="cx"> if (state.argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><del>- Database* database = JSDatabase::toWrapped(state.uncheckedArgument(0));
</del><ins>+ VM& vm = state.vm();
+ Database* database = JSDatabase::toWrapped(vm, state.uncheckedArgument(0));
</ins><span class="cx"> if (database)
</span><span class="cx"> return jsStringWithCache(&state, wrapped().databaseIdImpl(database));
</span><span class="cx">
</span><span class="lines">@@ -150,7 +152,8 @@
</span><span class="cx"> if (state.argumentCount() < 1)
</span><span class="cx"> return jsUndefined();
</span><span class="cx">
</span><del>- Storage* storage = JSStorage::toWrapped(state.uncheckedArgument(0));
</del><ins>+ VM& vm = state.vm();
+ Storage* storage = JSStorage::toWrapped(vm, state.uncheckedArgument(0));
</ins><span class="cx"> if (storage)
</span><span class="cx"> return jsStringWithCache(&state, wrapped().storageIdImpl(storage));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCryptoAlgorithmDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -57,12 +57,13 @@
</span><span class="cx"> // typedef (Algorithm or DOMString) AlgorithmIdentifier;
</span><span class="cx">
</span><span class="cx"> String algorithmName;
</span><ins>+ VM& vm = state.vm();
</ins><span class="cx">
</span><span class="cx"> if (value.isString()) {
</span><span class="cx"> algorithmName = asString(value)->value(&state);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx"> } else if (value.isObject()) {
</span><del>- if (asObject(value)->inherits(StringObject::info())) {
</del><ins>+ if (asObject(value)->inherits(vm, StringObject::info())) {
</ins><span class="cx"> algorithmName = asStringObject(value)->internalValue()->value(&state);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx"> } else {
</span><span class="lines">@@ -210,7 +211,8 @@
</span><span class="cx">
</span><span class="cx"> static RefPtr<CryptoAlgorithmParametersDeprecated> createRsaKeyGenParams(ExecState& state, JSValue value)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(state.vm());
</del><ins>+ VM& vm = state.vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx">
</span><span class="cx"> if (!value.isObject()) {
</span><span class="cx"> throwTypeError(&state, scope);
</span><span class="lines">@@ -229,7 +231,7 @@
</span><span class="cx"> auto publicExponentValue = getProperty(state, asObject(value), "publicExponent");
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, nullptr);
</span><span class="cx">
</span><del>- auto publicExponentArray = toUnsharedUint8Array(publicExponentValue);
</del><ins>+ auto publicExponentArray = toUnsharedUint8Array(vm, publicExponentValue);
</ins><span class="cx"> if (!publicExponentArray) {
</span><span class="cx"> throwTypeError(&state, scope, ASCIILiteral("Expected a Uint8Array in publicExponent"));
</span><span class="cx"> return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSCryptoCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> return throwException(&state, scope, createNotEnoughArgumentsError(&state));
</span><span class="cx">
</span><span class="cx"> JSValue buffer = state.argument(0);
</span><del>- auto arrayBufferView = toUnsharedArrayBufferView(buffer);
</del><ins>+ auto arrayBufferView = toUnsharedArrayBufferView(vm, buffer);
</ins><span class="cx"> if (!arrayBufferView)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCryptoOperationDatacpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoOperationData.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoOperationData.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSCryptoOperationData.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -36,10 +36,11 @@
</span><span class="cx">
</span><span class="cx"> CryptoOperationData cryptoOperationDataFromJSValue(ExecState& state, ThrowScope& scope, JSValue value)
</span><span class="cx"> {
</span><del>- if (auto* buffer = toUnsharedArrayBuffer(value))
</del><ins>+ VM& vm = state.vm();
+ if (auto* buffer = toUnsharedArrayBuffer(vm, value))
</ins><span class="cx"> return { static_cast<uint8_t*>(buffer->data()), buffer->byteLength() };
</span><span class="cx">
</span><del>- if (auto bufferView = toUnsharedArrayBufferView(value))
</del><ins>+ if (auto bufferView = toUnsharedArrayBufferView(vm, value))
</ins><span class="cx"> return { static_cast<uint8_t*>(bufferView->baseAddress()), bufferView->byteLength() };
</span><span class="cx">
</span><span class="cx"> throwTypeError(&state, scope, ASCIILiteral("Only ArrayBuffer and ArrayBufferView objects can be passed as CryptoOperationData"));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCustomElementInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCustomElementInterface.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCustomElementInterface.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSCustomElementInterface.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, nullptr);
</span><span class="cx">
</span><span class="cx"> ASSERT(!newElement.isEmpty());
</span><del>- HTMLElement* wrappedElement = JSHTMLElement::toWrapped(newElement);
</del><ins>+ HTMLElement* wrappedElement = JSHTMLElement::toWrapped(vm, newElement);
</ins><span class="cx"> if (!wrappedElement) {
</span><span class="cx"> throwTypeError(&state, scope, ASCIILiteral("The result of constructing a custom element must be a HTMLElement"));
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -210,7 +210,7 @@
</span><span class="cx"> return;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- Element* wrappedElement = JSElement::toWrapped(returnedElement);
</del><ins>+ Element* wrappedElement = JSElement::toWrapped(vm, returnedElement);
</ins><span class="cx"> if (!wrappedElement || wrappedElement != &element) {
</span><span class="cx"> element.setIsFailedCustomElement(*this);
</span><span class="cx"> reportException(state, createDOMException(state, INVALID_STATE_ERR, "Custom element constructor failed to upgrade an element"));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -179,7 +179,7 @@
</span><span class="cx"> {
</span><span class="cx"> if (value.isNumber())
</span><span class="cx"> return value.asNumber();
</span><del>- if (!value.inherits(DateInstance::info()))
</del><ins>+ if (!value.inherits(exec->vm(), DateInstance::info()))
</ins><span class="cx"> return std::numeric_limits<double>::quiet_NaN();
</span><span class="cx"> return static_cast<DateInstance*>(value.toObject(exec))->internalNumber();
</span><span class="cx"> }
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> RELEASE_ASSERT(vm.currentThreadIsHoldingAPILock());
</span><del>- auto* exception = jsDynamicDowncast<JSC::Exception*>(exceptionValue);
</del><ins>+ auto* exception = jsDynamicDowncast<JSC::Exception*>(vm, exceptionValue);
</ins><span class="cx"> if (!exception) {
</span><span class="cx"> exception = vm.lastException();
</span><span class="cx"> if (!exception)
</span><span class="lines">@@ -200,13 +200,13 @@
</span><span class="cx">
</span><span class="cx"> String retrieveErrorMessage(ExecState& state, VM& vm, JSValue exception, CatchScope& catchScope)
</span><span class="cx"> {
</span><del>- if (auto* exceptionBase = toExceptionBase(exception))
</del><ins>+ if (auto* exceptionBase = toExceptionBase(vm, exception))
</ins><span class="cx"> return exceptionBase->toString();
</span><span class="cx">
</span><span class="cx"> // FIXME: <http://webkit.org/b/115087> Web Inspector: WebCore::reportException should not evaluate JavaScript handling exceptions
</span><span class="cx"> // If this is a custom exception object, call toString on it to try and get a nice string representation for the exception.
</span><span class="cx"> String errorMessage;
</span><del>- if (auto* error = jsDynamicDowncast<ErrorInstance*>(exception))
</del><ins>+ if (auto* error = jsDynamicDowncast<ErrorInstance*>(vm, exception))
</ins><span class="cx"> errorMessage = error->sanitizedToString(&state);
</span><span class="cx"> else
</span><span class="cx"> errorMessage = exception.toWTFString(&state);
</span><span class="lines">@@ -224,7 +224,7 @@
</span><span class="cx"> auto scope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> RELEASE_ASSERT(vm.currentThreadIsHoldingAPILock());
</span><del>- if (isTerminatedExecutionException(exception))
</del><ins>+ if (isTerminatedExecutionException(vm, exception))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> ErrorHandlingScope errorScope(exec->vm());
</span><span class="lines">@@ -234,7 +234,7 @@
</span><span class="cx"> vm.clearLastException();
</span><span class="cx">
</span><span class="cx"> JSDOMGlobalObject* globalObject = jsCast<JSDOMGlobalObject*>(exec->lexicalGlobalObject());
</span><del>- if (JSDOMWindow* window = jsDynamicDowncast<JSDOMWindow*>(globalObject)) {
</del><ins>+ if (JSDOMWindow* window = jsDynamicDowncast<JSDOMWindow*>(vm, globalObject)) {
</ins><span class="cx"> if (!window->wrapped().isCurrentlyDisplayedInFrame())
</span><span class="cx"> return;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -271,27 +271,27 @@
</span><span class="cx"> template<typename T> JSC::JSValue toJSIterator(JSC::ExecState&, JSDOMGlobalObject&, const T&);
</span><span class="cx"> JSC::JSValue toJSIteratorEnd(JSC::ExecState&);
</span><span class="cx">
</span><del>-RefPtr<JSC::ArrayBufferView> toPossiblySharedArrayBufferView(JSC::JSValue);
-RefPtr<JSC::Int8Array> toPossiblySharedInt8Array(JSC::JSValue);
-RefPtr<JSC::Int16Array> toPossiblySharedInt16Array(JSC::JSValue);
-RefPtr<JSC::Int32Array> toPossiblySharedInt32Array(JSC::JSValue);
-RefPtr<JSC::Uint8Array> toPossiblySharedUint8Array(JSC::JSValue);
-RefPtr<JSC::Uint8ClampedArray> toPossiblySharedUint8ClampedArray(JSC::JSValue);
-RefPtr<JSC::Uint16Array> toPossiblySharedUint16Array(JSC::JSValue);
-RefPtr<JSC::Uint32Array> toPossiblySharedUint32Array(JSC::JSValue);
-RefPtr<JSC::Float32Array> toPossiblySharedFloat32Array(JSC::JSValue);
-RefPtr<JSC::Float64Array> toPossiblySharedFloat64Array(JSC::JSValue);
</del><ins>+RefPtr<JSC::ArrayBufferView> toPossiblySharedArrayBufferView(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Int8Array> toPossiblySharedInt8Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Int16Array> toPossiblySharedInt16Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Int32Array> toPossiblySharedInt32Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Uint8Array> toPossiblySharedUint8Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Uint8ClampedArray> toPossiblySharedUint8ClampedArray(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Uint16Array> toPossiblySharedUint16Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Uint32Array> toPossiblySharedUint32Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Float32Array> toPossiblySharedFloat32Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Float64Array> toPossiblySharedFloat64Array(JSC::VM&, JSC::JSValue);
</ins><span class="cx">
</span><del>-RefPtr<JSC::ArrayBufferView> toUnsharedArrayBufferView(JSC::JSValue);
-RefPtr<JSC::Int8Array> toUnsharedInt8Array(JSC::JSValue);
-RefPtr<JSC::Int16Array> toUnsharedInt16Array(JSC::JSValue);
-RefPtr<JSC::Int32Array> toUnsharedInt32Array(JSC::JSValue);
-RefPtr<JSC::Uint8Array> toUnsharedUint8Array(JSC::JSValue);
-RefPtr<JSC::Uint8ClampedArray> toUnsharedUint8ClampedArray(JSC::JSValue);
-RefPtr<JSC::Uint16Array> toUnsharedUint16Array(JSC::JSValue);
-RefPtr<JSC::Uint32Array> toUnsharedUint32Array(JSC::JSValue);
-RefPtr<JSC::Float32Array> toUnsharedFloat32Array(JSC::JSValue);
-RefPtr<JSC::Float64Array> toUnsharedFloat64Array(JSC::JSValue);
</del><ins>+RefPtr<JSC::ArrayBufferView> toUnsharedArrayBufferView(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Int8Array> toUnsharedInt8Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Int16Array> toUnsharedInt16Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Int32Array> toUnsharedInt32Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Uint8Array> toUnsharedUint8Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Uint8ClampedArray> toUnsharedUint8ClampedArray(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Uint16Array> toUnsharedUint16Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Uint32Array> toUnsharedUint32Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Float32Array> toUnsharedFloat32Array(JSC::VM&, JSC::JSValue);
+RefPtr<JSC::Float64Array> toUnsharedFloat64Array(JSC::VM&, JSC::JSValue);
</ins><span class="cx">
</span><span class="cx"> template<typename T, typename JSType> Vector<Ref<T>> toRefNativeArray(JSC::ExecState&, JSC::JSValue);
</span><span class="cx"> WEBCORE_EXPORT bool hasIteratorMethod(JSC::ExecState&, JSC::JSValue);
</span><span class="lines">@@ -567,7 +567,7 @@
</span><span class="cx"> template<typename JSClass> inline JSClass& castThisValue(JSC::ExecState& state)
</span><span class="cx"> {
</span><span class="cx"> auto thisValue = state.thisValue();
</span><del>- auto castedThis = jsDynamicDowncast<JSClass*>(thisValue);
</del><ins>+ auto castedThis = jsDynamicDowncast<JSClass*>(state.vm(), thisValue);
</ins><span class="cx"> ASSERT(castedThis);
</span><span class="cx"> return *castedThis;
</span><span class="cx"> }
</span><span class="lines">@@ -691,41 +691,41 @@
</span><span class="cx"> return createIteratorResultObject(&state, JSC::jsUndefined(), true);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline RefPtr<JSC::ArrayBufferView> toPossiblySharedArrayBufferView(JSC::JSValue value)
</del><ins>+inline RefPtr<JSC::ArrayBufferView> toPossiblySharedArrayBufferView(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- auto* wrapper = jsDynamicDowncast<JSC::JSArrayBufferView*>(value);
</del><ins>+ auto* wrapper = jsDynamicDowncast<JSC::JSArrayBufferView*>(vm, value);
</ins><span class="cx"> if (!wrapper)
</span><span class="cx"> return nullptr;
</span><span class="cx"> return wrapper->possiblySharedImpl();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline RefPtr<JSC::ArrayBufferView> toUnsharedArrayBufferView(JSC::JSValue value)
</del><ins>+inline RefPtr<JSC::ArrayBufferView> toUnsharedArrayBufferView(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- auto result = toPossiblySharedArrayBufferView(value);
</del><ins>+ auto result = toPossiblySharedArrayBufferView(vm, value);
</ins><span class="cx"> if (!result || result->isShared())
</span><span class="cx"> return nullptr;
</span><span class="cx"> return result;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-inline RefPtr<JSC::Int8Array> toPossiblySharedInt8Array(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Int8Adaptor>(value); }
-inline RefPtr<JSC::Int16Array> toPossiblySharedInt16Array(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Int16Adaptor>(value); }
-inline RefPtr<JSC::Int32Array> toPossiblySharedInt32Array(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Int32Adaptor>(value); }
-inline RefPtr<JSC::Uint8Array> toPossiblySharedUint8Array(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Uint8Adaptor>(value); }
-inline RefPtr<JSC::Uint8ClampedArray> toPossiblySharedUint8ClampedArray(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Uint8ClampedAdaptor>(value); }
-inline RefPtr<JSC::Uint16Array> toPossiblySharedUint16Array(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Uint16Adaptor>(value); }
-inline RefPtr<JSC::Uint32Array> toPossiblySharedUint32Array(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Uint32Adaptor>(value); }
-inline RefPtr<JSC::Float32Array> toPossiblySharedFloat32Array(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Float32Adaptor>(value); }
-inline RefPtr<JSC::Float64Array> toPossiblySharedFloat64Array(JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Float64Adaptor>(value); }
</del><ins>+inline RefPtr<JSC::Int8Array> toPossiblySharedInt8Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Int8Adaptor>(vm, value); }
+inline RefPtr<JSC::Int16Array> toPossiblySharedInt16Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Int16Adaptor>(vm, value); }
+inline RefPtr<JSC::Int32Array> toPossiblySharedInt32Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Int32Adaptor>(vm, value); }
+inline RefPtr<JSC::Uint8Array> toPossiblySharedUint8Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Uint8Adaptor>(vm, value); }
+inline RefPtr<JSC::Uint8ClampedArray> toPossiblySharedUint8ClampedArray(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Uint8ClampedAdaptor>(vm, value); }
+inline RefPtr<JSC::Uint16Array> toPossiblySharedUint16Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Uint16Adaptor>(vm, value); }
+inline RefPtr<JSC::Uint32Array> toPossiblySharedUint32Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Uint32Adaptor>(vm, value); }
+inline RefPtr<JSC::Float32Array> toPossiblySharedFloat32Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Float32Adaptor>(vm, value); }
+inline RefPtr<JSC::Float64Array> toPossiblySharedFloat64Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toPossiblySharedNativeTypedView<JSC::Float64Adaptor>(vm, value); }
</ins><span class="cx">
</span><del>-inline RefPtr<JSC::Int8Array> toUnsharedInt8Array(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Int8Adaptor>(value); }
-inline RefPtr<JSC::Int16Array> toUnsharedInt16Array(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Int16Adaptor>(value); }
-inline RefPtr<JSC::Int32Array> toUnsharedInt32Array(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Int32Adaptor>(value); }
-inline RefPtr<JSC::Uint8Array> toUnsharedUint8Array(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Uint8Adaptor>(value); }
-inline RefPtr<JSC::Uint8ClampedArray> toUnsharedUint8ClampedArray(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Uint8ClampedAdaptor>(value); }
-inline RefPtr<JSC::Uint16Array> toUnsharedUint16Array(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Uint16Adaptor>(value); }
-inline RefPtr<JSC::Uint32Array> toUnsharedUint32Array(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Uint32Adaptor>(value); }
-inline RefPtr<JSC::Float32Array> toUnsharedFloat32Array(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Float32Adaptor>(value); }
-inline RefPtr<JSC::Float64Array> toUnsharedFloat64Array(JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Float64Adaptor>(value); }
</del><ins>+inline RefPtr<JSC::Int8Array> toUnsharedInt8Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Int8Adaptor>(vm, value); }
+inline RefPtr<JSC::Int16Array> toUnsharedInt16Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Int16Adaptor>(vm, value); }
+inline RefPtr<JSC::Int32Array> toUnsharedInt32Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Int32Adaptor>(vm, value); }
+inline RefPtr<JSC::Uint8Array> toUnsharedUint8Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Uint8Adaptor>(vm, value); }
+inline RefPtr<JSC::Uint8ClampedArray> toUnsharedUint8ClampedArray(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Uint8ClampedAdaptor>(vm, value); }
+inline RefPtr<JSC::Uint16Array> toUnsharedUint16Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Uint16Adaptor>(vm, value); }
+inline RefPtr<JSC::Uint32Array> toUnsharedUint32Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Uint32Adaptor>(vm, value); }
+inline RefPtr<JSC::Float32Array> toUnsharedFloat32Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Float32Adaptor>(vm, value); }
+inline RefPtr<JSC::Float64Array> toUnsharedFloat64Array(JSC::VM& vm, JSC::JSValue value) { return JSC::toUnsharedNativeTypedView<JSC::Float64Adaptor>(vm, value); }
</ins><span class="cx">
</span><span class="cx"> template<typename T, typename JST> inline Vector<Ref<T>> toRefNativeArray(JSC::ExecState& state, JSC::JSValue value)
</span><span class="cx"> {
</span><span class="lines">@@ -741,8 +741,8 @@
</span><span class="cx"> forEachInIterable(&state, value, [&result](JSC::VM& vm, JSC::ExecState* state, JSC::JSValue jsValue) {
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- if (jsValue.inherits(JST::info())) {
- auto* object = JST::toWrapped(jsValue);
</del><ins>+ if (jsValue.inherits(vm, JST::info())) {
+ auto* object = JST::toWrapped(vm, jsValue);
</ins><span class="cx"> ASSERT(object);
</span><span class="cx"> result.append(*object);
</span><span class="cx"> } else
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMConstructor.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMConstructor.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMConstructor.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -146,7 +146,7 @@
</span><span class="cx"> template<typename JSClass> inline void JSDOMConstructorNotConstructable<JSClass>::finishCreation(JSC::VM& vm, JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> initializeProperties(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -165,7 +165,7 @@
</span><span class="cx"> template<typename JSClass> inline void JSDOMConstructor<JSClass>::finishCreation(JSC::VM& vm, JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> initializeProperties(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx"> template<typename JSClass> inline void JSDOMNamedConstructor<JSClass>::finishCreation(JSC::VM& vm, JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(globalObject);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> initializeProperties(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -215,7 +215,7 @@
</span><span class="cx"> template<typename JSClass> inline void JSBuiltinConstructor<JSClass>::finishCreation(JSC::VM& vm, JSDOMGlobalObject& globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> setInitializeFunction(vm, *JSC::JSFunction::createBuiltinFunction(vm, initializeExecutable(vm), &globalObject));
</span><span class="cx"> initializeProperties(vm, globalObject);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMConverth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMConvert.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMConvert.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMConvert.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -439,7 +439,7 @@
</span><span class="cx"> {
</span><span class="cx"> JSC::VM& vm = state.vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><del>- ReturnType object = WrapperType::toWrapped(value);
</del><ins>+ ReturnType object = WrapperType::toWrapped(vm, value);
</ins><span class="cx"> if (UNLIKELY(!object))
</span><span class="cx"> exceptionThrower(state, scope);
</span><span class="cx"> return object;
</span><span class="lines">@@ -1516,7 +1516,8 @@
</span><span class="cx">
</span><span class="cx"> static ReturnType convert(JSC::ExecState& state, JSC::JSValue value)
</span><span class="cx"> {
</span><del>- auto scope = DECLARE_THROW_SCOPE(state.vm());
</del><ins>+ JSC::VM& vm = state.vm();
+ auto scope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx">
</span><span class="cx"> // 1. If the union type includes a nullable type and V is null or undefined, then return the IDL value null.
</span><span class="cx"> constexpr bool hasNullType = brigand::any<TypeList, std::is_same<IDLNull, brigand::_1>>::value;
</span><span class="lines">@@ -1556,7 +1557,7 @@
</span><span class="cx"> using RawType = typename Type::RawType;
</span><span class="cx"> using WrapperType = typename JSDOMWrapperConverterTraits<RawType>::WrapperClass;
</span><span class="cx">
</span><del>- auto castedValue = WrapperType::toWrapped(value);
</del><ins>+ auto castedValue = WrapperType::toWrapped(vm, value);
</ins><span class="cx"> if (!castedValue)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="lines">@@ -1773,7 +1774,7 @@
</span><span class="cx"> {
</span><span class="cx"> JSC::VM& vm = state.vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><del>- ReturnType object = WrapperType::toWrapped(state, value);
</del><ins>+ ReturnType object = WrapperType::toWrapped(vm, state, value);
</ins><span class="cx"> if (UNLIKELY(!object))
</span><span class="cx"> exceptionThrower(state, scope);
</span><span class="cx"> return object;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMGlobalObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -158,7 +158,7 @@
</span><span class="cx"> void JSDOMGlobalObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> addBuiltinGlobals(vm);
</span><span class="cx">
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> void JSDOMGlobalObject::finishCreation(VM& vm, JSObject* thisValue)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, thisValue);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> addBuiltinGlobals(vm);
</span><span class="cx">
</span><span class="lines">@@ -177,9 +177,9 @@
</span><span class="cx">
</span><span class="cx"> ScriptExecutionContext* JSDOMGlobalObject::scriptExecutionContext() const
</span><span class="cx"> {
</span><del>- if (inherits(JSDOMWindowBase::info()))
</del><ins>+ if (inherits(vm(), JSDOMWindowBase::info()))
</ins><span class="cx"> return jsCast<const JSDOMWindowBase*>(this)->scriptExecutionContext();
</span><del>- if (inherits(JSWorkerGlobalScopeBase::info()))
</del><ins>+ if (inherits(vm(), JSWorkerGlobalScopeBase::info()))
</ins><span class="cx"> return jsCast<const JSWorkerGlobalScopeBase*>(this)->scriptExecutionContext();
</span><span class="cx"> dataLog("Unexpected global object: ", JSValue(this), "\n");
</span><span class="cx"> RELEASE_ASSERT_NOT_REACHED();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMIteratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMIterator.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMIterator.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMIterator.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -247,7 +247,7 @@
</span><span class="cx"> JSC::VM& vm = state->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- auto iterator = jsDynamicDowncast<JSDOMIterator<JSWrapper, IteratorTraits>*>(state->thisValue());
</del><ins>+ auto iterator = jsDynamicDowncast<JSDOMIterator<JSWrapper, IteratorTraits>*>(vm, state->thisValue());
</ins><span class="cx"> if (!iterator)
</span><span class="cx"> return JSC::JSValue::encode(throwTypeError(state, scope, ASCIILiteral("Cannot call next() on a non-Iterator object")));
</span><span class="cx">
</span><span class="lines">@@ -258,7 +258,7 @@
</span><span class="cx"> void JSDOMIteratorPrototype<JSWrapper, IteratorTraits>::finishCreation(JSC::VM& vm, JSC::JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> JSC_NATIVE_INTRINSIC_FUNCTION_WITHOUT_TRANSITION(vm.propertyNames->next, next, 0, 0, JSC::NoIntrinsic);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowBase.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -83,7 +83,7 @@
</span><span class="cx"> void JSDOMWindowBase::finishCreation(VM& vm, JSDOMWindowShell* shell)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, shell);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> GlobalPropertyInfo staticGlobals[] = {
</span><span class="cx"> GlobalPropertyInfo(vm.propertyNames->document, jsNull(), DontDelete | ReadOnly),
</span><span class="lines">@@ -269,13 +269,14 @@
</span><span class="cx"> return frame->script().windowShell(world)->window();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSDOMWindow* toJSDOMWindow(JSValue value)
</del><ins>+JSDOMWindow* toJSDOMWindow(JSC::VM& vm, JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> if (!value.isObject())
</span><span class="cx"> return 0;
</span><ins>+
</ins><span class="cx"> while (!value.isNull()) {
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- const ClassInfo* classInfo = object->classInfo();
</del><ins>+ const ClassInfo* classInfo = object->classInfo(vm);
</ins><span class="cx"> if (classInfo == JSDOMWindow::info())
</span><span class="cx"> return jsCast<JSDOMWindow*>(object);
</span><span class="cx"> if (classInfo == JSDOMWindowShell::info())
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowBase.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -94,6 +94,6 @@
</span><span class="cx">
</span><span class="cx"> // Returns JSDOMWindow or 0
</span><span class="cx"> JSDOMWindow* toJSDOMWindow(Frame*, DOMWrapperWorld&);
</span><del>- WEBCORE_EXPORT JSDOMWindow* toJSDOMWindow(JSC::JSValue);
</del><ins>+ WEBCORE_EXPORT JSDOMWindow* toJSDOMWindow(JSC::VM&, JSC::JSValue);
</ins><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -62,7 +62,8 @@
</span><span class="cx"> #if ENABLE(USER_MESSAGE_HANDLERS)
</span><span class="cx"> static EncodedJSValue jsDOMWindowWebKit(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</span><span class="cx"> {
</span><del>- JSDOMWindow* castedThis = toJSDOMWindow(JSValue::decode(thisValue));
</del><ins>+ VM& vm = exec->vm();
+ JSDOMWindow* castedThis = toJSDOMWindow(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (!BindingSecurity::shouldAllowAccessToDOMWindow(exec, castedThis->wrapped()))
</span><span class="cx"> return JSValue::encode(jsUndefined());
</span><span class="cx"> return JSValue::encode(toJS(exec, castedThis->globalObject(), castedThis->wrapped().webkitNamespace()));
</span><span class="lines">@@ -524,14 +525,14 @@
</span><span class="cx"> return toJS<IDLLong>(state, scope, wrapped().setInterval(WTFMove(action), delay));
</span><span class="cx"> }
</span><span class="cx">
</span><del>-DOMWindow* JSDOMWindow::toWrapped(JSValue value)
</del><ins>+DOMWindow* JSDOMWindow::toWrapped(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> if (!value.isObject())
</span><span class="cx"> return nullptr;
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- if (object->inherits(JSDOMWindow::info()))
</del><ins>+ if (object->inherits(vm, JSDOMWindow::info()))
</ins><span class="cx"> return &jsCast<JSDOMWindow*>(object)->wrapped();
</span><del>- if (object->inherits(JSDOMWindowShell::info()))
</del><ins>+ if (object->inherits(vm, JSDOMWindowShell::info()))
</ins><span class="cx"> return &jsCast<JSDOMWindowShell*>(object)->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowShellcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> void JSDOMWindowShell::finishCreation(VM& vm, RefPtr<DOMWindow>&& window)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> setWindow(WTFMove(window));
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -106,9 +106,9 @@
</span><span class="cx"> return window()->wrapped();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-DOMWindow* JSDOMWindowShell::toWrapped(JSObject* value)
</del><ins>+DOMWindow* JSDOMWindowShell::toWrapped(VM& vm, JSObject* value)
</ins><span class="cx"> {
</span><del>- auto* wrapper = jsDynamicDowncast<JSDOMWindowShell*>(value);
</del><ins>+ auto* wrapper = jsDynamicDowncast<JSDOMWindowShell*>(vm, value);
</ins><span class="cx"> if (!wrapper)
</span><span class="cx"> return nullptr;
</span><span class="cx"> return &wrapper->window()->wrapped();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowShellh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowShell.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> DECLARE_INFO;
</span><span class="cx">
</span><span class="cx"> DOMWindow& wrapped() const;
</span><del>- static WEBCORE_EXPORT DOMWindow* toWrapped(JSC::JSObject*);
</del><ins>+ static WEBCORE_EXPORT DOMWindow* toWrapped(JSC::VM&, JSC::JSObject*);
</ins><span class="cx">
</span><span class="cx"> static JSDOMWindowShell* create(JSC::VM& vm, RefPtr<DOMWindow>&& window, JSC::Structure* structure, DOMWrapperWorld& world)
</span><span class="cx"> {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><span class="cx"> // Creating a wrapper for domWindow might have created a wrapper for document as well.
</span><del>- return getCachedWrapper(toJSDOMWindow(toJS(&state, *window))->world(), document);
</del><ins>+ return getCachedWrapper(toJSDOMWindow(state.vm(), toJS(&state, *window))->world(), document);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void reportMemoryForDocumentIfFrameless(ExecState& state, Document& document)
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx"> auto touchList = TouchList::create();
</span><span class="cx">
</span><span class="cx"> for (size_t i = 0; i < state.argumentCount(); ++i) {
</span><del>- auto* item = JSTouch::toWrapped(state.uncheckedArgument(i));
</del><ins>+ auto* item = JSTouch::toWrapped(vm, state.uncheckedArgument(i));
</ins><span class="cx"> if (!item)
</span><span class="cx"> return JSValue::decode(throwArgumentTypeError(state, scope, i, "touches", "Document", "createTouchList", "Touch"));
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDynamicDowncasth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDynamicDowncast.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDynamicDowncast.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSDynamicDowncast.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -50,9 +50,9 @@
</span><span class="cx"> template<typename Select>
</span><span class="cx"> struct JSDynamicCastTrait {
</span><span class="cx"> template<typename To, typename From>
</span><del>- ALWAYS_INLINE static To cast(From* from)
</del><ins>+ ALWAYS_INLINE static To cast(JSC::VM& vm, From* from)
</ins><span class="cx"> {
</span><del>- return JSC::jsDynamicCast<To>(from);
</del><ins>+ return JSC::jsDynamicCast<To>(vm, from);
</ins><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> template<>
</span><span class="cx"> struct JSDynamicCastTrait<JSNode> {
</span><span class="cx"> template<typename To, typename From>
</span><del>- ALWAYS_INLINE static To cast(From* from)
</del><ins>+ ALWAYS_INLINE static To cast(JSC::VM&, From* from)
</ins><span class="cx"> {
</span><span class="cx"> return jsNodeCast(from);
</span><span class="cx"> }
</span><span class="lines">@@ -68,7 +68,7 @@
</span><span class="cx"> template<>
</span><span class="cx"> struct JSDynamicCastTrait<JSElement> {
</span><span class="cx"> template<typename To, typename From>
</span><del>- ALWAYS_INLINE static To cast(From* from)
</del><ins>+ ALWAYS_INLINE static To cast(JSC::VM&, From* from)
</ins><span class="cx"> {
</span><span class="cx"> return jsElementCast(from);
</span><span class="cx"> }
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> template<>
</span><span class="cx"> struct JSDynamicCastTrait<JSDocument> {
</span><span class="cx"> template<typename To, typename From>
</span><del>- ALWAYS_INLINE static To cast(From* from)
</del><ins>+ ALWAYS_INLINE static To cast(JSC::VM&, From* from)
</ins><span class="cx"> {
</span><span class="cx"> return jsDocumentCast(from);
</span><span class="cx"> }
</span><span class="lines">@@ -86,7 +86,7 @@
</span><span class="cx"> template<>
</span><span class="cx"> struct JSDynamicCastTrait<JSEvent> {
</span><span class="cx"> template<typename To, typename From>
</span><del>- ALWAYS_INLINE static To cast(From* from)
</del><ins>+ ALWAYS_INLINE static To cast(JSC::VM&, From* from)
</ins><span class="cx"> {
</span><span class="cx"> return jsEventCast(from);
</span><span class="cx"> }
</span><span class="lines">@@ -93,18 +93,18 @@
</span><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> template<typename To, typename From>
</span><del>-ALWAYS_INLINE To jsDynamicDowncast(From* from)
</del><ins>+ALWAYS_INLINE To jsDynamicDowncast(JSC::VM& vm, From* from)
</ins><span class="cx"> {
</span><span class="cx"> typedef JSDynamicCastTrait<typename std::remove_cv<typename std::remove_pointer<To>::type>::type> Dispatcher;
</span><del>- return Dispatcher::template cast<To>(from);
</del><ins>+ return Dispatcher::template cast<To>(vm, from);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<typename To>
</span><del>-ALWAYS_INLINE To jsDynamicDowncast(JSC::JSValue from)
</del><ins>+ALWAYS_INLINE To jsDynamicDowncast(JSC::VM& vm, JSC::JSValue from)
</ins><span class="cx"> {
</span><span class="cx"> if (UNLIKELY(!from.isCell()))
</span><span class="cx"> return nullptr;
</span><del>- return jsDynamicDowncast<To>(from.asCell());
</del><ins>+ return jsDynamicDowncast<To>(vm, from.asCell());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventListener.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventListener.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSEventListener.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx">
</span><span class="cx"> if (is<WorkerGlobalScope>(*scriptExecutionContext)) {
</span><span class="cx"> auto scriptController = downcast<WorkerGlobalScope>(*scriptExecutionContext).script();
</span><del>- bool terminatorCausedException = (scope.exception() && isTerminatedExecutionException(scope.exception()));
</del><ins>+ bool terminatorCausedException = (scope.exception() && isTerminatedExecutionException(vm, scope.exception()));
</ins><span class="cx"> if (terminatorCausedException || scriptController->isTerminatingExecution())
</span><span class="cx"> scriptController->forbidExecution();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventTargetCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSEventTargetCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -57,10 +57,10 @@
</span><span class="cx"> #undef TRY_TO_WRAP_WITH_INTERFACE
</span><span class="cx">
</span><span class="cx"> #define TRY_TO_UNWRAP_WITH_INTERFACE(interfaceName) \
</span><del>- if (value.inherits(JS##interfaceName::info())) \
</del><ins>+ if (value.inherits(vm, JS##interfaceName::info())) \
</ins><span class="cx"> return &jsCast<JS##interfaceName*>(asObject(value))->wrapped();
</span><span class="cx">
</span><del>-EventTarget* JSEventTarget::toWrapped(JSValue value)
</del><ins>+EventTarget* JSEventTarget::toWrapped(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> TRY_TO_UNWRAP_WITH_INTERFACE(DOMWindowShell)
</span><span class="cx"> TRY_TO_UNWRAP_WITH_INTERFACE(DOMWindow)
</span><span class="lines">@@ -71,13 +71,13 @@
</span><span class="cx">
</span><span class="cx"> #undef TRY_TO_UNWRAP_WITH_INTERFACE
</span><span class="cx">
</span><del>-std::unique_ptr<JSEventTargetWrapper> jsEventTargetCast(JSValue thisValue)
</del><ins>+std::unique_ptr<JSEventTargetWrapper> jsEventTargetCast(VM& vm, JSValue thisValue)
</ins><span class="cx"> {
</span><del>- if (auto* target = jsDynamicDowncast<JSEventTarget*>(thisValue))
</del><ins>+ if (auto* target = jsDynamicDowncast<JSEventTarget*>(vm, thisValue))
</ins><span class="cx"> return std::make_unique<JSEventTargetWrapper>(target->wrapped(), *target);
</span><del>- if (auto* window = toJSDOMWindow(thisValue))
</del><ins>+ if (auto* window = toJSDOMWindow(vm, thisValue))
</ins><span class="cx"> return std::make_unique<JSEventTargetWrapper>(window->wrapped(), *window);
</span><del>- if (auto* scope = toJSWorkerGlobalScope(thisValue))
</del><ins>+ if (auto* scope = toJSWorkerGlobalScope(vm, thisValue))
</ins><span class="cx"> return std::make_unique<JSEventTargetWrapper>(scope->wrapped(), *scope);
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSEventTargetCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSEventTargetCustom.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> JSC::JSObject& m_wrapper;
</span><span class="cx"> };
</span><span class="cx">
</span><del>-std::unique_ptr<JSEventTargetWrapper> jsEventTargetCast(JSC::JSValue thisValue);
</del><ins>+std::unique_ptr<JSEventTargetWrapper> jsEventTargetCast(JSC::VM&, JSC::JSValue thisValue);
</ins><span class="cx">
</span><span class="cx"> template<> struct BindingCaller<JSEventTarget> {
</span><span class="cx"> using OperationCallerFunction = JSC::EncodedJSValue(JSC::ExecState*, JSEventTargetWrapper*, JSC::ThrowScope&);
</span><span class="lines">@@ -57,9 +57,10 @@
</span><span class="cx"> static JSC::EncodedJSValue callOperation(JSC::ExecState* state, const char* operationName)
</span><span class="cx"> {
</span><span class="cx"> ASSERT(state);
</span><del>- auto throwScope = DECLARE_THROW_SCOPE(state->vm());
</del><ins>+ JSC::VM& vm = state->vm();
+ auto throwScope = DECLARE_THROW_SCOPE(vm);
</ins><span class="cx">
</span><del>- auto thisObject = jsEventTargetCast(state->thisValue().toThis(state, JSC::NotStrictMode));
</del><ins>+ auto thisObject = jsEventTargetCast(vm, state->thisValue().toThis(state, JSC::NotStrictMode));
</ins><span class="cx"> if (UNLIKELY(!thisObject))
</span><span class="cx"> return throwThisTypeError(*state, throwScope, "EventTarget", operationName);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSExceptionBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSExceptionBase.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSExceptionBase.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSExceptionBase.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -34,15 +34,15 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-ExceptionBase* toExceptionBase(JSC::JSValue value)
</del><ins>+ExceptionBase* toExceptionBase(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (DOMCoreException* domException = JSDOMCoreException::toWrapped(value))
</del><ins>+ if (DOMCoreException* domException = JSDOMCoreException::toWrapped(vm, value))
</ins><span class="cx"> return reinterpret_cast<ExceptionBase*>(domException);
</span><del>- if (SVGException* svgException = JSSVGException::toWrapped(value))
</del><ins>+ if (SVGException* svgException = JSSVGException::toWrapped(vm, value))
</ins><span class="cx"> return reinterpret_cast<ExceptionBase*>(svgException);
</span><del>- if (XPathException* pathException = JSXPathException::toWrapped(value))
</del><ins>+ if (XPathException* pathException = JSXPathException::toWrapped(vm, value))
</ins><span class="cx"> return reinterpret_cast<ExceptionBase*>(pathException);
</span><del>- if (SQLException* pathException = JSSQLException::toWrapped(value))
</del><ins>+ if (SQLException* pathException = JSSQLException::toWrapped(vm, value))
</ins><span class="cx"> return reinterpret_cast<ExceptionBase*>(pathException);
</span><span class="cx">
</span><span class="cx"> return 0;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSExceptionBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSExceptionBase.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSExceptionBase.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSExceptionBase.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -27,6 +27,7 @@
</span><span class="cx">
</span><span class="cx"> namespace JSC {
</span><span class="cx"> class JSValue;
</span><ins>+class VM;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="lines">@@ -33,6 +34,6 @@
</span><span class="cx">
</span><span class="cx"> class ExceptionBase;
</span><span class="cx">
</span><del>-ExceptionBase* toExceptionBase(JSC::JSValue);
</del><ins>+ExceptionBase* toExceptionBase(JSC::VM&, JSC::JSValue);
</ins><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSInspectorFrontendHostCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSInspectorFrontendHostCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -51,6 +51,7 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx"> static void populateContextMenuItems(ExecState* exec, JSArray* array, ContextMenu& menu)
</span><span class="cx"> {
</span><ins>+ VM& vm = exec->vm();
</ins><span class="cx"> for (size_t i = 0; i < array->length(); ++i) {
</span><span class="cx"> JSObject* item = asObject(array->getIndex(exec, i));
</span><span class="cx"> JSValue label = item->get(exec, Identifier::fromString(exec, "label"));
</span><span class="lines">@@ -66,7 +67,7 @@
</span><span class="cx"> if (typeString == "separator") {
</span><span class="cx"> ContextMenuItem item(SeparatorType, ContextMenuItemTagNoAction, String());
</span><span class="cx"> menu.appendItem(item);
</span><del>- } else if (typeString == "subMenu" && subItems.inherits(JSArray::info())) {
</del><ins>+ } else if (typeString == "subMenu" && subItems.inherits(vm, JSArray::info())) {
</ins><span class="cx"> ContextMenu subMenu;
</span><span class="cx"> JSArray* subItemsArray = asArray(subItems);
</span><span class="cx"> populateContextMenuItems(exec, subItemsArray, subMenu);
</span><span class="lines">@@ -90,7 +91,8 @@
</span><span class="cx"> #if ENABLE(CONTEXT_MENUS)
</span><span class="cx"> if (state.argumentCount() < 2)
</span><span class="cx"> return jsUndefined();
</span><del>- Event* event = JSEvent::toWrapped(state.argument(0));
</del><ins>+ VM& vm = state.vm();
+ Event* event = JSEvent::toWrapped(vm, state.argument(0));
</ins><span class="cx">
</span><span class="cx"> JSArray* array = asArray(state.argument(1));
</span><span class="cx"> ContextMenu menu;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSNodeCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -119,11 +119,11 @@
</span><span class="cx"> return throwException(&state, scope, createNotEnoughArgumentsError(&state));
</span><span class="cx">
</span><span class="cx"> JSValue newChildValue = state.uncheckedArgument(0);
</span><del>- auto* newChild = JSNode::toWrapped(newChildValue);
</del><ins>+ auto* newChild = JSNode::toWrapped(vm, newChildValue);
</ins><span class="cx"> if (UNLIKELY(!newChild))
</span><span class="cx"> return JSValue::decode(throwArgumentTypeError(state, scope, 0, "node", "Node", "insertBefore", "Node"));
</span><span class="cx">
</span><del>- propagateException(state, scope, wrapped().insertBefore(*newChild, JSNode::toWrapped(state.uncheckedArgument(1))));
</del><ins>+ propagateException(state, scope, wrapped().insertBefore(*newChild, JSNode::toWrapped(vm, state.uncheckedArgument(1))));
</ins><span class="cx"> return newChildValue;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -135,9 +135,9 @@
</span><span class="cx"> if (UNLIKELY(state.argumentCount() < 2))
</span><span class="cx"> return throwException(&state, scope, createNotEnoughArgumentsError(&state));
</span><span class="cx">
</span><del>- auto* newChild = JSNode::toWrapped(state.uncheckedArgument(0));
</del><ins>+ auto* newChild = JSNode::toWrapped(vm, state.uncheckedArgument(0));
</ins><span class="cx"> JSValue oldChildValue = state.uncheckedArgument(1);
</span><del>- auto* oldChild = JSNode::toWrapped(oldChildValue);
</del><ins>+ auto* oldChild = JSNode::toWrapped(vm, oldChildValue);
</ins><span class="cx"> if (UNLIKELY(!newChild || !oldChild)) {
</span><span class="cx"> if (!newChild)
</span><span class="cx"> return JSValue::decode(throwArgumentTypeError(state, scope, 0, "node", "Node", "replaceChild", "Node"));
</span><span class="lines">@@ -154,7 +154,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue childValue = state.argument(0);
</span><del>- auto* child = JSNode::toWrapped(childValue);
</del><ins>+ auto* child = JSNode::toWrapped(vm, childValue);
</ins><span class="cx"> if (UNLIKELY(!child))
</span><span class="cx"> return JSValue::decode(throwArgumentTypeError(state, scope, 0, "child", "Node", "removeChild", "Node"));
</span><span class="cx">
</span><span class="lines">@@ -168,7 +168,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue newChildValue = state.argument(0);
</span><del>- auto newChild = JSNode::toWrapped(newChildValue);
</del><ins>+ auto newChild = JSNode::toWrapped(vm, newChildValue);
</ins><span class="cx"> if (UNLIKELY(!newChild))
</span><span class="cx"> return JSValue::decode(throwArgumentTypeError(state, scope, 0, "node", "Node", "appendChild", "Node"));
</span><span class="cx">
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx">
</span><span class="cx"> JSScope* JSNode::pushEventHandlerScope(ExecState* exec, JSScope* node) const
</span><span class="cx"> {
</span><del>- if (inherits(JSHTMLElement::info()))
</del><ins>+ if (inherits(exec->vm(), JSHTMLElement::info()))
</ins><span class="cx"> return jsCast<const JSHTMLElement*>(this)->pushEventHandlerScope(exec, node);
</span><span class="cx"> return node;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSPluginElementFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSPluginElementFunctions.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -99,7 +99,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- JSHTMLElement* thisObject = jsDynamicDowncast<JSHTMLElement*>(JSValue::decode(thisValue));
</del><ins>+ JSHTMLElement* thisObject = jsDynamicDowncast<JSHTMLElement*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> JSObject* scriptObject = pluginScriptObject(exec, thisObject);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSReadableStreamPrivateConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSReadableStreamPrivateConstructors.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -56,12 +56,13 @@
</span><span class="cx">
</span><span class="cx"> EncodedJSValue JSC_HOST_CALL constructJSReadableStreamDefaultReader(ExecState& exec)
</span><span class="cx"> {
</span><del>- JSVMClientData& clientData = *static_cast<JSVMClientData*>(exec.vm().clientData);
</del><ins>+ VM& vm = exec.vm();
+ JSVMClientData& clientData = *static_cast<JSVMClientData*>(vm.clientData);
</ins><span class="cx"> JSDOMGlobalObject& globalObject = *static_cast<JSDOMGlobalObject*>(exec.lexicalGlobalObject());
</span><span class="cx">
</span><span class="cx"> JSC::JSObject* constructor = JSC::asObject(globalObject.get(&exec, clientData.builtinNames().ReadableStreamDefaultReaderPrivateName()));
</span><span class="cx"> ConstructData constructData;
</span><del>- ConstructType constructType = constructor->methodTable()->getConstructData(constructor, constructData);
</del><ins>+ ConstructType constructType = constructor->methodTable(vm)->getConstructData(constructor, constructData);
</ins><span class="cx"> ASSERT(constructType != ConstructType::None);
</span><span class="cx">
</span><span class="cx"> MarkedArgumentBuffer args;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSReadableStreamSourceCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSReadableStreamSourceCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -37,11 +37,12 @@
</span><span class="cx">
</span><span class="cx"> static void startReadableStream(JSC::ExecState& state, Ref<DeferredPromise>&& promise)
</span><span class="cx"> {
</span><del>- JSReadableStreamSource* source = jsDynamicDowncast<JSReadableStreamSource*>(state.thisValue());
</del><ins>+ VM& vm = state.vm();
+ JSReadableStreamSource* source = jsDynamicDowncast<JSReadableStreamSource*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(source);
</span><span class="cx">
</span><span class="cx"> ASSERT(state.argumentCount());
</span><del>- JSReadableStreamDefaultController* controller = jsDynamicDowncast<JSReadableStreamDefaultController*>(state.uncheckedArgument(0));
</del><ins>+ JSReadableStreamDefaultController* controller = jsDynamicDowncast<JSReadableStreamDefaultController*>(vm, state.uncheckedArgument(0));
</ins><span class="cx"> ASSERT(controller);
</span><span class="cx">
</span><span class="cx"> source->wrapped().start(ReadableStreamDefaultController(controller), WTFMove(promise));
</span><span class="lines">@@ -49,11 +50,12 @@
</span><span class="cx">
</span><span class="cx"> JSValue JSReadableStreamSource::start(ExecState& state)
</span><span class="cx"> {
</span><ins>+ VM& vm = state.vm();
</ins><span class="cx"> ASSERT(state.argumentCount());
</span><del>- JSReadableStreamDefaultController* controller = jsDynamicDowncast<JSReadableStreamDefaultController*>(state.uncheckedArgument(0));
</del><ins>+ JSReadableStreamDefaultController* controller = jsDynamicDowncast<JSReadableStreamDefaultController*>(vm, state.uncheckedArgument(0));
</ins><span class="cx"> ASSERT(controller);
</span><span class="cx">
</span><del>- m_controller.set(state.vm(), this, controller);
</del><ins>+ m_controller.set(vm, this, controller);
</ins><span class="cx">
</span><span class="cx"> return callPromiseFunction<startReadableStream, PromiseExecutionScope::WindowOrWorker>(state);
</span><span class="cx"> }
</span><span class="lines">@@ -60,7 +62,8 @@
</span><span class="cx">
</span><span class="cx"> static void pullReadableStream(JSC::ExecState& state, Ref<DeferredPromise>&& promise)
</span><span class="cx"> {
</span><del>- JSReadableStreamSource* source = jsDynamicDowncast<JSReadableStreamSource*>(state.thisValue());
</del><ins>+ VM& vm = state.vm();
+ JSReadableStreamSource* source = jsDynamicDowncast<JSReadableStreamSource*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(source);
</span><span class="cx">
</span><span class="cx"> source->wrapped().pull(WTFMove(promise));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSSubtleCryptoCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -420,7 +420,7 @@
</span><span class="cx"> VM& vm = state.vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> result = JSCryptoKey::toWrapped(value);
</del><ins>+ RefPtr<CryptoKey> result = JSCryptoKey::toWrapped(vm, value);
</ins><span class="cx"> if (!result) {
</span><span class="cx"> throwTypeError(&state, scope, ASCIILiteral("Invalid CryptoKey"));
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -504,7 +504,7 @@
</span><span class="cx"> rejectWithException(WTFMove(capturedPromise), ec);
</span><span class="cx"> };
</span><span class="cx">
</span><del>- auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(state.thisValue());
</del><ins>+ auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(subtle);
</span><span class="cx"> algorithm->encrypt(WTFMove(params), key.releaseNonNull(), WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContextFromExecState(&state), subtle->wrapped().workQueue());
</span><span class="cx"> }
</span><span class="lines">@@ -552,7 +552,7 @@
</span><span class="cx"> rejectWithException(WTFMove(capturedPromise), ec);
</span><span class="cx"> };
</span><span class="cx">
</span><del>- auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(state.thisValue());
</del><ins>+ auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(subtle);
</span><span class="cx"> algorithm->decrypt(WTFMove(params), key.releaseNonNull(), WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContextFromExecState(&state), subtle->wrapped().workQueue());
</span><span class="cx"> }
</span><span class="lines">@@ -600,7 +600,7 @@
</span><span class="cx"> rejectWithException(WTFMove(capturedPromise), ec);
</span><span class="cx"> };
</span><span class="cx">
</span><del>- JSSubtleCrypto* subtle = jsDynamicDowncast<JSSubtleCrypto*>(state.thisValue());
</del><ins>+ JSSubtleCrypto* subtle = jsDynamicDowncast<JSSubtleCrypto*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(subtle);
</span><span class="cx"> algorithm->sign(key.releaseNonNull(), WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContextFromExecState(&state), subtle->wrapped().workQueue());
</span><span class="cx"> }
</span><span class="lines">@@ -651,7 +651,7 @@
</span><span class="cx"> rejectWithException(WTFMove(capturedPromise), ec);
</span><span class="cx"> };
</span><span class="cx">
</span><del>- auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(state.thisValue());
</del><ins>+ auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(subtle);
</span><span class="cx"> algorithm->verify(key.releaseNonNull(), WTFMove(signature), WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContextFromExecState(&state), subtle->wrapped().workQueue());
</span><span class="cx"> }
</span><span class="lines">@@ -686,7 +686,7 @@
</span><span class="cx"> rejectWithException(WTFMove(capturedPromise), ec);
</span><span class="cx"> };
</span><span class="cx">
</span><del>- auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(state.thisValue());
</del><ins>+ auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(subtle);
</span><span class="cx"> algorithm->digest(WTFMove(data), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContextFromExecState(&state), subtle->wrapped().workQueue());
</span><span class="cx"> }
</span><span class="lines">@@ -942,7 +942,7 @@
</span><span class="cx">
</span><span class="cx"> auto context = scriptExecutionContextFromExecState(&state);
</span><span class="cx">
</span><del>- auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(state.thisValue());
</del><ins>+ auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(subtle);
</span><span class="cx"> auto& workQueue = subtle->wrapped().workQueue();
</span><span class="cx">
</span><span class="lines">@@ -1098,7 +1098,7 @@
</span><span class="cx"> unwrapAlgorithm->unwrapKey(unwrappingKey.releaseNonNull(), WTFMove(wrappedKey), WTFMove(callback), WTFMove(exceptionCallback));
</span><span class="cx"> return;
</span><span class="cx"> }
</span><del>- auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(state.thisValue());
</del><ins>+ auto subtle = jsDynamicDowncast<JSSubtleCrypto*>(vm, state.thisValue());
</ins><span class="cx"> ASSERT(subtle);
</span><span class="cx"> // The following operation should be performed asynchronously.
</span><span class="cx"> unwrapAlgorithm->decrypt(WTFMove(unwrapParams), unwrappingKey.releaseNonNull(), WTFMove(wrappedKey), WTFMove(callback), WTFMove(exceptionCallback), *scriptExecutionContextFromExecState(&state), subtle->wrapped().workQueue());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSTrackCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -37,22 +37,6 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-TrackBase* toTrack(JSValue value)
-{
- if (!value.isObject())
- return nullptr;
-
- JSObject* object = asObject(value);
- if (object->inherits(JSTextTrack::info()))
- return &jsCast<JSTextTrack*>(object)->wrapped();
- if (object->inherits(JSAudioTrack::info()))
- return &jsCast<JSAudioTrack*>(object)->wrapped();
- if (object->inherits(JSVideoTrack::info()))
- return &jsCast<JSVideoTrack*>(object)->wrapped();
-
- return nullptr;
-}
-
</del><span class="cx"> JSC::JSValue toJS(JSC::ExecState* state, JSDOMGlobalObject* globalObject, TrackBase& track)
</span><span class="cx"> {
</span><span class="cx"> switch (track.type()) {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSTrackCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSTrackCustom.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSTrackCustom.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSTrackCustom.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -34,7 +34,6 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-TrackBase* toTrack(JSC::JSValue);
</del><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, JSDOMGlobalObject*, TrackBase&);
</span><span class="cx">
</span><span class="cx"> inline void* root(TrackBase* track)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx"> auto parameters = JSCryptoAlgorithmDictionary::createParametersForEncrypt(state, scope, algorithm->identifier(), state.uncheckedArgument(0));
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(state.uncheckedArgument(1));
</del><ins>+ RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(vm, state.uncheckedArgument(1));
</ins><span class="cx"> if (!key)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span><span class="lines">@@ -183,7 +183,7 @@
</span><span class="cx"> auto parameters = JSCryptoAlgorithmDictionary::createParametersForDecrypt(state, scope, algorithm->identifier(), state.uncheckedArgument(0));
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(state.uncheckedArgument(1));
</del><ins>+ RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(vm, state.uncheckedArgument(1));
</ins><span class="cx"> if (!key)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span><span class="lines">@@ -228,7 +228,7 @@
</span><span class="cx"> auto parameters = JSCryptoAlgorithmDictionary::createParametersForSign(state, scope, algorithm->identifier(), state.uncheckedArgument(0));
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(state.uncheckedArgument(1));
</del><ins>+ RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(vm, state.uncheckedArgument(1));
</ins><span class="cx"> if (!key)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span><span class="lines">@@ -273,7 +273,7 @@
</span><span class="cx"> auto parameters = JSCryptoAlgorithmDictionary::createParametersForVerify(state, scope, algorithm->identifier(), state.uncheckedArgument(0));
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(state.uncheckedArgument(1));
</del><ins>+ RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(vm, state.uncheckedArgument(1));
</ins><span class="cx"> if (!key)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span><span class="lines">@@ -538,7 +538,7 @@
</span><span class="cx"> auto keyFormat = cryptoKeyFormatFromJSValue(state, scope, state.uncheckedArgument(0));
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(state.uncheckedArgument(1));
</del><ins>+ RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(vm, state.uncheckedArgument(1));
</ins><span class="cx"> if (!key)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span><span class="lines">@@ -568,11 +568,11 @@
</span><span class="cx"> auto keyFormat = cryptoKeyFormatFromJSValue(state, scope, state.uncheckedArgument(0));
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(state.uncheckedArgument(1));
</del><ins>+ RefPtr<CryptoKey> key = JSCryptoKey::toWrapped(vm, state.uncheckedArgument(1));
</ins><span class="cx"> if (!key)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> wrappingKey = JSCryptoKey::toWrapped(state.uncheckedArgument(2));
</del><ins>+ RefPtr<CryptoKey> wrappingKey = JSCryptoKey::toWrapped(vm, state.uncheckedArgument(2));
</ins><span class="cx"> if (!key)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span><span class="lines">@@ -628,7 +628,7 @@
</span><span class="cx"> auto wrappedKeyData = cryptoOperationDataFromJSValue(state, scope, state.uncheckedArgument(1));
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, { });
</span><span class="cx">
</span><del>- RefPtr<CryptoKey> unwrappingKey = JSCryptoKey::toWrapped(state.uncheckedArgument(2));
</del><ins>+ RefPtr<CryptoKey> unwrappingKey = JSCryptoKey::toWrapped(vm, state.uncheckedArgument(2));
</ins><span class="cx"> if (!unwrappingKey)
</span><span class="cx"> return throwTypeError(&state, scope);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerGlobalScopeBasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -26,7 +26,6 @@
</span><span class="cx"> */
</span><span class="cx">
</span><span class="cx"> #include "config.h"
</span><del>-
</del><span class="cx"> #include "JSWorkerGlobalScopeBase.h"
</span><span class="cx">
</span><span class="cx"> #include "DOMWrapperWorld.h"
</span><span class="lines">@@ -72,7 +71,7 @@
</span><span class="cx"> m_proxy.set(vm, this, proxy);
</span><span class="cx">
</span><span class="cx"> Base::finishCreation(vm, m_proxy.get());
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void JSWorkerGlobalScopeBase::visitChildren(JSCell* cell, SlotVisitor& visitor)
</span><span class="lines">@@ -135,22 +134,22 @@
</span><span class="cx"> return contextWrapper->proxy();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-JSDedicatedWorkerGlobalScope* toJSDedicatedWorkerGlobalScope(JSValue value)
</del><ins>+JSDedicatedWorkerGlobalScope* toJSDedicatedWorkerGlobalScope(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> if (!value.isObject())
</span><span class="cx"> return 0;
</span><del>- const ClassInfo* classInfo = asObject(value)->classInfo();
</del><ins>+ const ClassInfo* classInfo = asObject(value)->classInfo(vm);
</ins><span class="cx"> if (classInfo == JSDedicatedWorkerGlobalScope::info())
</span><span class="cx"> return jsCast<JSDedicatedWorkerGlobalScope*>(asObject(value));
</span><span class="cx"> if (classInfo == JSProxy::info())
</span><del>- return jsDynamicDowncast<JSDedicatedWorkerGlobalScope*>(jsCast<JSProxy*>(asObject(value))->target());
</del><ins>+ return jsDynamicDowncast<JSDedicatedWorkerGlobalScope*>(vm, jsCast<JSProxy*>(asObject(value))->target());
</ins><span class="cx"> return 0;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx">
</span><del>-JSWorkerGlobalScope* toJSWorkerGlobalScope(JSValue value)
</del><ins>+JSWorkerGlobalScope* toJSWorkerGlobalScope(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><del>- return toJSDedicatedWorkerGlobalScope(value);
</del><ins>+ return toJSDedicatedWorkerGlobalScope(vm, value);
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerGlobalScopeBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -77,7 +77,7 @@
</span><span class="cx"> JSC::JSValue toJS(JSC::ExecState*, WorkerGlobalScope&);
</span><span class="cx"> inline JSC::JSValue toJS(JSC::ExecState* exec, WorkerGlobalScope* scope) { return scope ? toJS(exec, *scope) : JSC::jsNull(); }
</span><span class="cx">
</span><del>- JSDedicatedWorkerGlobalScope* toJSDedicatedWorkerGlobalScope(JSC::JSValue);
- JSWorkerGlobalScope* toJSWorkerGlobalScope(JSC::JSValue);
</del><ins>+ JSDedicatedWorkerGlobalScope* toJSDedicatedWorkerGlobalScope(JSC::VM&, JSC::JSValue);
+ JSWorkerGlobalScope* toJSWorkerGlobalScope(JSC::VM&, JSC::JSValue);
</ins><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSXMLHttpRequestCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSXMLHttpRequestCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -105,19 +105,20 @@
</span><span class="cx"> {
</span><span class="cx"> InspectorInstrumentation::willSendXMLHttpRequest(wrapped().scriptExecutionContext(), wrapped().url());
</span><span class="cx">
</span><ins>+ VM& vm = state.vm();
</ins><span class="cx"> JSValue value = state.argument(0);
</span><span class="cx"> ExceptionOr<void> result;
</span><span class="cx"> if (value.isUndefinedOrNull())
</span><span class="cx"> result = wrapped().send();
</span><del>- else if (value.inherits(JSDocument::info()))
- result = wrapped().send(*JSDocument::toWrapped(value));
- else if (value.inherits(JSBlob::info()))
- result = wrapped().send(*JSBlob::toWrapped(value));
- else if (value.inherits(JSDOMFormData::info()))
- result = wrapped().send(*JSDOMFormData::toWrapped(value));
- else if (RefPtr<ArrayBuffer> arrayBuffer = toUnsharedArrayBuffer(value))
</del><ins>+ else if (value.inherits(vm, JSDocument::info()))
+ result = wrapped().send(*JSDocument::toWrapped(vm, value));
+ else if (value.inherits(vm, JSBlob::info()))
+ result = wrapped().send(*JSBlob::toWrapped(vm, value));
+ else if (value.inherits(vm, JSDOMFormData::info()))
+ result = wrapped().send(*JSDOMFormData::toWrapped(vm, value));
+ else if (RefPtr<ArrayBuffer> arrayBuffer = toUnsharedArrayBuffer(vm, value))
</ins><span class="cx"> result = wrapped().send(*arrayBuffer);
</span><del>- else if (RefPtr<ArrayBufferView> arrayBufferView = toUnsharedArrayBufferView(value))
</del><ins>+ else if (RefPtr<ArrayBufferView> arrayBufferView = toUnsharedArrayBufferView(vm, value))
</ins><span class="cx"> result = wrapped().send(*arrayBufferView);
</span><span class="cx"> else {
</span><span class="cx"> // FIXME: If toString raises an exception, should we exit before calling willSendXMLHttpRequest?
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSXPathNSResolverCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/JSXPathNSResolverCustom.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -33,14 +33,13 @@
</span><span class="cx">
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><del>-RefPtr<XPathNSResolver> JSXPathNSResolver::toWrapped(ExecState& state, JSValue value)
</del><ins>+RefPtr<XPathNSResolver> JSXPathNSResolver::toWrapped(VM& vm, ExecState& state, JSValue value)
</ins><span class="cx"> {
</span><del>- if (value.inherits(JSXPathNSResolver::info()))
</del><ins>+ if (value.inherits(vm, JSXPathNSResolver::info()))
</ins><span class="cx"> return &jsCast<JSXPathNSResolver*>(asObject(value))->wrapped();
</span><span class="cx">
</span><span class="cx"> auto result = JSCustomXPathNSResolver::create(state, value);
</span><span class="cx"> if (UNLIKELY(result.hasException())) {
</span><del>- VM& vm = state.vm();
</del><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> propagateException(state, scope, result.releaseException());
</span><span class="cx"> return nullptr;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptController.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptController.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/ScriptController.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -390,7 +390,8 @@
</span><span class="cx">
</span><span class="cx"> auto& rejectHandler = *JSNativeStdFunction::create(state.vm(), shell.window(), 1, String(), [moduleScript, moduleLoaderAlreadyReportedErrorSymbol, moduleLoaderFetchingIsCanceledSymbol](ExecState* exec) {
</span><span class="cx"> JSValue error = exec->argument(0);
</span><del>- if (auto* symbol = jsDynamicCast<Symbol*>(error)) {
</del><ins>+ VM& vm = exec->vm();
+ if (auto* symbol = jsDynamicCast<Symbol*>(vm, error)) {
</ins><span class="cx"> if (symbol->privateName() == moduleLoaderAlreadyReportedErrorSymbol) {
</span><span class="cx"> moduleScript->notifyLoadFailed(LoadableScript::Error {
</span><span class="cx"> LoadableScript::ErrorType::CachedScript,
</span><span class="lines">@@ -405,7 +406,6 @@
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx">
</span><del>- VM& vm = exec->vm();
</del><span class="cx"> auto scope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx"> moduleScript->notifyLoadFailed(LoadableScript::Error {
</span><span class="cx"> LoadableScript::ErrorType::CachedScript,
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptModuleLoadercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptModuleLoader.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptModuleLoader.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/ScriptModuleLoader.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -134,7 +134,7 @@
</span><span class="cx">
</span><span class="cx"> JSC::JSInternalPromise* ScriptModuleLoader::fetch(JSC::JSGlobalObject* jsGlobalObject, JSC::ExecState* exec, JSC::JSModuleLoader*, JSC::JSValue moduleKeyValue, JSC::JSValue scriptFetcher)
</span><span class="cx"> {
</span><del>- ASSERT(JSC::jsDynamicCast<JSC::JSScriptFetcher*>(scriptFetcher));
</del><ins>+ ASSERT(JSC::jsDynamicCast<JSC::JSScriptFetcher*>(exec->vm(), scriptFetcher));
</ins><span class="cx">
</span><span class="cx"> auto& globalObject = *JSC::jsCast<JSDOMGlobalObject*>(jsGlobalObject);
</span><span class="cx"> auto& jsPromise = *JSC::JSInternalPromiseDeferred::create(exec, &globalObject);
</span><span class="lines">@@ -179,7 +179,7 @@
</span><span class="cx"> // FIXME: Currently, we only support JSModuleRecord.
</span><span class="cx"> // Once the reflective part of the module loader is supported, we will handle arbitrary values.
</span><span class="cx"> // https://whatwg.github.io/loader/#registry-prototype-provide
</span><del>- auto* moduleRecord = jsDynamicDowncast<JSC::JSModuleRecord*>(moduleRecordValue);
</del><ins>+ auto* moduleRecord = jsDynamicDowncast<JSC::JSModuleRecord*>(vm, moduleRecordValue);
</ins><span class="cx"> if (!moduleRecord)
</span><span class="cx"> return JSC::jsUndefined();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScriptStatecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScriptState.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScriptState.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/ScriptState.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -50,7 +50,8 @@
</span><span class="cx"> DOMWindow* domWindowFromExecState(JSC::ExecState* scriptState)
</span><span class="cx"> {
</span><span class="cx"> JSC::JSGlobalObject* globalObject = scriptState->lexicalGlobalObject();
</span><del>- if (!globalObject->inherits(JSDOMWindowBase::info()))
</del><ins>+ JSC::VM& vm = globalObject->vm();
+ if (!globalObject->inherits(vm, JSDOMWindowBase::info()))
</ins><span class="cx"> return nullptr;
</span><span class="cx"> return &JSC::jsCast<JSDOMWindowBase*>(globalObject)->wrapped();
</span><span class="cx"> }
</span><span class="lines">@@ -65,7 +66,8 @@
</span><span class="cx"> ScriptExecutionContext* scriptExecutionContextFromExecState(JSC::ExecState* scriptState)
</span><span class="cx"> {
</span><span class="cx"> JSC::JSGlobalObject* globalObject = scriptState->lexicalGlobalObject();
</span><del>- if (!globalObject->inherits(JSDOMGlobalObject::info()))
</del><ins>+ JSC::VM& vm = globalObject->vm();
+ if (!globalObject->inherits(vm, JSDOMGlobalObject::info()))
</ins><span class="cx"> return nullptr;
</span><span class="cx"> return JSC::jsCast<JSDOMGlobalObject*>(globalObject)->scriptExecutionContext();
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsSerializedScriptValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/SerializedScriptValue.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -552,27 +552,27 @@
</span><span class="cx">
</span><span class="cx"> SerializationReturnCode serialize(JSValue in);
</span><span class="cx">
</span><del>- bool isArray(JSValue value)
</del><ins>+ bool isArray(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> if (!value.isObject())
</span><span class="cx"> return false;
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- return isJSArray(object) || object->inherits(JSArray::info());
</del><ins>+ return isJSArray(object) || object->inherits(vm, JSArray::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- bool isMap(JSValue value)
</del><ins>+ bool isMap(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> if (!value.isObject())
</span><span class="cx"> return false;
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- return object->inherits(JSMap::info());
</del><ins>+ return object->inherits(vm, JSMap::info());
</ins><span class="cx"> }
</span><del>- bool isSet(JSValue value)
</del><ins>+ bool isSet(VM& vm, JSValue value)
</ins><span class="cx"> {
</span><span class="cx"> if (!value.isObject())
</span><span class="cx"> return false;
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- return object->inherits(JSSet::info());
</del><ins>+ return object->inherits(vm, JSSet::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool checkForDuplicate(JSObject* object)
</span><span class="lines">@@ -705,31 +705,32 @@
</span><span class="cx">
</span><span class="cx"> bool dumpArrayBufferView(JSObject* obj, SerializationReturnCode& code)
</span><span class="cx"> {
</span><ins>+ VM& vm = m_exec->vm();
</ins><span class="cx"> write(ArrayBufferViewTag);
</span><del>- if (obj->inherits(JSDataView::info()))
</del><ins>+ if (obj->inherits(vm, JSDataView::info()))
</ins><span class="cx"> write(DataViewTag);
</span><del>- else if (obj->inherits(JSUint8ClampedArray::info()))
</del><ins>+ else if (obj->inherits(vm, JSUint8ClampedArray::info()))
</ins><span class="cx"> write(Uint8ClampedArrayTag);
</span><del>- else if (obj->inherits(JSInt8Array::info()))
</del><ins>+ else if (obj->inherits(vm, JSInt8Array::info()))
</ins><span class="cx"> write(Int8ArrayTag);
</span><del>- else if (obj->inherits(JSUint8Array::info()))
</del><ins>+ else if (obj->inherits(vm, JSUint8Array::info()))
</ins><span class="cx"> write(Uint8ArrayTag);
</span><del>- else if (obj->inherits(JSInt16Array::info()))
</del><ins>+ else if (obj->inherits(vm, JSInt16Array::info()))
</ins><span class="cx"> write(Int16ArrayTag);
</span><del>- else if (obj->inherits(JSUint16Array::info()))
</del><ins>+ else if (obj->inherits(vm, JSUint16Array::info()))
</ins><span class="cx"> write(Uint16ArrayTag);
</span><del>- else if (obj->inherits(JSInt32Array::info()))
</del><ins>+ else if (obj->inherits(vm, JSInt32Array::info()))
</ins><span class="cx"> write(Int32ArrayTag);
</span><del>- else if (obj->inherits(JSUint32Array::info()))
</del><ins>+ else if (obj->inherits(vm, JSUint32Array::info()))
</ins><span class="cx"> write(Uint32ArrayTag);
</span><del>- else if (obj->inherits(JSFloat32Array::info()))
</del><ins>+ else if (obj->inherits(vm, JSFloat32Array::info()))
</ins><span class="cx"> write(Float32ArrayTag);
</span><del>- else if (obj->inherits(JSFloat64Array::info()))
</del><ins>+ else if (obj->inherits(vm, JSFloat64Array::info()))
</ins><span class="cx"> write(Float64ArrayTag);
</span><span class="cx"> else
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- RefPtr<ArrayBufferView> arrayBufferView = toPossiblySharedArrayBufferView(obj);
</del><ins>+ RefPtr<ArrayBufferView> arrayBufferView = toPossiblySharedArrayBufferView(vm, obj);
</ins><span class="cx"> write(static_cast<uint32_t>(arrayBufferView->byteOffset()));
</span><span class="cx"> write(static_cast<uint32_t>(arrayBufferView->byteLength()));
</span><span class="cx"> RefPtr<ArrayBuffer> arrayBuffer = arrayBufferView->possiblySharedBuffer();
</span><span class="lines">@@ -759,24 +760,25 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (value.isObject() && asObject(value)->inherits(DateInstance::info())) {
</del><ins>+ VM& vm = m_exec->vm();
+ if (value.isObject() && asObject(value)->inherits(vm, DateInstance::info())) {
</ins><span class="cx"> write(DateTag);
</span><span class="cx"> write(asDateInstance(value)->internalNumber());
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (isArray(value))
</del><ins>+ if (isArray(vm, value))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> if (value.isObject()) {
</span><span class="cx"> JSObject* obj = asObject(value);
</span><del>- if (obj->inherits(BooleanObject::info())) {
</del><ins>+ if (obj->inherits(vm, BooleanObject::info())) {
</ins><span class="cx"> if (!startObjectInternal(obj)) // handle duplicates
</span><span class="cx"> return true;
</span><span class="cx"> write(asBooleanObject(value)->internalValue().toBoolean(m_exec) ? TrueObjectTag : FalseObjectTag);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (obj->inherits(StringObject::info())) {
</del><ins>+ if (obj->inherits(vm, StringObject::info())) {
</ins><span class="cx"> if (!startObjectInternal(obj)) // handle duplicates
</span><span class="cx"> return true;
</span><span class="cx"> String str = asString(asStringObject(value)->internalValue())->value(m_exec);
</span><span class="lines">@@ -783,7 +785,7 @@
</span><span class="cx"> dumpStringObject(str);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (obj->inherits(NumberObject::info())) {
</del><ins>+ if (obj->inherits(vm, NumberObject::info())) {
</ins><span class="cx"> if (!startObjectInternal(obj)) // handle duplicates
</span><span class="cx"> return true;
</span><span class="cx"> write(NumberObjectTag);
</span><span class="lines">@@ -791,12 +793,12 @@
</span><span class="cx"> write(obj->internalValue().asNumber());
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (File* file = JSFile::toWrapped(obj)) {
</del><ins>+ if (File* file = JSFile::toWrapped(vm, obj)) {
</ins><span class="cx"> write(FileTag);
</span><span class="cx"> write(file);
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (FileList* list = JSFileList::toWrapped(obj)) {
</del><ins>+ if (FileList* list = JSFileList::toWrapped(vm, obj)) {
</ins><span class="cx"> write(FileListTag);
</span><span class="cx"> unsigned length = list->length();
</span><span class="cx"> write(length);
</span><span class="lines">@@ -804,7 +806,7 @@
</span><span class="cx"> write(list->item(i));
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (Blob* blob = JSBlob::toWrapped(obj)) {
</del><ins>+ if (Blob* blob = JSBlob::toWrapped(vm, obj)) {
</ins><span class="cx"> write(BlobTag);
</span><span class="cx"> m_blobURLs.append(blob->url());
</span><span class="cx"> write(blob->url());
</span><span class="lines">@@ -812,7 +814,7 @@
</span><span class="cx"> write(blob->size());
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (ImageData* data = JSImageData::toWrapped(obj)) {
</del><ins>+ if (ImageData* data = JSImageData::toWrapped(vm, obj)) {
</ins><span class="cx"> write(ImageDataTag);
</span><span class="cx"> write(data->width());
</span><span class="cx"> write(data->height());
</span><span class="lines">@@ -820,7 +822,7 @@
</span><span class="cx"> write(data->data()->data(), data->data()->length());
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (obj->inherits(RegExpObject::info())) {
</del><ins>+ if (obj->inherits(vm, RegExpObject::info())) {
</ins><span class="cx"> RegExpObject* regExp = asRegExpObject(obj);
</span><span class="cx"> char flags[3];
</span><span class="cx"> int flagCount = 0;
</span><span class="lines">@@ -835,7 +837,7 @@
</span><span class="cx"> write(String(flags, flagCount));
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (obj->inherits(JSMessagePort::info())) {
</del><ins>+ if (obj->inherits(vm, JSMessagePort::info())) {
</ins><span class="cx"> ObjectPool::iterator index = m_transferredMessagePorts.find(obj);
</span><span class="cx"> if (index != m_transferredMessagePorts.end()) {
</span><span class="cx"> write(MessagePortReferenceTag);
</span><span class="lines">@@ -846,7 +848,7 @@
</span><span class="cx"> code = SerializationReturnCode::ValidationError;
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (ArrayBuffer* arrayBuffer = toPossiblySharedArrayBuffer(obj)) {
</del><ins>+ if (ArrayBuffer* arrayBuffer = toPossiblySharedArrayBuffer(vm, obj)) {
</ins><span class="cx"> if (arrayBuffer->isNeutered()) {
</span><span class="cx"> code = SerializationReturnCode::ValidationError;
</span><span class="cx"> return true;
</span><span class="lines">@@ -864,7 +866,7 @@
</span><span class="cx"> write(static_cast<const uint8_t*>(arrayBuffer->data()), arrayBuffer->byteLength());
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><del>- if (obj->inherits(JSArrayBufferView::info())) {
</del><ins>+ if (obj->inherits(vm, JSArrayBufferView::info())) {
</ins><span class="cx"> if (checkForDuplicate(obj))
</span><span class="cx"> return true;
</span><span class="cx"> bool success = dumpArrayBufferView(obj, code);
</span><span class="lines">@@ -872,7 +874,7 @@
</span><span class="cx"> return success;
</span><span class="cx"> }
</span><span class="cx"> #if ENABLE(SUBTLE_CRYPTO)
</span><del>- if (CryptoKey* key = JSCryptoKey::toWrapped(obj)) {
</del><ins>+ if (CryptoKey* key = JSCryptoKey::toWrapped(vm, obj)) {
</ins><span class="cx"> write(CryptoKeyTag);
</span><span class="cx"> Vector<uint8_t> serializedKey;
</span><span class="cx"> Vector<String> dummyBlobURLs;
</span><span class="lines">@@ -1220,6 +1222,7 @@
</span><span class="cx">
</span><span class="cx"> SerializationReturnCode CloneSerializer::serialize(JSValue in)
</span><span class="cx"> {
</span><ins>+ VM& vm = m_exec->vm();
</ins><span class="cx"> Vector<uint32_t, 16> indexStack;
</span><span class="cx"> Vector<uint32_t, 16> lengthStack;
</span><span class="cx"> Vector<PropertyNameArray, 16> propertyStack;
</span><span class="lines">@@ -1234,7 +1237,7 @@
</span><span class="cx"> switch (state) {
</span><span class="cx"> arrayStartState:
</span><span class="cx"> case ArrayStartState: {
</span><del>- ASSERT(isArray(inValue));
</del><ins>+ ASSERT(isArray(vm, inValue));
</ins><span class="cx"> if (inputObjectStack.size() > maximumFilterRecursion)
</span><span class="cx"> return SerializationReturnCode::StackOverflowError;
</span><span class="cx">
</span><span class="lines">@@ -1301,7 +1304,7 @@
</span><span class="cx"> // objects have been handled. If we reach this point and
</span><span class="cx"> // the input is not an Object object then we should throw
</span><span class="cx"> // a DataCloneError.
</span><del>- if (inObject->classInfo() != JSFinalObject::info())
</del><ins>+ if (inObject->classInfo(vm) != JSFinalObject::info())
</ins><span class="cx"> return SerializationReturnCode::DataCloneError;
</span><span class="cx"> inputObjectStack.append(inObject);
</span><span class="cx"> indexStack.append(0);
</span><span class="lines">@@ -1358,7 +1361,7 @@
</span><span class="cx"> JSMap* inMap = jsCast<JSMap*>(inValue);
</span><span class="cx"> if (!startMap(inMap))
</span><span class="cx"> break;
</span><del>- JSMapIterator* iterator = JSMapIterator::create(m_exec->vm(), m_exec->lexicalGlobalObject()->mapIteratorStructure(), inMap, IterateKeyValue);
</del><ins>+ JSMapIterator* iterator = JSMapIterator::create(vm, m_exec->lexicalGlobalObject()->mapIteratorStructure(), inMap, IterateKeyValue);
</ins><span class="cx"> m_gcBuffer.append(inMap);
</span><span class="cx"> m_gcBuffer.append(iterator);
</span><span class="cx"> mapIteratorStack.append(iterator);
</span><span class="lines">@@ -1372,7 +1375,7 @@
</span><span class="cx"> if (!iterator->nextKeyValue(m_exec, key, value)) {
</span><span class="cx"> mapIteratorStack.removeLast();
</span><span class="cx"> JSObject* object = inputObjectStack.last();
</span><del>- ASSERT(jsDynamicDowncast<JSMap*>(object));
</del><ins>+ ASSERT(jsDynamicDowncast<JSMap*>(vm, object));
</ins><span class="cx"> propertyStack.append(PropertyNameArray(m_exec, PropertyNameMode::Strings));
</span><span class="cx"> object->methodTable()->getOwnPropertyNames(object, m_exec, propertyStack.last(), EnumerationMode());
</span><span class="cx"> write(NonMapPropertiesTag);
</span><span class="lines">@@ -1402,7 +1405,7 @@
</span><span class="cx"> JSSet* inSet = jsCast<JSSet*>(inValue);
</span><span class="cx"> if (!startSet(inSet))
</span><span class="cx"> break;
</span><del>- JSSetIterator* iterator = JSSetIterator::create(m_exec->vm(), m_exec->lexicalGlobalObject()->setIteratorStructure(), inSet, IterateKey);
</del><ins>+ JSSetIterator* iterator = JSSetIterator::create(vm, m_exec->lexicalGlobalObject()->setIteratorStructure(), inSet, IterateKey);
</ins><span class="cx"> m_gcBuffer.append(inSet);
</span><span class="cx"> m_gcBuffer.append(iterator);
</span><span class="cx"> setIteratorStack.append(iterator);
</span><span class="lines">@@ -1416,7 +1419,7 @@
</span><span class="cx"> if (!iterator->next(m_exec, key)) {
</span><span class="cx"> setIteratorStack.removeLast();
</span><span class="cx"> JSObject* object = inputObjectStack.last();
</span><del>- ASSERT(jsDynamicDowncast<JSSet*>(object));
</del><ins>+ ASSERT(jsDynamicDowncast<JSSet*>(vm, object));
</ins><span class="cx"> propertyStack.append(PropertyNameArray(m_exec, PropertyNameMode::Strings));
</span><span class="cx"> object->methodTable()->getOwnPropertyNames(object, m_exec, propertyStack.last(), EnumerationMode());
</span><span class="cx"> write(NonSetPropertiesTag);
</span><span class="lines">@@ -1440,11 +1443,11 @@
</span><span class="cx"> break;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (isArray(inValue))
</del><ins>+ if (isArray(vm, inValue))
</ins><span class="cx"> goto arrayStartState;
</span><del>- if (isMap(inValue))
</del><ins>+ if (isMap(vm, inValue))
</ins><span class="cx"> goto mapStartState;
</span><del>- if (isSet(inValue))
</del><ins>+ if (isSet(vm, inValue))
</ins><span class="cx"> goto setStartState;
</span><span class="cx"> goto objectStartState;
</span><span class="cx"> }
</span><span class="lines">@@ -1538,7 +1541,7 @@
</span><span class="cx"> CloneDeserializer(ExecState* exec, JSGlobalObject* globalObject, Vector<RefPtr<MessagePort>>& messagePorts, ArrayBufferContentsArray* arrayBufferContents, const Vector<uint8_t>& buffer)
</span><span class="cx"> : CloneBase(exec)
</span><span class="cx"> , m_globalObject(globalObject)
</span><del>- , m_isDOMGlobalObject(globalObject->inherits(JSDOMGlobalObject::info()))
</del><ins>+ , m_isDOMGlobalObject(globalObject->inherits(globalObject->vm(), JSDOMGlobalObject::info()))
</ins><span class="cx"> , m_ptr(buffer.data())
</span><span class="cx"> , m_end(buffer.data() + buffer.size())
</span><span class="cx"> , m_version(0xFFFFFFFF)
</span><span class="lines">@@ -1553,7 +1556,7 @@
</span><span class="cx"> CloneDeserializer(ExecState* exec, JSGlobalObject* globalObject, Vector<RefPtr<MessagePort>>& messagePorts, ArrayBufferContentsArray* arrayBufferContents, const Vector<uint8_t>& buffer, const Vector<String>& blobURLs, const Vector<String> blobFilePaths)
</span><span class="cx"> : CloneBase(exec)
</span><span class="cx"> , m_globalObject(globalObject)
</span><del>- , m_isDOMGlobalObject(globalObject->inherits(JSDOMGlobalObject::info()))
</del><ins>+ , m_isDOMGlobalObject(globalObject->inherits(globalObject->vm(), JSDOMGlobalObject::info()))
</ins><span class="cx"> , m_ptr(buffer.data())
</span><span class="cx"> , m_end(buffer.data() + buffer.size())
</span><span class="cx"> , m_version(0xFFFFFFFF)
</span><span class="lines">@@ -1808,7 +1811,7 @@
</span><span class="cx"> return true;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- bool readArrayBufferView(JSValue& arrayBufferView)
</del><ins>+ bool readArrayBufferView(VM& vm, JSValue& arrayBufferView)
</ins><span class="cx"> {
</span><span class="cx"> ArrayBufferViewSubtag arrayBufferViewSubtag;
</span><span class="cx"> if (!readArrayBufferViewSubtag(arrayBufferViewSubtag))
</span><span class="lines">@@ -1820,7 +1823,7 @@
</span><span class="cx"> if (!read(byteLength))
</span><span class="cx"> return false;
</span><span class="cx"> JSObject* arrayBufferObj = asObject(readTerminal());
</span><del>- if (!arrayBufferObj || !arrayBufferObj->inherits(JSArrayBuffer::info()))
</del><ins>+ if (!arrayBufferObj || !arrayBufferObj->inherits(vm, JSArrayBuffer::info()))
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> unsigned elementSize = typedArrayElementSize(arrayBufferViewSubtag);
</span><span class="lines">@@ -1830,7 +1833,7 @@
</span><span class="cx"> if (length * elementSize != byteLength)
</span><span class="cx"> return false;
</span><span class="cx">
</span><del>- RefPtr<ArrayBuffer> arrayBuffer = toPossiblySharedArrayBuffer(arrayBufferObj);
</del><ins>+ RefPtr<ArrayBuffer> arrayBuffer = toPossiblySharedArrayBuffer(vm, arrayBufferObj);
</ins><span class="cx"> switch (arrayBufferViewSubtag) {
</span><span class="cx"> case DataViewTag:
</span><span class="cx"> arrayBufferView = getJSValue(DataView::create(arrayBuffer, byteOffset, length).get());
</span><span class="lines">@@ -2386,7 +2389,7 @@
</span><span class="cx"> }
</span><span class="cx"> case ArrayBufferViewTag: {
</span><span class="cx"> JSValue arrayBufferView;
</span><del>- if (!readArrayBufferView(arrayBufferView)) {
</del><ins>+ if (!readArrayBufferView(m_exec->vm(), arrayBufferView)) {
</ins><span class="cx"> fail();
</span><span class="cx"> return JSValue();
</span><span class="cx"> }
</span><span class="lines">@@ -2662,7 +2665,7 @@
</span><span class="cx"> m_blobURLs.uncheckedAppend(url.isolatedCopy());
</span><span class="cx"> }
</span><span class="cx">
</span><del>-static ExceptionOr<std::unique_ptr<ArrayBufferContentsArray>> transferArrayBuffers(const Vector<RefPtr<JSC::ArrayBuffer>>& arrayBuffers)
</del><ins>+static ExceptionOr<std::unique_ptr<ArrayBufferContentsArray>> transferArrayBuffers(VM& vm, const Vector<RefPtr<JSC::ArrayBuffer>>& arrayBuffers)
</ins><span class="cx"> {
</span><span class="cx"> if (arrayBuffers.isEmpty())
</span><span class="cx"> return nullptr;
</span><span class="lines">@@ -2675,7 +2678,7 @@
</span><span class="cx"> continue;
</span><span class="cx"> visited.add(arrayBuffers[arrayBufferIndex].get());
</span><span class="cx">
</span><del>- bool result = arrayBuffers[arrayBufferIndex]->transferTo(contents->at(arrayBufferIndex));
</del><ins>+ bool result = arrayBuffers[arrayBufferIndex]->transferTo(vm, contents->at(arrayBufferIndex));
</ins><span class="cx"> if (!result)
</span><span class="cx"> return Exception { TypeError };
</span><span class="cx"> }
</span><span class="lines">@@ -2751,15 +2754,16 @@
</span><span class="cx">
</span><span class="cx"> ExceptionOr<Ref<SerializedScriptValue>> SerializedScriptValue::create(ExecState& state, JSValue value, Vector<JSC::Strong<JSC::JSObject>>&& transferList, Vector<RefPtr<MessagePort>>& messagePorts)
</span><span class="cx"> {
</span><ins>+ VM& vm = state.vm();
</ins><span class="cx"> Vector<RefPtr<JSC::ArrayBuffer>> arrayBuffers;
</span><span class="cx"> for (auto& transferable : transferList) {
</span><del>- if (auto arrayBuffer = toPossiblySharedArrayBuffer(transferable.get())) {
</del><ins>+ if (auto arrayBuffer = toPossiblySharedArrayBuffer(vm, transferable.get())) {
</ins><span class="cx"> if (arrayBuffer->isNeutered())
</span><span class="cx"> return Exception { DATA_CLONE_ERR };
</span><span class="cx"> arrayBuffers.append(WTFMove(arrayBuffer));
</span><span class="cx"> continue;
</span><span class="cx"> }
</span><del>- if (auto port = JSMessagePort::toWrapped(transferable.get())) {
</del><ins>+ if (auto port = JSMessagePort::toWrapped(vm, transferable.get())) {
</ins><span class="cx"> // FIXME: This should check if the port is detached as per https://html.spec.whatwg.org/multipage/infrastructure.html#istransferable.
</span><span class="cx"> messagePorts.append(WTFMove(port));
</span><span class="cx"> continue;
</span><span class="lines">@@ -2775,7 +2779,7 @@
</span><span class="cx"> if (code != SerializationReturnCode::SuccessfullyCompleted)
</span><span class="cx"> return exceptionForSerializationFailure(code);
</span><span class="cx">
</span><del>- auto arrayBufferContentsArray = transferArrayBuffers(arrayBuffers);
</del><ins>+ auto arrayBufferContentsArray = transferArrayBuffers(vm, arrayBuffers);
</ins><span class="cx"> if (arrayBufferContentsArray.hasException())
</span><span class="cx"> return arrayBufferContentsArray.releaseException();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsStructuredClonecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/StructuredClone.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/StructuredClone.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/StructuredClone.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,9 +40,9 @@
</span><span class="cx"> ASSERT(state->argumentCount());
</span><span class="cx"> ASSERT(state->lexicalGlobalObject());
</span><span class="cx">
</span><del>- auto* buffer = toUnsharedArrayBuffer(state->uncheckedArgument(0));
</del><ins>+ VM& vm = state->vm();
+ auto* buffer = toUnsharedArrayBuffer(vm, state->uncheckedArgument(0));
</ins><span class="cx"> if (!buffer) {
</span><del>- VM& vm = state->vm();
</del><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> throwDataCloneError(*state, scope);
</span><span class="cx"> return { };
</span><span class="lines">@@ -56,12 +56,12 @@
</span><span class="cx"> ASSERT(state->argumentCount());
</span><span class="cx">
</span><span class="cx"> JSValue value = state->uncheckedArgument(0);
</span><del>- auto* bufferView = jsDynamicDowncast<JSArrayBufferView*>(value);
</del><ins>+ VM& vm = state->vm();
+ auto* bufferView = jsDynamicDowncast<JSArrayBufferView*>(vm, value);
</ins><span class="cx"> ASSERT(bufferView);
</span><span class="cx">
</span><span class="cx"> auto* buffer = bufferView->unsharedBuffer();
</span><span class="cx"> if (!buffer) {
</span><del>- VM& vm = state->vm();
</del><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> throwDataCloneError(*state, scope);
</span><span class="cx"> return { };
</span><span class="lines">@@ -68,25 +68,25 @@
</span><span class="cx"> }
</span><span class="cx"> auto bufferClone = ArrayBuffer::tryCreate(buffer->data(), buffer->byteLength());
</span><span class="cx">
</span><del>- if (jsDynamicDowncast<JSInt8Array*>(value))
</del><ins>+ if (jsDynamicDowncast<JSInt8Array*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSInt8Array::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSInt16Array*>(value))
</del><ins>+ if (jsDynamicDowncast<JSInt16Array*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSInt16Array::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSInt32Array*>(value))
</del><ins>+ if (jsDynamicDowncast<JSInt32Array*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSInt32Array::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSUint8Array*>(value))
</del><ins>+ if (jsDynamicDowncast<JSUint8Array*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSUint8Array::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSUint8ClampedArray*>(value))
</del><ins>+ if (jsDynamicDowncast<JSUint8ClampedArray*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSUint8ClampedArray::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSUint16Array*>(value))
</del><ins>+ if (jsDynamicDowncast<JSUint16Array*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSUint16Array::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSUint32Array*>(value))
</del><ins>+ if (jsDynamicDowncast<JSUint32Array*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSUint32Array::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSFloat32Array*>(value))
</del><ins>+ if (jsDynamicDowncast<JSFloat32Array*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSFloat32Array::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSFloat64Array*>(value))
</del><ins>+ if (jsDynamicDowncast<JSFloat64Array*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSFloat64Array::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><del>- if (jsDynamicDowncast<JSDataView*>(value))
</del><ins>+ if (jsDynamicDowncast<JSDataView*>(vm, value))
</ins><span class="cx"> return JSValue::encode(JSDataView::create(state, bufferView->structure(), WTFMove(bufferClone), bufferView->byteOffset(), bufferView->length()));
</span><span class="cx">
</span><span class="cx"> ASSERT_NOT_REACHED();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsWorkerScriptControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/js/WorkerScriptController.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx">
</span><span class="cx"> JSC::evaluate(exec, sourceCode.jsSourceCode(), m_workerGlobalScopeWrapper->globalThis(), returnedException);
</span><span class="cx">
</span><del>- if ((returnedException && isTerminatedExecutionException(returnedException)) || isTerminatingExecution()) {
</del><ins>+ if ((returnedException && isTerminatedExecutionException(vm, returnedException)) || isTerminatingExecution()) {
</ins><span class="cx"> forbidExecution();
</span><span class="cx"> return;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1802,6 +1802,7 @@
</span><span class="cx">
</span><span class="cx"> # FIXME: Add extended attribute for this.
</span><span class="cx"> my @toWrappedArguments = ();
</span><ins>+ push(@toWrappedArguments, "JSC::VM&");
</ins><span class="cx"> push(@toWrappedArguments, "JSC::ExecState&") if $interface->type->name eq "XPathNSResolver";
</span><span class="cx"> push(@toWrappedArguments, "JSC::JSValue");
</span><span class="cx">
</span><span class="lines">@@ -2669,9 +2670,9 @@
</span><span class="cx"> if ($codeGenerator->IsWrapperType($subtype) || $codeGenerator->IsTypedArrayType($subtype)) {
</span><span class="cx"> if ($subtype->name eq "DOMWindow") {
</span><span class="cx"> AddToImplIncludes("JSDOMWindowShell.h");
</span><del>- &$generateOverloadCallIfNecessary($overload, "distinguishingArg.isObject() && (asObject(distinguishingArg)->inherits(JSDOMWindowShell::info()) || asObject(distinguishingArg)->inherits(JSDOMWindow::info()))");
</del><ins>+ &$generateOverloadCallIfNecessary($overload, "distinguishingArg.isObject() && (asObject(distinguishingArg)->inherits(vm, JSDOMWindowShell::info()) || asObject(distinguishingArg)->inherits(vm, JSDOMWindow::info()))");
</ins><span class="cx"> } else {
</span><del>- &$generateOverloadCallIfNecessary($overload, "distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JS" . $subtype->name . "::info())");
</del><ins>+ &$generateOverloadCallIfNecessary($overload, "distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JS" . $subtype->name . "::info())");
</ins><span class="cx"> }
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -2681,7 +2682,7 @@
</span><span class="cx"> &$generateOverloadCallIfNecessary($overload, "distinguishingArg.isObject() && asObject(distinguishingArg)->type() == RegExpObjectType");
</span><span class="cx">
</span><span class="cx"> $overload = GetOverloadThatMatches($S, $d, \&$isObjectOrErrorOrDOMExceptionParameter);
</span><del>- &$generateOverloadCallIfNecessary($overload, "distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSDOMCoreException::info())");
</del><ins>+ &$generateOverloadCallIfNecessary($overload, "distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSDOMCoreException::info())");
</ins><span class="cx">
</span><span class="cx"> $overload = GetOverloadThatMatches($S, $d, \&$isObjectOrErrorParameter);
</span><span class="cx"> &$generateOverloadCallIfNecessary($overload, "distinguishingArg.isObject() && asObject(distinguishingArg)->type() == ErrorInstanceType");
</span><span class="lines">@@ -3415,7 +3416,7 @@
</span><span class="cx"> push(@implContent, "void ${className}::finishCreation(VM& vm)\n");
</span><span class="cx"> push(@implContent, "{\n");
</span><span class="cx"> push(@implContent, " Base::finishCreation(vm);\n");
</span><del>- push(@implContent, " ASSERT(inherits(info()));\n\n");
</del><ins>+ push(@implContent, " ASSERT(inherits(vm, info()));\n\n");
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> # Support for RuntimeEnabled attributes on instances.
</span><span class="lines">@@ -3548,12 +3549,12 @@
</span><span class="cx"> push(@implContent, " auto decodedThisValue = JSValue::decode(thisValue);\n");
</span><span class="cx"> push(@implContent, " if (decodedThisValue.isUndefinedOrNull())\n");
</span><span class="cx"> push(@implContent, " decodedThisValue = state.thisValue().toThis(&state, NotStrictMode);\n");
</span><del>- push(@implContent, " return $castingFunction(decodedThisValue);");
</del><ins>+ push(@implContent, " return $castingFunction(state.vm(), decodedThisValue);");
</ins><span class="cx"> push(@implContent, "}\n\n");
</span><span class="cx"> } else {
</span><del>- push(@implContent, "template<> inline ${className}* BindingCaller<${className}>::castForAttribute(ExecState&, EncodedJSValue thisValue)\n");
</del><ins>+ push(@implContent, "template<> inline ${className}* BindingCaller<${className}>::castForAttribute(ExecState& state, EncodedJSValue thisValue)\n");
</ins><span class="cx"> push(@implContent, "{\n");
</span><del>- push(@implContent, " return $castingFunction(JSValue::decode(thisValue));\n");
</del><ins>+ push(@implContent, " return $castingFunction(state.vm(), JSValue::decode(thisValue));\n");
</ins><span class="cx"> push(@implContent, "}\n\n");
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -3564,7 +3565,7 @@
</span><span class="cx"> my $thisValue = $interface->extendedAttributes->{"CustomProxyToJSObject"} ? "state.thisValue().toThis(&state, NotStrictMode)" : "state.thisValue()";
</span><span class="cx"> push(@implContent, "template<> inline ${className}* BindingCaller<${className}>::castForOperation(ExecState& state)\n");
</span><span class="cx"> push(@implContent, "{\n");
</span><del>- push(@implContent, " return $castingFunction($thisValue);\n");
</del><ins>+ push(@implContent, " return $castingFunction(state.vm(), $thisValue);\n");
</ins><span class="cx"> push(@implContent, "}\n\n");
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -3725,7 +3726,7 @@
</span><span class="cx"> push(@implContent, "{\n");
</span><span class="cx"> push(@implContent, " VM& vm = state->vm();\n");
</span><span class="cx"> push(@implContent, " auto throwScope = DECLARE_THROW_SCOPE(vm);\n");
</span><del>- push(@implContent, " ${className}Prototype* domObject = jsDynamicDowncast<${className}Prototype*>(JSValue::decode(thisValue));\n");
</del><ins>+ push(@implContent, " ${className}Prototype* domObject = jsDynamicDowncast<${className}Prototype*>(vm, JSValue::decode(thisValue));\n");
</ins><span class="cx"> push(@implContent, " if (UNLIKELY(!domObject))\n");
</span><span class="cx"> push(@implContent, " return throwVMTypeError(state, throwScope);\n");
</span><span class="cx">
</span><span class="lines">@@ -3747,7 +3748,7 @@
</span><span class="cx"> push(@implContent, " VM& vm = state->vm();\n");
</span><span class="cx"> push(@implContent, " auto throwScope = DECLARE_THROW_SCOPE(vm);\n");
</span><span class="cx"> push(@implContent, " JSValue value = JSValue::decode(encodedValue);\n");
</span><del>- push(@implContent, " ${className}Prototype* domObject = jsDynamicDowncast<${className}Prototype*>(JSValue::decode(thisValue));\n");
</del><ins>+ push(@implContent, " ${className}Prototype* domObject = jsDynamicDowncast<${className}Prototype*>(vm, JSValue::decode(thisValue));\n");
</ins><span class="cx"> push(@implContent, " if (UNLIKELY(!domObject)) {\n");
</span><span class="cx"> push(@implContent, " throwVMTypeError(state, throwScope);\n");
</span><span class="cx"> push(@implContent, " return false;\n");
</span><span class="lines">@@ -4363,9 +4364,9 @@
</span><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> if (ShouldGenerateToWrapped($hasParent, $interface) and !$interface->extendedAttributes->{JSCustomToNativeObject}) {
</span><del>- push(@implContent, "$implType* ${className}::toWrapped(JSC::JSValue value)\n");
</del><ins>+ push(@implContent, "$implType* ${className}::toWrapped(JSC::VM& vm, JSC::JSValue value)\n");
</ins><span class="cx"> push(@implContent, "{\n");
</span><del>- push(@implContent, " if (auto* wrapper = " . GetCastingHelperForThisObject($interface) . "(value))\n");
</del><ins>+ push(@implContent, " if (auto* wrapper = " . GetCastingHelperForThisObject($interface) . "(vm, value))\n");
</ins><span class="cx"> push(@implContent, " return &wrapper->wrapped();\n");
</span><span class="cx"> push(@implContent, " return nullptr;\n");
</span><span class="cx"> push(@implContent, "}\n");
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSInterfaceNamecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx"> void JSInterfaceName::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSInterfaceNamePrototype* domObject = jsDynamicDowncast<JSInterfaceNamePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSInterfaceNamePrototype* domObject = jsDynamicDowncast<JSInterfaceNamePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSInterfaceName::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -137,7 +137,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSInterfaceNamePrototype* domObject = jsDynamicDowncast<JSInterfaceNamePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSInterfaceNamePrototype* domObject = jsDynamicDowncast<JSInterfaceNamePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -218,9 +218,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-InterfaceName* JSInterfaceName::toWrapped(JSC::JSValue value)
</del><ins>+InterfaceName* JSInterfaceName::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSInterfaceName*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSInterfaceName*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSInterfaceNameh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSInterfaceName.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static InterfaceName* toWrapped(JSC::JSValue);
</del><ins>+ static InterfaceName* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -127,7 +127,7 @@
</span><span class="cx"> void JSTestActiveDOMObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -147,14 +147,14 @@
</span><span class="cx"> thisObject->JSTestActiveDOMObject::~JSTestActiveDOMObject();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestActiveDOMObject* BindingCaller<JSTestActiveDOMObject>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestActiveDOMObject* BindingCaller<JSTestActiveDOMObject>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestActiveDOMObject*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestActiveDOMObject*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestActiveDOMObject* BindingCaller<JSTestActiveDOMObject>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestActiveDOMObject*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestActiveDOMObject*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestActiveDOMObjectExcitingAttrGetter(ExecState&, JSTestActiveDOMObject&, ThrowScope& throwScope);
</span><span class="lines">@@ -179,7 +179,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestActiveDOMObjectPrototype* domObject = jsDynamicDowncast<JSTestActiveDOMObjectPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestActiveDOMObjectPrototype* domObject = jsDynamicDowncast<JSTestActiveDOMObjectPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestActiveDOMObject::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestActiveDOMObjectPrototype* domObject = jsDynamicDowncast<JSTestActiveDOMObjectPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestActiveDOMObjectPrototype* domObject = jsDynamicDowncast<JSTestActiveDOMObjectPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -298,9 +298,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestActiveDOMObject* JSTestActiveDOMObject::toWrapped(JSC::JSValue value)
</del><ins>+TestActiveDOMObject* JSTestActiveDOMObject::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestActiveDOMObject*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestActiveDOMObject*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestActiveDOMObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestActiveDOMObject.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestActiveDOMObject* toWrapped(JSC::JSValue);
</del><ins>+ static TestActiveDOMObject* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -121,7 +121,7 @@
</span><span class="cx"> void JSTestCEReactions::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -141,14 +141,14 @@
</span><span class="cx"> thisObject->JSTestCEReactions::~JSTestCEReactions();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestCEReactions* BindingCaller<JSTestCEReactions>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestCEReactions* BindingCaller<JSTestCEReactions>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestCEReactions*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestCEReactions*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestCEReactions* BindingCaller<JSTestCEReactions>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestCEReactions*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestCEReactions*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestCEReactionsAttributeWithCEReactionsGetter(ExecState&, JSTestCEReactions&, ThrowScope& throwScope);
</span><span class="lines">@@ -203,7 +203,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestCEReactionsPrototype* domObject = jsDynamicDowncast<JSTestCEReactionsPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestCEReactionsPrototype* domObject = jsDynamicDowncast<JSTestCEReactionsPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestCEReactions::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -214,7 +214,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestCEReactionsPrototype* domObject = jsDynamicDowncast<JSTestCEReactionsPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestCEReactionsPrototype* domObject = jsDynamicDowncast<JSTestCEReactionsPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -358,9 +358,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestCEReactions* JSTestCEReactions::toWrapped(JSC::JSValue value)
</del><ins>+TestCEReactions* JSTestCEReactions::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestCEReactions*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestCEReactions*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactions.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestCEReactions* toWrapped(JSC::JSValue);
</del><ins>+ static TestCEReactions* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifiercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -113,7 +113,7 @@
</span><span class="cx"> void JSTestCEReactionsStringifier::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -133,14 +133,14 @@
</span><span class="cx"> thisObject->JSTestCEReactionsStringifier::~JSTestCEReactionsStringifier();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestCEReactionsStringifier* BindingCaller<JSTestCEReactionsStringifier>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestCEReactionsStringifier* BindingCaller<JSTestCEReactionsStringifier>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestCEReactionsStringifier*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestCEReactionsStringifier*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestCEReactionsStringifier* BindingCaller<JSTestCEReactionsStringifier>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestCEReactionsStringifier*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestCEReactionsStringifier*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestCEReactionsStringifierValueGetter(ExecState&, JSTestCEReactionsStringifier&, ThrowScope& throwScope);
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestCEReactionsStringifierPrototype* domObject = jsDynamicDowncast<JSTestCEReactionsStringifierPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestCEReactionsStringifierPrototype* domObject = jsDynamicDowncast<JSTestCEReactionsStringifierPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestCEReactionsStringifier::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestCEReactionsStringifierPrototype* domObject = jsDynamicDowncast<JSTestCEReactionsStringifierPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestCEReactionsStringifierPrototype* domObject = jsDynamicDowncast<JSTestCEReactionsStringifierPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -275,9 +275,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestCEReactionsStringifier* JSTestCEReactionsStringifier::toWrapped(JSC::JSValue value)
</del><ins>+TestCEReactionsStringifier* JSTestCEReactionsStringifier::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestCEReactionsStringifier*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestCEReactionsStringifier*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCEReactionsStringifierh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCEReactionsStringifier.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestCEReactionsStringifier* toWrapped(JSC::JSValue);
</del><ins>+ static TestCEReactionsStringifier* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx"> void JSTestClassWithJSBuiltinConstructor::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast<JSTestClassWithJSBuiltinConstructorPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast<JSTestClassWithJSBuiltinConstructorPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestClassWithJSBuiltinConstructor::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -143,7 +143,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast<JSTestClassWithJSBuiltinConstructorPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestClassWithJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast<JSTestClassWithJSBuiltinConstructorPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -216,9 +216,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestClassWithJSBuiltinConstructor* JSTestClassWithJSBuiltinConstructor::toWrapped(JSC::JSValue value)
</del><ins>+TestClassWithJSBuiltinConstructor* JSTestClassWithJSBuiltinConstructor::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestClassWithJSBuiltinConstructor*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestClassWithJSBuiltinConstructor*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestClassWithJSBuiltinConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestClassWithJSBuiltinConstructor.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestClassWithJSBuiltinConstructor* toWrapped(JSC::JSValue);
</del><ins>+ static TestClassWithJSBuiltinConstructor* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -108,7 +108,7 @@
</span><span class="cx"> void JSTestCustomConstructorWithNoInterfaceObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicDowncast<JSTestCustomConstructorWithNoInterfaceObjectPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicDowncast<JSTestCustomConstructorWithNoInterfaceObjectPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> JSValue constructor = JSTestCustomConstructorWithNoInterfaceObjectConstructor::create(state->vm(), JSTestCustomConstructorWithNoInterfaceObjectConstructor::createStructure(state->vm(), *domObject->globalObject(), domObject->globalObject()->objectPrototype()), *jsCast<JSDOMGlobalObject*>(domObject->globalObject()));
</span><span class="lines">@@ -146,7 +146,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicDowncast<JSTestCustomConstructorWithNoInterfaceObjectPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestCustomConstructorWithNoInterfaceObjectPrototype* domObject = jsDynamicDowncast<JSTestCustomConstructorWithNoInterfaceObjectPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -207,9 +207,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestCustomConstructorWithNoInterfaceObject* JSTestCustomConstructorWithNoInterfaceObject::toWrapped(JSC::JSValue value)
</del><ins>+TestCustomConstructorWithNoInterfaceObject* JSTestCustomConstructorWithNoInterfaceObject::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestCustomConstructorWithNoInterfaceObject*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestCustomConstructorWithNoInterfaceObject*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomConstructorWithNoInterfaceObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomConstructorWithNoInterfaceObject.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestCustomConstructorWithNoInterfaceObject* toWrapped(JSC::JSValue);
</del><ins>+ static TestCustomConstructorWithNoInterfaceObject* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> void JSTestCustomNamedGetter::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -166,7 +166,7 @@
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestCustomNamedGetter* BindingCaller<JSTestCustomNamedGetter>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestCustomNamedGetter*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestCustomNamedGetter*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue jsTestCustomNamedGetterConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestCustomNamedGetterPrototype* domObject = jsDynamicDowncast<JSTestCustomNamedGetterPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestCustomNamedGetterPrototype* domObject = jsDynamicDowncast<JSTestCustomNamedGetterPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestCustomNamedGetter::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -184,7 +184,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestCustomNamedGetterPrototype* domObject = jsDynamicDowncast<JSTestCustomNamedGetterPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestCustomNamedGetterPrototype* domObject = jsDynamicDowncast<JSTestCustomNamedGetterPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -270,9 +270,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestCustomNamedGetter* JSTestCustomNamedGetter::toWrapped(JSC::JSValue value)
</del><ins>+TestCustomNamedGetter* JSTestCustomNamedGetter::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestCustomNamedGetter*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestCustomNamedGetter*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestCustomNamedGetterh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestCustomNamedGetter.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestCustomNamedGetter* toWrapped(JSC::JSValue);
</del><ins>+ static TestCustomNamedGetter* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestDOMJITcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestDOMJIT.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -229,7 +229,7 @@
</span><span class="cx"> void JSTestDOMJIT::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -243,14 +243,14 @@
</span><span class="cx"> return getDOMPrototype<JSTestDOMJIT>(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestDOMJIT* BindingCaller<JSTestDOMJIT>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestDOMJIT* BindingCaller<JSTestDOMJIT>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestDOMJIT*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestDOMJIT*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestDOMJIT* BindingCaller<JSTestDOMJIT>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestDOMJIT*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestDOMJIT*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestDOMJITAnyAttrGetter(ExecState&, JSTestDOMJIT&, ThrowScope& throwScope);
</span><span class="lines">@@ -1202,7 +1202,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestDOMJITPrototype* domObject = jsDynamicDowncast<JSTestDOMJITPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestDOMJITPrototype* domObject = jsDynamicDowncast<JSTestDOMJITPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestDOMJIT::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -1213,7 +1213,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestDOMJITPrototype* domObject = jsDynamicDowncast<JSTestDOMJITPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestDOMJITPrototype* domObject = jsDynamicDowncast<JSTestDOMJITPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -178,7 +178,7 @@
</span><span class="cx"> void JSTestEventConstructor::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -192,9 +192,9 @@
</span><span class="cx"> return getDOMPrototype<JSTestEventConstructor>(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestEventConstructor* BindingCaller<JSTestEventConstructor>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestEventConstructor* BindingCaller<JSTestEventConstructor>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestEventConstructor*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestEventConstructor*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestEventConstructorAttr1Getter(ExecState&, JSTestEventConstructor&, ThrowScope& throwScope);
</span><span class="lines">@@ -252,7 +252,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestEventConstructorPrototype* domObject = jsDynamicDowncast<JSTestEventConstructorPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestEventConstructorPrototype* domObject = jsDynamicDowncast<JSTestEventConstructorPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestEventConstructor::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -263,7 +263,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestEventConstructorPrototype* domObject = jsDynamicDowncast<JSTestEventConstructorPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestEventConstructorPrototype* domObject = jsDynamicDowncast<JSTestEventConstructorPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargetcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -109,7 +109,7 @@
</span><span class="cx"> void JSTestEventTarget::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -173,7 +173,7 @@
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestEventTarget* BindingCaller<JSTestEventTarget>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestEventTarget*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestEventTarget*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue jsTestEventTargetConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -180,7 +180,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestEventTargetPrototype* domObject = jsDynamicDowncast<JSTestEventTargetPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestEventTargetPrototype* domObject = jsDynamicDowncast<JSTestEventTargetPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestEventTarget::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -191,7 +191,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestEventTargetPrototype* domObject = jsDynamicDowncast<JSTestEventTargetPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestEventTargetPrototype* domObject = jsDynamicDowncast<JSTestEventTargetPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -270,9 +270,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestEventTarget* JSTestEventTarget::toWrapped(JSC::JSValue value)
</del><ins>+TestEventTarget* JSTestEventTarget::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestEventTarget*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestEventTarget*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestEventTargeth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestEventTarget.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestEventTarget* toWrapped(JSC::JSValue);
</del><ins>+ static TestEventTarget* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -118,7 +118,7 @@
</span><span class="cx"> void JSTestException::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -138,9 +138,9 @@
</span><span class="cx"> thisObject->JSTestException::~JSTestException();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestException* BindingCaller<JSTestException>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestException* BindingCaller<JSTestException>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestException*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestException*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestExceptionNameGetter(ExecState&, JSTestException&, ThrowScope& throwScope);
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestExceptionPrototype* domObject = jsDynamicDowncast<JSTestExceptionPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestExceptionPrototype* domObject = jsDynamicDowncast<JSTestExceptionPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestException::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestExceptionPrototype* domObject = jsDynamicDowncast<JSTestExceptionPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestExceptionPrototype* domObject = jsDynamicDowncast<JSTestExceptionPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -240,9 +240,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestException* JSTestException::toWrapped(JSC::JSValue value)
</del><ins>+TestException* JSTestException::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestException*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestException*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestExceptionh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestException.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestException* toWrapped(JSC::JSValue);
</del><ins>+ static TestException* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -102,7 +102,7 @@
</span><span class="cx"> void JSTestGenerateIsReachable::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -126,7 +126,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestGenerateIsReachablePrototype* domObject = jsDynamicDowncast<JSTestGenerateIsReachablePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestGenerateIsReachablePrototype* domObject = jsDynamicDowncast<JSTestGenerateIsReachablePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestGenerateIsReachable::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -137,7 +137,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestGenerateIsReachablePrototype* domObject = jsDynamicDowncast<JSTestGenerateIsReachablePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestGenerateIsReachablePrototype* domObject = jsDynamicDowncast<JSTestGenerateIsReachablePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -203,9 +203,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestGenerateIsReachable* JSTestGenerateIsReachable::toWrapped(JSC::JSValue value)
</del><ins>+TestGenerateIsReachable* JSTestGenerateIsReachable::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestGenerateIsReachable*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestGenerateIsReachable*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGenerateIsReachableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGenerateIsReachable.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestGenerateIsReachable* toWrapped(JSC::JSValue);
</del><ins>+ static TestGenerateIsReachable* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -144,7 +144,7 @@
</span><span class="cx"> void JSTestGlobalObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> #if ENABLE(TEST_FEATURE)
</span><span class="cx"> if (RuntimeEnabledFeatures::sharedFeatures().testFeatureEnabled()) {
</span><span class="lines">@@ -178,14 +178,14 @@
</span><span class="cx"> thisObject->JSTestGlobalObject::~JSTestGlobalObject();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestGlobalObject* BindingCaller<JSTestGlobalObject>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestGlobalObject* BindingCaller<JSTestGlobalObject>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestGlobalObject*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestGlobalObject*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestGlobalObject* BindingCaller<JSTestGlobalObject>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestGlobalObject*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestGlobalObject*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestGlobalObjectRegularAttributeGetter(ExecState&, JSTestGlobalObject&, ThrowScope& throwScope);
</span><span class="lines">@@ -262,7 +262,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestGlobalObjectPrototype* domObject = jsDynamicDowncast<JSTestGlobalObjectPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestGlobalObjectPrototype* domObject = jsDynamicDowncast<JSTestGlobalObjectPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestGlobalObject::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -273,7 +273,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestGlobalObjectPrototype* domObject = jsDynamicDowncast<JSTestGlobalObjectPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestGlobalObjectPrototype* domObject = jsDynamicDowncast<JSTestGlobalObjectPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -545,9 +545,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestGlobalObject* JSTestGlobalObject::toWrapped(JSC::JSValue value)
</del><ins>+TestGlobalObject* JSTestGlobalObject::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestGlobalObject*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestGlobalObject*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestGlobalObject.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">
</span><span class="cx"> static const bool needsDestruction = false;
</span><span class="cx">
</span><del>- static TestGlobalObject* toWrapped(JSC::JSValue);
</del><ins>+ static TestGlobalObject* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -378,7 +378,7 @@
</span><span class="cx"> void JSTestInterface::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -420,14 +420,14 @@
</span><span class="cx"> return Base::putByIndex(cell, state, index, value, shouldThrow);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestInterface* BindingCaller<JSTestInterface>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestInterface* BindingCaller<JSTestInterface>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestInterface*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestInterface*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestInterface* BindingCaller<JSTestInterface>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestInterface*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestInterface*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> #if ENABLE(Condition22) || ENABLE(Condition23)
</span><span class="lines">@@ -654,7 +654,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestInterfacePrototype* domObject = jsDynamicDowncast<JSTestInterfacePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestInterfacePrototype* domObject = jsDynamicDowncast<JSTestInterfacePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestInterface::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -665,7 +665,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestInterfacePrototype* domObject = jsDynamicDowncast<JSTestInterfacePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestInterfacePrototype* domObject = jsDynamicDowncast<JSTestInterfacePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -1012,9 +1012,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestInterface* JSTestInterface::toWrapped(JSC::JSValue value)
</del><ins>+TestInterface* JSTestInterface::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestInterface*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestInterface*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterface.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestInterface* toWrapped(JSC::JSValue);
</del><ins>+ static TestInterface* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static bool put(JSC::JSCell*, JSC::ExecState*, JSC::PropertyName, JSC::JSValue, JSC::PutPropertySlot&);
</span><span class="cx"> static bool putByIndex(JSC::JSCell*, JSC::ExecState*, unsigned propertyName, JSC::JSValue, bool shouldThrow);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscorecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -105,7 +105,7 @@
</span><span class="cx"> void JSTestInterfaceLeadingUnderscore::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -125,9 +125,9 @@
</span><span class="cx"> thisObject->JSTestInterfaceLeadingUnderscore::~JSTestInterfaceLeadingUnderscore();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestInterfaceLeadingUnderscore* BindingCaller<JSTestInterfaceLeadingUnderscore>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestInterfaceLeadingUnderscore* BindingCaller<JSTestInterfaceLeadingUnderscore>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestInterfaceLeadingUnderscore*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestInterfaceLeadingUnderscore*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestInterfaceLeadingUnderscoreReadonlyGetter(ExecState&, JSTestInterfaceLeadingUnderscore&, ThrowScope& throwScope);
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestInterfaceLeadingUnderscorePrototype* domObject = jsDynamicDowncast<JSTestInterfaceLeadingUnderscorePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestInterfaceLeadingUnderscorePrototype* domObject = jsDynamicDowncast<JSTestInterfaceLeadingUnderscorePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestInterfaceLeadingUnderscore::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -161,7 +161,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestInterfaceLeadingUnderscorePrototype* domObject = jsDynamicDowncast<JSTestInterfaceLeadingUnderscorePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestInterfaceLeadingUnderscorePrototype* domObject = jsDynamicDowncast<JSTestInterfaceLeadingUnderscorePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -206,9 +206,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestInterfaceLeadingUnderscore* JSTestInterfaceLeadingUnderscore::toWrapped(JSC::JSValue value)
</del><ins>+TestInterfaceLeadingUnderscore* JSTestInterfaceLeadingUnderscore::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestInterfaceLeadingUnderscore*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestInterfaceLeadingUnderscore*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestInterfaceLeadingUnderscoreh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestInterfaceLeadingUnderscore.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestInterfaceLeadingUnderscore* toWrapped(JSC::JSValue);
</del><ins>+ static TestInterfaceLeadingUnderscore* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIterablecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -116,7 +116,7 @@
</span><span class="cx"> void JSTestIterable::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -138,7 +138,7 @@
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestIterable* BindingCaller<JSTestIterable>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestIterable*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestIterable*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue jsTestIterableConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -145,7 +145,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestIterablePrototype* domObject = jsDynamicDowncast<JSTestIterablePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestIterablePrototype* domObject = jsDynamicDowncast<JSTestIterablePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestIterable::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -156,7 +156,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestIterablePrototype* domObject = jsDynamicDowncast<JSTestIterablePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestIterablePrototype* domObject = jsDynamicDowncast<JSTestIterablePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -287,9 +287,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestIterable* JSTestIterable::toWrapped(JSC::JSValue value)
</del><ins>+TestIterable* JSTestIterable::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestIterable*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestIterable*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestIterableh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestIterable.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestIterable* toWrapped(JSC::JSValue);
</del><ins>+ static TestIterable* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestJSBuiltinConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestJSBuiltinConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -119,7 +119,7 @@
</span><span class="cx"> void JSTestJSBuiltinConstructor::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -139,14 +139,14 @@
</span><span class="cx"> thisObject->JSTestJSBuiltinConstructor::~JSTestJSBuiltinConstructor();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestJSBuiltinConstructor* BindingCaller<JSTestJSBuiltinConstructor>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestJSBuiltinConstructor* BindingCaller<JSTestJSBuiltinConstructor>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestJSBuiltinConstructor*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestJSBuiltinConstructor*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestJSBuiltinConstructor* BindingCaller<JSTestJSBuiltinConstructor>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestJSBuiltinConstructor*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestJSBuiltinConstructor*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestJSBuiltinConstructorTestAttributeCustomGetter(ExecState&, JSTestJSBuiltinConstructor&, ThrowScope& throwScope);
</span><span class="lines">@@ -181,7 +181,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast<JSTestJSBuiltinConstructorPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast<JSTestJSBuiltinConstructorPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestJSBuiltinConstructor::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -192,7 +192,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast<JSTestJSBuiltinConstructorPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestJSBuiltinConstructorPrototype* domObject = jsDynamicDowncast<JSTestJSBuiltinConstructorPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> void JSTestMediaQueryListListener::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -132,7 +132,7 @@
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestMediaQueryListListener* BindingCaller<JSTestMediaQueryListListener>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestMediaQueryListListener*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestMediaQueryListListener*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue jsTestMediaQueryListListenerConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestMediaQueryListListenerPrototype* domObject = jsDynamicDowncast<JSTestMediaQueryListListenerPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestMediaQueryListListenerPrototype* domObject = jsDynamicDowncast<JSTestMediaQueryListListenerPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestMediaQueryListListener::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -150,7 +150,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestMediaQueryListListenerPrototype* domObject = jsDynamicDowncast<JSTestMediaQueryListListenerPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestMediaQueryListListenerPrototype* domObject = jsDynamicDowncast<JSTestMediaQueryListListenerPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -236,9 +236,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestMediaQueryListListener* JSTestMediaQueryListListener::toWrapped(JSC::JSValue value)
</del><ins>+TestMediaQueryListListener* JSTestMediaQueryListListener::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestMediaQueryListListener*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestMediaQueryListListener*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestMediaQueryListListenerh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestMediaQueryListListener.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestMediaQueryListListener* toWrapped(JSC::JSValue);
</del><ins>+ static TestMediaQueryListListener* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -139,7 +139,7 @@
</span><span class="cx"> void JSTestNamedConstructor::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -163,7 +163,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestNamedConstructorPrototype* domObject = jsDynamicDowncast<JSTestNamedConstructorPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestNamedConstructorPrototype* domObject = jsDynamicDowncast<JSTestNamedConstructorPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestNamedConstructor::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -174,7 +174,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestNamedConstructorPrototype* domObject = jsDynamicDowncast<JSTestNamedConstructorPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestNamedConstructorPrototype* domObject = jsDynamicDowncast<JSTestNamedConstructorPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -247,9 +247,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestNamedConstructor* JSTestNamedConstructor::toWrapped(JSC::JSValue value)
</del><ins>+TestNamedConstructor* JSTestNamedConstructor::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestNamedConstructor*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestNamedConstructor*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNamedConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNamedConstructor.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestNamedConstructor* toWrapped(JSC::JSValue);
</del><ins>+ static TestNamedConstructor* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestNodecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestNode.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -157,7 +157,7 @@
</span><span class="cx"> void JSTestNode::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -171,14 +171,14 @@
</span><span class="cx"> return getDOMPrototype<JSTestNode>(vm, globalObject);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestNode* BindingCaller<JSTestNode>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestNode* BindingCaller<JSTestNode>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestNode*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestNode*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestNode* BindingCaller<JSTestNode>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestNode*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestNode*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestNodeNameGetter(ExecState&, JSTestNode&, ThrowScope& throwScope);
</span><span class="lines">@@ -201,7 +201,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestNodePrototype* domObject = jsDynamicDowncast<JSTestNodePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestNodePrototype* domObject = jsDynamicDowncast<JSTestNodePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestNode::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -212,7 +212,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestNodePrototype* domObject = jsDynamicDowncast<JSTestNodePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestNodePrototype* domObject = jsDynamicDowncast<JSTestNodePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1916,7 +1916,7 @@
</span><span class="cx"> void JSTestObj::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -1971,14 +1971,14 @@
</span><span class="cx"> Base::getOwnPropertyNames(thisObject, state, propertyNames, mode);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestObj* BindingCaller<JSTestObj>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestObj* BindingCaller<JSTestObj>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestObj*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestObj*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestObj* BindingCaller<JSTestObj>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestObj*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestObj*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestObjReadOnlyLongAttrGetter(ExecState&, JSTestObj&, ThrowScope& throwScope);
</span><span class="lines">@@ -3566,7 +3566,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestObjPrototype* domObject = jsDynamicDowncast<JSTestObjPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestObjPrototype* domObject = jsDynamicDowncast<JSTestObjPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestObj::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -3577,7 +3577,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestObjPrototype* domObject = jsDynamicDowncast<JSTestObjPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestObjPrototype* domObject = jsDynamicDowncast<JSTestObjPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -7209,17 +7209,17 @@
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(0);
</span><span class="cx"> if (distinguishingArg.isUndefinedOrNull())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod2(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestObj::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestObj::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod2(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestCallbackInterface::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestCallbackInterface::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod5(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSDOMStringList::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSDOMStringList::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod6(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestObj::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestObj::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod8(state);
</span><del>- if (distinguishingArg.isObject() && (asObject(distinguishingArg)->inherits(JSDOMWindowShell::info()) || asObject(distinguishingArg)->inherits(JSDOMWindow::info())))
</del><ins>+ if (distinguishingArg.isObject() && (asObject(distinguishingArg)->inherits(vm, JSDOMWindowShell::info()) || asObject(distinguishingArg)->inherits(vm, JSDOMWindow::info())))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod9(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSBlob::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSBlob::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod13(state);
</span><span class="cx"> if (hasIteratorMethod(*state, distinguishingArg))
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod7(state);
</span><span class="lines">@@ -7233,7 +7233,7 @@
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(1);
</span><span class="cx"> if (distinguishingArg.isUndefined())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod2(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSBlob::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSBlob::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod13(state);
</span><span class="cx"> if (distinguishingArg.isNumber())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethod2(state);
</span><span class="lines">@@ -7296,7 +7296,7 @@
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(0);
</span><span class="cx"> if (distinguishingArg.isUndefinedOrNull())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestObj::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestObj::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2(state);
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1(state);
</span><span class="cx"> }
</span><span class="lines">@@ -7304,7 +7304,7 @@
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(0);
</span><span class="cx"> if (distinguishingArg.isUndefinedOrNull())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestObj::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestObj::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter2(state);
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithOptionalParameter1(state);
</span><span class="cx"> }
</span><span class="lines">@@ -7359,9 +7359,9 @@
</span><span class="cx"> size_t argsCount = std::min<size_t>(1, state->argumentCount());
</span><span class="cx"> if (argsCount == 1) {
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(0);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestObj::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestObj::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion1(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestNode::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestNode::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion1(state);
</span><span class="cx"> if (distinguishingArg.isNumber())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithDistinguishingUnion2(state);
</span><span class="lines">@@ -7418,11 +7418,11 @@
</span><span class="cx"> size_t argsCount = std::min<size_t>(1, state->argumentCount());
</span><span class="cx"> if (argsCount == 1) {
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(0);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestObj::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestObj::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions1(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestNode::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestNode::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions1(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestInterface::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestInterface::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions2(state);
</span><span class="cx"> if (distinguishingArg.isNumber())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWith2DistinguishingUnions2(state);
</span><span class="lines">@@ -7483,9 +7483,9 @@
</span><span class="cx"> size_t argsCount = std::min<size_t>(2, state->argumentCount());
</span><span class="cx"> if (argsCount == 2) {
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(1);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestObj::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestObj::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion1(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestNode::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestNode::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadedMethodWithNonDistinguishingUnion2(state);
</span><span class="cx"> }
</span><span class="cx"> return argsCount < 2 ? throwVMError(state, throwScope, createNotEnoughArgumentsError(state)) : throwVMTypeError(state, throwScope);
</span><span class="lines">@@ -7541,9 +7541,9 @@
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(0);
</span><span class="cx"> if (distinguishingArg.isUndefinedOrNull())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadWithNullableUnion1(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestObj::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestObj::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadWithNullableUnion1(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestNode::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestNode::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadWithNullableUnion1(state);
</span><span class="cx"> if (distinguishingArg.isNumber())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadWithNullableUnion2(state);
</span><span class="lines">@@ -7664,7 +7664,7 @@
</span><span class="cx"> size_t argsCount = std::min<size_t>(2, state->argumentCount());
</span><span class="cx"> if (argsCount == 2) {
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(1);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSTestNode::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSTestNode::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter1(state);
</span><span class="cx"> if (distinguishingArg.isNumber())
</span><span class="cx"> return jsTestObjPrototypeFunctionOverloadWithNullableNonDistinguishingParameter2(state);
</span><span class="lines">@@ -8312,7 +8312,7 @@
</span><span class="cx"> size_t argsCount = std::min<size_t>(1, state->argumentCount());
</span><span class="cx"> if (argsCount == 1) {
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(0);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSFetchRequest::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSFetchRequest::info()))
</ins><span class="cx"> return jsTestObjPrototypeFunctionTestPromiseOverloadedFunction2(state);
</span><span class="cx"> if (distinguishingArg.isNumber())
</span><span class="cx"> return jsTestObjPrototypeFunctionTestPromiseOverloadedFunction1(state);
</span><span class="lines">@@ -8661,9 +8661,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestObj* JSTestObj::toWrapped(JSC::JSValue value)
</del><ins>+TestObj* JSTestObj::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestObj*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestObj*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestObjh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestObj.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -39,7 +39,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestObj* toWrapped(JSC::JSValue);
</del><ins>+ static TestObj* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -149,11 +149,11 @@
</span><span class="cx"> }
</span><span class="cx"> if (argsCount == 1) {
</span><span class="cx"> JSValue distinguishingArg = state->uncheckedArgument(0);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSArrayBuffer::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSArrayBuffer::info()))
</ins><span class="cx"> return constructJSTestOverloadedConstructors1(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSArrayBufferView::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSArrayBufferView::info()))
</ins><span class="cx"> return constructJSTestOverloadedConstructors2(state);
</span><del>- if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(JSBlob::info()))
</del><ins>+ if (distinguishingArg.isObject() && asObject(distinguishingArg)->inherits(vm, JSBlob::info()))
</ins><span class="cx"> return constructJSTestOverloadedConstructors3(state);
</span><span class="cx"> if (distinguishingArg.isNumber())
</span><span class="cx"> return constructJSTestOverloadedConstructors5(state);
</span><span class="lines">@@ -202,7 +202,7 @@
</span><span class="cx"> void JSTestOverloadedConstructors::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -226,7 +226,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestOverloadedConstructorsPrototype* domObject = jsDynamicDowncast<JSTestOverloadedConstructorsPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestOverloadedConstructorsPrototype* domObject = jsDynamicDowncast<JSTestOverloadedConstructorsPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestOverloadedConstructors::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -237,7 +237,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestOverloadedConstructorsPrototype* domObject = jsDynamicDowncast<JSTestOverloadedConstructorsPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestOverloadedConstructorsPrototype* domObject = jsDynamicDowncast<JSTestOverloadedConstructorsPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -303,9 +303,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestOverloadedConstructors* JSTestOverloadedConstructors::toWrapped(JSC::JSValue value)
</del><ins>+TestOverloadedConstructors* JSTestOverloadedConstructors::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestOverloadedConstructors*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestOverloadedConstructors*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructors.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestOverloadedConstructors* toWrapped(JSC::JSValue);
</del><ins>+ static TestOverloadedConstructors* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequencecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -153,7 +153,7 @@
</span><span class="cx"> void JSTestOverloadedConstructorsWithSequence::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -177,7 +177,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestOverloadedConstructorsWithSequencePrototype* domObject = jsDynamicDowncast<JSTestOverloadedConstructorsWithSequencePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestOverloadedConstructorsWithSequencePrototype* domObject = jsDynamicDowncast<JSTestOverloadedConstructorsWithSequencePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestOverloadedConstructorsWithSequence::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -188,7 +188,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestOverloadedConstructorsWithSequencePrototype* domObject = jsDynamicDowncast<JSTestOverloadedConstructorsWithSequencePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestOverloadedConstructorsWithSequencePrototype* domObject = jsDynamicDowncast<JSTestOverloadedConstructorsWithSequencePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -254,9 +254,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestOverloadedConstructorsWithSequence* JSTestOverloadedConstructorsWithSequence::toWrapped(JSC::JSValue value)
</del><ins>+TestOverloadedConstructorsWithSequence* JSTestOverloadedConstructorsWithSequence::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestOverloadedConstructorsWithSequence*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestOverloadedConstructorsWithSequence*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverloadedConstructorsWithSequenceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverloadedConstructorsWithSequence.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestOverloadedConstructorsWithSequence* toWrapped(JSC::JSValue);
</del><ins>+ static TestOverloadedConstructorsWithSequence* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -110,7 +110,7 @@
</span><span class="cx"> void JSTestOverrideBuiltins::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -172,7 +172,7 @@
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestOverrideBuiltins* BindingCaller<JSTestOverrideBuiltins>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestOverrideBuiltins*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestOverrideBuiltins*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue jsTestOverrideBuiltinsConstructor(ExecState* state, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -179,7 +179,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestOverrideBuiltinsPrototype* domObject = jsDynamicDowncast<JSTestOverrideBuiltinsPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestOverrideBuiltinsPrototype* domObject = jsDynamicDowncast<JSTestOverrideBuiltinsPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestOverrideBuiltins::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -190,7 +190,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestOverrideBuiltinsPrototype* domObject = jsDynamicDowncast<JSTestOverrideBuiltinsPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestOverrideBuiltinsPrototype* domObject = jsDynamicDowncast<JSTestOverrideBuiltinsPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -275,9 +275,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestOverrideBuiltins* JSTestOverrideBuiltins::toWrapped(JSC::JSValue value)
</del><ins>+TestOverrideBuiltins* JSTestOverrideBuiltins::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestOverrideBuiltins*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestOverrideBuiltins*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestOverrideBuiltinsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestOverrideBuiltins.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestOverrideBuiltins* toWrapped(JSC::JSValue);
</del><ins>+ static TestOverrideBuiltins* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static bool getOwnPropertySlot(JSC::JSObject*, JSC::ExecState*, JSC::PropertyName, JSC::PropertySlot&);
</span><span class="cx"> static bool getOwnPropertySlotByIndex(JSC::JSObject*, JSC::ExecState*, unsigned propertyName, JSC::PropertySlot&);
</span><span class="cx"> static void destroy(JSC::JSCell*);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -125,7 +125,7 @@
</span><span class="cx"> void JSTestSerialization::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -145,14 +145,14 @@
</span><span class="cx"> thisObject->JSTestSerialization::~JSTestSerialization();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestSerialization* BindingCaller<JSTestSerialization>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestSerialization* BindingCaller<JSTestSerialization>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestSerialization*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestSerialization*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestSerialization* BindingCaller<JSTestSerialization>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestSerialization*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestSerialization*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestSerializationFirstStringAttributeGetter(ExecState&, JSTestSerialization&, ThrowScope& throwScope);
</span><span class="lines">@@ -239,7 +239,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestSerializationPrototype* domObject = jsDynamicDowncast<JSTestSerializationPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestSerializationPrototype* domObject = jsDynamicDowncast<JSTestSerializationPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestSerialization::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -250,7 +250,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestSerializationPrototype* domObject = jsDynamicDowncast<JSTestSerializationPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestSerializationPrototype* domObject = jsDynamicDowncast<JSTestSerializationPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -440,9 +440,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestSerialization* JSTestSerialization::toWrapped(JSC::JSValue value)
</del><ins>+TestSerialization* JSTestSerialization::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestSerialization*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestSerialization*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializationh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerialization.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestSerialization* toWrapped(JSC::JSValue);
</del><ins>+ static TestSerialization* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -129,7 +129,7 @@
</span><span class="cx"> void JSTestSerializedScriptValueInterface::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -149,14 +149,14 @@
</span><span class="cx"> thisObject->JSTestSerializedScriptValueInterface::~JSTestSerializedScriptValueInterface();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestSerializedScriptValueInterface* BindingCaller<JSTestSerializedScriptValueInterface>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestSerializedScriptValueInterface* BindingCaller<JSTestSerializedScriptValueInterface>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestSerializedScriptValueInterface*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestSerializedScriptValueInterface*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestSerializedScriptValueInterface* BindingCaller<JSTestSerializedScriptValueInterface>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestSerializedScriptValueInterface*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestSerializedScriptValueInterface*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestSerializedScriptValueInterfaceValueGetter(ExecState&, JSTestSerializedScriptValueInterface&, ThrowScope& throwScope);
</span><span class="lines">@@ -249,7 +249,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicDowncast<JSTestSerializedScriptValueInterfacePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicDowncast<JSTestSerializedScriptValueInterfacePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestSerializedScriptValueInterface::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -260,7 +260,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicDowncast<JSTestSerializedScriptValueInterfacePrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestSerializedScriptValueInterfacePrototype* domObject = jsDynamicDowncast<JSTestSerializedScriptValueInterfacePrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -408,9 +408,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestSerializedScriptValueInterface* JSTestSerializedScriptValueInterface::toWrapped(JSC::JSValue value)
</del><ins>+TestSerializedScriptValueInterface* JSTestSerializedScriptValueInterface::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestSerializedScriptValueInterface*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestSerializedScriptValueInterface*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestSerializedScriptValueInterfaceh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestSerializedScriptValueInterface.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -40,7 +40,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestSerializedScriptValueInterface* toWrapped(JSC::JSValue);
</del><ins>+ static TestSerializedScriptValueInterface* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -203,7 +203,7 @@
</span><span class="cx"> void JSTestTypedefs::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -223,14 +223,14 @@
</span><span class="cx"> thisObject->JSTestTypedefs::~JSTestTypedefs();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-template<> inline JSTestTypedefs* BindingCaller<JSTestTypedefs>::castForAttribute(ExecState&, EncodedJSValue thisValue)
</del><ins>+template<> inline JSTestTypedefs* BindingCaller<JSTestTypedefs>::castForAttribute(ExecState& state, EncodedJSValue thisValue)
</ins><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestTypedefs*>(JSValue::decode(thisValue));
</del><ins>+ return jsDynamicDowncast<JSTestTypedefs*>(state.vm(), JSValue::decode(thisValue));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> template<> inline JSTestTypedefs* BindingCaller<JSTestTypedefs>::castForOperation(ExecState& state)
</span><span class="cx"> {
</span><del>- return jsDynamicDowncast<JSTestTypedefs*>(state.thisValue());
</del><ins>+ return jsDynamicDowncast<JSTestTypedefs*>(state.vm(), state.thisValue());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static inline JSValue jsTestTypedefsUnsignedLongLongAttrGetter(ExecState&, JSTestTypedefs&, ThrowScope& throwScope);
</span><span class="lines">@@ -347,7 +347,7 @@
</span><span class="cx"> {
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><del>- JSTestTypedefsPrototype* domObject = jsDynamicDowncast<JSTestTypedefsPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestTypedefsPrototype* domObject = jsDynamicDowncast<JSTestTypedefsPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject))
</span><span class="cx"> return throwVMTypeError(state, throwScope);
</span><span class="cx"> return JSValue::encode(JSTestTypedefs::getConstructor(state->vm(), domObject->globalObject()));
</span><span class="lines">@@ -358,7 +358,7 @@
</span><span class="cx"> VM& vm = state->vm();
</span><span class="cx"> auto throwScope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> JSValue value = JSValue::decode(encodedValue);
</span><del>- JSTestTypedefsPrototype* domObject = jsDynamicDowncast<JSTestTypedefsPrototype*>(JSValue::decode(thisValue));
</del><ins>+ JSTestTypedefsPrototype* domObject = jsDynamicDowncast<JSTestTypedefsPrototype*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (UNLIKELY(!domObject)) {
</span><span class="cx"> throwVMTypeError(state, throwScope);
</span><span class="cx"> return false;
</span><span class="lines">@@ -813,9 +813,9 @@
</span><span class="cx"> return wrap(state, globalObject, impl);
</span><span class="cx"> }
</span><span class="cx">
</span><del>-TestTypedefs* JSTestTypedefs::toWrapped(JSC::JSValue value)
</del><ins>+TestTypedefs* JSTestTypedefs::toWrapped(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- if (auto* wrapper = jsDynamicDowncast<JSTestTypedefs*>(value))
</del><ins>+ if (auto* wrapper = jsDynamicDowncast<JSTestTypedefs*>(vm, value))
</ins><span class="cx"> return &wrapper->wrapped();
</span><span class="cx"> return nullptr;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptstestJSJSTestTypedefsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bindings/scripts/test/JS/JSTestTypedefs.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,7 +38,7 @@
</span><span class="cx">
</span><span class="cx"> static JSC::JSObject* createPrototype(JSC::VM&, JSC::JSGlobalObject*);
</span><span class="cx"> static JSC::JSObject* prototype(JSC::VM&, JSC::JSGlobalObject*);
</span><del>- static TestTypedefs* toWrapped(JSC::JSValue);
</del><ins>+ static TestTypedefs* toWrapped(JSC::VM&, JSC::JSValue);
</ins><span class="cx"> static void destroy(JSC::JSCell*);
</span><span class="cx">
</span><span class="cx"> DECLARE_INFO;
</span></span></pre></div>
<a id="trunkSourceWebCorebridgecCRuntimeObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/c/CRuntimeObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/c/CRuntimeObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/c/CRuntimeObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -45,7 +45,7 @@
</span><span class="cx"> void CRuntimeObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> CInstance* CRuntimeObject::getInternalCInstance() const
</span></span></pre></div>
<a id="trunkSourceWebCorebridgecc_instancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/c/c_instance.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/c/c_instance.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/c/c_instance.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -141,7 +141,7 @@
</span><span class="cx"> void finishCreation(VM& vm, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> };
</span><span class="lines">@@ -159,7 +159,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- if (!asObject(runtimeMethod)->inherits(CRuntimeMethod::info()))
</del><ins>+ if (!asObject(runtimeMethod)->inherits(vm, CRuntimeMethod::info()))
</ins><span class="cx"> return throwTypeError(exec, scope, ASCIILiteral("Attempt to invoke non-plug-in method on plug-in object."));
</span><span class="cx">
</span><span class="cx"> CMethod* method = static_cast<CMethod*>(runtimeMethod->method());
</span></span></pre></div>
<a id="trunkSourceWebCorebridgecc_utilitycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/c/c_utility.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/c/c_utility.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/c/c_utility.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -70,7 +70,8 @@
</span><span class="cx"> void convertValueToNPVariant(ExecState* exec, JSValue value, NPVariant* result)
</span><span class="cx"> {
</span><span class="cx"> JSLockHolder lock(exec);
</span><del>-
</del><ins>+ VM& vm = exec->vm();
+
</ins><span class="cx"> VOID_TO_NPVARIANT(*result);
</span><span class="cx">
</span><span class="cx"> if (value.isString()) {
</span><span class="lines">@@ -86,7 +87,7 @@
</span><span class="cx"> NULL_TO_NPVARIANT(*result);
</span><span class="cx"> } else if (value.isObject()) {
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- if (object->classInfo() == CRuntimeObject::info()) {
</del><ins>+ if (object->classInfo(vm) == CRuntimeObject::info()) {
</ins><span class="cx"> CRuntimeObject* runtimeObject = static_cast<CRuntimeObject*>(object);
</span><span class="cx"> CInstance* instance = runtimeObject->getInternalCInstance();
</span><span class="cx"> if (instance) {
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeobjcObjCRuntimeObjectmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/objc/ObjCRuntimeObject.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/objc/ObjCRuntimeObject.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/objc/ObjCRuntimeObject.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -43,7 +43,7 @@
</span><span class="cx"> void ObjCRuntimeObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(&s_info));
</del><ins>+ ASSERT(inherits(vm, &s_info));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ObjcInstance* ObjCRuntimeObject::getInternalObjCInstance() const
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeobjcWebScriptObjectmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/objc/WebScriptObject.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/objc/WebScriptObject.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/objc/WebScriptObject.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -399,7 +399,7 @@
</span><span class="cx"> auto scope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx"> ExecState* exec = globalObject->globalExec();
</span><span class="cx">
</span><del>- JSObject* object = jsDynamicDowncast<JSObject*>([self _imp]);
</del><ins>+ JSObject* object = jsDynamicDowncast<JSObject*>(vm, [self _imp]);
</ins><span class="cx"> PutPropertySlot slot(object);
</span><span class="cx"> object->methodTable()->put(object, exec, Identifier::fromString(exec, String(key)), convertObjcValueToValue(exec, &value, ObjcObjectType, [self _rootObject]), slot);
</span><span class="cx">
</span><span class="lines">@@ -565,13 +565,14 @@
</span><span class="cx"> {
</span><span class="cx"> if (value.isObject()) {
</span><span class="cx"> JSObject* object = asObject(value);
</span><del>- JSLockHolder lock(rootObject->globalObject()->vm());
</del><ins>+ JSC::VM& vm = rootObject->globalObject()->vm();
+ JSLockHolder lock(vm);
</ins><span class="cx">
</span><del>- if (object->inherits(JSHTMLElement::info())) {
</del><ins>+ if (object->inherits(vm, JSHTMLElement::info())) {
</ins><span class="cx"> // Plugin elements cache the instance internally.
</span><span class="cx"> if (ObjcInstance* instance = static_cast<ObjcInstance*>(pluginInstance(jsCast<JSHTMLElement*>(object)->wrapped())))
</span><span class="cx"> return instance->getObject();
</span><del>- } else if (object->inherits(ObjCRuntimeObject::info())) {
</del><ins>+ } else if (object->inherits(vm, ObjCRuntimeObject::info())) {
</ins><span class="cx"> ObjCRuntimeObject* runtimeObject = static_cast<ObjCRuntimeObject*>(object);
</span><span class="cx"> ObjcInstance* instance = runtimeObject->getInternalObjCInstance();
</span><span class="cx"> if (instance)
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeobjcobjc_instancemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/objc/objc_instance.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/objc/objc_instance.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/objc/objc_instance.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -194,7 +194,7 @@
</span><span class="cx"> void finishCreation(VM& vm, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -211,7 +211,7 @@
</span><span class="cx"> JSC::VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- if (!asObject(runtimeMethod)->inherits(ObjCRuntimeMethod::info()))
</del><ins>+ if (!asObject(runtimeMethod)->inherits(vm, ObjCRuntimeMethod::info()))
</ins><span class="cx"> return throwTypeError(exec, scope, ASCIILiteral("Attempt to invoke non-plug-in method on plug-in object."));
</span><span class="cx">
</span><span class="cx"> ObjcMethod *method = static_cast<ObjcMethod*>(runtimeMethod->method());
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeobjcobjc_runtimemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/objc/objc_runtime.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/objc/objc_runtime.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/objc/objc_runtime.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -226,8 +226,9 @@
</span><span class="cx">
</span><span class="cx"> void ObjcFallbackObjectImp::finishCreation(JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><del>- Base::finishCreation(globalObject->vm());
- ASSERT(inherits(info()));
</del><ins>+ VM& vm = globalObject->vm();
+ Base::finishCreation(vm);
+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> bool ObjcFallbackObjectImp::getOwnPropertySlot(JSObject*, ExecState*, PropertyName, PropertySlot& slot)
</span><span class="lines">@@ -248,7 +249,7 @@
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (!thisValue.inherits(ObjCRuntimeObject::info()))
</del><ins>+ if (!thisValue.inherits(vm, ObjCRuntimeObject::info()))
</ins><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx">
</span><span class="cx"> JSValue result = jsUndefined();
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_arraycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_array.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_array.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/runtime_array.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> void RuntimeArray::finishCreation(VM& vm, Bindings::Array* array)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> m_array = array;
</span><span class="cx"> }
</span><span class="cx">
</span><span class="lines">@@ -65,7 +65,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- RuntimeArray* thisObject = jsDynamicDowncast<RuntimeArray*>(JSValue::decode(thisValue));
</del><ins>+ RuntimeArray* thisObject = jsDynamicDowncast<RuntimeArray*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> return JSValue::encode(jsNumber(thisObject->getLength()));
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_methodcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_method.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_method.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/runtime_method.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -51,7 +51,7 @@
</span><span class="cx"> void RuntimeMethod::finishCreation(VM& vm, const String& ident)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, ident);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> EncodedJSValue RuntimeMethod::lengthGetter(ExecState* exec, EncodedJSValue thisValue, PropertyName)
</span><span class="lines">@@ -59,7 +59,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- RuntimeMethod* thisObject = jsDynamicDowncast<RuntimeMethod*>(JSValue::decode(thisValue));
</del><ins>+ RuntimeMethod* thisObject = jsDynamicDowncast<RuntimeMethod*>(vm, JSValue::decode(thisValue));
</ins><span class="cx"> if (!thisObject)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span><span class="cx"> return JSValue::encode(jsNumber(thisObject->m_method->numParameters()));
</span><span class="lines">@@ -89,7 +89,7 @@
</span><span class="cx"> RefPtr<Instance> instance;
</span><span class="cx">
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><del>- if (thisValue.inherits(RuntimeObject::info())) {
</del><ins>+ if (thisValue.inherits(vm, RuntimeObject::info())) {
</ins><span class="cx"> RuntimeObject* runtimeObject = static_cast<RuntimeObject*>(asObject(thisValue));
</span><span class="cx"> instance = runtimeObject->getInternalInstance();
</span><span class="cx"> if (!instance)
</span><span class="lines">@@ -96,7 +96,7 @@
</span><span class="cx"> return JSValue::encode(RuntimeObject::throwInvalidAccessError(exec, scope));
</span><span class="cx"> } else {
</span><span class="cx"> // Calling a runtime object of a plugin element?
</span><del>- if (thisValue.inherits(JSHTMLElement::info()))
</del><ins>+ if (thisValue.inherits(vm, JSHTMLElement::info()))
</ins><span class="cx"> instance = pluginInstance(jsCast<JSHTMLElement*>(asObject(thisValue))->wrapped());
</span><span class="cx"> if (!instance)
</span><span class="cx"> return throwVMTypeError(exec, scope);
</span></span></pre></div>
<a id="trunkSourceWebCorebridgeruntime_objectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bridge/runtime_object.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bridge/runtime_object.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/bridge/runtime_object.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -46,7 +46,7 @@
</span><span class="cx"> void RuntimeObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> void RuntimeObject::destroy(JSCell* cell)
</span><span class="lines">@@ -224,7 +224,7 @@
</span><span class="cx">
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL callRuntimeObject(ExecState* exec)
</span><span class="cx"> {
</span><del>- ASSERT(exec->jsCallee()->inherits(RuntimeObject::info()));
</del><ins>+ ASSERT(exec->jsCallee()->inherits(exec->vm(), RuntimeObject::info()));
</ins><span class="cx"> RefPtr<Instance> instance(static_cast<RuntimeObject*>(exec->jsCallee())->getInternalInstance());
</span><span class="cx"> instance->begin();
</span><span class="cx"> JSValue result = instance->invokeDefaultMethod(exec);
</span><span class="lines">@@ -249,7 +249,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL callRuntimeConstructor(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSObject* constructor = exec->jsCallee();
</span><del>- ASSERT(constructor->inherits(RuntimeObject::info()));
</del><ins>+ ASSERT(constructor->inherits(exec->vm(), RuntimeObject::info()));
</ins><span class="cx"> RefPtr<Instance> instance(static_cast<RuntimeObject*>(exec->jsCallee())->getInternalInstance());
</span><span class="cx"> instance->begin();
</span><span class="cx"> ArgList args(exec);
</span></span></pre></div>
<a id="trunkSourceWebCorecssFontFacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/css/FontFace.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/css/FontFace.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/css/FontFace.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,6 +48,7 @@
</span><span class="cx">
</span><span class="cx"> ExceptionOr<Ref<FontFace>> FontFace::create(JSC::ExecState& state, Document& document, const String& family, JSC::JSValue source, const Descriptors& descriptors)
</span><span class="cx"> {
</span><ins>+ JSC::VM& vm = state.vm();
</ins><span class="cx"> auto result = adoptRef(*new FontFace(document.fontSelector()));
</span><span class="cx">
</span><span class="cx"> bool dataRequiresAsynchronousLoading = true;
</span><span class="lines">@@ -61,9 +62,9 @@
</span><span class="cx"> if (!is<CSSValueList>(value.get()))
</span><span class="cx"> return Exception { SYNTAX_ERR };
</span><span class="cx"> CSSFontFace::appendSources(result->backing(), downcast<CSSValueList>(*value), &document, false);
</span><del>- } else if (auto arrayBufferView = toUnsharedArrayBufferView(source))
</del><ins>+ } else if (auto arrayBufferView = toUnsharedArrayBufferView(vm, source))
</ins><span class="cx"> dataRequiresAsynchronousLoading = populateFontFaceWithArrayBuffer(result->backing(), arrayBufferView.releaseNonNull());
</span><del>- else if (auto arrayBuffer = toUnsharedArrayBuffer(source)) {
</del><ins>+ else if (auto arrayBuffer = toUnsharedArrayBuffer(vm, source)) {
</ins><span class="cx"> auto arrayBufferView = JSC::Uint8Array::create(arrayBuffer, 0, arrayBuffer->byteLength());
</span><span class="cx"> dataRequiresAsynchronousLoading = populateFontFaceWithArrayBuffer(result->backing(), arrayBufferView.releaseNonNull());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -3881,7 +3881,7 @@
</span><span class="cx"> auto mediaJSWrapper = toJS(&exec, &globalObject, media);
</span><span class="cx">
</span><span class="cx"> // Retrieve the controller through the JS object graph
</span><del>- JSC::JSObject* mediaJSWrapperObject = jsDynamicDowncast<JSC::JSObject*>(mediaJSWrapper);
</del><ins>+ JSC::JSObject* mediaJSWrapperObject = jsDynamicDowncast<JSC::JSObject*>(vm, mediaJSWrapper);
</ins><span class="cx"> if (!mediaJSWrapperObject)
</span><span class="cx"> return JSC::jsNull();
</span><span class="cx">
</span><span class="lines">@@ -3889,7 +3889,7 @@
</span><span class="cx"> JSC::JSValue controlsHostJSWrapper = mediaJSWrapperObject->get(&exec, controlsHost);
</span><span class="cx"> RETURN_IF_EXCEPTION(scope, JSC::jsNull());
</span><span class="cx">
</span><del>- JSC::JSObject* controlsHostJSWrapperObject = jsDynamicDowncast<JSC::JSObject*>(controlsHostJSWrapper);
</del><ins>+ JSC::JSObject* controlsHostJSWrapperObject = jsDynamicDowncast<JSC::JSObject*>(vm, controlsHostJSWrapper);
</ins><span class="cx"> if (!controlsHostJSWrapperObject)
</span><span class="cx"> return JSC::jsNull();
</span><span class="cx">
</span><span class="lines">@@ -3937,7 +3937,7 @@
</span><span class="cx"> JSC::ExecState* exec = globalObject->globalExec();
</span><span class="cx">
</span><span class="cx"> JSC::JSValue controllerValue = controllerJSValue(*exec, *globalObject, *this);
</span><del>- JSC::JSObject* controllerObject = jsDynamicDowncast<JSC::JSObject*>(controllerValue);
</del><ins>+ JSC::JSObject* controllerObject = jsDynamicDowncast<JSC::JSObject*>(vm, controllerValue);
</ins><span class="cx"> if (!controllerObject)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="lines">@@ -3948,7 +3948,7 @@
</span><span class="cx"> // Return value:
</span><span class="cx"> // None
</span><span class="cx"> JSC::JSValue methodValue = controllerObject->get(exec, JSC::Identifier::fromString(exec, "updateCaptionContainer"));
</span><del>- JSC::JSObject* methodObject = jsDynamicDowncast<JSC::JSObject*>(methodValue);
</del><ins>+ JSC::JSObject* methodObject = jsDynamicDowncast<JSC::JSObject*>(vm, methodValue);
</ins><span class="cx"> if (!methodObject)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="lines">@@ -6663,7 +6663,7 @@
</span><span class="cx">
</span><span class="cx"> JSC::JSValue controllerValue = JSC::call(exec, function, callType, callData, globalObject, argList);
</span><span class="cx"> scope.clearException();
</span><del>- JSC::JSObject* controllerObject = jsDynamicDowncast<JSC::JSObject*>(controllerValue);
</del><ins>+ JSC::JSObject* controllerObject = jsDynamicDowncast<JSC::JSObject*>(vm, controllerValue);
</ins><span class="cx"> if (!controllerObject)
</span><span class="cx"> return;
</span><span class="cx">
</span><span class="lines">@@ -6676,7 +6676,7 @@
</span><span class="cx">
</span><span class="cx"> mediaJSWrapperObject->putDirect(exec->vm(), controlsHost, mediaControlsHostJSWrapper, JSC::DontDelete | JSC::DontEnum | JSC::ReadOnly);
</span><span class="cx">
</span><del>- JSC::JSObject* mediaControlsHostJSWrapperObject = jsDynamicDowncast<JSC::JSObject*>(mediaControlsHostJSWrapper);
</del><ins>+ JSC::JSObject* mediaControlsHostJSWrapperObject = jsDynamicDowncast<JSC::JSObject*>(vm, mediaControlsHostJSWrapper);
</ins><span class="cx"> if (!mediaControlsHostJSWrapperObject)
</span><span class="cx"> return;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorController.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorController.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/inspector/InspectorController.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -434,7 +434,8 @@
</span><span class="cx"> bool InspectorController::canAccessInspectedScriptState(JSC::ExecState* scriptState) const
</span><span class="cx"> {
</span><span class="cx"> JSLockHolder lock(scriptState);
</span><del>- JSDOMWindow* inspectedWindow = toJSDOMWindow(scriptState->lexicalGlobalObject());
</del><ins>+
+ JSDOMWindow* inspectedWindow = toJSDOMWindow(scriptState->vm(), scriptState->lexicalGlobalObject());
</ins><span class="cx"> if (!inspectedWindow)
</span><span class="cx"> return false;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorInspectorDOMAgentcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/inspector/InspectorDOMAgent.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1510,7 +1510,7 @@
</span><span class="cx"> handler = scriptListener->jsFunction(&node->document());
</span><span class="cx"> if (handler && state) {
</span><span class="cx"> body = handler->toString(state)->value(state);
</span><del>- if (auto function = jsDynamicDowncast<JSC::JSFunction*>(handler)) {
</del><ins>+ if (auto function = jsDynamicDowncast<JSC::JSFunction*>(state->vm(), handler)) {
</ins><span class="cx"> if (!function->isHostOrBuiltinFunction()) {
</span><span class="cx"> if (auto executable = function->jsExecutable()) {
</span><span class="cx"> lineNumber = executable->firstLine() - 1;
</span><span class="lines">@@ -2227,9 +2227,9 @@
</span><span class="cx">
</span><span class="cx"> Node* InspectorDOMAgent::scriptValueAsNode(JSC::JSValue value)
</span><span class="cx"> {
</span><del>- if (!value)
</del><ins>+ if (!value || !value.isObject())
</ins><span class="cx"> return nullptr;
</span><del>- return JSNode::toWrapped(value);
</del><ins>+ return JSNode::toWrapped(*value.getObject()->vm(), value.getObject());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSC::JSValue InspectorDOMAgent::nodeAsScriptValue(JSC::ExecState& state, Node* node)
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWebInjectedScriptHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WebInjectedScriptHost.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WebInjectedScriptHost.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/inspector/WebInjectedScriptHost.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -38,16 +38,17 @@
</span><span class="cx"> namespace WebCore {
</span><span class="cx">
</span><span class="cx"> #define RETURN_ERROR_IF_VALUE_INHERITS_EXCEPTION_TYPE(interfaceName) \
</span><del>- if (value.inherits(JS##interfaceName::info())) \
</del><ins>+ if (value.inherits(vm, JS##interfaceName::info())) \
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("error"));
</span><span class="cx">
</span><span class="cx"> JSValue WebInjectedScriptHost::subtype(JSC::ExecState* exec, JSC::JSValue value)
</span><span class="cx"> {
</span><del>- if (value.inherits(JSNode::info()))
</del><ins>+ VM& vm = exec->vm();
+ if (value.inherits(vm, JSNode::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("node"));
</span><del>- if (value.inherits(JSNodeList::info()))
</del><ins>+ if (value.inherits(vm, JSNodeList::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("array"));
</span><del>- if (value.inherits(JSHTMLCollection::info()))
</del><ins>+ if (value.inherits(vm, JSHTMLCollection::info()))
</ins><span class="cx"> return jsNontrivialString(exec, ASCIILiteral("array"));
</span><span class="cx">
</span><span class="cx"> DOM_EXCEPTION_INTERFACES_FOR_EACH(RETURN_ERROR_IF_VALUE_INHERITS_EXCEPTION_TYPE)
</span><span class="lines">@@ -55,9 +56,9 @@
</span><span class="cx"> return jsUndefined();
</span><span class="cx"> }
</span><span class="cx">
</span><del>-bool WebInjectedScriptHost::isHTMLAllCollection(JSC::JSValue value)
</del><ins>+bool WebInjectedScriptHost::isHTMLAllCollection(JSC::VM& vm, JSC::JSValue value)
</ins><span class="cx"> {
</span><del>- return value.inherits(JSHTMLAllCollection::info());
</del><ins>+ return value.inherits(vm, JSHTMLAllCollection::info());
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebCoreinspectorWebInjectedScriptHosth"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/inspector/WebInjectedScriptHost.h (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/inspector/WebInjectedScriptHost.h        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebCore/inspector/WebInjectedScriptHost.h        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -34,7 +34,7 @@
</span><span class="cx"> static Ref<WebInjectedScriptHost> create() { return adoptRef(*new WebInjectedScriptHost); }
</span><span class="cx">
</span><span class="cx"> JSC::JSValue subtype(JSC::ExecState*, JSC::JSValue) override;
</span><del>- bool isHTMLAllCollection(JSC::JSValue) override;
</del><ins>+ bool isHTMLAllCollection(JSC::VM&, JSC::JSValue) override;
</ins><span class="cx"> };
</span><span class="cx">
</span><span class="cx"> } // namespace WebCore
</span></span></pre></div>
<a id="trunkSourceWebKitmacChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/ChangeLog (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/ChangeLog        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/ChangeLog        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1,3 +1,37 @@
</span><ins>+2017-01-26 Keith Miller <keith_miller@apple.com>
+
+ classInfo should take a VM so it is not materialized from the object on each call
+ https://bugs.webkit.org/show_bug.cgi?id=167424
+
+ Rubber Stamped by Michael Saboff.
+
+ Previously, classInfo() would get the VM from the target's
+ MarkedBlock. Most callers already have a VM on hand, so it is
+ wasteful to compute the VM from the marked block every time. This
+ patch refactors some of the most common callers of classInfo(),
+ jsDynamicCast and inherits to take a VM as well.
+
+ * DOM/DOM.mm:
+ (+[DOMNode _nodeFromJSWrapper:]):
+ * DOM/DOMUtility.mm:
+ (createDOMWrapper):
+ * DOM/WebDOMOperations.mm:
+ * Plugins/Hosted/NetscapePluginInstanceProxy.mm:
+ (WebKit::getObjectID):
+ (WebKit::NetscapePluginInstanceProxy::retainLocalObject):
+ (WebKit::NetscapePluginInstanceProxy::releaseLocalObject):
+ * Plugins/Hosted/ProxyInstance.mm:
+ (WebKit::ProxyRuntimeMethod::finishCreation):
+ (WebKit::ProxyInstance::invokeMethod):
+ * Plugins/Hosted/ProxyRuntimeObject.mm:
+ (WebKit::ProxyRuntimeObject::finishCreation):
+ * WebView/WebFrame.mm:
+ (-[WebFrame _stringByEvaluatingJavaScriptFromString:withGlobalObject:inScriptWorld:]):
+ * WebView/WebView.mm:
+ (+[WebView _reportException:inContext:]):
+ (aeDescFromJSValue):
+ (-[WebView _notificationIDForTesting:]):
+
</ins><span class="cx"> 2017-01-26 Wenson Hsieh <wenson_hsieh@apple.com>
</span><span class="cx">
</span><span class="cx"> REGRESSION (r207483): Touch Bar: Lists and BIU Buttons Missing from Touch Bar in HTML Notes
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOM.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOM.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/DOM/DOM.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -534,7 +534,7 @@
</span><span class="cx"> + (id)_nodeFromJSWrapper:(JSObjectRef)jsWrapper
</span><span class="cx"> {
</span><span class="cx"> JSObject* object = toJS(jsWrapper);
</span><del>- if (!object->inherits(JSNode::info()))
</del><ins>+ if (!object->inherits(*object->vm(), JSNode::info()))
</ins><span class="cx"> return nil;
</span><span class="cx"> return kit(&jsCast<JSNode*>(object)->wrapped());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMDOMUtilitymm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/DOMUtility.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/DOMUtility.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/DOM/DOMUtility.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -74,8 +74,9 @@
</span><span class="cx">
</span><span class="cx"> static WebScriptObject *createDOMWrapper(JSC::JSObject& jsWrapper)
</span><span class="cx"> {
</span><ins>+ JSC::VM& vm = *jsWrapper.vm();
</ins><span class="cx"> #define WRAP(className) \
</span><del>- if (auto* wrapped = WebCore::JS##className::toWrapped(&jsWrapper)) \
</del><ins>+ if (auto* wrapped = WebCore::JS##className::toWrapped(vm, &jsWrapper)) \
</ins><span class="cx"> return kit(wrapped);
</span><span class="cx">
</span><span class="cx"> WRAP(CSSRule)
</span></span></pre></div>
<a id="trunkSourceWebKitmacDOMWebDOMOperationsmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/DOM/WebDOMOperations.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/DOM/WebDOMOperations.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/DOM/WebDOMOperations.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -74,7 +74,7 @@
</span><span class="cx">
</span><span class="cx"> ExecState* exec = toJS(context);
</span><span class="cx"> JSLockHolder lock(exec);
</span><del>- return kit(JSElement::toWrapped(toJS(exec, value)));
</del><ins>+ return kit(JSElement::toWrapped(exec->vm(), toJS(exec, value)));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> @end
</span></span></pre></div>
<a id="trunkSourceWebKitmacPluginsHostedNetscapePluginInstanceProxymm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/Plugins/Hosted/NetscapePluginInstanceProxy.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1299,7 +1299,8 @@
</span><span class="cx">
</span><span class="cx"> static bool getObjectID(NetscapePluginInstanceProxy* pluginInstanceProxy, JSObject* object, uint64_t& objectID)
</span><span class="cx"> {
</span><del>- if (object->classInfo() != ProxyRuntimeObject::info())
</del><ins>+ JSC::VM& vm = *object->vm();
+ if (object->classInfo(vm) != ProxyRuntimeObject::info())
</ins><span class="cx"> return false;
</span><span class="cx">
</span><span class="cx"> ProxyRuntimeObject* runtimeObject = static_cast<ProxyRuntimeObject*>(object);
</span><span class="lines">@@ -1454,7 +1455,7 @@
</span><span class="cx">
</span><span class="cx"> void NetscapePluginInstanceProxy::retainLocalObject(JSC::JSValue value)
</span><span class="cx"> {
</span><del>- if (!value.isObject() || value.inherits(ProxyRuntimeObject::info()))
</del><ins>+ if (!value.isObject() || value.inherits(*value.getObject()->vm(), ProxyRuntimeObject::info()))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> m_localObjects.retain(asObject(value));
</span><span class="lines">@@ -1462,7 +1463,7 @@
</span><span class="cx">
</span><span class="cx"> void NetscapePluginInstanceProxy::releaseLocalObject(JSC::JSValue value)
</span><span class="cx"> {
</span><del>- if (!value.isObject() || value.inherits(ProxyRuntimeObject::info()))
</del><ins>+ if (!value.isObject() || value.inherits(*value.getObject()->vm(), ProxyRuntimeObject::info()))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> m_localObjects.release(asObject(value));
</span></span></pre></div>
<a id="trunkSourceWebKitmacPluginsHostedProxyInstancemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/Plugins/Hosted/ProxyInstance.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -206,7 +206,7 @@
</span><span class="cx"> void finishCreation(VM& vm, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx"> };
</span><span class="cx">
</span><span class="lines">@@ -223,7 +223,7 @@
</span><span class="cx"> VM& vm = exec->vm();
</span><span class="cx"> auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">
</span><del>- if (!asObject(runtimeMethod)->inherits(ProxyRuntimeMethod::info()))
</del><ins>+ if (!asObject(runtimeMethod)->inherits(vm, ProxyRuntimeMethod::info()))
</ins><span class="cx"> return throwTypeError(exec, scope, ASCIILiteral("Attempt to invoke non-plug-in method on plug-in object."));
</span><span class="cx">
</span><span class="cx"> ProxyMethod* method = static_cast<ProxyMethod*>(runtimeMethod->method());
</span></span></pre></div>
<a id="trunkSourceWebKitmacPluginsHostedProxyRuntimeObjectmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/Plugins/Hosted/ProxyRuntimeObject.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -44,7 +44,7 @@
</span><span class="cx"> void ProxyRuntimeObject::finishCreation(VM& vm)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm);
</span><del>- ASSERT(inherits(&s_info));
</del><ins>+ ASSERT(inherits(vm, &s_info));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> ProxyInstance* ProxyRuntimeObject::getInternalProxyInstance() const
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebFramemm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebFrame.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebFrame.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/WebView/WebFrame.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -2064,7 +2064,8 @@
</span><span class="cx">
</span><span class="cx"> // The global object is probably a shell object? - if so, we know how to use this!
</span><span class="cx"> JSC::JSObject* globalObjectObj = toJS(globalObjectRef);
</span><del>- if (!strcmp(globalObjectObj->classInfo()->className, "JSDOMWindowShell"))
</del><ins>+ JSC::VM& vm = *globalObjectObj->vm();
+ if (!strcmp(globalObjectObj->classInfo(vm)->className, "JSDOMWindowShell"))
</ins><span class="cx"> anyWorldGlobalObject = static_cast<JSDOMWindowShell*>(globalObjectObj)->window();
</span><span class="cx">
</span><span class="cx"> // Get the frame frome the global object we've settled on.
</span></span></pre></div>
<a id="trunkSourceWebKitmacWebViewWebViewmm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/mac/WebView/WebView.mm (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/mac/WebView/WebView.mm        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/mac/WebView/WebView.mm        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1056,7 +1056,8 @@
</span><span class="cx"> JSLockHolder lock(execState);
</span><span class="cx">
</span><span class="cx"> // Make sure the context has a DOMWindow global object, otherwise this context didn't originate from a WebView.
</span><del>- if (!toJSDOMWindow(execState->lexicalGlobalObject()))
</del><ins>+ JSC::JSGlobalObject* globalObject = execState->lexicalGlobalObject();
+ if (!toJSDOMWindow(globalObject->vm(), globalObject))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> reportException(execState, toJS(execState, exception));
</span><span class="lines">@@ -7448,7 +7449,7 @@
</span><span class="cx"> }
</span><span class="cx"> if (jsValue.isObject()) {
</span><span class="cx"> JSObject* object = jsValue.getObject();
</span><del>- if (object->inherits(DateInstance::info())) {
</del><ins>+ if (object->inherits(vm, DateInstance::info())) {
</ins><span class="cx"> DateInstance* date = static_cast<DateInstance*>(object);
</span><span class="cx"> double ms = date->internalNumber();
</span><span class="cx"> if (!std::isnan(ms)) {
</span><span class="lines">@@ -7457,8 +7458,7 @@
</span><span class="cx"> if (noErr == UCConvertCFAbsoluteTimeToLongDateTime(utcSeconds, &ldt))
</span><span class="cx"> return [NSAppleEventDescriptor descriptorWithDescriptorType:typeLongDateTime bytes:&ldt length:sizeof(ldt)];
</span><span class="cx"> }
</span><del>- }
- else if (object->inherits(JSArray::info())) {
</del><ins>+ } else if (object->inherits(vm, JSArray::info())) {
</ins><span class="cx"> static NeverDestroyed<HashSet<JSObject*>> visitedElems;
</span><span class="cx"> if (!visitedElems.get().contains(object)) {
</span><span class="cx"> visitedElems.get().add(object);
</span><span class="lines">@@ -9889,7 +9889,7 @@
</span><span class="cx"> if (!page)
</span><span class="cx"> return 0;
</span><span class="cx"> JSContextRef context = [[self mainFrame] globalContext];
</span><del>- auto* notification = JSNotification::toWrapped(toJS(toJS(context), jsNotification));
</del><ins>+ auto* notification = JSNotification::toWrapped(toJS(context)->vm(), toJS(toJS(context), jsNotification));
</ins><span class="cx"> return static_cast<WebNotificationClient*>(NotificationController::clientFrom(*page))->notificationIDForTesting(notification);
</span><span class="cx"> #else
</span><span class="cx"> return 0;
</span></span></pre></div>
<a id="trunkSourceWebKitwinChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/ChangeLog (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/ChangeLog        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/win/ChangeLog        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1,3 +1,21 @@
</span><ins>+2017-01-26 Keith Miller <keith_miller@apple.com>
+
+ classInfo should take a VM so it is not materialized from the object on each call
+ https://bugs.webkit.org/show_bug.cgi?id=167424
+
+ Rubber Stamped by Michael Saboff.
+
+ Previously, classInfo() would get the VM from the target's
+ MarkedBlock. Most callers already have a VM on hand, so it is
+ wasteful to compute the VM from the marked block every time. This
+ patch refactors some of the most common callers of classInfo(),
+ jsDynamicCast and inherits to take a VM as well.
+
+ * WebFrame.cpp:
+ (WebFrame::stringByEvaluatingJavaScriptInScriptWorld):
+ * WebView.cpp:
+ (WebView::elementFromJS):
+
</ins><span class="cx"> 2017-01-26 Per Arne Vollan <pvollan@apple.com>
</span><span class="cx">
</span><span class="cx"> Crash when setting custom scale factor.
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebFrame.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebFrame.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/win/WebFrame.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -2002,7 +2002,7 @@
</span><span class="cx">
</span><span class="cx"> // The global object is probably a shell object? - if so, we know how to use this!
</span><span class="cx"> JSC::JSObject* globalObjectObj = toJS(globalObjectRef);
</span><del>- if (!strcmp(globalObjectObj->classInfo()->className, "JSDOMWindowShell"))
</del><ins>+ if (globalObjectObj->inherits(*globalObjectObj->vm(), JSDOMWindowShell::info()))
</ins><span class="cx"> anyWorldGlobalObject = static_cast<JSDOMWindowShell*>(globalObjectObj)->window();
</span><span class="cx">
</span><span class="cx"> // Get the frame frome the global object we've settled on.
</span></span></pre></div>
<a id="trunkSourceWebKitwinWebViewcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit/win/WebView.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit/win/WebView.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit/win/WebView.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -6492,7 +6492,7 @@
</span><span class="cx"> JSC::JSLockHolder lock(execState);
</span><span class="cx">
</span><span class="cx"> // Make sure the context has a DOMWindow global object, otherwise this context didn't originate from a WebView.
</span><del>- if (!toJSDOMWindow(execState->lexicalGlobalObject()))
</del><ins>+ if (!toJSDOMWindow(execState->vm(), execState->lexicalGlobalObject()))
</ins><span class="cx"> return E_FAIL;
</span><span class="cx">
</span><span class="cx"> WebCore::reportException(execState, toJS(execState, exception));
</span><span class="lines">@@ -6511,7 +6511,7 @@
</span><span class="cx">
</span><span class="cx"> JSC::ExecState* exec = toJS(context);
</span><span class="cx"> JSC::JSLockHolder lock(exec);
</span><del>- Element* elt = JSElement::toWrapped(toJS(exec, nodeObject));
</del><ins>+ Element* elt = JSElement::toWrapped(exec->vm(), toJS(exec, nodeObject));
</ins><span class="cx"> if (!elt)
</span><span class="cx"> return E_FAIL;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2ChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/ChangeLog (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/ChangeLog        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/ChangeLog        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1,3 +1,41 @@
</span><ins>+2017-01-26 Keith Miller <keith_miller@apple.com>
+
+ classInfo should take a VM so it is not materialized from the object on each call
+ https://bugs.webkit.org/show_bug.cgi?id=167424
+
+ Rubber Stamped by Michael Saboff.
+
+ Previously, classInfo() would get the VM from the target's
+ MarkedBlock. Most callers already have a VM on hand, so it is
+ wasteful to compute the VM from the marked block every time. This
+ patch refactors some of the most common callers of classInfo(),
+ jsDynamicCast and inherits to take a VM as well.
+
+ * WebProcess/Automation/WebAutomationSessionProxy.cpp:
+ (WebKit::WebAutomationSessionProxy::elementForNodeHandle):
+ * WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp:
+ (WebKit::InjectedBundleNodeHandle::getOrCreate):
+ * WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp:
+ (WebKit::InjectedBundleRangeHandle::getOrCreate):
+ * WebProcess/InjectedBundle/InjectedBundle.cpp:
+ (WebKit::InjectedBundle::reportException):
+ (WebKit::InjectedBundle::webNotificationID):
+ (WebKit::InjectedBundle::createWebDataFromUint8Array):
+ * WebProcess/Plugins/Netscape/JSNPMethod.cpp:
+ (WebKit::JSNPMethod::finishCreation):
+ (WebKit::callMethod):
+ * WebProcess/Plugins/Netscape/JSNPObject.cpp:
+ (WebKit::JSNPObject::finishCreation):
+ (WebKit::callNPJSObject):
+ (WebKit::constructWithConstructor):
+ * WebProcess/Plugins/Netscape/NPJSObject.cpp:
+ (WebKit::NPJSObject::create):
+ * WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp:
+ (WebKit::NPRuntimeObjectMap::getOrCreateNPObject):
+ * WebProcess/WebPage/WebFrame.cpp:
+ (WebKit::WebFrame::frameForContext):
+ (WebKit::WebFrame::counterValue):
+
</ins><span class="cx"> 2017-01-26 Chris Dumez <cdumez@apple.com>
</span><span class="cx">
</span><span class="cx"> Fix CPU usage diagnostic logging in PerActivityStateCPUUsageSampler
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessAutomationWebAutomationSessionProxycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/Automation/WebAutomationSessionProxy.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -205,7 +205,7 @@
</span><span class="cx"> if (!element)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span><del>- auto elementWrapper = WebCore::jsDynamicDowncast<WebCore::JSElement*>(toJS(element));
</del><ins>+ auto elementWrapper = WebCore::jsDynamicDowncast<WebCore::JSElement*>(toJS(context)->vm(), toJS(element));
</ins><span class="cx"> if (!elementWrapper)
</span><span class="cx"> return nullptr;
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleNodeHandlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleNodeHandle.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx">
</span><span class="cx"> RefPtr<InjectedBundleNodeHandle> InjectedBundleNodeHandle::getOrCreate(JSContextRef, JSObjectRef object)
</span><span class="cx"> {
</span><del>- Node* node = JSNode::toWrapped(toJS(object));
</del><ins>+ Node* node = JSNode::toWrapped(*toJS(object)->vm(), toJS(object));
</ins><span class="cx"> return getOrCreate(node);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleDOMInjectedBundleRangeHandlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/DOM/InjectedBundleRangeHandle.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -57,9 +57,9 @@
</span><span class="cx"> return cache;
</span><span class="cx"> }
</span><span class="cx">
</span><del>-PassRefPtr<InjectedBundleRangeHandle> InjectedBundleRangeHandle::getOrCreate(JSContextRef, JSObjectRef object)
</del><ins>+PassRefPtr<InjectedBundleRangeHandle> InjectedBundleRangeHandle::getOrCreate(JSContextRef context, JSObjectRef object)
</ins><span class="cx"> {
</span><del>- Range* range = JSRange::toWrapped(toJS(object));
</del><ins>+ Range* range = JSRange::toWrapped(toJS(context)->vm(), toJS(object));
</ins><span class="cx"> return getOrCreate(range);
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessInjectedBundleInjectedBundlecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/InjectedBundle/InjectedBundle.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -503,7 +503,8 @@
</span><span class="cx"> JSLockHolder lock(execState);
</span><span class="cx">
</span><span class="cx"> // Make sure the context has a DOMWindow global object, otherwise this context didn't originate from a Page.
</span><del>- if (!toJSDOMWindow(execState->lexicalGlobalObject()))
</del><ins>+ JSC::JSGlobalObject* globalObject = execState->lexicalGlobalObject();
+ if (!toJSDOMWindow(globalObject->vm(), globalObject))
</ins><span class="cx"> return;
</span><span class="cx">
</span><span class="cx"> WebCore::reportException(execState, toJS(execState, exception));
</span><span class="lines">@@ -564,7 +565,7 @@
</span><span class="cx"> uint64_t InjectedBundle::webNotificationID(JSContextRef jsContext, JSValueRef jsNotification)
</span><span class="cx"> {
</span><span class="cx"> #if ENABLE(NOTIFICATIONS) || ENABLE(LEGACY_NOTIFICATIONS)
</span><del>- WebCore::Notification* notification = JSNotification::toWrapped(toJS(toJS(jsContext), jsNotification));
</del><ins>+ WebCore::Notification* notification = JSNotification::toWrapped(toJS(jsContext)->vm(), toJS(toJS(jsContext), jsNotification));
</ins><span class="cx"> if (!notification)
</span><span class="cx"> return 0;
</span><span class="cx"> return WebProcess::singleton().supplement<WebNotificationManager>()->notificationIDForTesting(notification);
</span><span class="lines">@@ -579,7 +580,7 @@
</span><span class="cx"> PassRefPtr<API::Data> InjectedBundle::createWebDataFromUint8Array(JSContextRef context, JSValueRef data)
</span><span class="cx"> {
</span><span class="cx"> JSC::ExecState* execState = toJS(context);
</span><del>- RefPtr<Uint8Array> arrayData = WebCore::toUnsharedUint8Array(toJS(execState, data));
</del><ins>+ RefPtr<Uint8Array> arrayData = WebCore::toUnsharedUint8Array(execState->vm(), toJS(execState, data));
</ins><span class="cx"> return API::Data::create(static_cast<unsigned char*>(arrayData->baseAddress()), arrayData->byteLength());
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeJSNPMethodcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPMethod.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -54,7 +54,7 @@
</span><span class="cx"> void JSNPMethod::finishCreation(VM& vm, const String& name)
</span><span class="cx"> {
</span><span class="cx"> Base::finishCreation(vm, name);
</span><del>- ASSERT(inherits(info()));
</del><ins>+ ASSERT(inherits(vm, info()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL callMethod(ExecState* exec)
</span><span class="lines">@@ -67,7 +67,7 @@
</span><span class="cx"> JSValue thisValue = exec->thisValue();
</span><span class="cx">
</span><span class="cx"> // Check if we're calling a method on the plug-in script object.
</span><del>- if (thisValue.inherits(JSHTMLElement::info())) {
</del><ins>+ if (thisValue.inherits(vm, JSHTMLElement::info())) {
</ins><span class="cx"> JSHTMLElement* element = jsCast<JSHTMLElement*>(asObject(thisValue));
</span><span class="cx">
</span><span class="cx"> // Try to get the script object from the element
</span><span class="lines">@@ -75,7 +75,7 @@
</span><span class="cx"> thisValue = scriptObject;
</span><span class="cx"> }
</span><span class="cx">
</span><del>- if (thisValue.inherits(JSNPObject::info())) {
</del><ins>+ if (thisValue.inherits(vm, JSNPObject::info())) {
</ins><span class="cx"> JSNPObject* jsNPObject = jsCast<JSNPObject*>(asObject(thisValue));
</span><span class="cx">
</span><span class="cx"> return JSValue::encode(jsNPObject->callMethod(exec, jsNPMethod->npIdentifier()));
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeJSNPObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/JSNPObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -70,8 +70,9 @@
</span><span class="cx">
</span><span class="cx"> void JSNPObject::finishCreation(JSGlobalObject* globalObject)
</span><span class="cx"> {
</span><del>- Base::finishCreation(globalObject->vm());
- ASSERT(inherits(info()));
</del><ins>+ VM& vm = globalObject->vm();
+ Base::finishCreation(vm);
+ ASSERT(inherits(vm, info()));
</ins><span class="cx">
</span><span class="cx"> // We should never have an NPJSObject inside a JSNPObject.
</span><span class="cx"> ASSERT(!NPJSObject::isNPJSObject(m_npObject));
</span><span class="lines">@@ -239,7 +240,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL callNPJSObject(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSObject* object = exec->jsCallee();
</span><del>- ASSERT(object->inherits(JSNPObject::info()));
</del><ins>+ ASSERT(object->inherits(exec->vm(), JSNPObject::info()));
</ins><span class="cx">
</span><span class="cx"> return JSValue::encode(jsCast<JSNPObject*>(object)->callObject(exec));
</span><span class="cx"> }
</span><span class="lines">@@ -258,7 +259,7 @@
</span><span class="cx"> static EncodedJSValue JSC_HOST_CALL constructWithConstructor(ExecState* exec)
</span><span class="cx"> {
</span><span class="cx"> JSObject* constructor = exec->jsCallee();
</span><del>- ASSERT(constructor->inherits(JSNPObject::info()));
</del><ins>+ ASSERT(constructor->inherits(exec->vm(), JSNPObject::info()));
</ins><span class="cx">
</span><span class="cx"> return JSValue::encode(jsCast<JSNPObject*>(constructor)->callConstructor(exec));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeNPJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPJSObject.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -48,7 +48,7 @@
</span><span class="cx"> NPJSObject* NPJSObject::create(VM& vm, NPRuntimeObjectMap* objectMap, JSObject* jsObject)
</span><span class="cx"> {
</span><span class="cx"> // We should never have a JSNPObject inside an NPJSObject.
</span><del>- ASSERT(!jsObject->inherits(JSNPObject::info()));
</del><ins>+ ASSERT(!jsObject->inherits(vm, JSNPObject::info()));
</ins><span class="cx">
</span><span class="cx"> NPJSObject* npJSObject = toNPJSObject(createNPObject(0, npClass()));
</span><span class="cx"> npJSObject->initialize(vm, objectMap, jsObject);
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessPluginsNetscapeNPRuntimeObjectMapcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/Plugins/Netscape/NPRuntimeObjectMap.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -70,7 +70,7 @@
</span><span class="cx"> NPObject* NPRuntimeObjectMap::getOrCreateNPObject(VM& vm, JSObject* jsObject)
</span><span class="cx"> {
</span><span class="cx"> // If this is a JSNPObject, we can just get its underlying NPObject.
</span><del>- if (jsObject->classInfo() == JSNPObject::info()) {
</del><ins>+ if (jsObject->classInfo(vm) == JSNPObject::info()) {
</ins><span class="cx"> JSNPObject* jsNPObject = jsCast<JSNPObject*>(jsObject);
</span><span class="cx"> NPObject* npObject = jsNPObject->npObject();
</span><span class="cx">
</span></span></pre></div>
<a id="trunkSourceWebKit2WebProcessWebPageWebFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebFrame.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -681,13 +681,12 @@
</span><span class="cx">
</span><span class="cx"> WebFrame* WebFrame::frameForContext(JSContextRef context)
</span><span class="cx"> {
</span><del>- JSObjectRef globalObjectRef = JSContextGetGlobalObject(context);
- JSC::JSObject* globalObjectObj = toJS(globalObjectRef);
- if (strcmp(globalObjectObj->classInfo()->className, "JSDOMWindowShell") != 0)
- return 0;
</del><span class="cx">
</span><del>- Frame* frame = static_cast<JSDOMWindowShell*>(globalObjectObj)->window()->wrapped().frame();
- return WebFrame::fromCoreFrame(*frame);
</del><ins>+ JSC::JSGlobalObject* globalObjectObj = toJS(context)->lexicalGlobalObject();
+ JSDOMWindow* window = jsDynamicDowncast<JSDOMWindow*>(globalObjectObj->vm(), globalObjectObj);
+ if (!window)
+ return nullptr;
+ return WebFrame::fromCoreFrame(*(window->wrapped().frame()));
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> JSValueRef WebFrame::jsWrapperForWorld(InjectedBundleNodeHandle* nodeHandle, InjectedBundleScriptWorld* world)
</span><span class="lines">@@ -728,7 +727,7 @@
</span><span class="cx">
</span><span class="cx"> String WebFrame::counterValue(JSObjectRef element)
</span><span class="cx"> {
</span><del>- if (!toJS(element)->inherits(JSElement::info()))
</del><ins>+ if (!toJS(element)->inherits(*toJS(element)->vm(), JSElement::info()))
</ins><span class="cx"> return String();
</span><span class="cx">
</span><span class="cx"> return counterValueForElement(&jsCast<JSElement*>(toJS(element))->wrapped());
</span></span></pre></div>
<a id="trunkToolsChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Tools/ChangeLog (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/ChangeLog        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Tools/ChangeLog        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -1,3 +1,19 @@
</span><ins>+2017-01-26 Keith Miller <keith_miller@apple.com>
+
+ classInfo should take a VM so it is not materialized from the object on each call
+ https://bugs.webkit.org/show_bug.cgi?id=167424
+
+ Rubber Stamped by Michael Saboff.
+
+ Previously, classInfo() would get the VM from the target's
+ MarkedBlock. Most callers already have a VM on hand, so it is
+ wasteful to compute the VM from the marked block every time. This
+ patch refactors some of the most common callers of classInfo(),
+ jsDynamicCast and inherits to take a VM as well.
+
+ * DumpRenderTree/TestRunner.cpp:
+ (setAudioResultCallback):
+
</ins><span class="cx"> 2017-01-26 Jer Noble <jer.noble@apple.com>
</span><span class="cx">
</span><span class="cx"> Autoplay muted videos stop playback of any streaming app in the background
</span></span></pre></div>
<a id="trunkToolsDumpRenderTreeTestRunnercpp"></a>
<div class="modfile"><h4>Modified: trunk/Tools/DumpRenderTree/TestRunner.cpp (211246 => 211247)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Tools/DumpRenderTree/TestRunner.cpp        2017-01-27 01:38:05 UTC (rev 211246)
+++ trunk/Tools/DumpRenderTree/TestRunner.cpp        2017-01-27 01:47:52 UTC (rev 211247)
</span><span class="lines">@@ -342,7 +342,7 @@
</span><span class="cx"> return JSValueMakeUndefined(context);
</span><span class="cx">
</span><span class="cx"> // FIXME (123058): Use a JSC API to get buffer contents once such is exposed.
</span><del>- JSC::JSArrayBufferView* jsBufferView = JSC::jsDynamicCast<JSC::JSArrayBufferView*>(toJS(toJS(context), arguments[0]));
</del><ins>+ JSC::JSArrayBufferView* jsBufferView = JSC::jsDynamicCast<JSC::JSArrayBufferView*>(toJS(context)->vm(), toJS(toJS(context), arguments[0]));
</ins><span class="cx"> ASSERT(jsBufferView);
</span><span class="cx"> RefPtr<JSC::ArrayBufferView> bufferView = jsBufferView->unsharedImpl();
</span><span class="cx"> const char* buffer = static_cast<const char*>(bufferView->baseAddress());
</span></span></pre>
</div>
</div>
</body>
</html>