<!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>[206386] trunk/Source</title>
</head>
<body>

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

<h3>Log Message</h3>
<pre>Added RETURN_IF_EXCEPTION() macro and use it for exception checks.
https://bugs.webkit.org/show_bug.cgi?id=162521

Reviewed by Saam Barati.

Source/JavaScriptCore:

Also, where possible, if the return type is JSValue, changed the returned value
(on exception) to the empty JSValue (instead of sometimes jsUndefined, jsNull,
or the thrown exception value).

There are a few places where I had to continue to return the previously returned
value (instead of the empty JSValue) in order for tests to pass.  This is needed
because there are missing exception checks that will need to be added before I
can change those to return the empty JSValue too.  Identifying all the places
where those checks need to be added is beyond the scope of this patch.  I will
work on adding missing exception checks in a subsequent patch.

In this patch, there is one missing exception check in replaceUsingRegExpSearch()
that was easily identified, and is necessary so that Interpreter::execute()
functions can return JSValue.  I've added this missing check.

This patch has passed the JSC and layout tests.

* dfg/DFGOperations.cpp:
(JSC::DFG::operationPutByValInternal):
* inspector/JSInjectedScriptHost.cpp:
(Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
(Inspector::JSInjectedScriptHost::getInternalProperties):
(Inspector::JSInjectedScriptHost::weakMapEntries):
(Inspector::JSInjectedScriptHost::weakSetEntries):
(Inspector::JSInjectedScriptHost::iteratorEntries):
* inspector/JSJavaScriptCallFrame.cpp:
(Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):
* interpreter/Interpreter.cpp:
(JSC::eval):
(JSC::sizeOfVarargs):
(JSC::Interpreter::execute):
(JSC::Interpreter::executeCall):
(JSC::Interpreter::executeConstruct):
* interpreter/ShadowChicken.cpp:
(JSC::ShadowChicken::functionsOnStack):
* jit/JITOperations.cpp:
(JSC::getByVal):
* jsc.cpp:
(WTF::ImpureGetter::getOwnPropertySlot):
(functionRun):
(functionRunString):
(functionLoad):
(functionLoadString):
(functionReadFile):
(functionCheckSyntax):
(functionSetRandomSeed):
(functionLoadModule):
(functionCreateBuiltin):
(functionCheckModuleSyntax):
* llint/LLIntSlowPaths.cpp:
(JSC::LLInt::getByVal):
(JSC::LLInt::LLINT_SLOW_PATH_DECL):
* profiler/ProfilerBytecodeSequence.cpp:
(JSC::Profiler::BytecodeSequence::addSequenceProperties):
* profiler/ProfilerCompilation.cpp:
(JSC::Profiler::Compilation::toJS):
* profiler/ProfilerDatabase.cpp:
(JSC::Profiler::Database::toJS):
* profiler/ProfilerOSRExitSite.cpp:
(JSC::Profiler::OSRExitSite::toJS):
* profiler/ProfilerOriginStack.cpp:
(JSC::Profiler::OriginStack::toJS):
* runtime/ArrayPrototype.cpp:
(JSC::speciesConstructArray):
(JSC::shift):
(JSC::unshift):
(JSC::arrayProtoFuncToString):
(JSC::arrayProtoFuncToLocaleString):
(JSC::slowJoin):
(JSC::fastJoin):
(JSC::arrayProtoFuncJoin):
(JSC::arrayProtoFuncPop):
(JSC::arrayProtoFuncPush):
(JSC::arrayProtoFuncReverse):
(JSC::arrayProtoFuncShift):
(JSC::arrayProtoFuncSlice):
(JSC::arrayProtoFuncSplice):
(JSC::arrayProtoFuncUnShift):
(JSC::arrayProtoFuncIndexOf):
(JSC::arrayProtoFuncLastIndexOf):
(JSC::moveElements):
(JSC::arrayProtoPrivateFuncConcatMemcpy):
* runtime/BooleanConstructor.cpp:
(JSC::constructWithBooleanConstructor):
* runtime/CommonSlowPaths.h:
(JSC::CommonSlowPaths::opIn):
* runtime/Completion.cpp:
(JSC::loadAndEvaluateModule):
(JSC::loadModule):
* runtime/ConsoleObject.cpp:
(JSC::consoleProtoFuncAssert):
(JSC::consoleProtoFuncProfile):
(JSC::consoleProtoFuncProfileEnd):
(JSC::consoleProtoFuncTakeHeapSnapshot):
(JSC::consoleProtoFuncTime):
(JSC::consoleProtoFuncTimeEnd):
* runtime/DateConstructor.cpp:
(JSC::constructDate):
(JSC::dateParse):
* runtime/DatePrototype.cpp:
(JSC::dateProtoFuncToPrimitiveSymbol):
(JSC::dateProtoFuncToJSON):
* runtime/ErrorConstructor.cpp:
(JSC::Interpreter::constructWithErrorConstructor):
* runtime/ErrorInstance.cpp:
(JSC::ErrorInstance::sanitizedToString):
* runtime/ErrorPrototype.cpp:
(JSC::errorProtoFuncToString):
* runtime/ExceptionScope.h:
* runtime/FunctionConstructor.cpp:
(JSC::constructFunctionSkippingEvalEnabledCheck):
* runtime/GenericArgumentsInlines.h:
(JSC::GenericArguments&lt;Type&gt;::copyToArguments):
* runtime/GetterSetter.cpp:
(JSC::callGetter):
* runtime/HashMapImpl.h:
(JSC::jsMapHash):
(JSC::HashMapImpl::finishCreation):
(JSC::HashMapImpl::findBucket):
(JSC::HashMapImpl::add):
(JSC::HashMapImpl::rehash):
* runtime/InspectorInstrumentationObject.cpp:
(JSC::inspectorInstrumentationObjectLog):
* runtime/InternalFunction.cpp:
(JSC::InternalFunction::createSubclassStructure):
* runtime/IntlCollator.cpp:
(JSC::IntlCollator::initializeCollator):
* runtime/IntlCollatorConstructor.cpp:
(JSC::constructIntlCollator):
(JSC::IntlCollatorConstructorFuncSupportedLocalesOf):
* runtime/IntlCollatorPrototype.cpp:
(JSC::IntlCollatorFuncCompare):
(JSC::IntlCollatorPrototypeGetterCompare):
* runtime/IntlDateTimeFormat.cpp:
(JSC::toDateTimeOptionsAnyDate):
(JSC::IntlDateTimeFormat::initializeDateTimeFormat):
* runtime/IntlDateTimeFormatConstructor.cpp:
(JSC::constructIntlDateTimeFormat):
(JSC::IntlDateTimeFormatConstructorFuncSupportedLocalesOf):
* runtime/IntlDateTimeFormatPrototype.cpp:
(JSC::IntlDateTimeFormatFuncFormatDateTime):
(JSC::IntlDateTimeFormatPrototypeGetterFormat):
* runtime/IntlNumberFormat.cpp:
(JSC::IntlNumberFormat::initializeNumberFormat):
* runtime/IntlNumberFormatConstructor.cpp:
(JSC::constructIntlNumberFormat):
(JSC::IntlNumberFormatConstructorFuncSupportedLocalesOf):
* runtime/IntlNumberFormatPrototype.cpp:
(JSC::IntlNumberFormatFuncFormatNumber):
(JSC::IntlNumberFormatPrototypeGetterFormat):
* runtime/IntlObject.cpp:
(JSC::intlBooleanOption):
(JSC::intlStringOption):
(JSC::intlNumberOption):
(JSC::canonicalizeLocaleList):
(JSC::supportedLocales):
* runtime/IntlObjectInlines.h:
(JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):
* runtime/IteratorOperations.cpp:
(JSC::iteratorNext):
(JSC::iteratorStep):
(JSC::iteratorClose):
(JSC::iteratorForIterable):
* runtime/IteratorOperations.h:
(JSC::forEachInIterable):
* runtime/JSArray.cpp:
(JSC::JSArray::pop):
(JSC::JSArray::copyToArguments):
* runtime/JSArrayBufferConstructor.cpp:
(JSC::constructArrayBuffer):
* runtime/JSArrayBufferPrototype.cpp:
(JSC::arrayBufferProtoFuncSlice):
* runtime/JSArrayInlines.h:
(JSC::getLength):
(JSC::toLength):
* runtime/JSBoundFunction.cpp:
(JSC::getBoundFunctionStructure):
(JSC::JSBoundFunction::create):
* runtime/JSCJSValue.cpp:
(JSC::JSValue::putToPrimitive):
(JSC::JSValue::toStringSlowCase):
* runtime/JSCJSValueInlines.h:
(JSC::toPreferredPrimitiveType):
(JSC::JSValue::getPropertySlot):
(JSC::JSValue::equalSlowCaseInline):
* runtime/JSDataViewPrototype.cpp:
(JSC::getData):
(JSC::setData):
* runtime/JSFunction.cpp:
(JSC::JSFunction::setFunctionName):
* runtime/JSGenericTypedArrayView.h:
(JSC::JSGenericTypedArrayView::setIndex):
* runtime/JSGenericTypedArrayViewConstructorInlines.h:
(JSC::constructGenericTypedArrayViewFromIterator):
(JSC::constructGenericTypedArrayViewWithArguments):
(JSC::constructGenericTypedArrayView):
* runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
(JSC::speciesConstruct):
(JSC::genericTypedArrayViewProtoFuncSet):
(JSC::genericTypedArrayViewProtoFuncCopyWithin):
(JSC::genericTypedArrayViewProtoFuncIncludes):
(JSC::genericTypedArrayViewProtoFuncIndexOf):
(JSC::genericTypedArrayViewProtoFuncJoin):
(JSC::genericTypedArrayViewProtoFuncLastIndexOf):
(JSC::genericTypedArrayViewProtoFuncSlice):
(JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):
* runtime/JSGlobalObject.h:
(JSC::constructEmptyArray):
(JSC::constructArray):
(JSC::constructArrayNegativeIndexed):
* runtime/JSGlobalObjectFunctions.cpp:
(JSC::globalFuncEval):
* runtime/JSModuleRecord.cpp:
(JSC::JSModuleRecord::instantiateDeclarations):
* runtime/JSONObject.cpp:
(JSC::Stringifier::stringify):
(JSC::Stringifier::toJSON):
(JSC::Stringifier::appendStringifiedValue):
(JSC::Stringifier::Holder::appendNextProperty):
(JSC::Walker::walk):
(JSC::JSONProtoFuncParse):
* runtime/JSObject.cpp:
(JSC::ordinarySetSlow):
(JSC::JSObject::setPrototypeWithCycleCheck):
(JSC::callToPrimitiveFunction):
(JSC::JSObject::defaultHasInstance):
(JSC::JSObject::getPropertyNames):
(JSC::JSObject::toNumber):
(JSC::JSObject::toString):
(JSC::JSObject::defineOwnNonIndexProperty):
(JSC::JSObject::getGenericPropertyNames):
(JSC::JSObject::getMethod):
* runtime/JSObjectInlines.h:
(JSC::createListFromArrayLike):
(JSC::JSObject::getPropertySlot):
(JSC::JSObject::getNonIndexPropertySlot):
* runtime/JSPromiseConstructor.cpp:
(JSC::constructPromise):
* runtime/JSPromiseDeferred.cpp:
(JSC::JSPromiseDeferred::create):
* runtime/JSPropertyNameEnumerator.h:
(JSC::propertyNameEnumerator):
* runtime/JSPropertyNameIterator.cpp:
(JSC::JSPropertyNameIterator::create):
* runtime/JSScope.cpp:
(JSC::isUnscopable):
* runtime/JSString.cpp:
(JSC::JSString::equalSlowCase):
* runtime/JSStringJoiner.cpp:
(JSC::JSStringJoiner::join):
* runtime/LiteralParser.cpp:
(JSC::LiteralParser&lt;CharType&gt;::parse):
* runtime/MapBase.h:
(JSC::MapBase::finishCreation):
* runtime/MapConstructor.cpp:
(JSC::constructMap):
* runtime/MathObject.cpp:
(JSC::mathProtoFuncClz32):
(JSC::mathProtoFuncHypot):
(JSC::mathProtoFuncIMul):
* runtime/ModuleLoaderPrototype.cpp:
(JSC::moduleLoaderPrototypeParseModule):
(JSC::moduleLoaderPrototypeRequestedModules):
(JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):
* runtime/NativeErrorConstructor.cpp:
(JSC::Interpreter::constructWithNativeErrorConstructor):
* runtime/NumberConstructor.cpp:
(JSC::constructWithNumberConstructor):
* runtime/ObjectConstructor.cpp:
(JSC::constructObject):
(JSC::objectConstructorGetPrototypeOf):
(JSC::objectConstructorSetPrototypeOf):
(JSC::objectConstructorGetOwnPropertyDescriptor):
(JSC::objectConstructorGetOwnPropertyDescriptors):
(JSC::objectConstructorGetOwnPropertyNames):
(JSC::objectConstructorGetOwnPropertySymbols):
(JSC::objectConstructorKeys):
(JSC::ownEnumerablePropertyKeys):
(JSC::toPropertyDescriptor):
(JSC::objectConstructorDefineProperty):
(JSC::defineProperties):
(JSC::objectConstructorSeal):
(JSC::objectConstructorFreeze):
(JSC::objectConstructorIsSealed):
(JSC::objectConstructorIsFrozen):
(JSC::objectConstructorIsExtensible):
(JSC::ownPropertyKeys):
* runtime/ObjectConstructor.h:
(JSC::constructObjectFromPropertyDescriptor):
* runtime/ObjectPrototype.cpp:
(JSC::objectProtoFuncHasOwnProperty):
(JSC::objectProtoFuncIsPrototypeOf):
(JSC::objectProtoFuncDefineGetter):
(JSC::objectProtoFuncDefineSetter):
(JSC::objectProtoFuncLookupGetter):
(JSC::objectProtoFuncLookupSetter):
(JSC::objectProtoFuncPropertyIsEnumerable):
(JSC::objectProtoFuncToLocaleString):
(JSC::objectProtoFuncToString):
* runtime/Operations.cpp:
(JSC::jsAddSlowCase):
* runtime/PropertyDescriptor.cpp:
(JSC::PropertyDescriptor::slowGetterSetter):
* runtime/ProxyConstructor.cpp:
(JSC::makeRevocableProxy):
* runtime/ProxyObject.cpp:
(JSC::performProxyGet):
(JSC::ProxyObject::performGet):
(JSC::ProxyObject::performInternalMethodGetOwnProperty):
(JSC::ProxyObject::performHasProperty):
(JSC::ProxyObject::performPut):
(JSC::ProxyObject::putByIndexCommon):
(JSC::performProxyCall):
(JSC::performProxyConstruct):
(JSC::ProxyObject::performDelete):
(JSC::ProxyObject::performPreventExtensions):
(JSC::ProxyObject::performIsExtensible):
(JSC::ProxyObject::performDefineOwnProperty):
(JSC::ProxyObject::performGetOwnPropertyNames):
(JSC::ProxyObject::performSetPrototype):
(JSC::ProxyObject::performGetPrototype):
* runtime/ReflectObject.cpp:
(JSC::reflectObjectConstruct):
(JSC::reflectObjectDefineProperty):
(JSC::reflectObjectGet):
(JSC::reflectObjectGetOwnPropertyDescriptor):
(JSC::reflectObjectIsExtensible):
(JSC::reflectObjectPreventExtensions):
(JSC::reflectObjectSet):
(JSC::reflectObjectSetPrototypeOf):
* runtime/RegExpConstructor.cpp:
(JSC::toFlags):
(JSC::regExpCreate):
(JSC::constructRegExp):
* runtime/RegExpConstructor.h:
(JSC::isRegExp):
* runtime/RegExpObject.cpp:
(JSC::collectMatches):
(JSC::RegExpObject::matchGlobal):
* runtime/RegExpPrototype.cpp:
(JSC::regExpProtoFuncCompile):
(JSC::flagsString):
(JSC::regExpProtoFuncToString):
(JSC::regExpProtoGetterFlags):
(JSC::regExpProtoFuncSearchFast):
(JSC::regExpProtoFuncSplitFast):
* runtime/SetConstructor.cpp:
(JSC::constructSet):
* runtime/StringConstructor.cpp:
(JSC::stringFromCodePoint):
(JSC::constructWithStringConstructor):
* runtime/StringObject.cpp:
(JSC::StringObject::defineOwnProperty):
* runtime/StringPrototype.cpp:
(JSC::replaceUsingRegExpSearch):
(JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
(JSC::replaceUsingStringSearch):
(JSC::replace):
(JSC::stringProtoFuncReplaceUsingRegExp):
(JSC::stringProtoFuncReplaceUsingStringSearch):
(JSC::stringProtoFuncCodePointAt):
(JSC::stringProtoFuncSlice):
(JSC::stringProtoFuncSplitFast):
(JSC::stringProtoFuncSubstr):
(JSC::stringProtoFuncSubstring):
(JSC::stringProtoFuncLocaleCompare):
(JSC::toLocaleCase):
(JSC::stringProtoFuncBig):
(JSC::stringProtoFuncSmall):
(JSC::stringProtoFuncBlink):
(JSC::stringProtoFuncBold):
(JSC::stringProtoFuncFixed):
(JSC::stringProtoFuncItalics):
(JSC::stringProtoFuncStrike):
(JSC::stringProtoFuncSub):
(JSC::stringProtoFuncSup):
(JSC::stringProtoFuncFontcolor):
(JSC::stringProtoFuncFontsize):
(JSC::stringProtoFuncAnchor):
(JSC::stringProtoFuncLink):
(JSC::trimString):
(JSC::stringProtoFuncStartsWith):
(JSC::stringProtoFuncEndsWith):
(JSC::stringIncludesImpl):
(JSC::stringProtoFuncIncludes):
(JSC::builtinStringIncludesInternal):
(JSC::stringProtoFuncNormalize):
* runtime/SymbolConstructor.cpp:
(JSC::symbolConstructorFor):
* runtime/TemplateRegistry.cpp:
(JSC::TemplateRegistry::getTemplateObject):
* runtime/WeakMapConstructor.cpp:
(JSC::constructWeakMap):
* runtime/WeakSetConstructor.cpp:
(JSC::constructWeakSet):
* tools/JSDollarVMPrototype.cpp:
(JSC::functionPrint):

Source/WebCore:

No new tests because this patch is mostly refactoring.  The only change in
behavior is that functions that have a JSValue return type will now return the
empty JSValue when an exception is thrown.  I tested this behavior by running
the existing JSC and layout tests.

* bindings/js/ArrayValue.cpp:
(WebCore::ArrayValue::get):
* bindings/js/IDBBindingUtilities.cpp:
(WebCore::toJS):
* bindings/js/JSApplePaySessionCustom.cpp:
(WebCore::JSApplePaySession::completeShippingMethodSelection):
(WebCore::JSApplePaySession::completeShippingContactSelection):
(WebCore::JSApplePaySession::completePaymentMethodSelection):
* bindings/js/JSAudioTrackCustom.cpp:
(WebCore::JSAudioTrack::setKind):
(WebCore::JSAudioTrack::setLanguage):
* bindings/js/JSBlobCustom.cpp:
(WebCore::constructJSBlob):
* bindings/js/JSCSSStyleDeclarationCustom.cpp:
(WebCore::JSCSSStyleDeclaration::getPropertyCSSValue):
* bindings/js/JSCommandLineAPIHostCustom.cpp:
(WebCore::getJSListenerFunctions):
* bindings/js/JSCryptoAlgorithmDictionary.cpp:
(WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):
(WebCore::getHashAlgorithm):
(WebCore::createAesCbcParams):
(WebCore::createAesKeyGenParams):
(WebCore::createHmacKeyParams):
(WebCore::createRsaKeyGenParams):
(WebCore::createRsaOaepParams):
* bindings/js/JSCryptoKeySerializationJWK.cpp:
(WebCore::getStringFromJSON):
(WebCore::JSCryptoKeySerializationJWK::reconcileUsages):
(WebCore::JSCryptoKeySerializationJWK::keyDataRSAComponents):
(WebCore::buildJSONForRSAComponents):
(WebCore::addUsagesToJSON):
(WebCore::JSCryptoKeySerializationJWK::serialize):
* bindings/js/JSCustomElementInterface.cpp:
(WebCore::constructCustomElementSynchronously):
(WebCore::JSCustomElementInterface::upgradeElement):
* bindings/js/JSCustomElementRegistryCustom.cpp:
(WebCore::getCustomElementCallback):
(WebCore::JSCustomElementRegistry::define):
(WebCore::whenDefinedPromise):
* bindings/js/JSDOMBinding.cpp:
(WebCore::valueToUSVString):
(WebCore::hasIteratorMethod):
(WebCore::toSmallerInt):
(WebCore::toSmallerUInt):
(WebCore::toInt32EnforceRange):
(WebCore::toUInt32EnforceRange):
(WebCore::toInt64EnforceRange):
(WebCore::toUInt64EnforceRange):
* bindings/js/JSDOMBinding.h:
(WebCore::toJSSequence):
(WebCore::toJS):
(WebCore::jsFrozenArray):
* bindings/js/JSDOMPromise.cpp:
(WebCore::rejectPromiseWithExceptionIfAny):
* bindings/js/JSDOMStringMapCustom.cpp:
(WebCore::JSDOMStringMap::putDelegate):
* bindings/js/JSDOMWindowCustom.cpp:
(WebCore::JSDOMWindow::setLocation):
(WebCore::JSDOMWindow::open):
(WebCore::JSDOMWindow::showModalDialog):
(WebCore::handlePostMessage):
(WebCore::JSDOMWindow::setTimeout):
(WebCore::JSDOMWindow::setInterval):
* bindings/js/JSDataCueCustom.cpp:
(WebCore::constructJSDataCue):
* bindings/js/JSDeviceMotionEventCustom.cpp:
(WebCore::readAccelerationArgument):
(WebCore::readRotationRateArgument):
(WebCore::JSDeviceMotionEvent::initDeviceMotionEvent):
* bindings/js/JSDictionary.cpp:
(WebCore::JSDictionary::tryGetProperty):
(WebCore::JSDictionary::convertValue):
* bindings/js/JSDictionary.h:
(WebCore::JSDictionary::tryGetPropertyAndResult):
* bindings/js/JSDocumentCustom.cpp:
(WebCore::JSDocument::getCSSCanvasContext):
* bindings/js/JSFileCustom.cpp:
(WebCore::constructJSFile):
* bindings/js/JSGeolocationCustom.cpp:
(WebCore::JSGeolocation::getCurrentPosition):
(WebCore::JSGeolocation::watchPosition):
* bindings/js/JSHTMLAllCollectionCustom.cpp:
(WebCore::callHTMLAllCollection):
* bindings/js/JSHTMLCanvasElementCustom.cpp:
(WebCore::JSHTMLCanvasElement::getContext):
* bindings/js/JSHTMLElementCustom.cpp:
(WebCore::constructJSHTMLElement):
* bindings/js/JSHistoryCustom.cpp:
(WebCore::JSHistory::pushState):
(WebCore::JSHistory::replaceState):
* bindings/js/JSIDBDatabaseCustom.cpp:
(WebCore::JSIDBDatabase::createObjectStore):
* bindings/js/JSMessageEventCustom.cpp:
(WebCore::handleInitMessageEvent):
* bindings/js/JSMessagePortCustom.cpp:
(WebCore::fillMessagePortArray):
* bindings/js/JSMessagePortCustom.h:
(WebCore::handlePostMessage):
* bindings/js/JSMockContentFilterSettingsCustom.cpp:
(WebCore::JSMockContentFilterSettings::setDecisionPoint):
(WebCore::toDecision):
(WebCore::JSMockContentFilterSettings::setDecision):
(WebCore::JSMockContentFilterSettings::setUnblockRequestDecision):
* bindings/js/JSNodeFilterCustom.cpp:
(WebCore::JSNodeFilter::acceptNode):
* bindings/js/JSNodeOrString.cpp:
(WebCore::toNodeOrStringVector):
* bindings/js/JSSQLTransactionCustom.cpp:
(WebCore::JSSQLTransaction::executeSql):
* bindings/js/JSSVGLengthCustom.cpp:
(WebCore::JSSVGLength::convertToSpecifiedUnits):
* bindings/js/JSStorageCustom.cpp:
(WebCore::JSStorage::getOwnPropertyNames):
* bindings/js/JSTextTrackCustom.cpp:
(WebCore::JSTextTrack::setLanguage):
* bindings/js/JSVideoTrackCustom.cpp:
(WebCore::JSVideoTrack::setKind):
(WebCore::JSVideoTrack::setLanguage):
* bindings/js/JSWebGL2RenderingContextCustom.cpp:
(WebCore::JSWebGL2RenderingContext::getIndexedParameter):
* bindings/js/JSWebGLRenderingContextBaseCustom.cpp:
(WebCore::getObjectParameter):
(WebCore::JSWebGLRenderingContextBase::getExtension):
(WebCore::JSWebGLRenderingContextBase::getFramebufferAttachmentParameter):
(WebCore::JSWebGLRenderingContextBase::getParameter):
(WebCore::JSWebGLRenderingContextBase::getProgramParameter):
(WebCore::JSWebGLRenderingContextBase::getShaderParameter):
(WebCore::toVector):
(WebCore::dataFunctionf):
(WebCore::dataFunctionMatrix):
* bindings/js/JSWebKitSubtleCryptoCustom.cpp:
(WebCore::cryptoKeyFormatFromJSValue):
(WebCore::cryptoKeyUsagesFromJSValue):
(WebCore::JSWebKitSubtleCrypto::generateKey):
(WebCore::importKey):
(WebCore::JSWebKitSubtleCrypto::importKey):
(WebCore::exportKey):
(WebCore::JSWebKitSubtleCrypto::exportKey):
(WebCore::JSWebKitSubtleCrypto::unwrapKey):
* bindings/js/JSWorkerCustom.cpp:
(WebCore::constructJSWorker):
* bindings/js/JSWorkerGlobalScopeCustom.cpp:
(WebCore::JSWorkerGlobalScope::importScripts):
(WebCore::JSWorkerGlobalScope::setTimeout):
(WebCore::JSWorkerGlobalScope::setInterval):
* bindings/js/ReadableStreamDefaultController.cpp:
(WebCore::ReadableStreamDefaultController::invoke):
* bindings/js/ScheduledAction.cpp:
(WebCore::ScheduledAction::create):
* bindings/scripts/CodeGeneratorJS.pm:
(GenerateDictionaryImplementationContent):
(GenerateImplementation):
(GenerateParametersCheck):
(GenerateImplementationFunctionCall):
(GenerateConstructorDefinition):
* html/HTMLMediaElement.cpp:
(WebCore::controllerJSValue):
(WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
(WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):</pre>

<h3>Modified Paths</h3>
<ul>
<li><a href="#trunkSourceJavaScriptCoreChangeLog">trunk/Source/JavaScriptCore/ChangeLog</a></li>
<li><a href="#trunkSourceJavaScriptCoredfgDFGOperationscpp">trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostcpp">trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreinspectorJSJavaScriptCallFramecpp">trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.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="#trunkSourceJavaScriptCorejitJITOperationscpp">trunk/Source/JavaScriptCore/jit/JITOperations.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="#trunkSourceJavaScriptCoreprofilerProfilerBytecodeSequencecpp">trunk/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfilerCompilationcpp">trunk/Source/JavaScriptCore/profiler/ProfilerCompilation.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfilerDatabasecpp">trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfilerOSRExitSitecpp">trunk/Source/JavaScriptCore/profiler/ProfilerOSRExitSite.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreprofilerProfilerOriginStackcpp">trunk/Source/JavaScriptCore/profiler/ProfilerOriginStack.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeArrayPrototypecpp">trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeBooleanConstructorcpp">trunk/Source/JavaScriptCore/runtime/BooleanConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCommonSlowPathsh">trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeCompletioncpp">trunk/Source/JavaScriptCore/runtime/Completion.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="#trunkSourceJavaScriptCoreruntimeDatePrototypecpp">trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeErrorConstructorcpp">trunk/Source/JavaScriptCore/runtime/ErrorConstructor.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="#trunkSourceJavaScriptCoreruntimeExceptionScopeh">trunk/Source/JavaScriptCore/runtime/ExceptionScope.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeFunctionConstructorcpp">trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGenericArgumentsInlinesh">trunk/Source/JavaScriptCore/runtime/GenericArgumentsInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeGetterSettercpp">trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeHashMapImplh">trunk/Source/JavaScriptCore/runtime/HashMapImpl.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="#trunkSourceJavaScriptCoreruntimeIntlCollatorcpp">trunk/Source/JavaScriptCore/runtime/IntlCollator.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIntlCollatorConstructorcpp">trunk/Source/JavaScriptCore/runtime/IntlCollatorConstructor.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="#trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatConstructorcpp">trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.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="#trunkSourceJavaScriptCoreruntimeIntlNumberFormatConstructorcpp">trunk/Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.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="#trunkSourceJavaScriptCoreruntimeIteratorOperationscpp">trunk/Source/JavaScriptCore/runtime/IteratorOperations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeIteratorOperationsh">trunk/Source/JavaScriptCore/runtime/IteratorOperations.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSArraycpp">trunk/Source/JavaScriptCore/runtime/JSArray.cpp</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="#trunkSourceJavaScriptCoreruntimeJSArrayInlinesh">trunk/Source/JavaScriptCore/runtime/JSArrayInlines.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="#trunkSourceJavaScriptCoreruntimeJSCJSValueInlinesh">trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h</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="#trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewPrototypeFunctionsh">trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjecth">trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSGlobalObjectFunctionscpp">trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSModuleRecordcpp">trunk/Source/JavaScriptCore/runtime/JSModuleRecord.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="#trunkSourceJavaScriptCoreruntimeJSObjectInlinesh">trunk/Source/JavaScriptCore/runtime/JSObjectInlines.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPromiseConstructorcpp">trunk/Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPromiseDeferredcpp">trunk/Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSPropertyNameEnumeratorh">trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h</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="#trunkSourceJavaScriptCoreruntimeJSStringcpp">trunk/Source/JavaScriptCore/runtime/JSString.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeJSStringJoinercpp">trunk/Source/JavaScriptCore/runtime/JSStringJoiner.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeLiteralParsercpp">trunk/Source/JavaScriptCore/runtime/LiteralParser.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeMapBaseh">trunk/Source/JavaScriptCore/runtime/MapBase.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeMapConstructorcpp">trunk/Source/JavaScriptCore/runtime/MapConstructor.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="#trunkSourceJavaScriptCoreruntimeObjectConstructorcpp">trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeObjectConstructorh">trunk/Source/JavaScriptCore/runtime/ObjectConstructor.h</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeObjectPrototypecpp">trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeOperationscpp">trunk/Source/JavaScriptCore/runtime/Operations.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimePropertyDescriptorcpp">trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeProxyConstructorcpp">trunk/Source/JavaScriptCore/runtime/ProxyConstructor.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="#trunkSourceJavaScriptCoreruntimeRegExpPrototypecpp">trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSetConstructorcpp">trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringConstructorcpp">trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringObjectcpp">trunk/Source/JavaScriptCore/runtime/StringObject.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeStringPrototypecpp">trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeSymbolConstructorcpp">trunk/Source/JavaScriptCore/runtime/SymbolConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeTemplateRegistrycpp">trunk/Source/JavaScriptCore/runtime/TemplateRegistry.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakMapConstructorcpp">trunk/Source/JavaScriptCore/runtime/WeakMapConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoreruntimeWeakSetConstructorcpp">trunk/Source/JavaScriptCore/runtime/WeakSetConstructor.cpp</a></li>
<li><a href="#trunkSourceJavaScriptCoretoolsJSDollarVMPrototypecpp">trunk/Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp</a></li>
<li><a href="#trunkSourceWebCoreChangeLog">trunk/Source/WebCore/ChangeLog</a></li>
<li><a href="#trunkSourceWebCorebindingsjsArrayValuecpp">trunk/Source/WebCore/bindings/js/ArrayValue.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsIDBBindingUtilitiescpp">trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSApplePaySessionCustomcpp">trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSAudioTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSBlobCustomcpp">trunk/Source/WebCore/bindings/js/JSBlobCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCSSStyleDeclarationCustomcpp">trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.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="#trunkSourceWebCorebindingsjsJSCryptoKeySerializationJWKcpp">trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCustomElementInterfacecpp">trunk/Source/WebCore/bindings/js/JSCustomElementInterface.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSCustomElementRegistryCustomcpp">trunk/Source/WebCore/bindings/js/JSCustomElementRegistryCustom.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="#trunkSourceWebCorebindingsjsJSDOMPromisecpp">trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMStringMapCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp">trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDataCueCustomcpp">trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDeviceMotionEventCustomcpp">trunk/Source/WebCore/bindings/js/JSDeviceMotionEventCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDictionarycpp">trunk/Source/WebCore/bindings/js/JSDictionary.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDictionaryh">trunk/Source/WebCore/bindings/js/JSDictionary.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSDocumentCustomcpp">trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSFileCustomcpp">trunk/Source/WebCore/bindings/js/JSFileCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSGeolocationCustomcpp">trunk/Source/WebCore/bindings/js/JSGeolocationCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLAllCollectionCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLCanvasElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHTMLElementCustomcpp">trunk/Source/WebCore/bindings/js/JSHTMLElementCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSHistoryCustomcpp">trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSIDBDatabaseCustomcpp">trunk/Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMessageEventCustomcpp">trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMessagePortCustomcpp">trunk/Source/WebCore/bindings/js/JSMessagePortCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMessagePortCustomh">trunk/Source/WebCore/bindings/js/JSMessagePortCustom.h</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSMockContentFilterSettingsCustomcpp">trunk/Source/WebCore/bindings/js/JSMockContentFilterSettingsCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeFilterCustomcpp">trunk/Source/WebCore/bindings/js/JSNodeFilterCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSNodeOrStringcpp">trunk/Source/WebCore/bindings/js/JSNodeOrString.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSQLTransactionCustomcpp">trunk/Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSSVGLengthCustomcpp">trunk/Source/WebCore/bindings/js/JSSVGLengthCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSStorageCustomcpp">trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSTextTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSVideoTrackCustomcpp">trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWebGL2RenderingContextCustomcpp">trunk/Source/WebCore/bindings/js/JSWebGL2RenderingContextCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWebGLRenderingContextBaseCustomcpp">trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp">trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerCustomcpp">trunk/Source/WebCore/bindings/js/JSWorkerCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsJSWorkerGlobalScopeCustomcpp">trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsReadableStreamDefaultControllercpp">trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsjsScheduledActioncpp">trunk/Source/WebCore/bindings/js/ScheduledAction.cpp</a></li>
<li><a href="#trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm">trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm</a></li>
<li><a href="#trunkSourceWebCorehtmlHTMLMediaElementcpp">trunk/Source/WebCore/html/HTMLMediaElement.cpp</a></li>
</ul>

</div>
<div id="patch">
<h3>Diff</h3>
<a id="trunkSourceJavaScriptCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/ChangeLog (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/ChangeLog        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/ChangeLog        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,3 +1,408 @@
</span><ins>+2016-09-26  Mark Lam  &lt;mark.lam@apple.com&gt;
+
+        Added RETURN_IF_EXCEPTION() macro and use it for exception checks.
+        https://bugs.webkit.org/show_bug.cgi?id=162521
+
+        Reviewed by Saam Barati.
+
+        Also, where possible, if the return type is JSValue, changed the returned value
+        (on exception) to the empty JSValue (instead of sometimes jsUndefined, jsNull,
+        or the thrown exception value).
+
+        There are a few places where I had to continue to return the previously returned
+        value (instead of the empty JSValue) in order for tests to pass.  This is needed
+        because there are missing exception checks that will need to be added before I
+        can change those to return the empty JSValue too.  Identifying all the places
+        where those checks need to be added is beyond the scope of this patch.  I will
+        work on adding missing exception checks in a subsequent patch.
+
+        In this patch, there is one missing exception check in replaceUsingRegExpSearch()
+        that was easily identified, and is necessary so that Interpreter::execute()
+        functions can return JSValue.  I've added this missing check.
+
+        This patch has passed the JSC and layout tests.
+
+        * dfg/DFGOperations.cpp:
+        (JSC::DFG::operationPutByValInternal):
+        * inspector/JSInjectedScriptHost.cpp:
+        (Inspector::JSInjectedScriptHost::evaluateWithScopeExtension):
+        (Inspector::JSInjectedScriptHost::getInternalProperties):
+        (Inspector::JSInjectedScriptHost::weakMapEntries):
+        (Inspector::JSInjectedScriptHost::weakSetEntries):
+        (Inspector::JSInjectedScriptHost::iteratorEntries):
+        * inspector/JSJavaScriptCallFrame.cpp:
+        (Inspector::JSJavaScriptCallFrame::evaluateWithScopeExtension):
+        * interpreter/Interpreter.cpp:
+        (JSC::eval):
+        (JSC::sizeOfVarargs):
+        (JSC::Interpreter::execute):
+        (JSC::Interpreter::executeCall):
+        (JSC::Interpreter::executeConstruct):
+        * interpreter/ShadowChicken.cpp:
+        (JSC::ShadowChicken::functionsOnStack):
+        * jit/JITOperations.cpp:
+        (JSC::getByVal):
+        * jsc.cpp:
+        (WTF::ImpureGetter::getOwnPropertySlot):
+        (functionRun):
+        (functionRunString):
+        (functionLoad):
+        (functionLoadString):
+        (functionReadFile):
+        (functionCheckSyntax):
+        (functionSetRandomSeed):
+        (functionLoadModule):
+        (functionCreateBuiltin):
+        (functionCheckModuleSyntax):
+        * llint/LLIntSlowPaths.cpp:
+        (JSC::LLInt::getByVal):
+        (JSC::LLInt::LLINT_SLOW_PATH_DECL):
+        * profiler/ProfilerBytecodeSequence.cpp:
+        (JSC::Profiler::BytecodeSequence::addSequenceProperties):
+        * profiler/ProfilerCompilation.cpp:
+        (JSC::Profiler::Compilation::toJS):
+        * profiler/ProfilerDatabase.cpp:
+        (JSC::Profiler::Database::toJS):
+        * profiler/ProfilerOSRExitSite.cpp:
+        (JSC::Profiler::OSRExitSite::toJS):
+        * profiler/ProfilerOriginStack.cpp:
+        (JSC::Profiler::OriginStack::toJS):
+        * runtime/ArrayPrototype.cpp:
+        (JSC::speciesConstructArray):
+        (JSC::shift):
+        (JSC::unshift):
+        (JSC::arrayProtoFuncToString):
+        (JSC::arrayProtoFuncToLocaleString):
+        (JSC::slowJoin):
+        (JSC::fastJoin):
+        (JSC::arrayProtoFuncJoin):
+        (JSC::arrayProtoFuncPop):
+        (JSC::arrayProtoFuncPush):
+        (JSC::arrayProtoFuncReverse):
+        (JSC::arrayProtoFuncShift):
+        (JSC::arrayProtoFuncSlice):
+        (JSC::arrayProtoFuncSplice):
+        (JSC::arrayProtoFuncUnShift):
+        (JSC::arrayProtoFuncIndexOf):
+        (JSC::arrayProtoFuncLastIndexOf):
+        (JSC::moveElements):
+        (JSC::arrayProtoPrivateFuncConcatMemcpy):
+        * runtime/BooleanConstructor.cpp:
+        (JSC::constructWithBooleanConstructor):
+        * runtime/CommonSlowPaths.h:
+        (JSC::CommonSlowPaths::opIn):
+        * runtime/Completion.cpp:
+        (JSC::loadAndEvaluateModule):
+        (JSC::loadModule):
+        * runtime/ConsoleObject.cpp:
+        (JSC::consoleProtoFuncAssert):
+        (JSC::consoleProtoFuncProfile):
+        (JSC::consoleProtoFuncProfileEnd):
+        (JSC::consoleProtoFuncTakeHeapSnapshot):
+        (JSC::consoleProtoFuncTime):
+        (JSC::consoleProtoFuncTimeEnd):
+        * runtime/DateConstructor.cpp:
+        (JSC::constructDate):
+        (JSC::dateParse):
+        * runtime/DatePrototype.cpp:
+        (JSC::dateProtoFuncToPrimitiveSymbol):
+        (JSC::dateProtoFuncToJSON):
+        * runtime/ErrorConstructor.cpp:
+        (JSC::Interpreter::constructWithErrorConstructor):
+        * runtime/ErrorInstance.cpp:
+        (JSC::ErrorInstance::sanitizedToString):
+        * runtime/ErrorPrototype.cpp:
+        (JSC::errorProtoFuncToString):
+        * runtime/ExceptionScope.h:
+        * runtime/FunctionConstructor.cpp:
+        (JSC::constructFunctionSkippingEvalEnabledCheck):
+        * runtime/GenericArgumentsInlines.h:
+        (JSC::GenericArguments&lt;Type&gt;::copyToArguments):
+        * runtime/GetterSetter.cpp:
+        (JSC::callGetter):
+        * runtime/HashMapImpl.h:
+        (JSC::jsMapHash):
+        (JSC::HashMapImpl::finishCreation):
+        (JSC::HashMapImpl::findBucket):
+        (JSC::HashMapImpl::add):
+        (JSC::HashMapImpl::rehash):
+        * runtime/InspectorInstrumentationObject.cpp:
+        (JSC::inspectorInstrumentationObjectLog):
+        * runtime/InternalFunction.cpp:
+        (JSC::InternalFunction::createSubclassStructure):
+        * runtime/IntlCollator.cpp:
+        (JSC::IntlCollator::initializeCollator):
+        * runtime/IntlCollatorConstructor.cpp:
+        (JSC::constructIntlCollator):
+        (JSC::IntlCollatorConstructorFuncSupportedLocalesOf):
+        * runtime/IntlCollatorPrototype.cpp:
+        (JSC::IntlCollatorFuncCompare):
+        (JSC::IntlCollatorPrototypeGetterCompare):
+        * runtime/IntlDateTimeFormat.cpp:
+        (JSC::toDateTimeOptionsAnyDate):
+        (JSC::IntlDateTimeFormat::initializeDateTimeFormat):
+        * runtime/IntlDateTimeFormatConstructor.cpp:
+        (JSC::constructIntlDateTimeFormat):
+        (JSC::IntlDateTimeFormatConstructorFuncSupportedLocalesOf):
+        * runtime/IntlDateTimeFormatPrototype.cpp:
+        (JSC::IntlDateTimeFormatFuncFormatDateTime):
+        (JSC::IntlDateTimeFormatPrototypeGetterFormat):
+        * runtime/IntlNumberFormat.cpp:
+        (JSC::IntlNumberFormat::initializeNumberFormat):
+        * runtime/IntlNumberFormatConstructor.cpp:
+        (JSC::constructIntlNumberFormat):
+        (JSC::IntlNumberFormatConstructorFuncSupportedLocalesOf):
+        * runtime/IntlNumberFormatPrototype.cpp:
+        (JSC::IntlNumberFormatFuncFormatNumber):
+        (JSC::IntlNumberFormatPrototypeGetterFormat):
+        * runtime/IntlObject.cpp:
+        (JSC::intlBooleanOption):
+        (JSC::intlStringOption):
+        (JSC::intlNumberOption):
+        (JSC::canonicalizeLocaleList):
+        (JSC::supportedLocales):
+        * runtime/IntlObjectInlines.h:
+        (JSC::constructIntlInstanceWithWorkaroundForLegacyIntlConstructor):
+        * runtime/IteratorOperations.cpp:
+        (JSC::iteratorNext):
+        (JSC::iteratorStep):
+        (JSC::iteratorClose):
+        (JSC::iteratorForIterable):
+        * runtime/IteratorOperations.h:
+        (JSC::forEachInIterable):
+        * runtime/JSArray.cpp:
+        (JSC::JSArray::pop):
+        (JSC::JSArray::copyToArguments):
+        * runtime/JSArrayBufferConstructor.cpp:
+        (JSC::constructArrayBuffer):
+        * runtime/JSArrayBufferPrototype.cpp:
+        (JSC::arrayBufferProtoFuncSlice):
+        * runtime/JSArrayInlines.h:
+        (JSC::getLength):
+        (JSC::toLength):
+        * runtime/JSBoundFunction.cpp:
+        (JSC::getBoundFunctionStructure):
+        (JSC::JSBoundFunction::create):
+        * runtime/JSCJSValue.cpp:
+        (JSC::JSValue::putToPrimitive):
+        (JSC::JSValue::toStringSlowCase):
+        * runtime/JSCJSValueInlines.h:
+        (JSC::toPreferredPrimitiveType):
+        (JSC::JSValue::getPropertySlot):
+        (JSC::JSValue::equalSlowCaseInline):
+        * runtime/JSDataViewPrototype.cpp:
+        (JSC::getData):
+        (JSC::setData):
+        * runtime/JSFunction.cpp:
+        (JSC::JSFunction::setFunctionName):
+        * runtime/JSGenericTypedArrayView.h:
+        (JSC::JSGenericTypedArrayView::setIndex):
+        * runtime/JSGenericTypedArrayViewConstructorInlines.h:
+        (JSC::constructGenericTypedArrayViewFromIterator):
+        (JSC::constructGenericTypedArrayViewWithArguments):
+        (JSC::constructGenericTypedArrayView):
+        * runtime/JSGenericTypedArrayViewPrototypeFunctions.h:
+        (JSC::speciesConstruct):
+        (JSC::genericTypedArrayViewProtoFuncSet):
+        (JSC::genericTypedArrayViewProtoFuncCopyWithin):
+        (JSC::genericTypedArrayViewProtoFuncIncludes):
+        (JSC::genericTypedArrayViewProtoFuncIndexOf):
+        (JSC::genericTypedArrayViewProtoFuncJoin):
+        (JSC::genericTypedArrayViewProtoFuncLastIndexOf):
+        (JSC::genericTypedArrayViewProtoFuncSlice):
+        (JSC::genericTypedArrayViewPrivateFuncSubarrayCreate):
+        * runtime/JSGlobalObject.h:
+        (JSC::constructEmptyArray):
+        (JSC::constructArray):
+        (JSC::constructArrayNegativeIndexed):
+        * runtime/JSGlobalObjectFunctions.cpp:
+        (JSC::globalFuncEval):
+        * runtime/JSModuleRecord.cpp:
+        (JSC::JSModuleRecord::instantiateDeclarations):
+        * runtime/JSONObject.cpp:
+        (JSC::Stringifier::stringify):
+        (JSC::Stringifier::toJSON):
+        (JSC::Stringifier::appendStringifiedValue):
+        (JSC::Stringifier::Holder::appendNextProperty):
+        (JSC::Walker::walk):
+        (JSC::JSONProtoFuncParse):
+        * runtime/JSObject.cpp:
+        (JSC::ordinarySetSlow):
+        (JSC::JSObject::setPrototypeWithCycleCheck):
+        (JSC::callToPrimitiveFunction):
+        (JSC::JSObject::defaultHasInstance):
+        (JSC::JSObject::getPropertyNames):
+        (JSC::JSObject::toNumber):
+        (JSC::JSObject::toString):
+        (JSC::JSObject::defineOwnNonIndexProperty):
+        (JSC::JSObject::getGenericPropertyNames):
+        (JSC::JSObject::getMethod):
+        * runtime/JSObjectInlines.h:
+        (JSC::createListFromArrayLike):
+        (JSC::JSObject::getPropertySlot):
+        (JSC::JSObject::getNonIndexPropertySlot):
+        * runtime/JSPromiseConstructor.cpp:
+        (JSC::constructPromise):
+        * runtime/JSPromiseDeferred.cpp:
+        (JSC::JSPromiseDeferred::create):
+        * runtime/JSPropertyNameEnumerator.h:
+        (JSC::propertyNameEnumerator):
+        * runtime/JSPropertyNameIterator.cpp:
+        (JSC::JSPropertyNameIterator::create):
+        * runtime/JSScope.cpp:
+        (JSC::isUnscopable):
+        * runtime/JSString.cpp:
+        (JSC::JSString::equalSlowCase):
+        * runtime/JSStringJoiner.cpp:
+        (JSC::JSStringJoiner::join):
+        * runtime/LiteralParser.cpp:
+        (JSC::LiteralParser&lt;CharType&gt;::parse):
+        * runtime/MapBase.h:
+        (JSC::MapBase::finishCreation):
+        * runtime/MapConstructor.cpp:
+        (JSC::constructMap):
+        * runtime/MathObject.cpp:
+        (JSC::mathProtoFuncClz32):
+        (JSC::mathProtoFuncHypot):
+        (JSC::mathProtoFuncIMul):
+        * runtime/ModuleLoaderPrototype.cpp:
+        (JSC::moduleLoaderPrototypeParseModule):
+        (JSC::moduleLoaderPrototypeRequestedModules):
+        (JSC::moduleLoaderPrototypeModuleDeclarationInstantiation):
+        * runtime/NativeErrorConstructor.cpp:
+        (JSC::Interpreter::constructWithNativeErrorConstructor):
+        * runtime/NumberConstructor.cpp:
+        (JSC::constructWithNumberConstructor):
+        * runtime/ObjectConstructor.cpp:
+        (JSC::constructObject):
+        (JSC::objectConstructorGetPrototypeOf):
+        (JSC::objectConstructorSetPrototypeOf):
+        (JSC::objectConstructorGetOwnPropertyDescriptor):
+        (JSC::objectConstructorGetOwnPropertyDescriptors):
+        (JSC::objectConstructorGetOwnPropertyNames):
+        (JSC::objectConstructorGetOwnPropertySymbols):
+        (JSC::objectConstructorKeys):
+        (JSC::ownEnumerablePropertyKeys):
+        (JSC::toPropertyDescriptor):
+        (JSC::objectConstructorDefineProperty):
+        (JSC::defineProperties):
+        (JSC::objectConstructorSeal):
+        (JSC::objectConstructorFreeze):
+        (JSC::objectConstructorIsSealed):
+        (JSC::objectConstructorIsFrozen):
+        (JSC::objectConstructorIsExtensible):
+        (JSC::ownPropertyKeys):
+        * runtime/ObjectConstructor.h:
+        (JSC::constructObjectFromPropertyDescriptor):
+        * runtime/ObjectPrototype.cpp:
+        (JSC::objectProtoFuncHasOwnProperty):
+        (JSC::objectProtoFuncIsPrototypeOf):
+        (JSC::objectProtoFuncDefineGetter):
+        (JSC::objectProtoFuncDefineSetter):
+        (JSC::objectProtoFuncLookupGetter):
+        (JSC::objectProtoFuncLookupSetter):
+        (JSC::objectProtoFuncPropertyIsEnumerable):
+        (JSC::objectProtoFuncToLocaleString):
+        (JSC::objectProtoFuncToString):
+        * runtime/Operations.cpp:
+        (JSC::jsAddSlowCase):
+        * runtime/PropertyDescriptor.cpp:
+        (JSC::PropertyDescriptor::slowGetterSetter):
+        * runtime/ProxyConstructor.cpp:
+        (JSC::makeRevocableProxy):
+        * runtime/ProxyObject.cpp:
+        (JSC::performProxyGet):
+        (JSC::ProxyObject::performGet):
+        (JSC::ProxyObject::performInternalMethodGetOwnProperty):
+        (JSC::ProxyObject::performHasProperty):
+        (JSC::ProxyObject::performPut):
+        (JSC::ProxyObject::putByIndexCommon):
+        (JSC::performProxyCall):
+        (JSC::performProxyConstruct):
+        (JSC::ProxyObject::performDelete):
+        (JSC::ProxyObject::performPreventExtensions):
+        (JSC::ProxyObject::performIsExtensible):
+        (JSC::ProxyObject::performDefineOwnProperty):
+        (JSC::ProxyObject::performGetOwnPropertyNames):
+        (JSC::ProxyObject::performSetPrototype):
+        (JSC::ProxyObject::performGetPrototype):
+        * runtime/ReflectObject.cpp:
+        (JSC::reflectObjectConstruct):
+        (JSC::reflectObjectDefineProperty):
+        (JSC::reflectObjectGet):
+        (JSC::reflectObjectGetOwnPropertyDescriptor):
+        (JSC::reflectObjectIsExtensible):
+        (JSC::reflectObjectPreventExtensions):
+        (JSC::reflectObjectSet):
+        (JSC::reflectObjectSetPrototypeOf):
+        * runtime/RegExpConstructor.cpp:
+        (JSC::toFlags):
+        (JSC::regExpCreate):
+        (JSC::constructRegExp):
+        * runtime/RegExpConstructor.h:
+        (JSC::isRegExp):
+        * runtime/RegExpObject.cpp:
+        (JSC::collectMatches):
+        (JSC::RegExpObject::matchGlobal):
+        * runtime/RegExpPrototype.cpp:
+        (JSC::regExpProtoFuncCompile):
+        (JSC::flagsString):
+        (JSC::regExpProtoFuncToString):
+        (JSC::regExpProtoGetterFlags):
+        (JSC::regExpProtoFuncSearchFast):
+        (JSC::regExpProtoFuncSplitFast):
+        * runtime/SetConstructor.cpp:
+        (JSC::constructSet):
+        * runtime/StringConstructor.cpp:
+        (JSC::stringFromCodePoint):
+        (JSC::constructWithStringConstructor):
+        * runtime/StringObject.cpp:
+        (JSC::StringObject::defineOwnProperty):
+        * runtime/StringPrototype.cpp:
+        (JSC::replaceUsingRegExpSearch):
+        (JSC::operationStringProtoFuncReplaceRegExpEmptyStr):
+        (JSC::replaceUsingStringSearch):
+        (JSC::replace):
+        (JSC::stringProtoFuncReplaceUsingRegExp):
+        (JSC::stringProtoFuncReplaceUsingStringSearch):
+        (JSC::stringProtoFuncCodePointAt):
+        (JSC::stringProtoFuncSlice):
+        (JSC::stringProtoFuncSplitFast):
+        (JSC::stringProtoFuncSubstr):
+        (JSC::stringProtoFuncSubstring):
+        (JSC::stringProtoFuncLocaleCompare):
+        (JSC::toLocaleCase):
+        (JSC::stringProtoFuncBig):
+        (JSC::stringProtoFuncSmall):
+        (JSC::stringProtoFuncBlink):
+        (JSC::stringProtoFuncBold):
+        (JSC::stringProtoFuncFixed):
+        (JSC::stringProtoFuncItalics):
+        (JSC::stringProtoFuncStrike):
+        (JSC::stringProtoFuncSub):
+        (JSC::stringProtoFuncSup):
+        (JSC::stringProtoFuncFontcolor):
+        (JSC::stringProtoFuncFontsize):
+        (JSC::stringProtoFuncAnchor):
+        (JSC::stringProtoFuncLink):
+        (JSC::trimString):
+        (JSC::stringProtoFuncStartsWith):
+        (JSC::stringProtoFuncEndsWith):
+        (JSC::stringIncludesImpl):
+        (JSC::stringProtoFuncIncludes):
+        (JSC::builtinStringIncludesInternal):
+        (JSC::stringProtoFuncNormalize):
+        * runtime/SymbolConstructor.cpp:
+        (JSC::symbolConstructorFor):
+        * runtime/TemplateRegistry.cpp:
+        (JSC::TemplateRegistry::getTemplateObject):
+        * runtime/WeakMapConstructor.cpp:
+        (JSC::constructWeakMap):
+        * runtime/WeakSetConstructor.cpp:
+        (JSC::constructWeakSet):
+        * tools/JSDollarVMPrototype.cpp:
+        (JSC::functionPrint):
+
</ins><span class="cx"> 2016-09-26  Don Olmstead  &lt;don.olmstead@am.sony.com&gt;
</span><span class="cx"> 
</span><span class="cx">         [JSC] Allow fixedExecutableMemoryPoolSize to be set during build
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoredfgDFGOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/dfg/DFGOperations.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -123,8 +123,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Don't put to an object if toString throws an exception.
</span><span class="cx">     auto propertyName = property.toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     PutPropertySlot slot(baseValue, strict);
</span><span class="cx">     if (direct) {
</span><span class="lines">@@ -192,8 +191,7 @@
</span><span class="cx">         return constructEmptyObject(exec, jsCast&lt;JSFunction*&gt;(constructor)-&gt;rareData(exec, inlineCapacity)-&gt;objectAllocationProfile()-&gt;structure());
</span><span class="cx"> 
</span><span class="cx">     JSValue proto = constructor-&gt;get(exec, exec-&gt;propertyNames().prototype);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (proto.isObject())
</span><span class="cx">         return constructEmptyObject(exec, asObject(proto));
</span><span class="cx">     return constructEmptyObject(exec);
</span><span class="lines">@@ -222,8 +220,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     int32_t a = op1.toInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     int32_t b = op2.toInt32(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(a &amp; b));
</span><span class="cx"> }
</span><span class="lines">@@ -238,8 +235,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     int32_t a = op1.toInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     int32_t b = op2.toInt32(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(a | b));
</span><span class="cx"> }
</span><span class="lines">@@ -254,8 +250,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     int32_t a = op1.toInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     int32_t b = op2.toInt32(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(a ^ b));
</span><span class="cx"> }
</span><span class="lines">@@ -270,8 +265,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     int32_t a = op1.toInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     uint32_t b = op2.toUInt32(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(a &lt;&lt; (b &amp; 0x1f)));
</span><span class="cx"> }
</span><span class="lines">@@ -286,8 +280,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     int32_t a = op1.toInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     uint32_t b = op2.toUInt32(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(a &gt;&gt; (b &amp; 0x1f)));
</span><span class="cx"> }
</span><span class="lines">@@ -302,8 +295,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     uint32_t a = op1.toUInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     uint32_t b = op2.toUInt32(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(static_cast&lt;int32_t&gt;(a &gt;&gt; (b &amp; 0x1f))));
</span><span class="cx"> }
</span><span class="lines">@@ -334,8 +326,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     double b = op2.toNumber(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(a / b));
</span><span class="cx"> }
</span><span class="lines">@@ -348,8 +339,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue op1 = JSValue::decode(encodedOp1);
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return PNaN;
</del><ins>+    RETURN_IF_EXCEPTION(scope, PNaN);
</ins><span class="cx">     return fabs(a);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -361,8 +351,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue op1 = JSValue::decode(encodedOp1);
</span><span class="cx">     uint32_t value = op1.toUInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx">     return clz32(value);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -374,8 +363,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue op1 = JSValue::decode(encodedOp1);
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return cos(a);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -387,8 +375,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue op1 = JSValue::decode(encodedOp1);
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return PNaN;
</del><ins>+    RETURN_IF_EXCEPTION(scope, PNaN);
</ins><span class="cx">     return static_cast&lt;float&gt;(a);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -400,8 +387,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue op1 = JSValue::decode(encodedOp1);
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return PNaN;
</del><ins>+    RETURN_IF_EXCEPTION(scope, PNaN);
</ins><span class="cx">     return log(a);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -413,8 +399,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue op1 = JSValue::decode(encodedOp1);
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return PNaN;
</del><ins>+    RETURN_IF_EXCEPTION(scope, PNaN);
</ins><span class="cx">     return sin(a);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -426,8 +411,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue op1 = JSValue::decode(encodedOp1);
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return PNaN;
</del><ins>+    RETURN_IF_EXCEPTION(scope, PNaN);
</ins><span class="cx">     return sqrt(a);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -439,8 +423,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue op1 = JSValue::decode(encodedOp1);
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return tan(a);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -452,8 +435,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue argument = JSValue::decode(encodedArgument);
</span><span class="cx">     double valueOfArgument = argument.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsNumber(jsRound(valueOfArgument)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -465,8 +447,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue argument = JSValue::decode(encodedArgument);
</span><span class="cx">     double valueOfArgument = argument.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsNumber(floor(valueOfArgument)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -478,8 +459,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue argument = JSValue::decode(encodedArgument);
</span><span class="cx">     double valueOfArgument = argument.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsNumber(ceil(valueOfArgument)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -491,8 +471,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue argument = JSValue::decode(encodedArgument);
</span><span class="cx">     double truncatedValueOfArgument = argument.toIntegerPreserveNaN(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsNumber(truncatedValueOfArgument));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -544,11 +523,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     baseValue.requireObjectCoercible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     auto propertyName = property.toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(baseValue.get(exec, propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -578,8 +555,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     auto propertyName = property.toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(JSValue(base).get(exec, propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -973,12 +949,10 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     baseValue.requireObjectCoercible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto property = subscript.toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(baseValue.get(exec, property, slot));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1005,8 +979,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     Identifier property = JSValue::decode(encodedSubscript).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     putWithThis&lt;true&gt;(exec, encodedBase, encodedThis, encodedValue, property);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1017,8 +990,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     Identifier property = JSValue::decode(encodedSubscript).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     putWithThis&lt;false&gt;(exec, encodedBase, encodedThis, encodedValue, property);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1663,13 +1635,11 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue key = JSValue::decode(encodedKey);
</span><span class="cx">     Identifier propertyName = key.toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     PropertySlot slot(thisObject, PropertySlot::InternalMethodType::GetOwnProperty);
</span><span class="cx">     bool result = thisObject-&gt;hasOwnProperty(exec, propertyName.impl(), slot);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     HasOwnPropertyCache* hasOwnPropertyCache = vm.hasOwnPropertyCache();
</span><span class="cx">     ASSERT(hasOwnPropertyCache);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSInjectedScriptHostcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/inspector/JSInjectedScriptHost.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -103,8 +103,7 @@
</span><span class="cx">         return throwTypeError(exec, scope, ASCIILiteral(&quot;InjectedScriptHost.evaluateWithScopeExtension first argument must be a string.&quot;));
</span><span class="cx"> 
</span><span class="cx">     String program = scriptValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     NakedPtr&lt;Exception&gt; exception;
</span><span class="cx">     JSObject* scopeExtension = exec-&gt;argument(1).getObject();
</span><span class="lines">@@ -265,8 +264,7 @@
</span><span class="cx">     if (JSPromise* promise = jsDynamicCast&lt;JSPromise*&gt;(value)) {
</span><span class="cx">         unsigned index = 0;
</span><span class="cx">         JSArray* array = constructEmptyArray(exec, nullptr);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         switch (promise-&gt;status(exec-&gt;vm())) {
</span><span class="cx">         case JSPromise::Status::Pending:
</span><span class="cx">             array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, ASCIILiteral(&quot;status&quot;), jsNontrivialString(exec, ASCIILiteral(&quot;pending&quot;))));
</span><span class="lines">@@ -287,8 +285,7 @@
</span><span class="cx">     if (JSBoundFunction* boundFunction = jsDynamicCast&lt;JSBoundFunction*&gt;(value)) {
</span><span class="cx">         unsigned index = 0;
</span><span class="cx">         JSArray* array = constructEmptyArray(exec, nullptr);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;targetFunction&quot;, boundFunction-&gt;targetFunction()));
</span><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;boundThis&quot;, boundFunction-&gt;boundThis()));
</span><span class="cx">         if (boundFunction-&gt;boundArgs())
</span><span class="lines">@@ -299,8 +296,7 @@
</span><span class="cx">     if (ProxyObject* proxy = jsDynamicCast&lt;ProxyObject*&gt;(value)) {
</span><span class="cx">         unsigned index = 0;
</span><span class="cx">         JSArray* array = constructEmptyArray(exec, nullptr, 2);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, ASCIILiteral(&quot;target&quot;), proxy-&gt;target()));
</span><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, ASCIILiteral(&quot;handler&quot;), proxy-&gt;handler()));
</span><span class="cx">         return array;
</span><span class="lines">@@ -313,8 +309,7 @@
</span><span class="cx"> 
</span><span class="cx">             unsigned index = 0;
</span><span class="cx">             JSArray* array = constructEmptyArray(exec, nullptr, 2);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return jsUndefined();
</del><ins>+            RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">             array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;array&quot;, iteratedValue));
</span><span class="cx">             array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;kind&quot;, kind));
</span><span class="cx">             return array;
</span><span class="lines">@@ -336,8 +331,7 @@
</span><span class="cx">         }
</span><span class="cx">         unsigned index = 0;
</span><span class="cx">         JSArray* array = constructEmptyArray(exec, nullptr, 2);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;map&quot;, mapIterator-&gt;iteratedValue()));
</span><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;kind&quot;, jsNontrivialString(exec, kind)));
</span><span class="cx">         return array;
</span><span class="lines">@@ -358,8 +352,7 @@
</span><span class="cx">         }
</span><span class="cx">         unsigned index = 0;
</span><span class="cx">         JSArray* array = constructEmptyArray(exec, nullptr, 2);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;set&quot;, setIterator-&gt;iteratedValue()));
</span><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;kind&quot;, jsNontrivialString(exec, kind)));
</span><span class="cx">         return array;
</span><span class="lines">@@ -368,8 +361,7 @@
</span><span class="cx">     if (JSStringIterator* stringIterator = jsDynamicCast&lt;JSStringIterator*&gt;(value)) {
</span><span class="cx">         unsigned index = 0;
</span><span class="cx">         JSArray* array = constructEmptyArray(exec, nullptr, 1);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;string&quot;, stringIterator-&gt;iteratedValue(exec)));
</span><span class="cx">         return array;
</span><span class="cx">     }
</span><span class="lines">@@ -377,8 +369,7 @@
</span><span class="cx">     if (JSPropertyNameIterator* propertyNameIterator = jsDynamicCast&lt;JSPropertyNameIterator*&gt;(value)) {
</span><span class="cx">         unsigned index = 0;
</span><span class="cx">         JSArray* array = constructEmptyArray(exec, nullptr, 1);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         array-&gt;putDirectIndex(exec, index++, constructInternalProperty(exec, &quot;object&quot;, propertyNameIterator-&gt;iteratedValue()));
</span><span class="cx">         return array;
</span><span class="cx">     }
</span><span class="lines">@@ -420,8 +411,7 @@
</span><span class="cx">         numberToFetch = static_cast&lt;unsigned&gt;(fetchDouble);
</span><span class="cx"> 
</span><span class="cx">     JSArray* array = constructEmptyArray(exec, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (auto it = weakMap-&gt;weakMapData()-&gt;begin(); it != weakMap-&gt;weakMapData()-&gt;end(); ++it) {
</span><span class="cx">         JSObject* entry = constructEmptyObject(exec);
</span><span class="cx">         entry-&gt;putDirect(exec-&gt;vm(), Identifier::fromString(exec, &quot;key&quot;), it-&gt;key);
</span><span class="lines">@@ -468,8 +458,7 @@
</span><span class="cx">         numberToFetch = static_cast&lt;unsigned&gt;(fetchDouble);
</span><span class="cx"> 
</span><span class="cx">     JSArray* array = constructEmptyArray(exec, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (auto it = weakSet-&gt;weakMapData()-&gt;begin(); it != weakSet-&gt;weakMapData()-&gt;end(); ++it) {
</span><span class="cx">         JSObject* entry = constructEmptyObject(exec);
</span><span class="cx">         entry-&gt;putDirect(exec-&gt;vm(), Identifier::fromString(exec, &quot;value&quot;), it-&gt;key);
</span><span class="lines">@@ -509,8 +498,7 @@
</span><span class="cx">         iterator = stringIterator-&gt;clone(exec);
</span><span class="cx">     else if (JSPropertyNameIterator* propertyNameIterator = jsDynamicCast&lt;JSPropertyNameIterator*&gt;(value)) {
</span><span class="cx">         iterator = propertyNameIterator-&gt;clone(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     } else {
</span><span class="cx">         if (JSObject* iteratorObject = jsDynamicCast&lt;JSObject*&gt;(value)) {
</span><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="lines">@@ -529,8 +517,7 @@
</span><span class="cx">         numberToFetch = static_cast&lt;unsigned&gt;(fetchDouble);
</span><span class="cx"> 
</span><span class="cx">     JSArray* array = constructEmptyArray(exec, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; numberToFetch; ++i) {
</span><span class="cx">         JSValue next = iteratorStep(exec, iterator);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinspectorJSJavaScriptCallFramecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/inspector/JSJavaScriptCallFrame.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -83,8 +83,7 @@
</span><span class="cx">         return throwTypeError(exec, scope, ASCIILiteral(&quot;JSJavaScriptCallFrame.evaluateWithScopeExtension first argument must be a string.&quot;));
</span><span class="cx"> 
</span><span class="cx">     String script = scriptValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     NakedPtr&lt;Exception&gt; exception;
</span><span class="cx">     JSObject* scopeExtension = exec-&gt;argument(1).getObject();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterInterpretercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/interpreter/Interpreter.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -103,8 +103,7 @@
</span><span class="cx">         return jsUndefined();
</span><span class="cx">     }
</span><span class="cx">     String programSource = asString(program)-&gt;value(callFrame);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     
</span><span class="cx">     CallFrame* callerFrame = callFrame-&gt;callerFrame();
</span><span class="cx">     CodeBlock* callerCodeBlock = callerFrame-&gt;codeBlock();
</span><span class="lines">@@ -186,8 +185,7 @@
</span><span class="cx">     default:
</span><span class="cx">         RELEASE_ASSERT(arguments.isObject());
</span><span class="cx">         length = getLength(callFrame, jsCast&lt;JSObject*&gt;(cell));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return 0;
</del><ins>+        RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -804,8 +802,7 @@
</span><span class="cx">                     if (i == 0) {
</span><span class="cx">                         PropertySlot slot(globalObject, PropertySlot::InternalMethodType::Get);
</span><span class="cx">                         if (!globalObject-&gt;getPropertySlot(callFrame, JSONPPath[i].m_pathEntryName, slot)) {
</span><del>-                            if (throwScope.exception())
-                                return jsUndefined();
</del><ins>+                            RETURN_IF_EXCEPTION(throwScope, JSValue());
</ins><span class="cx">                             if (entry)
</span><span class="cx">                                 return throwException(callFrame, throwScope, createUndefinedVariableError(callFrame, JSONPPath[i].m_pathEntryName));
</span><span class="cx">                             goto failedJSONP;
</span><span class="lines">@@ -813,14 +810,12 @@
</span><span class="cx">                         baseObject = slot.getValue(callFrame, JSONPPath[i].m_pathEntryName);
</span><span class="cx">                     } else
</span><span class="cx">                         baseObject = baseObject.get(callFrame, JSONPPath[i].m_pathEntryName);
</span><del>-                    if (throwScope.exception())
-                        return jsUndefined();
</del><ins>+                    RETURN_IF_EXCEPTION(throwScope, JSValue());
</ins><span class="cx">                     continue;
</span><span class="cx">                 }
</span><span class="cx">                 case JSONPPathEntryTypeLookup: {
</span><span class="cx">                     baseObject = baseObject.get(callFrame, static_cast&lt;unsigned&gt;(JSONPPath[i].m_pathIndex));
</span><del>-                    if (throwScope.exception())
-                        return jsUndefined();
</del><ins>+                    RETURN_IF_EXCEPTION(throwScope, JSValue());
</ins><span class="cx">                     continue;
</span><span class="cx">                 }
</span><span class="cx">                 default:
</span><span class="lines">@@ -832,8 +827,7 @@
</span><span class="cx">             switch (JSONPPath.last().m_type) {
</span><span class="cx">             case JSONPPathEntryTypeCall: {
</span><span class="cx">                 JSValue function = baseObject.get(callFrame, JSONPPath.last().m_pathEntryName);
</span><del>-                if (throwScope.exception())
-                    return jsUndefined();
</del><ins>+                RETURN_IF_EXCEPTION(throwScope, JSValue());
</ins><span class="cx">                 CallData callData;
</span><span class="cx">                 CallType callType = getCallData(function, callData);
</span><span class="cx">                 if (callType == CallType::None)
</span><span class="lines">@@ -842,20 +836,17 @@
</span><span class="cx">                 jsonArg.append(JSONPValue);
</span><span class="cx">                 JSValue thisValue = JSONPPath.size() == 1 ? jsUndefined(): baseObject;
</span><span class="cx">                 JSONPValue = JSC::call(callFrame, function, callType, callData, thisValue, jsonArg);
</span><del>-                if (throwScope.exception())
-                    return jsUndefined();
</del><ins>+                RETURN_IF_EXCEPTION(throwScope, JSValue());
</ins><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">             case JSONPPathEntryTypeDot: {
</span><span class="cx">                 baseObject.put(callFrame, JSONPPath.last().m_pathEntryName, JSONPValue, slot);
</span><del>-                if (throwScope.exception())
-                    return jsUndefined();
</del><ins>+                RETURN_IF_EXCEPTION(throwScope, JSValue());
</ins><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">             case JSONPPathEntryTypeLookup: {
</span><span class="cx">                 baseObject.putByIndex(callFrame, JSONPPath.last().m_pathIndex, JSONPValue, slot.isStrictMode());
</span><del>-                if (throwScope.exception())
-                    return jsUndefined();
</del><ins>+                RETURN_IF_EXCEPTION(throwScope, JSValue());
</ins><span class="cx">                 break;
</span><span class="cx">             }
</span><span class="cx">             default:
</span><span class="lines">@@ -958,8 +949,7 @@
</span><span class="cx">             throwScope.release();
</span><span class="cx">         } else {
</span><span class="cx">             result = JSValue::decode(vmEntryToNative(reinterpret_cast&lt;void*&gt;(callData.native.function), &amp;vm, &amp;protoCallFrame));
</span><del>-            if (throwScope.exception())
-                result = jsNull();
</del><ins>+            RETURN_IF_EXCEPTION(throwScope, JSValue());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1027,8 +1017,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(throwScope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(throwScope, 0);
</ins><span class="cx">     ASSERT(result.isObject());
</span><span class="cx">     return checkedReturn(asObject(result));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreinterpreterShadowChickencpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/interpreter/ShadowChicken.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/interpreter/ShadowChicken.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/interpreter/ShadowChicken.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -438,8 +438,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSArray* result = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     iterate(
</span><span class="cx">         vm, exec,
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejitJITOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jit/JITOperations.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/jit/JITOperations.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -276,8 +276,7 @@
</span><span class="cx">     LOG_IC((ICEvent::OperationInOptimize, base-&gt;classInfo(), ident));
</span><span class="cx">     PropertySlot slot(base, PropertySlot::InternalMethodType::HasProperty);
</span><span class="cx">     bool result = asObject(base)-&gt;getPropertySlot(exec, ident, slot);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     
</span><span class="cx">     RELEASE_ASSERT(accessType == stubInfo-&gt;accessType);
</span><span class="cx">     
</span><span class="lines">@@ -512,8 +511,7 @@
</span><span class="cx"> 
</span><span class="cx">     auto property = subscript.toPropertyKey(callFrame);
</span><span class="cx">     // Don't put to an object if toString threw an exception.
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     if (byValInfo-&gt;stubInfo &amp;&amp; (!isStringOrSymbol(subscript) || byValInfo-&gt;cachedId != property))
</span><span class="cx">         byValInfo-&gt;tookSlowPath = true;
</span><span class="lines">@@ -557,8 +555,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Don't put to an object if toString threw an exception.
</span><span class="cx">     auto property = subscript.toPropertyKey(callFrame);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     if (Optional&lt;uint32_t&gt; index = parseIndex(property)) {
</span><span class="cx">         byValInfo-&gt;tookSlowPath = true;
</span><span class="lines">@@ -787,8 +784,7 @@
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx"> 
</span><span class="cx">     JSValue result = eval(execCallee);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return EncodedJSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -1461,8 +1457,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     auto propertyKey = subscript.toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     if (accessorType == AccessorType::Getter)
</span><span class="cx">         base-&gt;putGetter(exec, propertyKey, accessor, attribute);
</span><span class="lines">@@ -1651,11 +1646,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     baseValue.requireObjectCoercible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     auto property = subscript.toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(exec-&gt;bytecodeOffset());
</span><span class="cx">     if (byValInfo-&gt;stubInfo &amp;&amp; (!isStringOrSymbol(subscript) || byValInfo-&gt;cachedId != property))
</span><span class="lines">@@ -1863,11 +1856,9 @@
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><span class="cx">         baseValue.requireObjectCoercible(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         auto property = subscript.toPropertyKey(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         result = baseValue.get(exec, property);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1915,11 +1906,9 @@
</span><span class="cx">     if (key.getUInt32(index))
</span><span class="cx">         couldDelete = baseObj-&gt;methodTable(vm)-&gt;deletePropertyByIndex(baseObj, exec, index);
</span><span class="cx">     else {
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         Identifier property = key.toPropertyKey(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         couldDelete = baseObj-&gt;methodTable(vm)-&gt;deleteProperty(baseObj, exec, property);
</span><span class="cx">     }
</span><span class="cx">     if (!couldDelete &amp;&amp; exec-&gt;codeBlock()-&gt;isStrictMode())
</span><span class="lines">@@ -2123,8 +2112,7 @@
</span><span class="cx">     PutPropertySlot slot(scope, codeBlock-&gt;isStrictMode(), PutPropertySlot::UnknownContext, isInitialization(getPutInfo.initializationMode()));
</span><span class="cx">     scope-&gt;methodTable()-&gt;put(scope, exec, ident, value, slot);
</span><span class="cx">     
</span><del>-    if (UNLIKELY(throwScope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(throwScope, void());
</ins><span class="cx"> 
</span><span class="cx">     CommonSlowPaths::tryCachePutToScopeGlobal(exec, codeBlock, pc, scope, getPutInfo, slot, ident);
</span><span class="cx"> }
</span><span class="lines">@@ -2377,8 +2365,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     double b = op2.toNumber(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(a * b));
</span><span class="cx"> }
</span><span class="lines">@@ -2393,11 +2380,9 @@
</span><span class="cx">         arithProfile-&gt;observeLHSAndRHS(op1, op2);
</span><span class="cx"> 
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     double b = op2.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     
</span><span class="cx">     JSValue result = jsNumber(a * b);
</span><span class="cx">     arithProfile-&gt;observeResult(result);
</span><span class="lines">@@ -2560,8 +2545,7 @@
</span><span class="cx">     JSValue op2 = JSValue::decode(encodedOp2);
</span><span class="cx"> 
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     double b = op2.toNumber(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(a - b));
</span><span class="cx"> }
</span><span class="lines">@@ -2576,11 +2560,9 @@
</span><span class="cx">         arithProfile-&gt;observeLHSAndRHS(op1, op2);
</span><span class="cx"> 
</span><span class="cx">     double a = op1.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     double b = op2.toNumber(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     
</span><span class="cx">     JSValue result = jsNumber(a - b);
</span><span class="cx">     arithProfile-&gt;observeResult(result);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorejsccpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/jsc.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/jsc.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/jsc.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -311,8 +311,7 @@
</span><span class="cx">         if (thisObject-&gt;m_delegate) {
</span><span class="cx">             if (thisObject-&gt;m_delegate-&gt;getPropertySlot(exec, name, slot))
</span><span class="cx">                 return true;
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         return Base::getOwnPropertySlot(object, exec, name, slot);
</span><span class="lines">@@ -1460,8 +1459,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String fileName = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     Vector&lt;char&gt; script;
</span><span class="cx">     if (!fetchScriptFromLocalFileSystem(fileName, script))
</span><span class="cx">         return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral(&quot;Could not open file.&quot;))));
</span><span class="lines">@@ -1494,8 +1492,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String source = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     GlobalObject* globalObject = GlobalObject::create(vm, GlobalObject::createStructure(vm, jsNull()), Vector&lt;String&gt;());
</span><span class="cx"> 
</span><span class="lines">@@ -1522,8 +1519,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String fileName = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     Vector&lt;char&gt; script;
</span><span class="cx">     if (!fetchScriptFromLocalFileSystem(fileName, script))
</span><span class="cx">         return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral(&quot;Could not open file.&quot;))));
</span><span class="lines">@@ -1543,8 +1539,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String sourceCode = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
</span><span class="cx"> 
</span><span class="cx">     NakedPtr&lt;Exception&gt; evaluationException;
</span><span class="lines">@@ -1560,14 +1555,12 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String fileName = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     bool isBinary = false;
</span><span class="cx">     if (exec-&gt;argumentCount() &gt; 1) {
</span><span class="cx">         String type = exec-&gt;argument(1).toWTFString(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return EncodedJSValue();
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (type != &quot;binary&quot;)
</span><span class="cx">             return throwVMError(exec, scope, &quot;Expected 'binary' as second argument.&quot;);
</span><span class="cx">         isBinary = true;
</span><span class="lines">@@ -1583,8 +1576,7 @@
</span><span class="cx">     Structure* structure = exec-&gt;lexicalGlobalObject()-&gt;typedArrayStructure(TypeUint8);
</span><span class="cx">     auto length = content.size();
</span><span class="cx">     JSObject* result = createUint8TypedArray(exec, structure, ArrayBuffer::createFromBytes(content.releaseBuffer().leakPtr(), length, [] (void* p) { fastFree(p); }), 0, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return EncodedJSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="lines">@@ -1595,8 +1587,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String fileName = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     Vector&lt;char&gt; script;
</span><span class="cx">     if (!fetchScriptFromLocalFileSystem(fileName, script))
</span><span class="cx">         return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral(&quot;Could not open file.&quot;))));
</span><span class="lines">@@ -1659,8 +1650,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     unsigned seed = exec-&gt;argument(0).toUInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     exec-&gt;lexicalGlobalObject()-&gt;weakRandom().setSeed(seed);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span><span class="lines">@@ -1931,15 +1921,13 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String fileName = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     Vector&lt;char&gt; script;
</span><span class="cx">     if (!fetchScriptFromLocalFileSystem(fileName, script))
</span><span class="cx">         return JSValue::encode(throwException(exec, scope, createError(exec, ASCIILiteral(&quot;Could not open file.&quot;))));
</span><span class="cx"> 
</span><span class="cx">     JSInternalPromise* promise = loadAndEvaluateModule(exec, fileName);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue error;
</span><span class="cx">     JSFunction* errorHandler = JSNativeStdFunction::create(vm, exec-&gt;lexicalGlobalObject(), 1, String(), [&amp;](ExecState* exec) {
</span><span class="lines">@@ -1963,8 +1951,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx"> 
</span><span class="cx">     String functionText = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     const SourceCode&amp; source = makeSource(functionText);
</span><span class="cx">     JSFunction* func = JSFunction::createBuiltinFunction(vm, createBuiltinExecutable(vm, source, Identifier::fromString(&amp;vm, &quot;foo&quot;), ConstructorKind::None, ConstructAbility::CannotConstruct)-&gt;link(vm, source), exec-&gt;lexicalGlobalObject());
</span><span class="lines">@@ -1984,8 +1971,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String source = exec-&gt;argument(0).toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     StopWatch stopWatch;
</span><span class="cx">     stopWatch.start();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCorellintLLIntSlowPathscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -811,11 +811,9 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     baseValue.requireObjectCoercible(exec);
</span><del>-    if (scope.exception())
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     auto property = subscript.toPropertyKey(exec);
</span><del>-    if (scope.exception())
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     return baseValue.get(exec, property);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -883,7 +881,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Don't put to an object if toString threw an exception.
</span><span class="cx">     auto property = subscript.toPropertyKey(exec);
</span><del>-    if (throwScope.exception())
</del><ins>+    if (UNLIKELY(throwScope.exception()))
</ins><span class="cx">         LLINT_END();
</span><span class="cx"> 
</span><span class="cx">     if (Optional&lt;uint32_t&gt; index = parseIndex(property))
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilerBytecodeSequencecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/profiler/ProfilerBytecodeSequence.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2012, 2013, 2014 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2012-2014, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -81,15 +81,13 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSArray* header = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_header.size(); ++i)
</span><span class="cx">         header-&gt;putDirectIndex(exec, i, jsString(exec, String::fromUTF8(m_header[i])));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().header, header);
</span><span class="cx">     
</span><span class="cx">     JSArray* sequence = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_sequence.size(); ++i)
</span><span class="cx">         sequence-&gt;putDirectIndex(exec, i, m_sequence[i].toJS(exec));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().bytecode, sequence);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilerCompilationcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfilerCompilation.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfilerCompilation.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/profiler/ProfilerCompilation.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -117,28 +117,24 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* result = constructEmptyObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().bytecodesID, jsNumber(m_bytecodes-&gt;id()));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().compilationKind, jsString(exec, String::fromUTF8(toCString(m_kind))));
</span><span class="cx">     
</span><span class="cx">     JSArray* profiledBytecodes = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_profiledBytecodes.size(); ++i)
</span><span class="cx">         profiledBytecodes-&gt;putDirectIndex(exec, i, m_profiledBytecodes[i].toJS(exec));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().profiledBytecodes, profiledBytecodes);
</span><span class="cx">     
</span><span class="cx">     JSArray* descriptions = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_descriptions.size(); ++i)
</span><span class="cx">         descriptions-&gt;putDirectIndex(exec, i, m_descriptions[i].toJS(exec));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().descriptions, descriptions);
</span><span class="cx">     
</span><span class="cx">     JSArray* counters = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (auto it = m_counters.begin(), end = m_counters.end(); it != end; ++it) {
</span><span class="cx">         JSObject* counterEntry = constructEmptyObject(exec);
</span><span class="cx">         counterEntry-&gt;putDirect(vm, exec-&gt;propertyNames().origin, it-&gt;key.toJS(exec));
</span><span class="lines">@@ -148,15 +144,13 @@
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().counters, counters);
</span><span class="cx">     
</span><span class="cx">     JSArray* exitSites = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_osrExitSites.size(); ++i)
</span><span class="cx">         exitSites-&gt;putDirectIndex(exec, i, m_osrExitSites[i].toJS(exec));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().osrExitSites, exitSites);
</span><span class="cx">     
</span><span class="cx">     JSArray* exits = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_osrExits.size(); ++i)
</span><span class="cx">         exits-&gt;putDirectIndex(exec, i, m_osrExits[i].toJS(exec));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().osrExits, exits);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilerDatabasecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/profiler/ProfilerDatabase.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -104,22 +104,19 @@
</span><span class="cx">     JSObject* result = constructEmptyObject(exec);
</span><span class="cx">     
</span><span class="cx">     JSArray* bytecodes = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_bytecodes.size(); ++i)
</span><span class="cx">         bytecodes-&gt;putDirectIndex(exec, i, m_bytecodes[i].toJS(exec));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().bytecodes, bytecodes);
</span><span class="cx">     
</span><span class="cx">     JSArray* compilations = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_compilations.size(); ++i)
</span><span class="cx">         compilations-&gt;putDirectIndex(exec, i, m_compilations[i]-&gt;toJS(exec));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().compilations, compilations);
</span><span class="cx">     
</span><span class="cx">     JSArray* events = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_events.size(); ++i)
</span><span class="cx">         events-&gt;putDirectIndex(exec, i, m_events[i].toJS(exec));
</span><span class="cx">     result-&gt;putDirect(vm, exec-&gt;propertyNames().events, events);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilerOSRExitSitecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfilerOSRExitSite.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfilerOSRExitSite.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/profiler/ProfilerOSRExitSite.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2012 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2012, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -39,8 +39,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSArray* result = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; m_codeAddresses.size(); ++i)
</span><span class="cx">         result-&gt;putDirectIndex(exec, i, jsString(exec, toString(RawPointer(m_codeAddresses[i]))));
</span><span class="cx">     return result;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreprofilerProfilerOriginStackcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/profiler/ProfilerOriginStack.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/profiler/ProfilerOriginStack.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/profiler/ProfilerOriginStack.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2012 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2012, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -103,8 +103,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSArray* result = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     
</span><span class="cx">     for (unsigned i = 0; i &lt; m_stack.size(); ++i)
</span><span class="cx">         result-&gt;putDirectIndex(exec, i, m_stack[i].toJS(exec));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeArrayPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ArrayPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -199,6 +199,10 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><ins>+    auto exceptionResult = [] () {
+        return std::make_pair(SpeciesConstructResult::Exception, nullptr);
+    };
+
</ins><span class="cx">     // ECMA 9.4.2.3: https://tc39.github.io/ecma262/#sec-arrayspeciescreate
</span><span class="cx">     JSValue constructor = jsUndefined();
</span><span class="cx">     if (LIKELY(isArray(exec, thisObject))) {
</span><span class="lines">@@ -208,8 +212,7 @@
</span><span class="cx">             return std::make_pair(SpeciesConstructResult::FastPath, nullptr);
</span><span class="cx"> 
</span><span class="cx">         constructor = thisObject-&gt;get(exec, exec-&gt;propertyNames().constructor);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return std::make_pair(SpeciesConstructResult::Exception, nullptr);
</del><ins>+        RETURN_IF_EXCEPTION(scope, exceptionResult());
</ins><span class="cx">         if (constructor.isConstructor()) {
</span><span class="cx">             JSObject* constructorObject = jsCast&lt;JSObject*&gt;(constructor);
</span><span class="cx">             if (exec-&gt;lexicalGlobalObject() != constructorObject-&gt;globalObject())
</span><span class="lines">@@ -217,13 +220,12 @@
</span><span class="cx">         }
</span><span class="cx">         if (constructor.isObject()) {
</span><span class="cx">             constructor = constructor.get(exec, exec-&gt;propertyNames().speciesSymbol);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return std::make_pair(SpeciesConstructResult::Exception, nullptr);
</del><ins>+            RETURN_IF_EXCEPTION(scope, exceptionResult());
</ins><span class="cx">             if (constructor.isNull())
</span><span class="cx">                 return std::make_pair(SpeciesConstructResult::FastPath, nullptr);;
</span><span class="cx">         }
</span><del>-    } else if (UNLIKELY(scope.exception()))
-        return std::make_pair(SpeciesConstructResult::Exception, nullptr);
</del><ins>+    } else
+        RETURN_IF_EXCEPTION(scope, exceptionResult());
</ins><span class="cx"> 
</span><span class="cx">     if (constructor.isUndefined())
</span><span class="cx">         return std::make_pair(SpeciesConstructResult::FastPath, nullptr);
</span><span class="lines">@@ -231,8 +233,7 @@
</span><span class="cx">     MarkedArgumentBuffer args;
</span><span class="cx">     args.append(jsNumber(length));
</span><span class="cx">     JSObject* newObject = construct(exec, constructor, args, &quot;Species construction did not get a valid constructor&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return std::make_pair(SpeciesConstructResult::Exception, nullptr);
</del><ins>+    RETURN_IF_EXCEPTION(scope, exceptionResult());
</ins><span class="cx">     return std::make_pair(SpeciesConstructResult::CreatedObject, newObject);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -287,11 +288,9 @@
</span><span class="cx">         unsigned from = k + currentCount;
</span><span class="cx">         unsigned to = k + resultCount;
</span><span class="cx">         if (JSValue value = getProperty(exec, thisObj, from)) {
</span><del>-            if (UNLIKELY(scope.exception()))
-                return;
</del><ins>+            RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">             thisObj-&gt;putByIndexInline(exec, to, value, true);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return;
</del><ins>+            RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         } else if (!thisObj-&gt;methodTable(vm)-&gt;deletePropertyByIndex(thisObj, exec, to)) {
</span><span class="cx">             throwTypeError(exec, scope, ASCIILiteral(&quot;Unable to delete property.&quot;));
</span><span class="cx">             return;
</span><span class="lines">@@ -333,15 +332,13 @@
</span><span class="cx">         unsigned from = k + currentCount - 1;
</span><span class="cx">         unsigned to = k + resultCount - 1;
</span><span class="cx">         if (JSValue value = getProperty(exec, thisObj, from)) {
</span><del>-            if (UNLIKELY(scope.exception()))
-                return;
</del><ins>+            RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">             thisObj-&gt;putByIndexInline(exec, to, value, true);
</span><span class="cx">         } else if (!thisObj-&gt;methodTable(vm)-&gt;deletePropertyByIndex(thisObj, exec, to)) {
</span><span class="cx">             throwTypeError(exec, scope, ASCIILiteral(&quot;Unable to delete property.&quot;));
</span><span class="cx">             return;
</span><span class="cx">         }
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -353,13 +350,11 @@
</span><span class="cx"> 
</span><span class="cx">     // 1. Let array be the result of calling ToObject on the this value.
</span><span class="cx">     JSObject* thisObject = thisValue.toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     
</span><span class="cx">     // 2. Let func be the result of calling the [[Get]] internal method of array with argument &quot;join&quot;.
</span><span class="cx">     JSValue function = JSValue(thisObject).get(exec, exec-&gt;propertyNames().join);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 3. If IsCallable(func) is false, then let func be the standard built-in method Object.prototype.toString (15.2.4.2).
</span><span class="cx">     bool customJoinCase = false;
</span><span class="lines">@@ -387,19 +382,16 @@
</span><span class="cx">         return JSValue::encode(earlyReturnValue);
</span><span class="cx"> 
</span><span class="cx">     JSStringJoiner joiner(*exec, ',', length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="cx">         JSValue element = thisArray-&gt;tryGetIndexQuickly(i);
</span><span class="cx">         if (!element) {
</span><span class="cx">             element = thisArray-&gt;get(exec, i);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         }
</span><span class="cx">         joiner.append(*exec, element);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return JSValue::encode(joiner.join(*exec));
</span><span class="lines">@@ -412,12 +404,10 @@
</span><span class="cx">     JSValue thisValue = exec-&gt;thisValue().toThis(exec, StrictMode);
</span><span class="cx"> 
</span><span class="cx">     JSObject* thisObject = thisValue.toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     unsigned length = getLength(exec, thisObject);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     StringRecursionChecker checker(exec, thisObject);
</span><span class="cx">     if (JSValue earlyReturnValue = checker.earlyReturnValue())
</span><span class="lines">@@ -424,53 +414,44 @@
</span><span class="cx">         return JSValue::encode(earlyReturnValue);
</span><span class="cx"> 
</span><span class="cx">     JSStringJoiner stringJoiner(*exec, ',', length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx"> #if ENABLE(INTL)
</span><span class="cx">     ArgList arguments(exec);
</span><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="cx">         JSValue element = thisObject-&gt;getIndex(exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (element.isUndefinedOrNull())
</span><span class="cx">             element = jsEmptyString(exec);
</span><span class="cx">         else {
</span><span class="cx">             JSValue conversionFunction = element.get(exec, exec-&gt;propertyNames().toLocaleString);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">             CallData callData;
</span><span class="cx">             CallType callType = getCallData(conversionFunction, callData);
</span><span class="cx">             if (callType != CallType::None) {
</span><span class="cx">                 element = call(exec, conversionFunction, callType, callData, element, arguments);
</span><del>-                if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+                RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         stringJoiner.append(*exec, element);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> #else // !ENABLE(INTL)
</span><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="cx">         JSValue element = thisObject-&gt;getIndex(exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (element.isUndefinedOrNull())
</span><span class="cx">             continue;
</span><span class="cx">         JSValue conversionFunction = element.get(exec, exec-&gt;propertyNames().toLocaleString);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         CallData callData;
</span><span class="cx">         CallType callType = getCallData(conversionFunction, callData);
</span><span class="cx">         if (callType != CallType::None) {
</span><span class="cx">             element = call(exec, conversionFunction, callType, callData, element, exec-&gt;emptyList());
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         }
</span><span class="cx">         stringJoiner.append(*exec, element);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> #endif // !ENABLE(INTL)
</span><span class="cx"> 
</span><span class="lines">@@ -513,8 +494,7 @@
</span><span class="cx"> 
</span><span class="cx">     // 6. Let element0 be Get(O, &quot;0&quot;).
</span><span class="cx">     JSValue element0 = thisObject-&gt;getIndex(&amp;exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 7. If element0 is undefined or null, let R be the empty String; otherwise, let R be ? ToString(element0).
</span><span class="cx">     JSString* r = nullptr;
</span><span class="lines">@@ -522,8 +502,7 @@
</span><span class="cx">         r = jsEmptyString(&amp;exec);
</span><span class="cx">     else
</span><span class="cx">         r = element0.toString(&amp;exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 8. Let k be 1.
</span><span class="cx">     // 9. Repeat, while k &lt; len
</span><span class="lines">@@ -531,8 +510,7 @@
</span><span class="cx">     for (uint64_t k = 1; k &lt; length; ++k) {
</span><span class="cx">         // b. Let element be ? Get(O, ! ToString(k)).
</span><span class="cx">         JSValue element = thisObject-&gt;get(&amp;exec, Identifier::fromString(&amp;exec, AtomicString::number(k)));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">         // c. If element is undefined or null, let next be the empty String; otherwise, let next be ? ToString(element).
</span><span class="cx">         JSString* next = nullptr;
</span><span class="lines">@@ -542,14 +520,12 @@
</span><span class="cx">             next = jsEmptyString(&amp;exec);
</span><span class="cx">         } else
</span><span class="cx">             next = element.toString(&amp;exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">         // a. Let S be the String value produced by concatenating R and sep.
</span><span class="cx">         // d. Let R be a String value produced by concatenating S and next.
</span><span class="cx">         r = jsString(&amp;exec, r, separator, next);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx">     // 10. Return R.
</span><span class="cx">     return r;
</span><span class="lines">@@ -580,8 +556,7 @@
</span><span class="cx">         if (length &gt; butterfly.publicLength())
</span><span class="cx">             break;
</span><span class="cx">         JSStringJoiner joiner(state, separator, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         auto data = butterfly.contiguous().data();
</span><span class="cx">         bool holesKnownToBeOK = false;
</span><span class="cx">         for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="lines">@@ -604,8 +579,7 @@
</span><span class="cx">         if (length &gt; butterfly.publicLength())
</span><span class="cx">             break;
</span><span class="cx">         JSStringJoiner joiner(state, separator, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         auto data = butterfly.contiguousDouble().data();
</span><span class="cx">         bool holesKnownToBeOK = false;
</span><span class="cx">         for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="lines">@@ -627,15 +601,12 @@
</span><span class="cx"> 
</span><span class="cx"> generalCase:
</span><span class="cx">     JSStringJoiner joiner(state, separator, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="cx">         JSValue element = thisObject-&gt;getIndex(&amp;state, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         joiner.append(state, element);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx">     return joiner.join(state);
</span><span class="cx"> }
</span><span class="lines">@@ -656,8 +627,7 @@
</span><span class="cx"> 
</span><span class="cx">     // 2. Let len be ? ToLength(? Get(O, &quot;length&quot;)).
</span><span class="cx">     double length = toLength(exec, thisObject);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 3. If separator is undefined, let separator be the single-element String &quot;,&quot;.
</span><span class="cx">     JSValue separatorValue = exec-&gt;argument(0);
</span><span class="lines">@@ -668,8 +638,7 @@
</span><span class="cx">             uint64_t length64 = static_cast&lt;uint64_t&gt;(length);
</span><span class="cx">             ASSERT(static_cast&lt;double&gt;(length64) == length);
</span><span class="cx">             JSString* jsSeparator = jsSingleCharacterString(exec, comma);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(JSValue());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">             return JSValue::encode(slowJoin(*exec, thisObject, jsSeparator, length64));
</span><span class="cx">         }
</span><span class="lines">@@ -681,8 +650,7 @@
</span><span class="cx"> 
</span><span class="cx">     // 4. Let sep be ? ToString(separator).
</span><span class="cx">     JSString* jsSeparator = separatorValue.toString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (UNLIKELY(length &gt; std::numeric_limits&lt;unsigned&gt;::max() || !canUseFastJoin(thisObject))) {
</span><span class="cx">         uint64_t length64 = static_cast&lt;uint64_t&gt;(length);
</span><span class="lines">@@ -707,8 +675,7 @@
</span><span class="cx">     if (!thisObj)
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx">     unsigned length = getLength(exec, thisObj);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue result;
</span><span class="cx">     if (length == 0) {
</span><span class="lines">@@ -716,8 +683,7 @@
</span><span class="cx">         result = jsUndefined();
</span><span class="cx">     } else {
</span><span class="cx">         result = thisObj-&gt;get(exec, length - 1);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (!thisObj-&gt;methodTable(vm)-&gt;deletePropertyByIndex(thisObj, exec, length - 1)) {
</span><span class="cx">             throwTypeError(exec, scope, ASCIILiteral(&quot;Unable to delete property.&quot;));
</span><span class="cx">             return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -743,8 +709,7 @@
</span><span class="cx">     if (!thisObj)
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx">     unsigned length = getLength(exec, thisObj);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned n = 0; n &lt; exec-&gt;argumentCount(); n++) {
</span><span class="cx">         // Check for integer overflow; where safe we can do a fast put by index.
</span><span class="lines">@@ -755,8 +720,7 @@
</span><span class="cx">             Identifier propertyName = Identifier::fromString(exec, JSValue(static_cast&lt;int64_t&gt;(length) + static_cast&lt;int64_t&gt;(n)).toWTFString(exec));
</span><span class="cx">             thisObj-&gt;methodTable()-&gt;put(thisObj, exec, propertyName, exec-&gt;uncheckedArgument(n), slot);
</span><span class="cx">         }
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     JSValue newLength(static_cast&lt;int64_t&gt;(length) + static_cast&lt;int64_t&gt;(exec-&gt;argumentCount()));
</span><span class="lines">@@ -774,8 +738,7 @@
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx"> 
</span><span class="cx">     unsigned length = getLength(exec, thisObject);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     switch (thisObject-&gt;indexingType()) {
</span><span class="cx">     case ALL_CONTIGUOUS_INDEXING_TYPES:
</span><span class="lines">@@ -815,29 +778,24 @@
</span><span class="cx">     for (unsigned lower = 0; lower &lt; middle; lower++) {
</span><span class="cx">         unsigned upper = length - lower - 1;
</span><span class="cx">         bool lowerExists = thisObject-&gt;hasProperty(exec, lower);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         JSValue lowerValue;
</span><span class="cx">         if (lowerExists) {
</span><span class="cx">             lowerValue = thisObject-&gt;get(exec, lower);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         bool upperExists = thisObject-&gt;hasProperty(exec, upper);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         JSValue upperValue;
</span><span class="cx">         if (upperExists) {
</span><span class="cx">             upperValue = thisObject-&gt;get(exec, upper);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         if (upperExists) {
</span><span class="cx">             thisObject-&gt;putByIndexInline(exec, lower, upperValue, true);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(JSValue());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         } else if (!thisObject-&gt;methodTable(vm)-&gt;deletePropertyByIndex(thisObject, exec, lower)) {
</span><span class="cx">             if (!scope.exception())
</span><span class="cx">                 throwTypeError(exec, scope, ASCIILiteral(&quot;Unable to delete property.&quot;));
</span><span class="lines">@@ -846,8 +804,7 @@
</span><span class="cx"> 
</span><span class="cx">         if (lowerExists) {
</span><span class="cx">             thisObject-&gt;putByIndexInline(exec, upper, lowerValue, true);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(JSValue());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         } else if (!thisObject-&gt;methodTable(vm)-&gt;deletePropertyByIndex(thisObject, exec, upper)) {
</span><span class="cx">             if (!scope.exception())
</span><span class="cx">                 throwTypeError(exec, scope, ASCIILiteral(&quot;Unable to delete property.&quot;));
</span><span class="lines">@@ -865,8 +822,7 @@
</span><span class="cx">     if (!thisObj)
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx">     unsigned length = getLength(exec, thisObj);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue result;
</span><span class="cx">     if (length == 0) {
</span><span class="lines">@@ -875,8 +831,7 @@
</span><span class="cx">     } else {
</span><span class="cx">         result = thisObj-&gt;getIndex(exec, 0);
</span><span class="cx">         shift&lt;JSArray::ShiftCountForShift&gt;(exec, thisObj, 0, 1, 0, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         putLength(exec, thisObj, jsNumber(length - 1));
</span><span class="cx">     }
</span><span class="cx">     return JSValue::encode(result);
</span><span class="lines">@@ -891,8 +846,7 @@
</span><span class="cx">     if (!thisObj)
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx">     unsigned length = getLength(exec, thisObj);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     unsigned begin = argumentClampedIndexFromStartOrEnd(exec, 0, length);
</span><span class="cx">     unsigned end = argumentClampedIndexFromStartOrEnd(exec, 1, length, length);
</span><span class="lines">@@ -912,15 +866,13 @@
</span><span class="cx">         result = speciesResult.second;
</span><span class="cx">     else {
</span><span class="cx">         result = constructEmptyArray(exec, nullptr, end - begin);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     unsigned n = 0;
</span><span class="cx">     for (unsigned k = begin; k &lt; end; k++, n++) {
</span><span class="cx">         JSValue v = getProperty(exec, thisObj, k);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (v)
</span><span class="cx">             result-&gt;putDirectIndex(exec, n, v);
</span><span class="cx">     }
</span><span class="lines">@@ -939,8 +891,7 @@
</span><span class="cx">     if (!thisObj)
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx">     unsigned length = getLength(exec, thisObj);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!exec-&gt;argumentCount()) {
</span><span class="cx">         std::pair&lt;SpeciesConstructResult, JSObject*&gt; speciesResult = speciesConstructArray(exec, thisObj, 0);
</span><span class="lines">@@ -952,8 +903,7 @@
</span><span class="cx">             result = speciesResult.second;
</span><span class="cx">         else {
</span><span class="cx">             result = constructEmptyArray(exec, nullptr);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         setLength(exec, result, 0);
</span><span class="lines">@@ -988,13 +938,11 @@
</span><span class="cx">             
</span><span class="cx">             for (unsigned k = 0; k &lt; deleteCount; ++k) {
</span><span class="cx">                 JSValue v = getProperty(exec, thisObj, k + begin);
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return JSValue::encode(jsUndefined());
</del><ins>+                RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">                 if (UNLIKELY(!v))
</span><span class="cx">                     continue;
</span><span class="cx">                 result-&gt;putByIndexInline(exec, k, v, true);
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return JSValue::encode(jsUndefined());
</del><ins>+                RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">             }
</span><span class="cx">         } else {
</span><span class="cx">             result = JSArray::tryCreateUninitialized(vm, exec-&gt;lexicalGlobalObject()-&gt;arrayStructureForIndexingTypeDuringAllocation(ArrayWithUndecided), deleteCount);
</span><span class="lines">@@ -1003,8 +951,7 @@
</span><span class="cx">             
</span><span class="cx">             for (unsigned k = 0; k &lt; deleteCount; ++k) {
</span><span class="cx">                 JSValue v = getProperty(exec, thisObj, k + begin);
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return JSValue::encode(jsUndefined());
</del><ins>+                RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">                 if (UNLIKELY(!v))
</span><span class="cx">                     continue;
</span><span class="cx">                 result-&gt;initializeIndex(vm, k, v);
</span><span class="lines">@@ -1015,17 +962,14 @@
</span><span class="cx">     unsigned additionalArgs = std::max&lt;int&gt;(exec-&gt;argumentCount() - 2, 0);
</span><span class="cx">     if (additionalArgs &lt; deleteCount) {
</span><span class="cx">         shift&lt;JSArray::ShiftCountForSplice&gt;(exec, thisObj, begin, deleteCount, additionalArgs, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     } else if (additionalArgs &gt; deleteCount) {
</span><span class="cx">         unshift&lt;JSArray::ShiftCountForSplice&gt;(exec, thisObj, begin, deleteCount, additionalArgs, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx">     for (unsigned k = 0; k &lt; additionalArgs; ++k) {
</span><span class="cx">         thisObj-&gt;putByIndexInline(exec, k + begin, exec-&gt;uncheckedArgument(k + 2), true);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     setLength(exec, thisObj, length - deleteCount + additionalArgs);
</span><span class="lines">@@ -1042,19 +986,16 @@
</span><span class="cx">     if (!thisObj)
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx">     unsigned length = getLength(exec, thisObj);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     unsigned nrArgs = exec-&gt;argumentCount();
</span><span class="cx">     if (nrArgs) {
</span><span class="cx">         unshift&lt;JSArray::ShiftCountForShift&gt;(exec, thisObj, 0, 0, nrArgs, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx">     for (unsigned k = 0; k &lt; nrArgs; ++k) {
</span><span class="cx">         thisObj-&gt;putByIndexInline(exec, k, exec-&gt;uncheckedArgument(k), true);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx">     JSValue result = jsNumber(length + nrArgs);
</span><span class="cx">     putLength(exec, thisObj, result);
</span><span class="lines">@@ -1071,21 +1012,18 @@
</span><span class="cx">     if (!thisObj)
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="cx">     unsigned length = getLength(exec, thisObj);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     unsigned index = argumentClampedIndexFromStartOrEnd(exec, 1, length);
</span><span class="cx">     JSValue searchElement = exec-&gt;argument(0);
</span><span class="cx">     for (; index &lt; length; ++index) {
</span><span class="cx">         JSValue e = getProperty(exec, thisObj, index);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (!e)
</span><span class="cx">             continue;
</span><span class="cx">         if (JSValue::strictEqual(exec, searchElement, e))
</span><span class="cx">             return JSValue::encode(jsNumber(index));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return JSValue::encode(jsNumber(-1));
</span><span class="lines">@@ -1121,14 +1059,12 @@
</span><span class="cx">     do {
</span><span class="cx">         RELEASE_ASSERT(index &lt; length);
</span><span class="cx">         JSValue e = getProperty(exec, thisObj, index);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (!e)
</span><span class="cx">             continue;
</span><span class="cx">         if (JSValue::strictEqual(exec, searchElement, e))
</span><span class="cx">             return JSValue::encode(jsNumber(index));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     } while (index--);
</span><span class="cx"> 
</span><span class="cx">     return JSValue::encode(jsNumber(-1));
</span><span class="lines">@@ -1143,19 +1079,16 @@
</span><span class="cx">             JSValue value = source-&gt;tryGetIndexQuickly(i);
</span><span class="cx">             if (value) {
</span><span class="cx">                 target-&gt;putDirectIndex(exec, targetOffset + i, value);
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return false;
</del><ins>+                RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><span class="cx">         for (unsigned i = 0; i &lt; sourceLength; ++i) {
</span><span class="cx">             JSValue value = getProperty(exec, source, i);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">             if (value) {
</span><span class="cx">                 target-&gt;putDirectIndex(exec, targetOffset + i, value);
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return false;
</del><ins>+                RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="lines">@@ -1228,8 +1161,7 @@
</span><span class="cx">     IndexingType type = firstArray-&gt;mergeIndexingTypeForCopying(secondType);
</span><span class="cx">     if (type == NonArray || !firstArray-&gt;canFastCopy(vm, secondArray) || firstArraySize + secondArraySize &gt;= MIN_SPARSE_ARRAY_INDEX) {
</span><span class="cx">         JSArray* result = constructEmptyArray(exec, nullptr, firstArraySize + secondArraySize);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(JSValue());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (!moveElements(exec, vm, result, 0, firstArray, firstArraySize)
</span><span class="cx">             || !moveElements(exec, vm, result, firstArraySize, secondArray, secondArraySize)) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeBooleanConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/BooleanConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/BooleanConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/BooleanConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -52,8 +52,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue boolean = jsBoolean(exec-&gt;argument(0).toBoolean(exec));
</span><span class="cx">     Structure* booleanStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), asInternalFunction(exec-&gt;callee())-&gt;globalObject()-&gt;booleanObjectStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     BooleanObject* obj = BooleanObject::create(vm, booleanStructure);
</span><span class="cx">     obj-&gt;setInternalValue(vm, boolean);
</span><span class="cx">     return JSValue::encode(obj);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCommonSlowPathsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/CommonSlowPaths.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -87,8 +87,7 @@
</span><span class="cx">         return baseObj-&gt;hasProperty(exec, i);
</span><span class="cx"> 
</span><span class="cx">     auto property = propName.toPropertyKey(exec);
</span><del>-    if (scope.exception())
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     return baseObj-&gt;hasProperty(exec, property);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeCompletioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Completion.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Completion.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/Completion.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  *  Copyright (C) 1999-2001 Harri Porten (porten@kde.org)
</span><span class="cx">  *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
</span><del>- *  Copyright (C) 2003, 2007, 2013 Apple Inc.
</del><ins>+ *  Copyright (C) 2003, 2007, 2013, 2016 Apple Inc.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -193,8 +193,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Insert the given source code to the ModuleLoader registry as the fetched registry entry.
</span><span class="cx">     globalObject-&gt;moduleLoader()-&gt;provide(exec, key, JSModuleLoader::Status::Fetch, source.view().toString());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return rejectPromise(exec, globalObject);
</del><ins>+    RETURN_IF_EXCEPTION(scope, rejectPromise(exec, globalObject));
</ins><span class="cx"> 
</span><span class="cx">     return loadAndEvaluateModule(lock, exec, globalObject, key, jsUndefined(), initiator);
</span><span class="cx"> }
</span><span class="lines">@@ -233,8 +232,7 @@
</span><span class="cx">     // Insert the given source code to the ModuleLoader registry as the fetched registry entry.
</span><span class="cx">     // FIXME: Introduce JSSourceCode object to wrap around this source.
</span><span class="cx">     globalObject-&gt;moduleLoader()-&gt;provide(exec, key, JSModuleLoader::Status::Fetch, source.view().toString());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return rejectPromise(exec, globalObject);
</del><ins>+    RETURN_IF_EXCEPTION(scope, rejectPromise(exec, globalObject));
</ins><span class="cx"> 
</span><span class="cx">     return loadModule(lock, exec, globalObject, key, jsUndefined(), initiator);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeConsoleObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ConsoleObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ConsoleObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ConsoleObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -203,8 +203,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx"> 
</span><span class="cx">     bool condition = exec-&gt;argument(0).toBoolean(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (condition)
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -240,8 +239,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     const String&amp; title(valueToStringWithUndefinedOrNullCheck(exec, exec-&gt;argument(0)));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     client-&gt;profile(exec, title);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -262,8 +260,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     const String&amp; title(valueToStringWithUndefinedOrNullCheck(exec, exec-&gt;argument(0)));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     client-&gt;profileEnd(exec, title);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -284,8 +281,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     const String&amp; title(valueToStringWithUndefinedOrNullCheck(exec, exec-&gt;argument(0)));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     client-&gt;takeHeapSnapshot(exec, title);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -311,8 +307,7 @@
</span><span class="cx">         title = ASCIILiteral(&quot;default&quot;);
</span><span class="cx">     else {
</span><span class="cx">         title = valueOrDefaultLabelString(exec, exec-&gt;argument(0));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     client-&gt;time(exec, title);
</span><span class="lines">@@ -332,8 +327,7 @@
</span><span class="cx">         title =  ASCIILiteral(&quot;default&quot;);
</span><span class="cx">     else {
</span><span class="cx">         title = valueOrDefaultLabelString(exec, exec-&gt;argument(0));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     client-&gt;timeEnd(exec, title);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeDateConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/DateConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
</span><del>- *  Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011, 2016 Apple Inc. All rights reserved.
</del><ins>+ *  Copyright (C) 2004-2008, 2011, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Lesser General Public
</span><span class="lines">@@ -168,8 +168,7 @@
</span><span class="cx">         value = millisecondsFromComponents(exec, args, WTF::LocalTime);
</span><span class="cx"> 
</span><span class="cx">     Structure* dateStructure = InternalFunction::createSubclassStructure(exec, newTarget, globalObject-&gt;dateStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     return DateInstance::create(vm, dateStructure, value);
</span><span class="cx"> }
</span><span class="lines">@@ -206,8 +205,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     String dateStr = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsNumber(parseDate(vm, dateStr)));
</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 (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/DatePrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -615,8 +615,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue hintValue = exec-&gt;uncheckedArgument(0);
</span><span class="cx">     PreferredPrimitiveType type = toPreferredPrimitiveType(exec, hintValue);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (type == NoPreference)
</span><span class="cx">         type = PreferString;
</span><span class="lines">@@ -1128,18 +1127,15 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue thisValue = exec-&gt;thisValue();
</span><span class="cx">     JSObject* object = jsCast&lt;JSObject*&gt;(thisValue.toThis(exec, NotStrictMode));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue timeValue = object-&gt;toPrimitive(exec, PreferNumber);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     if (timeValue.isNumber() &amp;&amp; !(timeValue.isInt32() || std::isfinite(timeValue.asDouble())))
</span><span class="cx">         return JSValue::encode(jsNull());
</span><span class="cx"> 
</span><span class="cx">     JSValue toISOValue = object-&gt;get(exec, vm.propertyNames-&gt;toISOString);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType = getCallData(toISOValue, callData);
</span><span class="lines">@@ -1147,8 +1143,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;toISOString is not a function&quot;));
</span><span class="cx"> 
</span><span class="cx">     JSValue result = call(exec, asObject(toISOValue), callType, callData, object, exec-&gt;emptyList());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     if (result.isObject())
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;toISOString did not return a primitive value&quot;));
</span><span class="cx">     return JSValue::encode(result);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeErrorConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ErrorConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -54,8 +54,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue message = exec-&gt;argumentCount() ? exec-&gt;argument(0) : jsUndefined();
</span><span class="cx">     Structure* errorStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), asInternalFunction(exec-&gt;callee())-&gt;globalObject()-&gt;errorStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(ErrorInstance::create(exec, errorStructure, message, nullptr, TypeNothing, false));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeErrorInstancecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ErrorInstance.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -185,8 +185,7 @@
</span><span class="cx">         nameString = ASCIILiteral(&quot;Error&quot;);
</span><span class="cx">     else {
</span><span class="cx">         nameString = nameValue.toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return String();
</del><ins>+        RETURN_IF_EXCEPTION(scope, String());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSValue messageValue;
</span><span class="lines">@@ -201,8 +200,7 @@
</span><span class="cx">         messageString = String();
</span><span class="cx">     else {
</span><span class="cx">         messageString = messageValue.toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return String();
</del><ins>+        RETURN_IF_EXCEPTION(scope, String());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!nameString.length())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeErrorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ErrorPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -85,8 +85,7 @@
</span><span class="cx"> 
</span><span class="cx">     // 3. Let name be the result of calling the [[Get]] internal method of O with argument &quot;name&quot;.
</span><span class="cx">     JSValue name = thisObj-&gt;get(exec, exec-&gt;propertyNames().name);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 4. If name is undefined, then let name be &quot;Error&quot;; else let name be ToString(name).
</span><span class="cx">     String nameString;
</span><span class="lines">@@ -94,14 +93,12 @@
</span><span class="cx">         nameString = ASCIILiteral(&quot;Error&quot;);
</span><span class="cx">     else {
</span><span class="cx">         nameString = name.toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 5. Let msg be the result of calling the [[Get]] internal method of O with argument &quot;message&quot;.
</span><span class="cx">     JSValue message = thisObj-&gt;get(exec, exec-&gt;propertyNames().message);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // (sic)
</span><span class="cx">     // 6. If msg is undefined, then let msg be the empty String; else let msg be ToString(msg).
</span><span class="lines">@@ -111,8 +108,7 @@
</span><span class="cx">         messageString = String();
</span><span class="cx">     else {
</span><span class="cx">         messageString = message.toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 8. If name is the empty String, return msg.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeExceptionScopeh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ExceptionScope.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ExceptionScope.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ExceptionScope.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -70,7 +70,12 @@
</span><span class="cx"> };
</span><span class="cx">     
</span><span class="cx"> #endif // ENABLE(EXCEPTION_SCOPE_VERIFICATION)
</span><del>-    
</del><ins>+
+#define RETURN_IF_EXCEPTION(scope__, value__) do { \
+        if (UNLIKELY((scope__).exception())) \
+            return value__; \
+    } while (false)
+
</ins><span class="cx"> } // namespace JSC
</span><span class="cx"> 
</span><span class="cx"> #endif // ExceptionScope_h
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeFunctionConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/FunctionConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -126,8 +126,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     Structure* subclassStructure = InternalFunction::createSubclassStructure(exec, newTarget, globalObject-&gt;functionStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     return JSFunction::create(vm, function, globalObject-&gt;globalScope(), subclassStructure);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGenericArgumentsInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/GenericArgumentsInlines.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GenericArgumentsInlines.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/GenericArgumentsInlines.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2015 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -228,8 +228,7 @@
</span><span class="cx">             exec-&gt;r(firstElementDest + i) = thisObject-&gt;getIndexQuickly(i + offset);
</span><span class="cx">         else {
</span><span class="cx">             exec-&gt;r(firstElementDest + i) = get(exec, i + offset);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return;
</del><ins>+            RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeGetterSettercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/GetterSetter.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -77,8 +77,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     // FIXME: Some callers may invoke get() without checking for an exception first.
</span><span class="cx">     // We work around that by checking here.
</span><del>-    if (UNLIKELY(scope.exception()))
-        return scope.exception()-&gt;value();
</del><ins>+    RETURN_IF_EXCEPTION(scope, scope.exception()-&gt;value());
</ins><span class="cx"> 
</span><span class="cx">     JSObject* getter = jsCast&lt;GetterSetter*&gt;(getterSetter)-&gt;getter();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeHashMapImplh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/HashMapImpl.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/HashMapImpl.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/HashMapImpl.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -245,8 +245,7 @@
</span><span class="cx">     if (value.isString()) {
</span><span class="cx">         JSString* string = asString(value);
</span><span class="cx">         const String&amp; wtfString = string-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return UINT_MAX;
</del><ins>+        RETURN_IF_EXCEPTION(scope, UINT_MAX);
</ins><span class="cx">         return wtfString.impl()-&gt;hash();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -337,8 +336,7 @@
</span><span class="cx">         Base::finishCreation(vm);
</span><span class="cx"> 
</span><span class="cx">         makeAndSetNewBuffer(exec, vm);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">         m_head.set(vm, this, HashMapBucketType::create(vm));
</span><span class="cx">         m_tail.set(vm, this, HashMapBucketType::create(vm));
</span><span class="lines">@@ -376,8 +374,7 @@
</span><span class="cx">         auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">         key = normalizeMapKey(key);
</span><span class="cx">         uint32_t hash = jsMapHash(exec, vm, key);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return findBucket(exec, key, hash);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -408,8 +405,7 @@
</span><span class="cx"> 
</span><span class="cx">         const uint32_t mask = m_capacity - 1;
</span><span class="cx">         uint32_t index = jsMapHash(exec, vm, key) &amp; mask;
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         HashMapBucketType** buffer = this-&gt;buffer();
</span><span class="cx">         HashMapBucketType* bucket = buffer[index];
</span><span class="cx">         while (!isEmpty(bucket)) {
</span><span class="lines">@@ -570,8 +566,7 @@
</span><span class="cx"> 
</span><span class="cx">         if (m_capacity != oldCapacity) {
</span><span class="cx">             makeAndSetNewBuffer(exec, vm);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return;
</del><ins>+            RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         } else {
</span><span class="cx">             m_buffer.get()-&gt;reset(m_capacity);
</span><span class="cx">             assertBufferIsEmpty();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeInspectorInstrumentationObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/InspectorInstrumentationObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/InspectorInstrumentationObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/InspectorInstrumentationObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2015 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2015-2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -87,8 +87,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue target = exec-&gt;argument(0);
</span><span class="cx">     String value = target.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     dataLog(value, &quot;\n&quot;);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeInternalFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/InternalFunction.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/InternalFunction.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/InternalFunction.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,7 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  *  Copyright (C) 1999-2002 Harri Porten (porten@kde.org)
</span><span class="cx">  *  Copyright (C) 2001 Peter Kelly (pmk@post.com)
</span><del>- *  Copyright (C) 2004, 2007, 2008, 2016 Apple Inc. All rights reserved.
</del><ins>+ *  Copyright (C) 2004, 2007-2008, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Library General Public
</span><span class="lines">@@ -113,14 +113,12 @@
</span><span class="cx"> 
</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-&gt;propertyNames().prototype);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return nullptr;
</del><ins>+            RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">             if (JSObject* prototype = jsDynamicCast&lt;JSObject*&gt;(prototypeValue))
</span><span class="cx">                 return targetFunction-&gt;rareData(vm)-&gt;createInternalFunctionAllocationStructureFromBase(vm, prototype, baseClass);
</span><span class="cx">         } else {
</span><span class="cx">             JSValue prototypeValue = newTarget.get(exec, exec-&gt;propertyNames().prototype);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return nullptr;
</del><ins>+            RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">             if (JSObject* prototype = jsDynamicCast&lt;JSObject*&gt;(prototypeValue)) {
</span><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></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlCollatorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlCollator.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlCollator.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlCollator.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -172,8 +172,7 @@
</span><span class="cx">     // 3. Let requestedLocales be CanonicalizeLocaleList(locales).
</span><span class="cx">     auto requestedLocales = canonicalizeLocaleList(state, locales);
</span><span class="cx">     // 4. ReturnIfAbrupt(requestedLocales).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // 5. If options is undefined, then
</span><span class="cx">     JSObject* options;
</span><span class="lines">@@ -184,15 +183,13 @@
</span><span class="cx">         // a. Let options be ToObject(options).
</span><span class="cx">         options = optionsValue.toObject(&amp;state);
</span><span class="cx">         // b. ReturnIfAbrupt(options).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 7. Let u be GetOption(options, &quot;usage&quot;, &quot;string&quot;, Â«&quot;sort&quot;, &quot;search&quot;», &quot;sort&quot;).
</span><span class="cx">     String usageString = intlStringOption(state, options, vm.propertyNames-&gt;usage, { &quot;sort&quot;, &quot;search&quot; }, &quot;usage must be either \&quot;sort\&quot; or \&quot;search\&quot;&quot;, &quot;sort&quot;);
</span><span class="cx">     // 8. ReturnIfAbrupt(u).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 9. Set collator.[[usage]] to u.
</span><span class="cx">     if (usageString == &quot;sort&quot;)
</span><span class="cx">         m_usage = Usage::Sort;
</span><span class="lines">@@ -217,8 +214,7 @@
</span><span class="cx">     // 13. Let matcher be GetOption(options, &quot;localeMatcher&quot;, &quot;string&quot;, Â«&quot;lookup&quot;, &quot;best fit&quot;», &quot;best fit&quot;).
</span><span class="cx">     String matcher = intlStringOption(state, options, vm.propertyNames-&gt;localeMatcher, { &quot;lookup&quot;, &quot;best fit&quot; }, &quot;localeMatcher must be either \&quot;lookup\&quot; or \&quot;best fit\&quot;&quot;, &quot;best fit&quot;);
</span><span class="cx">     // 14. ReturnIfAbrupt(matcher).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 15. Set opt.[[localeMatcher]] to matcher.
</span><span class="cx">     opt.add(ASCIILiteral(&quot;localeMatcher&quot;), matcher);
</span><span class="cx"> 
</span><span class="lines">@@ -237,8 +233,7 @@
</span><span class="cx">         String numericString;
</span><span class="cx">         bool usesFallback;
</span><span class="cx">         bool numeric = intlBooleanOption(state, options, vm.propertyNames-&gt;numeric, usesFallback);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         if (!usesFallback)
</span><span class="cx">             numericString = ASCIILiteral(numeric ? &quot;true&quot; : &quot;false&quot;);
</span><span class="cx">         opt.add(ASCIILiteral(&quot;kn&quot;), numericString);
</span><span class="lines">@@ -245,8 +240,7 @@
</span><span class="cx">     }
</span><span class="cx">     {
</span><span class="cx">         String caseFirst = intlStringOption(state, options, vm.propertyNames-&gt;caseFirst, { &quot;upper&quot;, &quot;lower&quot;, &quot;false&quot; }, &quot;caseFirst must be either \&quot;upper\&quot;, \&quot;lower\&quot;, or \&quot;false\&quot;&quot;, nullptr);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         opt.add(ASCIILiteral(&quot;kf&quot;), caseFirst);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -286,8 +280,7 @@
</span><span class="cx">     // 24. Let s be GetOption(options, &quot;sensitivity&quot;, &quot;string&quot;, Â«&quot;base&quot;, &quot;accent&quot;, &quot;case&quot;, &quot;variant&quot;», undefined).
</span><span class="cx">     String sensitivityString = intlStringOption(state, options, vm.propertyNames-&gt;sensitivity, { &quot;base&quot;, &quot;accent&quot;, &quot;case&quot;, &quot;variant&quot; }, &quot;sensitivity must be either \&quot;base\&quot;, \&quot;accent\&quot;, \&quot;case\&quot;, or \&quot;variant\&quot;&quot;, nullptr);
</span><span class="cx">     // 25. ReturnIfAbrupt(s).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 26. If s is undefined, then
</span><span class="cx">     // a. If u is &quot;sort&quot;, then let s be &quot;variant&quot;.
</span><span class="cx">     // b. Else
</span><span class="lines">@@ -311,8 +304,7 @@
</span><span class="cx">     if (usesFallback)
</span><span class="cx">         ignorePunctuation = false;
</span><span class="cx">     // 29. ReturnIfAbrupt(ip).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 30. Set collator.[[ignorePunctuation]] to ip.
</span><span class="cx">     m_ignorePunctuation = ignorePunctuation;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlCollatorConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlCollatorConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,6 +1,7 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2015 Andy VanWagoner (thetalecrafter@gmail.com)
</span><span class="cx">  * Copyright (C) 2015 Sukolsak Sakshuwong (sukolsak@gmail.com)
</span><ins>+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -90,8 +91,7 @@
</span><span class="cx">     // 2. Let collator be OrdinaryCreateFromConstructor(newTarget, %CollatorPrototype%).
</span><span class="cx">     // 3. ReturnIfAbrupt(collator).
</span><span class="cx">     Structure* structure = InternalFunction::createSubclassStructure(state, state-&gt;newTarget(), jsCast&lt;IntlCollatorConstructor*&gt;(state-&gt;callee())-&gt;collatorStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     IntlCollator* collator = IntlCollator::create(vm, structure);
</span><span class="cx">     ASSERT(collator);
</span><span class="cx"> 
</span><span class="lines">@@ -144,8 +144,7 @@
</span><span class="cx">     Vector&lt;String&gt; requestedLocales = canonicalizeLocaleList(*state, state-&gt;argument(0));
</span><span class="cx"> 
</span><span class="cx">     // 2. ReturnIfAbrupt(requestedLocales).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 3. Return SupportedLocales(%Collator%.[[availableLocales]], requestedLocales, options).
</span><span class="cx">     JSGlobalObject* globalObject = state-&gt;callee()-&gt;globalObject();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlCollatorPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlCollatorPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -90,14 +90,12 @@
</span><span class="cx">     // 5. Let X be ToString(x).
</span><span class="cx">     JSString* x = state-&gt;argument(0).toString(state);
</span><span class="cx">     // 6. ReturnIfAbrupt(X).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 7. Let Y be ToString(y).
</span><span class="cx">     JSString* y = state-&gt;argument(1).toString(state);
</span><span class="cx">     // 8. ReturnIfAbrupt(Y).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 9. Return CompareStrings(collator, X, Y).
</span><span class="cx">     return JSValue::encode(collator-&gt;compareStrings(*state, x-&gt;view(state).get(), y-&gt;view(state).get()));
</span><span class="lines">@@ -124,8 +122,7 @@
</span><span class="cx"> 
</span><span class="cx">         // c. Let bc be BoundFunctionCreate(F, Â«this value»).
</span><span class="cx">         boundCompare = JSBoundFunction::create(vm, state, globalObject, targetObject, collator, nullptr, 2, ASCIILiteral(&quot;compare&quot;));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(JSValue());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         // d. Set collator.[[boundCompare]] to bc.
</span><span class="cx">         collator-&gt;setBoundCompare(vm, boundCompare);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormat.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -225,8 +225,7 @@
</span><span class="cx">         options = constructEmptyObject(&amp;exec, exec.lexicalGlobalObject()-&gt;nullPrototypeObjectStructure());
</span><span class="cx">     else {
</span><span class="cx">         JSObject* originalToObject = originalOptions.toObject(&amp;exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         options = constructEmptyObject(&amp;exec, originalToObject);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -242,26 +241,22 @@
</span><span class="cx">     // iii. ReturnIfAbrupt(value).
</span><span class="cx">     // iv. If value is not undefined, then let needDefaults be false.
</span><span class="cx">     JSValue weekday = options-&gt;get(&amp;exec, vm.propertyNames-&gt;weekday);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (!weekday.isUndefined())
</span><span class="cx">         needDefaults = false;
</span><span class="cx"> 
</span><span class="cx">     JSValue year = options-&gt;get(&amp;exec, vm.propertyNames-&gt;year);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (!year.isUndefined())
</span><span class="cx">         needDefaults = false;
</span><span class="cx"> 
</span><span class="cx">     JSValue month = options-&gt;get(&amp;exec, vm.propertyNames-&gt;month);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (!month.isUndefined())
</span><span class="cx">         needDefaults = false;
</span><span class="cx"> 
</span><span class="cx">     JSValue day = options-&gt;get(&amp;exec, vm.propertyNames-&gt;day);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (!day.isUndefined())
</span><span class="cx">         needDefaults = false;
</span><span class="cx"> 
</span><span class="lines">@@ -274,20 +269,17 @@
</span><span class="cx">     // iii. ReturnIfAbrupt(value).
</span><span class="cx">     // iv. If value is not undefined, then let needDefaults be false.
</span><span class="cx">     JSValue hour = options-&gt;get(&amp;exec, vm.propertyNames-&gt;hour);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (!hour.isUndefined())
</span><span class="cx">         needDefaults = false;
</span><span class="cx"> 
</span><span class="cx">     JSValue minute = options-&gt;get(&amp;exec, vm.propertyNames-&gt;minute);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (!minute.isUndefined())
</span><span class="cx">         needDefaults = false;
</span><span class="cx"> 
</span><span class="cx">     JSValue second = options-&gt;get(&amp;exec, vm.propertyNames-&gt;second);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (!second.isUndefined())
</span><span class="cx">         needDefaults = false;
</span><span class="cx"> 
</span><span class="lines">@@ -300,16 +292,13 @@
</span><span class="cx">         JSString* numeric = jsNontrivialString(&amp;exec, ASCIILiteral(&quot;numeric&quot;));
</span><span class="cx"> 
</span><span class="cx">         options-&gt;putDirect(vm, vm.propertyNames-&gt;year, numeric);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">         options-&gt;putDirect(vm, vm.propertyNames-&gt;month, numeric);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">         options-&gt;putDirect(vm, vm.propertyNames-&gt;day, numeric);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 8. If needDefaults is true and defaults is either &quot;time&quot; or &quot;all&quot;, then
</span><span class="lines">@@ -429,14 +418,12 @@
</span><span class="cx">     // 3. Let requestedLocales be CanonicalizeLocaleList(locales).
</span><span class="cx">     Vector&lt;String&gt; requestedLocales = canonicalizeLocaleList(exec, locales);
</span><span class="cx">     // 4. ReturnIfAbrupt(requestedLocales),
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // 5. Let options be ToDateTimeOptions(options, &quot;any&quot;, &quot;date&quot;).
</span><span class="cx">     JSObject* options = toDateTimeOptionsAnyDate(exec, originalOptions);
</span><span class="cx">     // 6. ReturnIfAbrupt(options).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // 7. Let opt be a new Record.
</span><span class="cx">     HashMap&lt;String, String&gt; localeOpt;
</span><span class="lines">@@ -444,8 +431,7 @@
</span><span class="cx">     // 8. Let matcher be GetOption(options, &quot;localeMatcher&quot;, &quot;string&quot;, Â«&quot;lookup&quot;, &quot;best fit&quot;», &quot;best fit&quot;).
</span><span class="cx">     String localeMatcher = intlStringOption(exec, options, vm.propertyNames-&gt;localeMatcher, { &quot;lookup&quot;, &quot;best fit&quot; }, &quot;localeMatcher must be either \&quot;lookup\&quot; or \&quot;best fit\&quot;&quot;, &quot;best fit&quot;);
</span><span class="cx">     // 9. ReturnIfAbrupt(matcher).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 10. Set opt.[[localeMatcher]] to matcher.
</span><span class="cx">     localeOpt.add(vm.propertyNames-&gt;localeMatcher.string(), localeMatcher);
</span><span class="cx"> 
</span><span class="lines">@@ -477,8 +463,7 @@
</span><span class="cx">     // 17. Let tz be Get(options, &quot;timeZone&quot;).
</span><span class="cx">     JSValue tzValue = options-&gt;get(&amp;exec, vm.propertyNames-&gt;timeZone);
</span><span class="cx">     // 18. ReturnIfAbrupt(tz).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // 19. If tz is not undefined, then
</span><span class="cx">     String tz;
</span><span class="lines">@@ -486,8 +471,7 @@
</span><span class="cx">         // a. Let tz be ToString(tz).
</span><span class="cx">         String originalTz = tzValue.toWTFString(&amp;exec);
</span><span class="cx">         // b. ReturnIfAbrupt(tz).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         // c. If the result of IsValidTimeZoneName(tz) is false, then i. Throw a RangeError exception.
</span><span class="cx">         // d. Let tz be CanonicalizeTimeZoneName(tz).
</span><span class="cx">         tz = canonicalizeTimeZoneName(originalTz);
</span><span class="lines">@@ -519,8 +503,7 @@
</span><span class="cx">     auto shortLong = { &quot;short&quot;, &quot;long&quot; };
</span><span class="cx"> 
</span><span class="cx">     String weekday = intlStringOption(exec, options, vm.propertyNames-&gt;weekday, narrowShortLong, &quot;weekday must be \&quot;narrow\&quot;, \&quot;short\&quot;, or \&quot;long\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (!weekday.isNull()) {
</span><span class="cx">         if (weekday == &quot;narrow&quot;)
</span><span class="cx">             skeletonBuilder.appendLiteral(&quot;EEEEE&quot;);
</span><span class="lines">@@ -531,8 +514,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String era = intlStringOption(exec, options, vm.propertyNames-&gt;era, narrowShortLong, &quot;era must be \&quot;narrow\&quot;, \&quot;short\&quot;, or \&quot;long\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (!era.isNull()) {
</span><span class="cx">         if (era == &quot;narrow&quot;)
</span><span class="cx">             skeletonBuilder.appendLiteral(&quot;GGGGG&quot;);
</span><span class="lines">@@ -543,8 +525,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String year = intlStringOption(exec, options, vm.propertyNames-&gt;year, twoDigitNumeric, &quot;year must be \&quot;2-digit\&quot; or \&quot;numeric\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (!year.isNull()) {
</span><span class="cx">         if (year == &quot;2-digit&quot;)
</span><span class="cx">             skeletonBuilder.appendLiteral(&quot;yy&quot;);
</span><span class="lines">@@ -553,8 +534,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String month = intlStringOption(exec, options, vm.propertyNames-&gt;month, twoDigitNumericNarrowShortLong, &quot;month must be \&quot;2-digit\&quot;, \&quot;numeric\&quot;, \&quot;narrow\&quot;, \&quot;short\&quot;, or \&quot;long\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (!month.isNull()) {
</span><span class="cx">         if (month == &quot;2-digit&quot;)
</span><span class="cx">             skeletonBuilder.appendLiteral(&quot;MM&quot;);
</span><span class="lines">@@ -569,8 +549,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String day = intlStringOption(exec, options, vm.propertyNames-&gt;day, twoDigitNumeric, &quot;day must be \&quot;2-digit\&quot; or \&quot;numeric\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (!day.isNull()) {
</span><span class="cx">         if (day == &quot;2-digit&quot;)
</span><span class="cx">             skeletonBuilder.appendLiteral(&quot;dd&quot;);
</span><span class="lines">@@ -579,8 +558,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String hour = intlStringOption(exec, options, vm.propertyNames-&gt;hour, twoDigitNumeric, &quot;hour must be \&quot;2-digit\&quot; or \&quot;numeric\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // We need hour12 to make the hour skeleton pattern decision, so do this early.
</span><span class="cx">     // 32. Let hr12 be GetOption(options, &quot;hour12&quot;, &quot;boolean&quot;, undefined, undefined).
</span><span class="lines">@@ -587,8 +565,7 @@
</span><span class="cx">     bool isHour12Undefined;
</span><span class="cx">     bool hr12 = intlBooleanOption(exec, options, vm.propertyNames-&gt;hour12, isHour12Undefined);
</span><span class="cx">     // 33. ReturnIfAbrupt(hr12).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     if (!hour.isNull()) {
</span><span class="cx">         if (isHour12Undefined) {
</span><span class="lines">@@ -610,8 +587,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String minute = intlStringOption(exec, options, vm.propertyNames-&gt;minute, twoDigitNumeric, &quot;minute must be \&quot;2-digit\&quot; or \&quot;numeric\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (!minute.isNull()) {
</span><span class="cx">         if (minute == &quot;2-digit&quot;)
</span><span class="cx">             skeletonBuilder.appendLiteral(&quot;mm&quot;);
</span><span class="lines">@@ -620,8 +596,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String second = intlStringOption(exec, options, vm.propertyNames-&gt;second, twoDigitNumeric, &quot;second must be \&quot;2-digit\&quot; or \&quot;numeric\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (!second.isNull()) {
</span><span class="cx">         if (second == &quot;2-digit&quot;)
</span><span class="cx">             skeletonBuilder.appendLiteral(&quot;ss&quot;);
</span><span class="lines">@@ -630,8 +605,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String timeZoneName = intlStringOption(exec, options, vm.propertyNames-&gt;timeZoneName, shortLong, &quot;timeZoneName must be \&quot;short\&quot; or \&quot;long\&quot;&quot;, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (!timeZoneName.isNull()) {
</span><span class="cx">         if (timeZoneName == &quot;short&quot;)
</span><span class="cx">             skeletonBuilder.append('z');
</span><span class="lines">@@ -644,8 +618,7 @@
</span><span class="cx">     // 26. Let matcher be GetOption(options, &quot;formatMatcher&quot;, &quot;string&quot;, Â«&quot;basic&quot;, &quot;best fit&quot;», &quot;best fit&quot;).
</span><span class="cx">     intlStringOption(exec, options, vm.propertyNames-&gt;formatMatcher, { &quot;basic&quot;, &quot;best fit&quot; }, &quot;formatMatcher must be either \&quot;basic\&quot; or \&quot;best fit\&quot;&quot;, &quot;best fit&quot;);
</span><span class="cx">     // 27. ReturnIfAbrupt(matcher).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // Always use ICU date format generator, rather than our own pattern list and matcher.
</span><span class="cx">     // Covers steps 28-36.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2015 Andy VanWagoner (thetalecrafter@gmail.com)
</span><ins>+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -90,8 +91,7 @@
</span><span class="cx">     // 2. Let dateTimeFormat be OrdinaryCreateFromConstructor(newTarget, %DateTimeFormatPrototype%).
</span><span class="cx">     // 3. ReturnIfAbrupt(dateTimeFormat).
</span><span class="cx">     Structure* structure = InternalFunction::createSubclassStructure(state, state-&gt;newTarget(), jsCast&lt;IntlDateTimeFormatConstructor*&gt;(state-&gt;callee())-&gt;dateTimeFormatStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     IntlDateTimeFormat* dateTimeFormat = IntlDateTimeFormat::create(vm, structure);
</span><span class="cx">     ASSERT(dateTimeFormat);
</span><span class="cx"> 
</span><span class="lines">@@ -146,8 +146,7 @@
</span><span class="cx"> 
</span><span class="cx">     // 2. Let requestedLocales be CanonicalizeLocaleList(locales).
</span><span class="cx">     Vector&lt;String&gt; requestedLocales = canonicalizeLocaleList(*state, state-&gt;argument(0));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 3. Return SupportedLocales(availableLocales, requestedLocales, options).
</span><span class="cx">     return JSValue::encode(supportedLocales(*state, availableLocales, requestedLocales, state-&gt;argument(1)));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlDateTimeFormatPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlDateTimeFormatPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -101,8 +101,7 @@
</span><span class="cx">         // a. Let x be ToNumber(date).
</span><span class="cx">         value = date.toNumber(state);
</span><span class="cx">         // b. ReturnIfAbrupt(x).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 5. Return FormatDateTime(dtf, x).
</span><span class="lines">@@ -140,8 +139,7 @@
</span><span class="cx"> 
</span><span class="cx">         // c. Let bf be BoundFunctionCreate(F, Â«this value»).
</span><span class="cx">         boundFormat = JSBoundFunction::create(vm, state, globalObject, targetObject, dtf, boundArgs, 1, ASCIILiteral(&quot;format&quot;));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(JSValue());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         // d. Set dtf.[[boundFormat]] to bf.
</span><span class="cx">         dtf-&gt;setBoundFormat(vm, boundFormat);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlNumberFormatcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlNumberFormat.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -164,8 +164,7 @@
</span><span class="cx">     // 3. Let requestedLocales be CanonicalizeLocaleList(locales).
</span><span class="cx">     auto requestedLocales = canonicalizeLocaleList(state, locales);
</span><span class="cx">     // 4. ReturnIfAbrupt(requestedLocales).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // 5. If options is undefined, then
</span><span class="cx">     JSObject* options;
</span><span class="lines">@@ -176,8 +175,7 @@
</span><span class="cx">         // a. Let options be ToObject(options).
</span><span class="cx">         options = optionsValue.toObject(&amp;state);
</span><span class="cx">         // b. ReturnIfAbrupt(options).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 7. Let opt be a new Record.
</span><span class="lines">@@ -186,8 +184,7 @@
</span><span class="cx">     // 8. Let matcher be GetOption(options, &quot;localeMatcher&quot;, &quot;string&quot;, Â«&quot;lookup&quot;, &quot;best fit&quot;», &quot;best fit&quot;).
</span><span class="cx">     String matcher = intlStringOption(state, options, vm.propertyNames-&gt;localeMatcher, { &quot;lookup&quot;, &quot;best fit&quot; }, &quot;localeMatcher must be either \&quot;lookup\&quot; or \&quot;best fit\&quot;&quot;, &quot;best fit&quot;);
</span><span class="cx">     // 9. ReturnIfAbrupt(matcher).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 10. Set opt.[[localeMatcher]] to matcher.
</span><span class="cx">     opt.add(ASCIILiteral(&quot;localeMatcher&quot;), matcher);
</span><span class="cx"> 
</span><span class="lines">@@ -211,8 +208,7 @@
</span><span class="cx">     // 16. Let s be GetOption(options, &quot;style&quot;, &quot;string&quot;, Â« &quot;decimal&quot;, &quot;percent&quot;, &quot;currency&quot;», &quot;decimal&quot;).
</span><span class="cx">     String styleString = intlStringOption(state, options, Identifier::fromString(&amp;vm, &quot;style&quot;), { &quot;decimal&quot;, &quot;percent&quot;, &quot;currency&quot; }, &quot;style must be either \&quot;decimal\&quot;, \&quot;percent\&quot;, or \&quot;currency\&quot;&quot;, &quot;decimal&quot;);
</span><span class="cx">     // 17. ReturnIfAbrupt(s).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 18. Set numberFormat.[[style]] to s.
</span><span class="cx">     if (styleString == &quot;decimal&quot;)
</span><span class="cx">         m_style = Style::Decimal;
</span><span class="lines">@@ -226,8 +222,7 @@
</span><span class="cx">     // 19. Let c be GetOption(options, &quot;currency&quot;, &quot;string&quot;, undefined, undefined).
</span><span class="cx">     String currency = intlStringOption(state, options, Identifier::fromString(&amp;vm, &quot;currency&quot;), { }, nullptr, nullptr);
</span><span class="cx">     // 20. ReturnIfAbrupt(c).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 21. If c is not undefined, then
</span><span class="cx">     if (!currency.isNull()) {
</span><span class="cx">         // a. If the result of IsWellFormedCurrencyCode(c), is false, then throw a RangeError exception.
</span><span class="lines">@@ -257,8 +252,7 @@
</span><span class="cx">     // 24. Let cd be GetOption(options, &quot;currencyDisplay&quot;, &quot;string&quot;, Â«&quot;code&quot;, &quot;symbol&quot;, &quot;name&quot;», &quot;symbol&quot;).
</span><span class="cx">     String currencyDisplayString = intlStringOption(state, options, Identifier::fromString(&amp;vm, &quot;currencyDisplay&quot;), { &quot;code&quot;, &quot;symbol&quot;, &quot;name&quot; }, &quot;currencyDisplay must be either \&quot;code\&quot;, \&quot;symbol\&quot;, or \&quot;name\&quot;&quot;, &quot;symbol&quot;);
</span><span class="cx">     // 25. ReturnIfAbrupt(cd).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 26. If s is &quot;currency&quot;, set numberFormat.[[currencyDisplay]] to cd.
</span><span class="cx">     if (m_style == Style::Currency) {
</span><span class="cx">         if (currencyDisplayString == &quot;code&quot;)
</span><span class="lines">@@ -275,8 +269,7 @@
</span><span class="cx">     // 28. ReturnIfAbrupt(mnid).
</span><span class="cx">     // 29. Set numberFormat.[[minimumIntegerDigits]] to mnid.
</span><span class="cx">     unsigned minimumIntegerDigits = intlNumberOption(state, options, Identifier::fromString(&amp;vm, &quot;minimumIntegerDigits&quot;), 1, 21, 1);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     m_minimumIntegerDigits = minimumIntegerDigits;
</span><span class="cx"> 
</span><span class="cx">     // 30. If s is &quot;currency&quot;, let mnfdDefault be cDigits; else let mnfdDefault be 0.
</span><span class="lines">@@ -286,8 +279,7 @@
</span><span class="cx">     // 32. ReturnIfAbrupt(mnfd).
</span><span class="cx">     // 33. Set numberFormat.[[minimumFractionDigits]] to mnfd.
</span><span class="cx">     unsigned minimumFractionDigits = intlNumberOption(state, options, Identifier::fromString(&amp;vm, &quot;minimumFractionDigits&quot;), 0, 20, minimumFractionDigitsDefault);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     m_minimumFractionDigits = minimumFractionDigits;
</span><span class="cx"> 
</span><span class="cx">     // 34. If s is &quot;currency&quot;, let mxfdDefault be max(mnfd, cDigits);
</span><span class="lines">@@ -303,21 +295,18 @@
</span><span class="cx">     // 36. ReturnIfAbrupt(mxfd).
</span><span class="cx">     // 37. Set numberFormat.[[maximumFractionDigits]] to mxfd.
</span><span class="cx">     unsigned maximumFractionDigits = intlNumberOption(state, options, Identifier::fromString(&amp;vm, &quot;maximumFractionDigits&quot;), minimumFractionDigits, 20, maximumFractionDigitsDefault);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     m_maximumFractionDigits = maximumFractionDigits;
</span><span class="cx"> 
</span><span class="cx">     // 38. Let mnsd be Get(options, &quot;minimumSignificantDigits&quot;).
</span><span class="cx">     JSValue minimumSignificantDigitsValue = options-&gt;get(&amp;state, Identifier::fromString(&amp;vm, &quot;minimumSignificantDigits&quot;));
</span><span class="cx">     // 39. ReturnIfAbrupt(mnsd).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // 40. Let mxsd be Get(options, &quot;maximumSignificantDigits&quot;).
</span><span class="cx">     JSValue maximumSignificantDigitsValue = options-&gt;get(&amp;state, Identifier::fromString(&amp;vm, &quot;maximumSignificantDigits&quot;));
</span><span class="cx">     // 41. ReturnIfAbrupt(mxsd).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     // 42. If mnsd is not undefined or mxsd is not undefined, then
</span><span class="cx">     if (!minimumSignificantDigitsValue.isUndefined() || !maximumSignificantDigitsValue.isUndefined()) {
</span><span class="lines">@@ -324,13 +313,11 @@
</span><span class="cx">         // a. Let mnsd be GetNumberOption(options, &quot;minimumSignificantDigits&quot;, 1, 21, 1).
</span><span class="cx">         unsigned minimumSignificantDigits = intlNumberOption(state, options, Identifier::fromString(&amp;vm, &quot;minimumSignificantDigits&quot;), 1, 21, 1);
</span><span class="cx">         // b. ReturnIfAbrupt(mnsd).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         // c. Let mxsd be GetNumberOption(options, &quot;maximumSignificantDigits&quot;, mnsd, 21, 21).
</span><span class="cx">         unsigned maximumSignificantDigits = intlNumberOption(state, options, Identifier::fromString(&amp;vm, &quot;maximumSignificantDigits&quot;), minimumSignificantDigits, 21, 21);
</span><span class="cx">         // d. ReturnIfAbrupt(mxsd).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         // e. Set numberFormat.[[minimumSignificantDigits]] to mnsd.
</span><span class="cx">         m_minimumSignificantDigits = minimumSignificantDigits;
</span><span class="cx">         // f. Set numberFormat.[[maximumSignificantDigits]] to mxsd.
</span><span class="lines">@@ -343,8 +330,7 @@
</span><span class="cx">     if (usesFallback)
</span><span class="cx">         useGrouping = true;
</span><span class="cx">     // 44. ReturnIfAbrupt(g).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     // 45. Set numberFormat.[[useGrouping]] to g.
</span><span class="cx">     m_useGrouping = useGrouping;
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlNumberFormatConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlNumberFormatConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2015 Andy VanWagoner (thetalecrafter@gmail.com)
</span><ins>+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -90,8 +91,7 @@
</span><span class="cx">     // 2. Let numberFormat be OrdinaryCreateFromConstructor(newTarget, %NumberFormatPrototype%).
</span><span class="cx">     // 3. ReturnIfAbrupt(numberFormat).
</span><span class="cx">     Structure* structure = InternalFunction::createSubclassStructure(state, state-&gt;newTarget(), jsCast&lt;IntlNumberFormatConstructor*&gt;(state-&gt;callee())-&gt;numberFormatStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     IntlNumberFormat* numberFormat = IntlNumberFormat::create(vm, structure);
</span><span class="cx">     ASSERT(numberFormat);
</span><span class="cx"> 
</span><span class="lines">@@ -146,8 +146,7 @@
</span><span class="cx"> 
</span><span class="cx">     // 2. Let requestedLocales be CanonicalizeLocaleList(locales).
</span><span class="cx">     Vector&lt;String&gt; requestedLocales = canonicalizeLocaleList(*state, state-&gt;argument(0));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 3. Return SupportedLocales(availableLocales, requestedLocales, options).
</span><span class="cx">     return JSValue::encode(supportedLocales(*state, availableLocales, requestedLocales, state-&gt;argument(1)));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlNumberFormatPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlNumberFormatPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -91,8 +91,7 @@
</span><span class="cx">     // 4. Let x be ToNumber(value).
</span><span class="cx">     double number = state-&gt;argument(0).toNumber(state);
</span><span class="cx">     // 5. ReturnIfAbrupt(x).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 6. Return FormatNumber(nf, x).
</span><span class="cx">     return JSValue::encode(numberFormat-&gt;formatNumber(*state, number));
</span><span class="lines">@@ -128,8 +127,7 @@
</span><span class="cx"> 
</span><span class="cx">         // c. Let bf be BoundFunctionCreate(F, Â«this value»).
</span><span class="cx">         boundFormat = JSBoundFunction::create(vm, state, globalObject, targetObject, nf, boundArgs, 1, ASCIILiteral(&quot;format&quot;));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(JSValue());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         // d. Set nf.[[boundFormat]] to bf.
</span><span class="cx">         nf-&gt;setBoundFormat(vm, boundFormat);
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -134,15 +134,13 @@
</span><span class="cx">     JSObject* opts = options.toObject(&amp;state);
</span><span class="cx"> 
</span><span class="cx">     // 2. ReturnIfAbrupt(opts).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     // 3. Let value be Get(opts, property).
</span><span class="cx">     JSValue value = opts-&gt;get(&amp;state, property);
</span><span class="cx"> 
</span><span class="cx">     // 4. ReturnIfAbrupt(value).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     // 5. If value is not undefined, then
</span><span class="cx">     if (!value.isUndefined()) {
</span><span class="lines">@@ -176,15 +174,13 @@
</span><span class="cx">     JSObject* opts = options.toObject(&amp;state);
</span><span class="cx"> 
</span><span class="cx">     // 2. ReturnIfAbrupt(opts).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return { };
</del><ins>+    RETURN_IF_EXCEPTION(scope, String());
</ins><span class="cx"> 
</span><span class="cx">     // 3. Let value be Get(opts, property).
</span><span class="cx">     JSValue value = opts-&gt;get(&amp;state, property);
</span><span class="cx"> 
</span><span class="cx">     // 4. ReturnIfAbrupt(value).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return { };
</del><ins>+    RETURN_IF_EXCEPTION(scope, String());
</ins><span class="cx"> 
</span><span class="cx">     // 5. If value is not undefined, then
</span><span class="cx">     if (!value.isUndefined()) {
</span><span class="lines">@@ -196,8 +192,7 @@
</span><span class="cx">         String stringValue = value.toWTFString(&amp;state);
</span><span class="cx"> 
</span><span class="cx">         // ii. ReturnIfAbrupt(value).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return { };
</del><ins>+        RETURN_IF_EXCEPTION(scope, String());
</ins><span class="cx"> 
</span><span class="cx">         // d. If values is not undefined, then
</span><span class="cx">         // i. If values does not contain an element equal to value, throw a RangeError exception.
</span><span class="lines">@@ -224,15 +219,13 @@
</span><span class="cx">     JSObject* opts = options.toObject(&amp;state);
</span><span class="cx"> 
</span><span class="cx">     // 2. ReturnIfAbrupt(opts).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx"> 
</span><span class="cx">     // 3. Let value be Get(opts, property).
</span><span class="cx">     JSValue value = opts-&gt;get(&amp;state, property);
</span><span class="cx"> 
</span><span class="cx">     // 4. ReturnIfAbrupt(value).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx"> 
</span><span class="cx">     // 5. If value is not undefined, then
</span><span class="cx">     if (!value.isUndefined()) {
</span><span class="lines">@@ -239,8 +232,7 @@
</span><span class="cx">         // a. Let value be ToNumber(value).
</span><span class="cx">         double doubleValue = value.toNumber(&amp;state);
</span><span class="cx">         // b. ReturnIfAbrupt(value).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return 0;
</del><ins>+        RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx">         // 1. If value is NaN or less than minimum or greater than maximum, throw a RangeError exception.
</span><span class="cx">         if (!(doubleValue &gt;= minimum &amp;&amp; doubleValue &lt;= maximum)) {
</span><span class="cx">             throwException(&amp;state, scope, createRangeError(&amp;state, *property.publicName() + &quot; is out of range&quot;));
</span><span class="lines">@@ -560,17 +552,14 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 5. ReturnIfAbrupt(O).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return Vector&lt;String&gt;();
</del><ins>+    RETURN_IF_EXCEPTION(scope, Vector&lt;String&gt;());
</ins><span class="cx"> 
</span><span class="cx">     // 6. Let len be ToLength(Get(O, &quot;length&quot;)).
</span><span class="cx">     JSValue lengthProperty = localesObject-&gt;get(&amp;state, vm.propertyNames-&gt;length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return Vector&lt;String&gt;();
</del><ins>+    RETURN_IF_EXCEPTION(scope, Vector&lt;String&gt;());
</ins><span class="cx"> 
</span><span class="cx">     double length = lengthProperty.toLength(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return Vector&lt;String&gt;();
</del><ins>+    RETURN_IF_EXCEPTION(scope, Vector&lt;String&gt;());
</ins><span class="cx"> 
</span><span class="cx">     // Keep track of locales that have been added to the list.
</span><span class="cx">     HashSet&lt;String&gt; seenSet;
</span><span class="lines">@@ -585,8 +574,7 @@
</span><span class="cx">         bool kPresent = localesObject-&gt;hasProperty(&amp;state, k);
</span><span class="cx"> 
</span><span class="cx">         // c. ReturnIfAbrupt(kPresent).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return Vector&lt;String&gt;();
</del><ins>+        RETURN_IF_EXCEPTION(scope, Vector&lt;String&gt;());
</ins><span class="cx"> 
</span><span class="cx">         // d. If kPresent is true, then
</span><span class="cx">         if (kPresent) {
</span><span class="lines">@@ -594,8 +582,7 @@
</span><span class="cx">             JSValue kValue = localesObject-&gt;get(&amp;state, k);
</span><span class="cx"> 
</span><span class="cx">             // ii. ReturnIfAbrupt(kValue).
</span><del>-            if (UNLIKELY(scope.exception()))
-                return Vector&lt;String&gt;();
</del><ins>+            RETURN_IF_EXCEPTION(scope, Vector&lt;String&gt;());
</ins><span class="cx"> 
</span><span class="cx">             // iii. If Type(kValue) is not String or Object, throw a TypeError exception.
</span><span class="cx">             if (!kValue.isString() &amp;&amp; !kValue.isObject()) {
</span><span class="lines">@@ -607,8 +594,7 @@
</span><span class="cx">             JSString* tag = kValue.toString(&amp;state);
</span><span class="cx"> 
</span><span class="cx">             // v. ReturnIfAbrupt(tag).
</span><del>-            if (UNLIKELY(scope.exception()))
-                return Vector&lt;String&gt;();
</del><ins>+            RETURN_IF_EXCEPTION(scope, Vector&lt;String&gt;());
</ins><span class="cx"> 
</span><span class="cx">             // vi. If IsStructurallyValidLanguageTag(tag) is false, throw a RangeError exception.
</span><span class="cx">             // vii. Let canonicalizedTag be CanonicalizeLanguageTag(tag).
</span><span class="lines">@@ -945,8 +931,7 @@
</span><span class="cx">         // a. Let matcher be GetOption(options, &quot;localeMatcher&quot;, &quot;string&quot;, Â« &quot;lookup&quot;, &quot;best fit&quot; Â», &quot;best fit&quot;).
</span><span class="cx">         matcher = intlStringOption(state, options, vm.propertyNames-&gt;localeMatcher, { &quot;lookup&quot;, &quot;best fit&quot; }, &quot;localeMatcher must be either \&quot;lookup\&quot; or \&quot;best fit\&quot;&quot;, &quot;best fit&quot;);
</span><span class="cx">         // b. ReturnIfAbrupt(matcher).
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     } else {
</span><span class="cx">         // 2. Else, let matcher be &quot;best fit&quot;.
</span><span class="cx">         matcher = ASCIILiteral(&quot;best fit&quot;);
</span><span class="lines">@@ -965,8 +950,7 @@
</span><span class="cx">         supportedLocales = lookupSupportedLocales(state, availableLocales, requestedLocales);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 6. Let subset be CreateArrayFromList(supportedLocales).
</span><span class="cx">     // Already an array.
</span><span class="lines">@@ -974,8 +958,7 @@
</span><span class="cx">     // 7. Let keys be subset.[[OwnPropertyKeys]]().
</span><span class="cx">     PropertyNameArray keys(&amp;state, PropertyNameMode::Strings);
</span><span class="cx">     supportedLocales-&gt;getOwnPropertyNames(supportedLocales, &amp;state, keys, EnumerationMode());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     PropertyDescriptor desc;
</span><span class="cx">     desc.setConfigurable(false);
</span><span class="lines">@@ -991,8 +974,7 @@
</span><span class="cx">         supportedLocales-&gt;defineOwnProperty(supportedLocales, &amp;state, keys[i], desc, true);
</span><span class="cx"> 
</span><span class="cx">         // c. Assert: status is not abrupt completion.
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 9. Return subset.
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIntlObjectInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IntlObjectInlines.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IntlObjectInlines.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IntlObjectInlines.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -46,12 +46,10 @@
</span><span class="cx">         JSValue prototype = callee-&gt;getDirect(vm, vm.propertyNames-&gt;prototype);
</span><span class="cx">         if (JSObject::defaultHasInstance(&amp;state, thisValue, prototype)) {
</span><span class="cx">             JSObject* thisObject = thisValue.toObject(&amp;state);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return jsUndefined();
</del><ins>+            RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">             IntlInstance* instance = factory(vm);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return jsUndefined();
</del><ins>+            RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">             thisObject-&gt;putDirect(vm, vm.propertyNames-&gt;builtinNames().intlSubstituteValuePrivateName(), instance);
</span><span class="cx">             return thisObject;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIteratorOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IteratorOperations.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IteratorOperations.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IteratorOperations.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -41,8 +41,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue nextFunction = iterator.get(exec, vm.propertyNames-&gt;next);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     CallData nextFunctionCallData;
</span><span class="cx">     CallType nextFunctionCallType = getCallData(nextFunction, nextFunctionCallData);
</span><span class="lines">@@ -53,8 +52,7 @@
</span><span class="cx">     if (!value.isEmpty())
</span><span class="cx">         nextFunctionArguments.append(value);
</span><span class="cx">     JSValue result = call(exec, nextFunction, nextFunctionCallType, nextFunctionCallData, iterator, nextFunctionArguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!result.isObject())
</span><span class="cx">         return throwTypeError(exec, scope, ASCIILiteral(&quot;Iterator result interface is not an object.&quot;));
</span><span class="lines">@@ -84,11 +82,9 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue result = iteratorNext(exec, iterator);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     bool done = iteratorComplete(exec, result);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     if (done)
</span><span class="cx">         return jsBoolean(false);
</span><span class="cx">     return result;
</span><span class="lines">@@ -106,8 +102,7 @@
</span><span class="cx">         catchScope.clearException();
</span><span class="cx">     }
</span><span class="cx">     JSValue returnFunction = iterator.get(exec, vm.propertyNames-&gt;returnKeyword);
</span><del>-    if (UNLIKELY(throwScope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(throwScope, void());
</ins><span class="cx"> 
</span><span class="cx">     if (returnFunction.isUndefined()) {
</span><span class="cx">         if (exception)
</span><span class="lines">@@ -133,8 +128,7 @@
</span><span class="cx">         return;
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(throwScope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(throwScope, void());
</ins><span class="cx"> 
</span><span class="cx">     if (!innerResult.isObject()) {
</span><span class="cx">         throwTypeError(exec, throwScope, ASCIILiteral(&quot;Iterator result interface is not an object.&quot;));
</span><span class="lines">@@ -171,8 +165,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     
</span><span class="cx">     JSValue iteratorFunction = iterable.get(state, state-&gt;propertyNames().iteratorSymbol);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     
</span><span class="cx">     CallData iteratorFunctionCallData;
</span><span class="cx">     CallType iteratorFunctionCallType = getCallData(iteratorFunction, iteratorFunctionCallData);
</span><span class="lines">@@ -183,8 +176,7 @@
</span><span class="cx"> 
</span><span class="cx">     ArgList iteratorFunctionArguments;
</span><span class="cx">     JSValue iterator = call(state, iteratorFunction, iteratorFunctionCallType, iteratorFunctionCallData, iterable, iteratorFunctionArguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!iterator.isObject()) {
</span><span class="cx">         throwTypeError(state, scope);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeIteratorOperationsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/IteratorOperations.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/IteratorOperations.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/IteratorOperations.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
</span><ins>+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -51,8 +52,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue iterator = iteratorForIterable(state, iterable);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     while (true) {
</span><span class="cx">         JSValue next = iteratorStep(state, iterator);
</span><span class="cx">         if (next.isFalse() || UNLIKELY(scope.exception()))
</span><span class="lines">@@ -59,8 +59,7 @@
</span><span class="cx">             return;
</span><span class="cx"> 
</span><span class="cx">         JSValue nextValue = iteratorValue(state, next);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">         callback(vm, state, nextValue);
</span><span class="cx">         if (UNLIKELY(scope.exception())) {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArraycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArray.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArray.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSArray.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -653,8 +653,7 @@
</span><span class="cx">     unsigned index = getArrayLength() - 1;
</span><span class="cx">     // Let element be the result of calling the [[Get]] internal method of O with argument indx.
</span><span class="cx">     JSValue element = get(exec, index);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     // Call the [[Delete]] internal method of O with arguments indx and true.
</span><span class="cx">     if (!deletePropertyByIndex(this, exec, index)) {
</span><span class="cx">         throwTypeError(exec, scope, ASCIILiteral(&quot;Unable to delete property.&quot;));
</span><span class="lines">@@ -1323,8 +1322,7 @@
</span><span class="cx">     
</span><span class="cx">     for (; i &lt; length; ++i) {
</span><span class="cx">         exec-&gt;r(firstElementDest + i - offset) = get(exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBufferConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -88,8 +88,7 @@
</span><span class="cx">     unsigned length;
</span><span class="cx">     if (exec-&gt;argumentCount()) {
</span><span class="cx">         length = exec-&gt;uncheckedArgument(0).toUInt32(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     } else {
</span><span class="cx">         // Although the documentation doesn't say so, it is in fact correct to say
</span><span class="cx">         // &quot;new ArrayBuffer()&quot;. The result is the same as allocating an array buffer
</span><span class="lines">@@ -102,8 +101,7 @@
</span><span class="cx">         return JSValue::encode(throwOutOfMemoryError(exec, scope));
</span><span class="cx"> 
</span><span class="cx">     Structure* arrayBufferStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), constructor-&gt;globalObject()-&gt;arrayBufferStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSArrayBuffer* result = JSArrayBuffer::create(vm, arrayBufferStructure, WTFMove(buffer));
</span><span class="cx">     
</span><span class="cx">     return JSValue::encode(result);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayBufferPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayBufferPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -50,14 +50,12 @@
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;Slice requires at least one argument.&quot;));
</span><span class="cx">     
</span><span class="cx">     int32_t begin = exec-&gt;argument(0).toInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     
</span><span class="cx">     int32_t end;
</span><span class="cx">     if (exec-&gt;argumentCount() &gt;= 2) {
</span><span class="cx">         end = exec-&gt;uncheckedArgument(1).toInt32(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     } else
</span><span class="cx">         end = thisObject-&gt;impl()-&gt;byteLength();
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSArrayInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSArrayInlines.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSArrayInlines.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSArrayInlines.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -76,8 +76,7 @@
</span><span class="cx">         return jsCast&lt;JSArray*&gt;(obj)-&gt;length();
</span><span class="cx"> 
</span><span class="cx">     JSValue lengthValue = obj-&gt;get(exec, vm.propertyNames-&gt;length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return UINT_MAX;
</del><ins>+    RETURN_IF_EXCEPTION(scope, UINT_MAX);
</ins><span class="cx">     return lengthValue.toUInt32(exec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -89,8 +88,7 @@
</span><span class="cx">         return jsCast&lt;JSArray*&gt;(obj)-&gt;length();
</span><span class="cx"> 
</span><span class="cx">     JSValue lengthValue = obj-&gt;get(exec, vm.propertyNames-&gt;length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return PNaN;
</del><ins>+    RETURN_IF_EXCEPTION(scope, PNaN);
</ins><span class="cx">     return lengthValue.toLength(exec);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSBoundFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSBoundFunction.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -128,8 +128,7 @@
</span><span class="cx"> {
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue prototype = targetFunction-&gt;getPrototype(vm, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     JSFunction* targetJSFunction = jsDynamicCast&lt;JSFunction*&gt;(targetFunction);
</span><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="lines">@@ -172,8 +171,7 @@
</span><span class="cx">         canConstruct ? (slowCase ? boundFunctionConstruct : boundThisNoArgsFunctionConstruct) : callHostFunctionAsConstructor,
</span><span class="cx">         name);
</span><span class="cx">     Structure* structure = getBoundFunctionStructure(vm, exec, globalObject, targetFunction);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     JSBoundFunction* function = new (NotNull, allocateCell&lt;JSBoundFunction&gt;(vm.heap)) JSBoundFunction(vm, globalObject, structure, targetFunction, boundThis, boundArgs);
</span><span class="cx"> 
</span><span class="cx">     function-&gt;finishCreation(vm, executable, length);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCJSValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSCJSValue.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -192,8 +192,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         prototype = obj-&gt;getPrototype(vm, exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         if (prototype.isNull())
</span><span class="cx">             break;
</span><span class="cx">     }
</span><span class="lines">@@ -381,12 +380,10 @@
</span><span class="cx"> 
</span><span class="cx">     ASSERT(isCell());
</span><span class="cx">     JSValue value = asCell()-&gt;toPrimitive(exec, PreferString);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return errorValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, errorValue());
</ins><span class="cx">     ASSERT(!value.isObject());
</span><span class="cx">     JSString* result = value.toString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return errorValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, errorValue());
</ins><span class="cx">     return result;
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSCJSValueInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSCJSValueInlines.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -642,8 +642,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     StringImpl* hintString = jsCast&lt;JSString*&gt;(value)-&gt;value(exec).impl();
</span><del>-    if (UNLIKELY(scope.exception()))
-        return NoPreference;
</del><ins>+    RETURN_IF_EXCEPTION(scope, NoPreference);
</ins><span class="cx"> 
</span><span class="cx">     if (WTF::equal(hintString, &quot;default&quot;))
</span><span class="cx">         return NoPreference;
</span><span class="lines">@@ -786,8 +785,7 @@
</span><span class="cx"> {
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(exec-&gt;vm());
</span><span class="cx">     bool found = getPropertySlot(exec, propertyName, slot);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return { };
</del><ins>+    RETURN_IF_EXCEPTION(scope, { });
</ins><span class="cx">     return callback(found, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -926,8 +924,7 @@
</span><span class="cx">             if (v2.isObject())
</span><span class="cx">                 return v1 == v2;
</span><span class="cx">             JSValue p1 = v1.toPrimitive(exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">             v1 = p1;
</span><span class="cx">             if (v1.isInt32() &amp;&amp; v2.isInt32())
</span><span class="cx">                 return v1 == v2;
</span><span class="lines">@@ -936,8 +933,7 @@
</span><span class="cx"> 
</span><span class="cx">         if (v2.isObject()) {
</span><span class="cx">             JSValue p2 = v2.toPrimitive(exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">             v2 = p2;
</span><span class="cx">             if (v1.isInt32() &amp;&amp; v2.isInt32())
</span><span class="cx">                 return v1 == v2;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSDataViewPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSDataViewPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -133,15 +133,13 @@
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;Need at least one argument (the byteOffset)&quot;));
</span><span class="cx">     
</span><span class="cx">     unsigned byteOffset = exec-&gt;uncheckedArgument(0).toUInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     
</span><span class="cx">     bool littleEndian = false;
</span><span class="cx">     unsigned elementSize = sizeof(typename Adaptor::Type);
</span><span class="cx">     if (elementSize &gt; 1 &amp;&amp; exec-&gt;argumentCount() &gt;= 2) {
</span><span class="cx">         littleEndian = exec-&gt;uncheckedArgument(1).toBoolean(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     unsigned byteLength = dataView-&gt;length();
</span><span class="lines">@@ -181,8 +179,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;Need at least two argument (the byteOffset and value)&quot;));
</span><span class="cx">     
</span><span class="cx">     unsigned byteOffset = exec-&gt;uncheckedArgument(0).toUInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     const unsigned dataSize = sizeof(typename Adaptor::Type);
</span><span class="cx">     union {
</span><span class="lines">@@ -191,15 +188,13 @@
</span><span class="cx">     } u;
</span><span class="cx"> 
</span><span class="cx">     u.value = toNativeFromValue&lt;Adaptor&gt;(exec, exec-&gt;uncheckedArgument(1));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     
</span><span class="cx">     bool littleEndian = false;
</span><span class="cx">     unsigned elementSize = sizeof(typename Adaptor::Type);
</span><span class="cx">     if (elementSize &gt; 1 &amp;&amp; exec-&gt;argumentCount() &gt;= 3) {
</span><span class="cx">         littleEndian = exec-&gt;uncheckedArgument(2).toBoolean(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx">     
</span><span class="cx">     unsigned byteLength = dataView-&gt;length();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSFunctioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSFunction.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSFunction.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -612,11 +612,9 @@
</span><span class="cx">             name = makeString('[', String(&amp;uid), ']');
</span><span class="cx">     } else {
</span><span class="cx">         JSString* jsStr = value.toString(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         name = jsStr-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     }
</span><span class="cx">     reifyName(vm, exec, name);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayView.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -174,8 +174,7 @@
</span><span class="cx">         auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">         typename Adaptor::Type value = toNativeFromValue&lt;Adaptor&gt;(exec, jsValue);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">         if (isNeutered()) {
</span><span class="cx">             throwTypeError(exec, scope, typedArrayBufferHasBeenDetachedErrorMessage);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewConstructorInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewConstructorInlines.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -89,24 +89,20 @@
</span><span class="cx">     MarkedArgumentBuffer storage;
</span><span class="cx">     while (true) {
</span><span class="cx">         JSValue next = iteratorStep(exec, iterator);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">         if (next.isFalse())
</span><span class="cx">             break;
</span><span class="cx"> 
</span><span class="cx">         JSValue nextItem = iteratorValue(exec, next);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">         storage.append(nextItem);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ViewClass* result = ViewClass::createUninitialized(exec, structure, storage.size());
</span><del>-    if (!result) {
-        ASSERT(scope.exception());
-        return nullptr;
-    }
</del><ins>+    if (!result)
+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; storage.size(); ++i) {
</span><span class="cx">         if (!result-&gt;setIndex(exec, i, storage.at(i))) {
</span><span class="lines">@@ -162,8 +158,7 @@
</span><span class="cx">             object-&gt;getPropertySlot(exec, vm.propertyNames-&gt;length, lengthSlot);
</span><span class="cx"> 
</span><span class="cx">             JSValue iteratorFunc = object-&gt;get(exec, vm.propertyNames-&gt;iteratorSymbol);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return nullptr;
</del><ins>+            RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">             // We would like not use the iterator as it is painfully slow. Fortunately, unless
</span><span class="cx">             // 1) The iterator is not a known iterator.
</span><span class="lines">@@ -183,15 +178,13 @@
</span><span class="cx"> 
</span><span class="cx">                     ArgList arguments;
</span><span class="cx">                     JSValue iterator = call(exec, iteratorFunc, callType, callData, object, arguments);
</span><del>-                    if (UNLIKELY(scope.exception()))
-                        return nullptr;
</del><ins>+                    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">                     return constructGenericTypedArrayViewFromIterator&lt;ViewClass&gt;(exec, structure, iterator);
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             length = lengthSlot.isUnset() ? 0 : lengthSlot.getValue(exec, vm.propertyNames-&gt;length).toUInt32(exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return nullptr;
</del><ins>+            RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         
</span><span class="lines">@@ -235,8 +228,7 @@
</span><span class="cx">     InternalFunction* function = asInternalFunction(exec-&gt;callee());
</span><span class="cx">     Structure* parentStructure = function-&gt;globalObject()-&gt;typedArrayStructure(ViewClass::TypedArrayStorageType);
</span><span class="cx">     Structure* structure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), parentStructure);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     size_t argCount = exec-&gt;argumentCount();
</span><span class="cx"> 
</span><span class="lines">@@ -252,13 +244,11 @@
</span><span class="cx">     Optional&lt;unsigned&gt; length = Nullopt;
</span><span class="cx">     if (jsDynamicCast&lt;JSArrayBuffer*&gt;(firstValue) &amp;&amp; argCount &gt; 1) {
</span><span class="cx">         offset = exec-&gt;uncheckedArgument(1).toUInt32(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (argCount &gt; 2) {
</span><span class="cx">             length = exec-&gt;uncheckedArgument(2).toUInt32(exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGenericTypedArrayViewPrototypeFunctionsh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -51,8 +51,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue constructor = exemplar-&gt;get(exec, exec-&gt;propertyNames().constructor);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     if (constructor.isUndefined())
</span><span class="cx">         return defaultConstructor();
</span><span class="lines">@@ -62,15 +61,13 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSValue species = constructor.get(exec, exec-&gt;propertyNames().speciesSymbol);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     if (species.isUndefinedOrNull())
</span><span class="cx">         return defaultConstructor();
</span><span class="cx"> 
</span><span class="cx">     JSValue result = construct(exec, species, args, &quot;species is not a constructor&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     if (JSArrayBufferView* view = jsDynamicCast&lt;JSArrayBufferView*&gt;(result)) {
</span><span class="cx">         if (!view-&gt;isNeutered())
</span><span class="lines">@@ -112,8 +109,7 @@
</span><span class="cx">     unsigned offset;
</span><span class="cx">     if (exec-&gt;argumentCount() &gt;= 2) {
</span><span class="cx">         double offsetNumber = exec-&gt;uncheckedArgument(1).toInteger(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (UNLIKELY(offsetNumber &lt; 0))
</span><span class="cx">             return throwVMRangeError(exec, scope, &quot;Offset should not be negative&quot;);
</span><span class="cx">         offset = static_cast&lt;unsigned&gt;(std::min(offsetNumber, static_cast&lt;double&gt;(std::numeric_limits&lt;unsigned&gt;::max())));
</span><span class="lines">@@ -137,8 +133,7 @@
</span><span class="cx">     } else
</span><span class="cx">         length = sourceArray-&gt;get(exec, vm.propertyNames-&gt;length).toUInt32(exec);
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     thisObject-&gt;set(exec, offset, sourceArray, 0, length, CopyType::Unobservable);
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="lines">@@ -156,14 +151,11 @@
</span><span class="cx"> 
</span><span class="cx">     long length = thisObject-&gt;length();
</span><span class="cx">     long to = argumentClampedIndexFromStartOrEnd(exec, 0, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return encodedJSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     long from = argumentClampedIndexFromStartOrEnd(exec, 1, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return encodedJSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     long final = argumentClampedIndexFromStartOrEnd(exec, 2, length, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return encodedJSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (final &lt; from)
</span><span class="cx">         return JSValue::encode(exec-&gt;thisValue());
</span><span class="lines">@@ -196,8 +188,7 @@
</span><span class="cx">     JSValue valueToFind = exec-&gt;argument(0);
</span><span class="cx"> 
</span><span class="cx">     unsigned index = argumentClampedIndexFromStartOrEnd(exec, 1, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (thisObject-&gt;isNeutered())
</span><span class="cx">         return throwVMTypeError(exec, scope, typedArrayBufferHasBeenDetachedErrorMessage);
</span><span class="lines">@@ -242,8 +233,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue valueToFind = exec-&gt;argument(0);
</span><span class="cx">     unsigned index = argumentClampedIndexFromStartOrEnd(exec, 1, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return encodedJSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (thisObject-&gt;isNeutered())
</span><span class="cx">         return throwVMTypeError(exec, scope, typedArrayBufferHasBeenDetachedErrorMessage);
</span><span class="lines">@@ -278,12 +268,10 @@
</span><span class="cx">         unsigned length = thisObject-&gt;length();
</span><span class="cx"> 
</span><span class="cx">         JSStringJoiner joiner(*exec, separator, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         for (unsigned i = 0; i &lt; length; i++) {
</span><span class="cx">             joiner.append(*exec, thisObject-&gt;getIndexQuickly(i));
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         }
</span><span class="cx">         return JSValue::encode(joiner.join(*exec));
</span><span class="cx">     };
</span><span class="lines">@@ -295,8 +283,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSString* separatorString = separatorValue.toString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (thisObject-&gt;isNeutered())
</span><span class="cx">         return throwVMTypeError(exec, scope, typedArrayBufferHasBeenDetachedErrorMessage);
</span><span class="lines">@@ -333,8 +320,7 @@
</span><span class="cx">             index = static_cast&lt;unsigned&gt;(fromDouble);
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (thisObject-&gt;isNeutered())
</span><span class="cx">         return throwVMTypeError(exec, scope, typedArrayBufferHasBeenDetachedErrorMessage);
</span><span class="lines">@@ -439,11 +425,9 @@
</span><span class="cx">     unsigned thisLength = thisObject-&gt;length();
</span><span class="cx"> 
</span><span class="cx">     unsigned begin = argumentClampedIndexFromStartOrEnd(exec, 0, thisLength);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return encodedJSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     unsigned end = argumentClampedIndexFromStartOrEnd(exec, 1, thisLength, thisLength);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return encodedJSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (thisObject-&gt;isNeutered())
</span><span class="cx">         return throwVMTypeError(exec, scope, typedArrayBufferHasBeenDetachedErrorMessage);
</span><span class="lines">@@ -461,8 +445,7 @@
</span><span class="cx">         Structure* structure = callee-&gt;globalObject()-&gt;typedArrayStructure(ViewClass::TypedArrayStorageType);
</span><span class="cx">         return ViewClass::createUninitialized(exec, structure, length);
</span><span class="cx">     });
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(!result-&gt;isNeutered());
</span><span class="cx">     if (thisObject-&gt;isNeutered())
</span><span class="lines">@@ -565,8 +548,7 @@
</span><span class="cx">     args.append(jsNumber(length));
</span><span class="cx"> 
</span><span class="cx">     JSObject* result = construct(exec, species, args, &quot;species is not a constructor&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (jsDynamicCast&lt;JSArrayBufferView*&gt;(result))
</span><span class="cx">         return JSValue::encode(result);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjecth"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObject.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -816,8 +816,7 @@
</span><span class="cx">         structure = globalObject-&gt;arrayStructureForIndexingTypeDuringAllocation(exec, ArrayWithArrayStorage, newTarget);
</span><span class="cx">     else
</span><span class="cx">         structure = globalObject-&gt;arrayStructureForProfileDuringAllocation(exec, profile, newTarget);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     return ArrayAllocationProfile::updateLastAllocationFor(profile, JSArray::create(exec-&gt;vm(), structure, initialLength));
</span><span class="cx"> }
</span><span class="lines">@@ -832,8 +831,7 @@
</span><span class="cx">     VM&amp; vm = globalObject-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     Structure* structure = globalObject-&gt;arrayStructureForProfileDuringAllocation(exec, profile, newTarget);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     return ArrayAllocationProfile::updateLastAllocationFor(profile, constructArray(exec, structure, values));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -847,8 +845,7 @@
</span><span class="cx">     VM&amp; vm = globalObject-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     Structure* structure = globalObject-&gt;arrayStructureForProfileDuringAllocation(exec, profile, newTarget);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     return ArrayAllocationProfile::updateLastAllocationFor(profile, constructArray(exec, structure, values, length));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -862,8 +859,7 @@
</span><span class="cx">     VM&amp; vm = globalObject-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     Structure* structure = globalObject-&gt;arrayStructureForProfileDuringAllocation(exec, profile, newTarget);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     return ArrayAllocationProfile::updateLastAllocationFor(profile, constructArrayNegativeIndexed(exec, structure, values, length));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSGlobalObjectFunctionscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSGlobalObjectFunctions.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -660,8 +660,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String s = x.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (s.is8Bit()) {
</span><span class="cx">         LiteralParser&lt;LChar&gt; preparser(exec, s.characters8(), s.length(), NonStrictJSON);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSModuleRecordcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSModuleRecord.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -778,8 +778,7 @@
</span><span class="cx">         JSModuleRecord* importedModule = hostResolveImportedModule(exec, importEntry.moduleRequest);
</span><span class="cx">         if (importEntry.isNamespace(vm)) {
</span><span class="cx">             JSModuleNamespaceObject* namespaceObject = importedModule-&gt;getModuleNamespace(exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return;
</del><ins>+            RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">             bool putResult = false;
</span><span class="cx">             symbolTablePutTouchWatchpointSet(moduleEnvironment, exec, importEntry.localName, namespaceObject, /* shouldThrowReadOnlyError */ false, /* ignoreReadOnlyErrors */ true, putResult);
</span><span class="cx">         } else {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSONObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSONObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSONObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSONObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -253,8 +253,7 @@
</span><span class="cx">     VM&amp; vm = m_exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* object = constructEmptyObject(m_exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return Local&lt;Unknown&gt;(vm, jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, Local&lt;Unknown&gt;(vm, jsNull()));
</ins><span class="cx"> 
</span><span class="cx">     PropertyNameForFunctionCall emptyPropertyName(vm.propertyNames-&gt;emptyIdentifier);
</span><span class="cx">     object-&gt;putDirect(vm, vm.propertyNames-&gt;emptyIdentifier, value.get());
</span><span class="lines">@@ -262,8 +261,7 @@
</span><span class="cx">     StringBuilder result;
</span><span class="cx">     if (appendStringifiedValue(result, value.get(), object, emptyPropertyName) != StringifySucceeded)
</span><span class="cx">         return Local&lt;Unknown&gt;(vm, jsUndefined());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return Local&lt;Unknown&gt;(vm, jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, Local&lt;Unknown&gt;(vm, jsNull()));
</ins><span class="cx"> 
</span><span class="cx">     return Local&lt;Unknown&gt;(vm, jsString(m_exec, result.toString()));
</span><span class="cx"> }
</span><span class="lines">@@ -282,8 +280,7 @@
</span><span class="cx">         return value;
</span><span class="cx"> 
</span><span class="cx">     JSValue toJSONFunction = slot.getValue(m_exec, vm.propertyNames-&gt;toJSON);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsNull();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     return toJSONImpl(value, toJSONFunction, propertyName);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -306,8 +303,7 @@
</span><span class="cx"> 
</span><span class="cx">     // Call the toJSON function.
</span><span class="cx">     value = toJSON(value, propertyName);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return StringifyFailed;
</del><ins>+    RETURN_IF_EXCEPTION(scope, StringifyFailed);
</ins><span class="cx"> 
</span><span class="cx">     // Call the replacer function.
</span><span class="cx">     if (m_replacerCallType != CallType::None) {
</span><span class="lines">@@ -315,8 +311,7 @@
</span><span class="cx">         args.append(propertyName.value(m_exec));
</span><span class="cx">         args.append(value);
</span><span class="cx">         value = call(m_exec, m_replacer.get(), m_replacerCallType, m_replacerCallData, holder, args);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return StringifyFailed;
</del><ins>+        RETURN_IF_EXCEPTION(scope, StringifyFailed);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if ((value.isUndefined() || value.isSymbol()) &amp;&amp; !holder-&gt;inherits(JSArray::info()))
</span><span class="lines">@@ -329,8 +324,7 @@
</span><span class="cx"> 
</span><span class="cx">     value = unwrapBoxedPrimitive(m_exec, value);
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return StringifyFailed;
</del><ins>+    RETURN_IF_EXCEPTION(scope, StringifyFailed);
</ins><span class="cx"> 
</span><span class="cx">     if (value.isBoolean()) {
</span><span class="cx">         if (value.isTrue())
</span><span class="lines">@@ -382,16 +376,13 @@
</span><span class="cx"> 
</span><span class="cx">     bool holderStackWasEmpty = m_holderStack.isEmpty();
</span><span class="cx">     m_holderStack.append(Holder(vm, m_exec, object));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return StringifyFailed;
</del><ins>+    RETURN_IF_EXCEPTION(scope, StringifyFailed);
</ins><span class="cx">     if (!holderStackWasEmpty)
</span><span class="cx">         return StringifySucceeded;
</span><span class="cx"> 
</span><span class="cx">     do {
</span><del>-        while (m_holderStack.last().appendNextProperty(*this, builder)) {
-            if (UNLIKELY(scope.exception()))
-                return StringifyFailed;
-        }
</del><ins>+        while (m_holderStack.last().appendNextProperty(*this, builder))
+            RETURN_IF_EXCEPTION(scope, StringifyFailed);
</ins><span class="cx">         m_holderStack.removeLast();
</span><span class="cx">     } while (!m_holderStack.isEmpty());
</span><span class="cx">     return StringifySucceeded;
</span><span class="lines">@@ -459,8 +450,7 @@
</span><span class="cx">             else {
</span><span class="cx">                 PropertyNameArray objectPropertyNames(exec, PropertyNameMode::Strings);
</span><span class="cx">                 m_object-&gt;methodTable()-&gt;getOwnPropertyNames(m_object.get(), exec, objectPropertyNames, EnumerationMode());
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return false;
</del><ins>+                RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">                 m_propertyNames = objectPropertyNames.releaseData();
</span><span class="cx">             }
</span><span class="cx">             m_size = m_propertyNames-&gt;propertyNameVector().size();
</span><span class="lines">@@ -493,8 +483,7 @@
</span><span class="cx">                 value = slot.getValue(exec, index);
</span><span class="cx">             else
</span><span class="cx">                 value = jsUndefined();
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         // Append the separator string.
</span><span class="lines">@@ -511,8 +500,7 @@
</span><span class="cx">         if (!m_object-&gt;methodTable()-&gt;getOwnPropertySlot(m_object.get(), exec, propertyName, slot))
</span><span class="cx">             return true;
</span><span class="cx">         JSValue value = slot.getValue(exec, propertyName);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">         rollBackPoint = builder.length();
</span><span class="cx"> 
</span><span class="lines">@@ -647,8 +635,7 @@
</span><span class="cx">                         inValue = slot.getValue(m_exec, index);
</span><span class="cx">                     else
</span><span class="cx">                         inValue = jsUndefined();
</span><del>-                    if (UNLIKELY(scope.exception()))
-                        return jsNull();
</del><ins>+                    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">                 }
</span><span class="cx">                     
</span><span class="cx">                 if (inValue.isObject()) {
</span><span class="lines">@@ -665,8 +652,7 @@
</span><span class="cx">                     array-&gt;methodTable()-&gt;deletePropertyByIndex(array, m_exec, indexStack.last());
</span><span class="cx">                 else
</span><span class="cx">                     array-&gt;putDirectIndex(m_exec, indexStack.last(), filteredValue);
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return jsNull();
</del><ins>+                RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">                 indexStack.last()++;
</span><span class="cx">                 goto arrayStartVisitMember;
</span><span class="cx">             }
</span><span class="lines">@@ -682,8 +668,7 @@
</span><span class="cx">                 indexStack.append(0);
</span><span class="cx">                 propertyStack.append(PropertyNameArray(m_exec, PropertyNameMode::Strings));
</span><span class="cx">                 object-&gt;methodTable()-&gt;getOwnPropertyNames(object, m_exec, propertyStack.last(), EnumerationMode());
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return jsNull();
</del><ins>+                RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">             }
</span><span class="cx">             objectStartVisitMember:
</span><span class="cx">             FALLTHROUGH;
</span><span class="lines">@@ -705,8 +690,7 @@
</span><span class="cx">                     inValue = jsUndefined();
</span><span class="cx"> 
</span><span class="cx">                 // The holder may be modified by the reviver function so any lookup may throw
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return jsNull();
</del><ins>+                RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">                 if (inValue.isObject()) {
</span><span class="cx">                     stateStack.append(ObjectEndVisitMember);
</span><span class="lines">@@ -724,8 +708,7 @@
</span><span class="cx">                     object-&gt;methodTable()-&gt;deleteProperty(object, m_exec, prop);
</span><span class="cx">                 else
</span><span class="cx">                     object-&gt;methodTable()-&gt;put(object, m_exec, prop, filteredValue, slot);
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return jsNull();
</del><ins>+                RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">                 indexStack.last()++;
</span><span class="cx">                 goto objectStartVisitMember;
</span><span class="cx">             }
</span><span class="lines">@@ -761,8 +744,7 @@
</span><span class="cx">     if (!exec-&gt;argumentCount())
</span><span class="cx">         return throwVMError(exec, scope, createError(exec, ASCIILiteral(&quot;JSON.parse requires at least one parameter&quot;)));
</span><span class="cx">     JSString::SafeView source = exec-&gt;uncheckedArgument(0).toString(exec)-&gt;view(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue unfiltered;
</span><span class="cx">     LocalScope localScope(vm);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -360,14 +360,12 @@
</span><span class="cx"> 
</span><span class="cx">         // 9.1.9.1-2 Let ownDesc be ? O.[[GetOwnProperty]](P).
</span><span class="cx">         bool ownDescriptorFound = current-&gt;getOwnPropertyDescriptor(exec, propertyName, ownDescriptor);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">         if (!ownDescriptorFound) {
</span><span class="cx">             // 9.1.9.1-3-a Let parent be ? O.[[GetPrototypeOf]]().
</span><span class="cx">             JSValue prototype = current-&gt;getPrototype(vm, exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">             // 9.1.9.1-3-b If parent is not null, then
</span><span class="cx">             if (!prototype.isNull()) {
</span><span class="lines">@@ -398,8 +396,7 @@
</span><span class="cx">         JSObject* receiverObject = asObject(receiver);
</span><span class="cx">         PropertyDescriptor existingDescriptor;
</span><span class="cx">         bool existingDescriptorFound = receiverObject-&gt;getOwnPropertyDescriptor(exec, propertyName, existingDescriptor);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">         // 9.1.9.1-4-d If existingDescriptor is not undefined, then
</span><span class="cx">         if (existingDescriptorFound) {
</span><span class="lines">@@ -1290,8 +1287,7 @@
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     bool isExtensible = this-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (!isExtensible) {
</span><span class="cx">         if (shouldThrowIfCantSet)
</span><span class="lines">@@ -1533,8 +1529,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue function = object-&gt;get(exec, propertyName);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return scope.exception();
</del><ins>+    RETURN_IF_EXCEPTION(scope, scope.exception());
</ins><span class="cx">     if (function.isUndefined() &amp;&amp; mode == TypeHintMode::TakesHint)
</span><span class="cx">         return JSValue();
</span><span class="cx">     CallData callData;
</span><span class="lines">@@ -1560,9 +1555,8 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSValue result = call(exec, function, callType, callData, const_cast&lt;JSObject*&gt;(object), callArgs);
</span><ins>+    RETURN_IF_EXCEPTION(scope, scope.exception());
</ins><span class="cx">     ASSERT(!result.isGetterSetter());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return scope.exception();
</del><span class="cx">     if (result.isObject())
</span><span class="cx">         return mode == TypeHintMode::DoesNotTakeHint ? JSValue() : throwTypeError(exec, scope, ASCIILiteral(&quot;Symbol.toPrimitive returned an object&quot;));
</span><span class="cx">     return result;
</span><span class="lines">@@ -1699,8 +1693,7 @@
</span><span class="cx">     JSObject* object = asObject(value);
</span><span class="cx">     while (true) {
</span><span class="cx">         JSValue objectValue = object-&gt;getPrototype(vm, exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         if (!objectValue.isObject())
</span><span class="cx">             return false;
</span><span class="cx">         object = asObject(objectValue);
</span><span class="lines">@@ -1723,12 +1716,10 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;getOwnPropertyNames(object, exec, propertyNames, mode);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     JSValue nextProto = object-&gt;getPrototype(vm, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (nextProto.isNull())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -1739,11 +1730,9 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         prototype-&gt;methodTable(vm)-&gt;getOwnPropertyNames(prototype, exec, propertyNames, mode);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         nextProto = prototype-&gt;getPrototype(vm, exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         if (nextProto.isNull())
</span><span class="cx">             break;
</span><span class="cx">         prototype = asObject(nextProto);
</span><span class="lines">@@ -1843,8 +1832,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue primitive = toPrimitive(exec, PreferNumber);
</span><del>-    if (UNLIKELY(scope.exception())) // should be picked up soon in Nodes.cpp
-        return 0.0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0.0); // should be picked up soon in Nodes.cpp
</ins><span class="cx">     return primitive.toNumber(exec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1853,8 +1841,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue primitive = toPrimitive(exec, PreferString);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsEmptyString(exec);
</del><ins>+    RETURN_IF_EXCEPTION(scope, jsEmptyString(exec));
</ins><span class="cx">     return primitive.toString(exec);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3078,8 +3065,7 @@
</span><span class="cx">     PropertyDescriptor current;
</span><span class="cx">     bool isCurrentDefined = getOwnPropertyDescriptor(exec, propertyName, current);
</span><span class="cx">     bool isExtensible = this-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(throwScope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(throwScope, false);
</ins><span class="cx">     return validateAndApplyPropertyDescriptor(exec, this, propertyName, isExtensible, descriptor, isCurrentDefined, current, throwException);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -3180,12 +3166,10 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;getOwnPropertyNames(object, exec, propertyNames, EnumerationMode(mode, JSObjectPropertiesMode::Exclude));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     JSValue nextProto = object-&gt;getPrototype(vm, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     if (nextProto.isNull())
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="lines">@@ -3196,11 +3180,9 @@
</span><span class="cx">             break;
</span><span class="cx">         }
</span><span class="cx">         prototype-&gt;methodTable(vm)-&gt;getOwnPropertyNames(prototype, exec, propertyNames, mode);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         nextProto = prototype-&gt;getPrototype(vm, exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         if (nextProto.isNull())
</span><span class="cx">             break;
</span><span class="cx">         prototype = asObject(nextProto);
</span><span class="lines">@@ -3215,8 +3197,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue method = get(exec, ident);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!method.isCell()) {
</span><span class="cx">         if (method.isUndefinedOrNull())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSObjectInlinesh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSObjectInlines.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSObjectInlines.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSObjectInlines.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -40,17 +40,14 @@
</span><span class="cx">     
</span><span class="cx">     Vector&lt;JSValue&gt; result;
</span><span class="cx">     JSValue lengthProperty = arrayLikeValue.get(exec, vm.propertyNames-&gt;length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     double lengthAsDouble = lengthProperty.toLength(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     RELEASE_ASSERT(lengthAsDouble &gt;= 0.0 &amp;&amp; lengthAsDouble == std::trunc(lengthAsDouble));
</span><span class="cx">     uint64_t length = static_cast&lt;uint64_t&gt;(lengthAsDouble);
</span><span class="cx">     for (uint64_t index = 0; index &lt; length; index++) {
</span><span class="cx">         JSValue next = arrayLikeValue.get(exec, index);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         
</span><span class="cx">         RuntimeType type = runtimeTypeForValue(next);
</span><span class="cx">         if (!(type &amp; legalTypesFilter)) {
</span><span class="lines">@@ -99,8 +96,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     bool found = const_cast&lt;JSObject*&gt;(this)-&gt;getPropertySlot(exec, propertyName, slot);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return { };
</del><ins>+    RETURN_IF_EXCEPTION(scope, { });
</ins><span class="cx">     return callback(found, slot);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -115,15 +111,13 @@
</span><span class="cx">         Structure&amp; structure = *structureIDTable.get(object-&gt;structureID());
</span><span class="cx">         if (structure.classInfo()-&gt;methodTable.getOwnPropertySlotByIndex(object, exec, propertyName, slot))
</span><span class="cx">             return true;
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         JSValue prototype;
</span><span class="cx">         if (LIKELY(structure.classInfo()-&gt;methodTable.getPrototype == defaultGetPrototype || slot.internalMethodType() == PropertySlot::InternalMethodType::VMInquiry))
</span><span class="cx">             prototype = structure.storedPrototype();
</span><span class="cx">         else {
</span><span class="cx">             prototype = object-&gt;getPrototype(vm, exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         }
</span><span class="cx">         if (!prototype.isObject())
</span><span class="cx">             return false;
</span><span class="lines">@@ -149,8 +143,7 @@
</span><span class="cx">         } else {
</span><span class="cx">             if (structure.classInfo()-&gt;methodTable.getOwnPropertySlot(object, exec, propertyName, slot))
</span><span class="cx">                 return true;
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         }
</span><span class="cx">         JSValue prototype;
</span><span class="cx">         if (LIKELY(structure.classInfo()-&gt;methodTable.getPrototype == defaultGetPrototype || slot.internalMethodType() == PropertySlot::InternalMethodType::VMInquiry))
</span><span class="lines">@@ -157,8 +150,7 @@
</span><span class="cx">             prototype = structure.storedPrototype();
</span><span class="cx">         else {
</span><span class="cx">             prototype = object-&gt;getPrototype(vm, exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         }
</span><span class="cx">         if (!prototype.isObject())
</span><span class="cx">             return false;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPromiseConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSPromiseConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -103,8 +103,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx"> 
</span><span class="cx">     Structure* promiseStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), globalObject-&gt;promiseStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSPromise* promise = JSPromise::create(vm, promiseStructure);
</span><span class="cx">     promise-&gt;initialize(exec, globalObject, exec-&gt;argument(0));
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPromiseDeferredcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSPromiseDeferred.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -57,8 +57,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue deferred = newPromiseCapability(exec, globalObject, globalObject-&gt;promiseConstructor());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     JSValue promise = deferred.get(exec, vm.propertyNames-&gt;builtinNames().promisePrivateName());
</span><span class="cx">     ASSERT(promise.inherits(JSPromise::info()));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPropertyNameEnumeratorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSPropertyNameEnumerator.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2014 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2014, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -129,8 +129,7 @@
</span><span class="cx">         // So disable indexed property enumeration phase by setting |indexedLength| to 0.
</span><span class="cx">         indexedLength = 0;
</span><span class="cx">         base-&gt;methodTable(vm)-&gt;getPropertyNames(base, exec, propertyNames, EnumerationMode());
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ASSERT(propertyNames.size() &lt; UINT32_MAX);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSPropertyNameIteratorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSPropertyNameIterator.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -58,8 +58,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSPropertyNameEnumerator* enumerator = propertyNameEnumerator(exec, iteratedObject);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     return JSPropertyNameIterator::create(exec, structure, iteratedObject, enumerator);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSScopecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSScope.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSScope.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSScope.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2012-2015 Apple Inc. All Rights Reserved.
</del><ins>+ * Copyright (C) 2012-2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -206,13 +206,11 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     JSValue unscopables = object-&gt;get(exec, exec-&gt;propertyNames().unscopablesSymbol);
</span><del>-    if (UNLIKELY(throwScope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(throwScope, false);
</ins><span class="cx">     if (!unscopables.isObject())
</span><span class="cx">         return false;
</span><span class="cx">     JSValue blocked = jsCast&lt;JSObject*&gt;(unscopables)-&gt;get(exec, ident);
</span><del>-    if (UNLIKELY(throwScope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(throwScope, false);
</ins><span class="cx"> 
</span><span class="cx">     return blocked.toBoolean(exec);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSStringcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSString.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSString.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSString.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -78,8 +78,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     String str1 = value(exec);
</span><span class="cx">     String str2 = other-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     return WTF::equal(*str1.impl(), *str2.impl());
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeJSStringJoinercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/JSStringJoiner.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/JSStringJoiner.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/JSStringJoiner.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -108,8 +108,7 @@
</span><span class="cx">     ASSERT(m_strings.size() &lt;= m_strings.capacity());
</span><span class="cx"> 
</span><span class="cx">     unsigned length = joinedLength(state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!length)
</span><span class="cx">         return jsEmptyString(&amp;state);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeLiteralParsercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/LiteralParser.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/LiteralParser.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/LiteralParser.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2009 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2009, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2012 Mathias Bynens (mathias@qiwi.be)
</span><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="lines">@@ -584,8 +584,7 @@
</span><span class="cx">             startParseArray:
</span><span class="cx">             case StartParseArray: {
</span><span class="cx">                 JSArray* array = constructEmptyArray(m_exec, 0);
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return JSValue();
</del><ins>+                RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">                 objectStack.append(array);
</span><span class="cx">             }
</span><span class="cx">             doParseArrayStartExpression:
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeMapBaseh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/MapBase.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/MapBase.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/MapBase.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -75,8 +75,7 @@
</span><span class="cx">         Base::finishCreation(vm);
</span><span class="cx">         auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">         HashMapImplType* impl = HashMapImplType::create(exec, vm);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         m_map.set(vm, this, impl);
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeMapConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/MapConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/MapConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/MapConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -61,18 +61,15 @@
</span><span class="cx"> 
</span><span class="cx">     JSGlobalObject* globalObject = asInternalFunction(exec-&gt;callee())-&gt;globalObject();
</span><span class="cx">     Structure* mapStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), globalObject-&gt;mapStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSMap* map = JSMap::create(exec, vm, mapStructure);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSValue iterable = exec-&gt;argument(0);
</span><span class="cx">     if (iterable.isUndefinedOrNull())
</span><span class="cx">         return JSValue::encode(map);
</span><span class="cx"> 
</span><span class="cx">     JSValue adderFunction = map-&gt;JSObject::get(exec, exec-&gt;propertyNames().set);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     CallData adderFunctionCallData;
</span><span class="cx">     CallType adderFunctionCallType = getCallData(adderFunction, adderFunctionCallData);
</span><span class="lines">@@ -87,12 +84,10 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         JSValue key = nextItem.get(exec, static_cast&lt;unsigned&gt;(0));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">         JSValue value = nextItem.get(exec, static_cast&lt;unsigned&gt;(1));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">         MarkedArgumentBuffer arguments;
</span><span class="cx">         arguments.append(key);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeMathObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/MathObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/MathObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/MathObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
</span><del>- *  Copyright (C) 2007, 2008, 2013, 2015 Apple Inc. All Rights Reserved.
</del><ins>+ *  Copyright (C) 2007-2008, 2013, 2015-2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Lesser General Public
</span><span class="lines">@@ -165,8 +165,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     uint32_t value = exec-&gt;argument(0).toUInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(JSValue(clz32(value)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -195,8 +194,7 @@
</span><span class="cx">     args.reserveInitialCapacity(argsCount);
</span><span class="cx">     for (unsigned i = 0; i &lt; argsCount; ++i) {
</span><span class="cx">         args.uncheckedAppend(exec-&gt;uncheckedArgument(i).toNumber(exec));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsNull());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (std::isinf(args[i]))
</span><span class="cx">             return JSValue::encode(jsDoubleNumber(+std::numeric_limits&lt;double&gt;::infinity()));
</span><span class="cx">         max = std::max(fabs(args[i]), max);
</span><span class="lines">@@ -299,8 +297,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     int32_t left = exec-&gt;argument(0).toInt32(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     int32_t right = exec-&gt;argument(1).toInt32(exec);
</span><span class="cx">     return JSValue::encode(jsNumber(left * right));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeModuleLoaderPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ModuleLoaderPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -112,12 +112,10 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     const Identifier moduleKey = exec-&gt;argument(0).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     String source = exec-&gt;argument(1).toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     SourceCode sourceCode = makeSource(source, moduleKey.impl());
</span><span class="cx"> 
</span><span class="lines">@@ -149,8 +147,7 @@
</span><span class="cx">         return JSValue::encode(constructEmptyArray(exec, nullptr));
</span><span class="cx"> 
</span><span class="cx">     JSArray* result = constructEmptyArray(exec, nullptr, moduleRecord-&gt;requestedModules().size());
</span><del>-    if (UNLIKELY(scope.exception()))
-        JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     size_t i = 0;
</span><span class="cx">     for (auto&amp; key : moduleRecord-&gt;requestedModules())
</span><span class="cx">         result-&gt;putDirectIndex(exec, i++, jsString(exec, key.get()));
</span><span class="lines">@@ -170,8 +167,7 @@
</span><span class="cx">         dataLog(&quot;Loader [link] &quot;, moduleRecord-&gt;moduleKey(), &quot;\n&quot;);
</span><span class="cx"> 
</span><span class="cx">     moduleRecord-&gt;link(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNativeErrorConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/NativeErrorConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -67,8 +67,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue message = exec-&gt;argument(0);
</span><span class="cx">     Structure* errorStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), jsCast&lt;NativeErrorConstructor*&gt;(exec-&gt;callee())-&gt;errorStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     ASSERT(errorStructure);
</span><span class="cx">     return JSValue::encode(ErrorInstance::create(exec, errorStructure, message, nullptr, TypeNothing, false));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeNumberConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/NumberConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -89,8 +89,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     double n = exec-&gt;argumentCount() ? exec-&gt;uncheckedArgument(0).toNumber(exec) : 0;
</span><span class="cx">     Structure* structure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), exec-&gt;lexicalGlobalObject()-&gt;numberObjectStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     NumberObject* object = NumberObject::create(exec-&gt;vm(), structure);
</span><span class="cx">     object-&gt;setInternalValue(exec-&gt;vm(), jsNumber(n));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeObjectConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ObjectConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -130,8 +130,7 @@
</span><span class="cx">     if (newTarget &amp;&amp; newTarget != objectConstructor) {
</span><span class="cx">         // a. Return ? OrdinaryCreateFromConstructor(NewTarget, &quot;%ObjectPrototype%&quot;).
</span><span class="cx">         Structure* objectStructure = InternalFunction::createSubclassStructure(exec, newTarget, globalObject-&gt;objectStructureForObjectConstructor());
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return constructEmptyObject(exec, objectStructure);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -172,8 +171,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* object = exec-&gt;argument(0).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(object-&gt;getPrototype(exec-&gt;vm(), exec));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -191,8 +189,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx"> 
</span><span class="cx">     JSObject* object = objectValue.toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(objectValue);
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     bool shouldThrowIfCantSet = true;
</span><span class="cx">     bool didSetPrototype = object-&gt;setPrototype(vm, exec, protoValue, shouldThrowIfCantSet);
</span><span class="lines">@@ -207,8 +204,7 @@
</span><span class="cx">     PropertyDescriptor descriptor;
</span><span class="cx">     if (!object-&gt;getOwnPropertyDescriptor(exec, propertyName, descriptor))
</span><span class="cx">         return jsUndefined();
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSObject* result = constructObjectFromPropertyDescriptor(exec, descriptor);
</span><span class="cx">     if (!result)
</span><span class="lines">@@ -222,18 +218,15 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     PropertyNameArray properties(exec, PropertyNameMode::StringsAndSymbols);
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSObject* descriptors = constructEmptyObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     for (auto&amp; propertyName : properties) {
</span><span class="cx">         PropertyDescriptor descriptor;
</span><span class="cx">         bool didGetDescriptor = object-&gt;getOwnPropertyDescriptor(exec, propertyName, descriptor);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (!didGetDescriptor)
</span><span class="cx">             continue;
</span><span class="lines">@@ -255,11 +248,9 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* object = exec-&gt;argument(0).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     auto propertyName = exec-&gt;argument(1).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(objectConstructorGetOwnPropertyDescriptor(exec, object, propertyName));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -268,8 +259,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* object = exec-&gt;argument(0).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(objectConstructorGetOwnPropertyDescriptors(exec, object));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -279,8 +269,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* object = exec-&gt;argument(0).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(ownPropertyKeys(exec, object, PropertyNameMode::Strings, DontEnumPropertiesMode::Include));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -290,8 +279,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* object = exec-&gt;argument(0).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(ownPropertyKeys(exec, object, PropertyNameMode::Symbols, DontEnumPropertiesMode::Include));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -301,8 +289,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* object = exec-&gt;argument(0).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(ownPropertyKeys(exec, object, PropertyNameMode::Strings, DontEnumPropertiesMode::Exclude));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -311,8 +298,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* object = exec-&gt;argument(0).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(ownPropertyKeys(exec, object, PropertyNameMode::StringsAndSymbols, DontEnumPropertiesMode::Exclude));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -331,41 +317,36 @@
</span><span class="cx"> 
</span><span class="cx">     if (description-&gt;hasProperty(exec, exec-&gt;propertyNames().enumerable)) {
</span><span class="cx">         JSValue value = description-&gt;get(exec, exec-&gt;propertyNames().enumerable);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         desc.setEnumerable(value.toBoolean(exec));
</span><del>-    } else if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    } else
+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (description-&gt;hasProperty(exec, exec-&gt;propertyNames().configurable)) {
</span><span class="cx">         JSValue value = description-&gt;get(exec, exec-&gt;propertyNames().configurable);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         desc.setConfigurable(value.toBoolean(exec));
</span><del>-    } else if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    } else
+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     JSValue value;
</span><span class="cx">     if (description-&gt;hasProperty(exec, exec-&gt;propertyNames().value)) {
</span><span class="cx">         JSValue value = description-&gt;get(exec, exec-&gt;propertyNames().value);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         desc.setValue(value);
</span><del>-    } else if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    } else
+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (description-&gt;hasProperty(exec, exec-&gt;propertyNames().writable)) {
</span><span class="cx">         JSValue value = description-&gt;get(exec, exec-&gt;propertyNames().writable);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         desc.setWritable(value.toBoolean(exec));
</span><del>-    } else if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    } else
+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (description-&gt;hasProperty(exec, exec-&gt;propertyNames().get)) {
</span><span class="cx">         JSValue get = description-&gt;get(exec, exec-&gt;propertyNames().get);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         if (!get.isUndefined()) {
</span><span class="cx">             CallData callData;
</span><span class="cx">             if (getCallData(get, callData) == CallType::None) {
</span><span class="lines">@@ -374,13 +355,12 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         desc.setGetter(get);
</span><del>-    } else if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    } else
+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (description-&gt;hasProperty(exec, exec-&gt;propertyNames().set)) {
</span><span class="cx">         JSValue set = description-&gt;get(exec, exec-&gt;propertyNames().set);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         if (!set.isUndefined()) {
</span><span class="cx">             CallData callData;
</span><span class="cx">             if (getCallData(set, callData) == CallType::None) {
</span><span class="lines">@@ -389,8 +369,8 @@
</span><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">         desc.setSetter(set);
</span><del>-    } else if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    } else
+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (!desc.isAccessorDescriptor())
</span><span class="cx">         return true;
</span><span class="lines">@@ -416,8 +396,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;Properties can only be defined on Objects.&quot;));
</span><span class="cx">     JSObject* obj = asObject(exec-&gt;argument(0));
</span><span class="cx">     auto propertyName = exec-&gt;argument(1).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     PropertyDescriptor descriptor;
</span><span class="cx">     auto success = toPropertyDescriptor(exec, exec-&gt;argument(2), descriptor);
</span><span class="cx">     ASSERT(!scope.exception() == success);
</span><span class="lines">@@ -437,15 +416,13 @@
</span><span class="cx"> 
</span><span class="cx">     PropertyNameArray propertyNames(exec, PropertyNameMode::StringsAndSymbols);
</span><span class="cx">     asObject(properties)-&gt;methodTable(vm)-&gt;getOwnPropertyNames(asObject(properties), exec, propertyNames, EnumerationMode(DontEnumPropertiesMode::Exclude));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsNull();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     size_t numProperties = propertyNames.size();
</span><span class="cx">     Vector&lt;PropertyDescriptor&gt; descriptors;
</span><span class="cx">     MarkedArgumentBuffer markBuffer;
</span><span class="cx">     for (size_t i = 0; i &lt; numProperties; i++) {
</span><span class="cx">         JSValue prop = properties-&gt;get(exec, propertyNames[i]);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsNull();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         PropertyDescriptor descriptor;
</span><span class="cx">         if (!toPropertyDescriptor(exec, prop, descriptor))
</span><span class="cx">             return jsNull();
</span><span class="lines">@@ -465,8 +442,7 @@
</span><span class="cx">         if (exec-&gt;propertyNames().isPrivateName(propertyName))
</span><span class="cx">             continue;
</span><span class="cx">         object-&gt;methodTable(vm)-&gt;defineOwnProperty(object, exec, propertyName, descriptors[i], true);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsNull();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx">     return object;
</span><span class="cx"> }
</span><span class="lines">@@ -522,8 +498,7 @@
</span><span class="cx">     // 2. For each named own property name P of O,
</span><span class="cx">     PropertyNameArray properties(exec, PropertyNameMode::StringsAndSymbols);
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(obj);
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     PropertyNameArray::const_iterator end = properties.end();
</span><span class="cx">     for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) {
</span><span class="cx">         Identifier propertyName = *iter;
</span><span class="lines">@@ -537,14 +512,12 @@
</span><span class="cx">         desc.setConfigurable(false);
</span><span class="cx">         // c. Call the [[DefineOwnProperty]] internal method of O with P, desc, and true as arguments.
</span><span class="cx">         object-&gt;methodTable(vm)-&gt;defineOwnProperty(object, exec, propertyName, desc, true);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(obj);
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 3. Set the [[Extensible]] internal property of O to false.
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;preventExtensions(object, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 4. Return O.
</span><span class="cx">     return JSValue::encode(obj);
</span><span class="lines">@@ -563,8 +536,7 @@
</span><span class="cx">     // 2. For each named own property name P of O,
</span><span class="cx">     PropertyNameArray properties(exec, PropertyNameMode::StringsAndSymbols);
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return object;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     PropertyNameArray::const_iterator end = properties.end();
</span><span class="cx">     for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) {
</span><span class="cx">         Identifier propertyName = *iter;
</span><span class="lines">@@ -582,14 +554,12 @@
</span><span class="cx">         desc.setConfigurable(false);
</span><span class="cx">         // d. Call the [[DefineOwnProperty]] internal method of O with P, desc, and true as arguments.
</span><span class="cx">         object-&gt;methodTable(vm)-&gt;defineOwnProperty(object, exec, propertyName, desc, true);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return object;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     // 3. Set the [[Extensible]] internal property of O to false.
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;preventExtensions(object, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     // 4. Return O.
</span><span class="cx">     return object;
</span><span class="lines">@@ -604,8 +574,7 @@
</span><span class="cx">     if (!obj.isObject())
</span><span class="cx">         return JSValue::encode(obj);
</span><span class="cx">     JSObject* result = objectConstructorFreeze(exec, asObject(obj));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(result);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -636,8 +605,7 @@
</span><span class="cx">     // 2. For each named own property name P of O,
</span><span class="cx">     PropertyNameArray properties(exec, PropertyNameMode::StringsAndSymbols);
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     PropertyNameArray::const_iterator end = properties.end();
</span><span class="cx">     for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) {
</span><span class="cx">         Identifier propertyName = *iter;
</span><span class="lines">@@ -655,8 +623,7 @@
</span><span class="cx">     // 3. If the [[Extensible]] internal property of O is false, then return true.
</span><span class="cx">     // 4. Otherwise, return false.
</span><span class="cx">     bool isExtensible = object-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsBoolean(!isExtensible));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -677,8 +644,7 @@
</span><span class="cx">     // 2. For each named own property name P of O,
</span><span class="cx">     PropertyNameArray properties(exec, PropertyNameMode::StringsAndSymbols);
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;getOwnPropertyNames(object, exec, properties, EnumerationMode(DontEnumPropertiesMode::Include));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     PropertyNameArray::const_iterator end = properties.end();
</span><span class="cx">     for (PropertyNameArray::const_iterator iter = properties.begin(); iter != end; ++iter) {
</span><span class="cx">         Identifier propertyName = *iter;
</span><span class="lines">@@ -697,8 +663,7 @@
</span><span class="cx">     // 3. If the [[Extensible]] internal property of O is false, then return true.
</span><span class="cx">     // 4. Otherwise, return false.
</span><span class="cx">     bool isExtensible = object-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsBoolean(!isExtensible));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -711,8 +676,7 @@
</span><span class="cx">         return JSValue::encode(jsBoolean(false));
</span><span class="cx">     JSObject* object = asObject(obj);
</span><span class="cx">     bool isExtensible = object-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsBoolean(isExtensible));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -728,12 +692,10 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     PropertyNameArray properties(exec, propertyNameMode);
</span><span class="cx">     object-&gt;methodTable(vm)-&gt;getOwnPropertyNames(object, exec, properties, EnumerationMode(dontEnumPropertiesMode));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     JSArray* keys = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     switch (propertyNameMode) {
</span><span class="cx">     case PropertyNameMode::Strings: {
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeObjectConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ObjectConstructor.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ObjectConstructor.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ObjectConstructor.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
</span><del>- *  Copyright (C) 2008 Apple Inc. All rights reserved.
</del><ins>+ *  Copyright (C) 2008, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Lesser General Public
</span><span class="lines">@@ -103,8 +103,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSObject* description = constructEmptyObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     if (!descriptor.isAccessorDescriptor()) {
</span><span class="cx">         description-&gt;putDirect(vm, vm.propertyNames-&gt;value, descriptor.value() ? descriptor.value() : jsUndefined(), 0);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeObjectPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ObjectPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -95,8 +95,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSValue thisValue = exec-&gt;thisValue().toThis(exec, StrictMode);
</span><span class="cx">     auto propertyName = exec-&gt;argument(0).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSObject* thisObject = thisValue.toObject(exec);
</span><span class="cx">     if (UNLIKELY(!thisObject))
</span><span class="cx">         return JSValue::encode(JSValue());
</span><span class="lines">@@ -111,8 +110,7 @@
</span><span class="cx"> 
</span><span class="cx">     PropertySlot slot(thisObject, PropertySlot::InternalMethodType::GetOwnProperty);
</span><span class="cx">     bool result = thisObject-&gt;hasOwnProperty(exec, propertyName, slot);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     hasOwnPropertyCache-&gt;tryAdd(vm, slot, thisObject, propertyName, result);
</span><span class="cx">     return JSValue::encode(jsBoolean(result));
</span><span class="lines">@@ -132,8 +130,7 @@
</span><span class="cx">         return JSValue::encode(jsBoolean(false));
</span><span class="cx"> 
</span><span class="cx">     JSValue v = asObject(exec-&gt;argument(0))-&gt;getPrototype(vm, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     while (true) {
</span><span class="cx">         if (!v.isObject())
</span><span class="lines">@@ -141,8 +138,7 @@
</span><span class="cx">         if (v == thisObj)
</span><span class="cx">             return JSValue::encode(jsBoolean(true));
</span><span class="cx">         v = asObject(v)-&gt;getPrototype(vm, exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(JSValue());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -152,8 +148,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSObject* thisObject = exec-&gt;thisValue().toThis(exec, StrictMode).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue get = exec-&gt;argument(1);
</span><span class="cx">     CallData callData;
</span><span class="lines">@@ -161,8 +156,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;invalid getter usage&quot;));
</span><span class="cx"> 
</span><span class="cx">     auto propertyName = exec-&gt;argument(0).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     PropertyDescriptor descriptor;
</span><span class="cx">     descriptor.setGetter(get);
</span><span class="lines">@@ -181,8 +175,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSObject* thisObject = exec-&gt;thisValue().toThis(exec, StrictMode).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue set = exec-&gt;argument(1);
</span><span class="cx">     CallData callData;
</span><span class="lines">@@ -190,8 +183,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;invalid setter usage&quot;));
</span><span class="cx"> 
</span><span class="cx">     auto propertyName = exec-&gt;argument(0).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     PropertyDescriptor descriptor;
</span><span class="cx">     descriptor.setSetter(set);
</span><span class="lines">@@ -210,12 +202,10 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSObject* thisObject = exec-&gt;thisValue().toThis(exec, StrictMode).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto propertyName = exec-&gt;argument(0).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     PropertySlot slot(thisObject, PropertySlot::InternalMethodType::GetOwnProperty);
</span><span class="cx">     if (thisObject-&gt;getPropertySlot(exec, propertyName, slot)) {
</span><span class="lines">@@ -240,12 +230,10 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSObject* thisObject = exec-&gt;thisValue().toThis(exec, StrictMode).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto propertyName = exec-&gt;argument(0).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     PropertySlot slot(thisObject, PropertySlot::InternalMethodType::GetOwnProperty);
</span><span class="cx">     if (thisObject-&gt;getPropertySlot(exec, propertyName, slot)) {
</span><span class="lines">@@ -270,12 +258,10 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     auto propertyName = exec-&gt;argument(0).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSObject* thisObject = exec-&gt;thisValue().toThis(exec, StrictMode).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     PropertyDescriptor descriptor;
</span><span class="cx">     bool enumerable = thisObject-&gt;getOwnPropertyDescriptor(exec, propertyName, descriptor) &amp;&amp; descriptor.enumerable();
</span><span class="cx">     return JSValue::encode(jsBoolean(enumerable));
</span><span class="lines">@@ -289,8 +275,7 @@
</span><span class="cx"> 
</span><span class="cx">     // 1. Let O be the result of calling ToObject passing the this value as the argument.
</span><span class="cx">     JSObject* object = exec-&gt;thisValue().toThis(exec, StrictMode).toObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 2. Let toString be the result of calling the [[Get]] internal method of O passing &quot;toString&quot; as the argument.
</span><span class="cx">     JSValue toString = object-&gt;get(exec, exec-&gt;propertyNames().toString);
</span><span class="lines">@@ -325,8 +310,7 @@
</span><span class="cx">     return JSValue::encode(thisObject-&gt;getPropertySlot(exec, toStringTagSymbol, [&amp;] (bool found, PropertySlot&amp; toStringTagSlot) -&gt; JSValue {
</span><span class="cx">         if (found) {
</span><span class="cx">             JSValue stringTag = toStringTagSlot.getValue(exec, toStringTagSymbol);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return jsUndefined();
</del><ins>+            RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">             if (stringTag.isString()) {
</span><span class="cx">                 JSRopeString::RopeBuilder ropeBuilder(vm);
</span><span class="cx">                 ropeBuilder.append(vm.smallStrings.objectStringStart());
</span><span class="lines">@@ -340,8 +324,7 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         String tag = thisObject-&gt;methodTable(exec-&gt;vm())-&gt;toStringName(thisObject, exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         String newString = WTF::tryMakeString(&quot;[object &quot;, WTFMove(tag), &quot;]&quot;);
</span><span class="cx">         if (!newString)
</span><span class="cx">             return throwOutOfMemoryError(exec, scope);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeOperationscpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/Operations.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/Operations.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/Operations.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -46,11 +46,9 @@
</span><span class="cx">     VM&amp; vm = callFrame-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue p1 = v1.toPrimitive(callFrame);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     JSValue p2 = v2.toPrimitive(callFrame);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (p1.isString())
</span><span class="cx">         return jsString(callFrame, asString(p1), p2.toString(callFrame));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimePropertyDescriptorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/PropertyDescriptor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -79,8 +79,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSGlobalObject* globalObject = exec-&gt;lexicalGlobalObject();
</span><span class="cx">     GetterSetter* getterSetter = GetterSetter::create(vm, globalObject);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (m_getter &amp;&amp; !m_getter.isUndefined())
</span><span class="cx">         getterSetter-&gt;setGetter(vm, globalObject, jsCast&lt;JSObject*&gt;(m_getter));
</span><span class="cx">     if (m_setter &amp;&amp; !m_setter.isUndefined())
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeProxyConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ProxyConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ProxyConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ProxyConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -64,15 +64,12 @@
</span><span class="cx">     JSValue target = args.at(0);
</span><span class="cx">     JSValue handler = args.at(1);
</span><span class="cx">     ProxyObject* proxy = ProxyObject::create(exec, exec-&gt;lexicalGlobalObject(), target, handler);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     ProxyRevoke* revoke = ProxyRevoke::create(vm, exec-&gt;lexicalGlobalObject()-&gt;proxyRevokeStructure(), proxy);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSObject* result = constructEmptyObject(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     result-&gt;putDirect(vm, makeIdentifier(vm, &quot;proxy&quot;), proxy, None);
</span><span class="cx">     result-&gt;putDirect(vm, makeIdentifier(vm, &quot;revoke&quot;), revoke, None);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeProxyObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ProxyObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -141,8 +141,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue getHandler = handler-&gt;getMethod(exec, callData, callType, vm.propertyNames-&gt;get, ASCIILiteral(&quot;'get' property of a Proxy's handler object should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (getHandler.isUndefined())
</span><span class="cx">         return performDefaultGet();
</span><span class="lines">@@ -152,8 +151,7 @@
</span><span class="cx">     arguments.append(identifierToSafePublicJSValue(vm, Identifier::fromUid(&amp;vm, propertyName.uid())));
</span><span class="cx">     arguments.append(receiver);
</span><span class="cx">     JSValue trapResult = call(exec, getHandler, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     PropertyDescriptor descriptor;
</span><span class="cx">     if (target-&gt;getOwnPropertyDescriptor(exec, propertyName, descriptor)) {
</span><span class="lines">@@ -166,8 +164,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     return trapResult;
</span><span class="cx"> }
</span><span class="lines">@@ -177,8 +174,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSValue result = performProxyGet(exec, this, slot.thisValue(), propertyName);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     unsigned ignoredAttributes = 0;
</span><span class="cx">     slot.setValue(this, ignoredAttributes, result);
</span><span class="cx">     return true;
</span><span class="lines">@@ -211,8 +207,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue getOwnPropertyDescriptorMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;getOwnPropertyDescriptor&quot;), ASCIILiteral(&quot;'getOwnPropertyDescriptor' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     if (getOwnPropertyDescriptorMethod.isUndefined())
</span><span class="cx">         return performDefaultGetOwnProperty();
</span><span class="cx"> 
</span><span class="lines">@@ -220,8 +215,7 @@
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     arguments.append(identifierToSafePublicJSValue(vm, Identifier::fromUid(&amp;vm, propertyName.uid())));
</span><span class="cx">     JSValue trapResult = call(exec, getOwnPropertyDescriptorMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (!trapResult.isUndefined() &amp;&amp; !trapResult.isObject()) {
</span><span class="cx">         throwVMTypeError(exec, scope, ASCIILiteral(&quot;result of 'getOwnPropertyDescriptor' call should either be an Object or undefined&quot;));
</span><span class="lines">@@ -230,8 +224,7 @@
</span><span class="cx"> 
</span><span class="cx">     PropertyDescriptor targetPropertyDescriptor;
</span><span class="cx">     bool isTargetPropertyDescriptorDefined = target-&gt;getOwnPropertyDescriptor(exec, propertyName, targetPropertyDescriptor);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (trapResult.isUndefined()) {
</span><span class="cx">         if (!isTargetPropertyDescriptorDefined)
</span><span class="lines">@@ -243,8 +236,7 @@
</span><span class="cx">         // FIXME: this doesn't work if 'target' is another Proxy. We don't have isExtensible implemented in a way that fits w/ Proxys.
</span><span class="cx">         // https://bugs.webkit.org/show_bug.cgi?id=154375
</span><span class="cx">         bool isExtensible = target-&gt;isExtensible(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         if (!isExtensible) {
</span><span class="cx">             // FIXME: Come up with a test for this error. I'm not sure how to because
</span><span class="cx">             // Object.seal(o) will make all fields [[Configurable]] false.
</span><span class="lines">@@ -257,12 +249,10 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool isExtensible = target-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     PropertyDescriptor trapResultAsDescriptor;
</span><span class="cx">     toPropertyDescriptor(exec, trapResult, trapResultAsDescriptor);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     bool throwException = false;
</span><span class="cx">     bool valid = validateAndApplyPropertyDescriptor(exec, nullptr, propertyName, isExtensible,
</span><span class="cx">         trapResultAsDescriptor, isTargetPropertyDescriptorDefined, targetPropertyDescriptor, throwException);
</span><span class="lines">@@ -280,8 +270,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (trapResultAsDescriptor.isAccessorDescriptor()) {
</span><span class="cx">         GetterSetter* getterSetter = trapResultAsDescriptor.slowGetterSetter(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         slot.setGetterSlot(this, trapResultAsDescriptor.attributes(), getterSetter);
</span><span class="cx">     } else if (trapResultAsDescriptor.isDataDescriptor() &amp;&amp; !trapResultAsDescriptor.value().isEmpty())
</span><span class="cx">         slot.setValue(this, trapResultAsDescriptor.attributes(), trapResultAsDescriptor.value());
</span><span class="lines">@@ -319,8 +308,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue hasMethod = handler-&gt;getMethod(exec, callData, callType, vm.propertyNames-&gt;has, ASCIILiteral(&quot;'has' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     if (hasMethod.isUndefined())
</span><span class="cx">         return performDefaultHasProperty();
</span><span class="cx"> 
</span><span class="lines">@@ -328,18 +316,15 @@
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     arguments.append(identifierToSafePublicJSValue(vm, Identifier::fromUid(&amp;vm, propertyName.uid())));
</span><span class="cx">     JSValue trapResult = call(exec, hasMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     bool trapResultAsBool = trapResult.toBoolean(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (!trapResultAsBool) {
</span><span class="cx">         PropertyDescriptor descriptor;
</span><span class="cx">         bool isPropertyDescriptorDefined = target-&gt;getOwnPropertyDescriptor(exec, propertyName, descriptor); 
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         if (isPropertyDescriptorDefined) {
</span><span class="cx">             if (!descriptor.configurable()) {
</span><span class="cx">                 throwVMTypeError(exec, scope, ASCIILiteral(&quot;Proxy 'has' must return 'true' for non-configurable properties&quot;));
</span><span class="lines">@@ -346,8 +331,7 @@
</span><span class="cx">                 return false;
</span><span class="cx">             }
</span><span class="cx">             bool isExtensible = target-&gt;isExtensible(exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return false;
</del><ins>+            RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">             if (!isExtensible) {
</span><span class="cx">                 throwVMTypeError(exec, scope, ASCIILiteral(&quot;Proxy 'has' must return 'true' for a non-extensible 'target' object with a configurable property&quot;));
</span><span class="cx">                 return false;
</span><span class="lines">@@ -419,8 +403,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue setMethod = handler-&gt;getMethod(exec, callData, callType, vm.propertyNames-&gt;set, ASCIILiteral(&quot;'set' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     JSObject* target = this-&gt;target();
</span><span class="cx">     if (setMethod.isUndefined())
</span><span class="cx">         return performDefaultPut();
</span><span class="lines">@@ -431,11 +414,9 @@
</span><span class="cx">     arguments.append(putValue);
</span><span class="cx">     arguments.append(thisValue);
</span><span class="cx">     JSValue trapResult = call(exec, setMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     bool trapResultAsBool = trapResult.toBoolean(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     if (!trapResultAsBool)
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="lines">@@ -472,8 +453,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     Identifier ident = Identifier::from(exec, propertyName);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     auto performDefaultPut = [&amp;] () {
</span><span class="cx">         JSObject* target = this-&gt;target();
</span><span class="cx">         bool isStrictMode = shouldThrow;
</span><span class="lines">@@ -506,8 +486,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue applyMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;apply&quot;), ASCIILiteral(&quot;'apply' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSObject* target = proxy-&gt;target();
</span><span class="cx">     if (applyMethod.isUndefined()) {
</span><span class="cx">         CallData callData;
</span><span class="lines">@@ -517,8 +496,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSArray* argArray = constructArray(exec, static_cast&lt;ArrayAllocationProfile*&gt;(nullptr), ArgList(exec));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     MarkedArgumentBuffer arguments;
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     arguments.append(exec-&gt;thisValue());
</span><span class="lines">@@ -556,8 +534,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue constructMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;construct&quot;), ASCIILiteral(&quot;'construct' property of a Proxy's handler should be constructible&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSObject* target = proxy-&gt;target();
</span><span class="cx">     if (constructMethod.isUndefined()) {
</span><span class="cx">         ConstructData constructData;
</span><span class="lines">@@ -567,15 +544,13 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSArray* argArray = constructArray(exec, static_cast&lt;ArrayAllocationProfile*&gt;(nullptr), ArgList(exec));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     MarkedArgumentBuffer arguments;
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     arguments.append(argArray);
</span><span class="cx">     arguments.append(exec-&gt;newTarget());
</span><span class="cx">     JSValue result = call(exec, constructMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     if (!result.isObject())
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;Result from Proxy handler's 'construct' method should be an object&quot;));
</span><span class="cx">     return JSValue::encode(result);
</span><span class="lines">@@ -617,8 +592,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue deletePropertyMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;deleteProperty&quot;), ASCIILiteral(&quot;'deleteProperty' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     JSObject* target = this-&gt;target();
</span><span class="cx">     if (deletePropertyMethod.isUndefined())
</span><span class="cx">         return performDefaultDelete();
</span><span class="lines">@@ -627,12 +601,10 @@
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     arguments.append(identifierToSafePublicJSValue(vm, Identifier::fromUid(&amp;vm, propertyName.uid())));
</span><span class="cx">     JSValue trapResult = call(exec, deletePropertyMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     bool trapResultAsBool = trapResult.toBoolean(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (!trapResultAsBool)
</span><span class="cx">         return false;
</span><span class="lines">@@ -645,8 +617,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span><span class="lines">@@ -691,8 +662,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue preventExtensionsMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;preventExtensions&quot;), ASCIILiteral(&quot;'preventExtensions' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     JSObject* target = this-&gt;target();
</span><span class="cx">     if (preventExtensionsMethod.isUndefined())
</span><span class="cx">         return target-&gt;methodTable(vm)-&gt;preventExtensions(target, exec);
</span><span class="lines">@@ -700,17 +670,14 @@
</span><span class="cx">     MarkedArgumentBuffer arguments;
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     JSValue trapResult = call(exec, preventExtensionsMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     bool trapResultAsBool = trapResult.toBoolean(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (trapResultAsBool) {
</span><span class="cx">         bool targetIsExtensible = target-&gt;isExtensible(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         if (targetIsExtensible) {
</span><span class="cx">             throwVMTypeError(exec, scope, ASCIILiteral(&quot;Proxy's 'preventExtensions' trap returned true even though its target is extensible. It should have returned false&quot;));
</span><span class="cx">             return false;
</span><span class="lines">@@ -744,8 +711,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue isExtensibleMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;isExtensible&quot;), ASCIILiteral(&quot;'isExtensible' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     JSObject* target = this-&gt;target();
</span><span class="cx">     if (isExtensibleMethod.isUndefined())
</span><span class="lines">@@ -754,16 +720,13 @@
</span><span class="cx">     MarkedArgumentBuffer arguments;
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     JSValue trapResult = call(exec, isExtensibleMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     bool trapResultAsBool = trapResult.toBoolean(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     bool isTargetExtensible = target-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (trapResultAsBool != isTargetExtensible) {
</span><span class="cx">         if (isTargetExtensible) {
</span><span class="lines">@@ -811,15 +774,13 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue definePropertyMethod = handler-&gt;getMethod(exec, callData, callType, vm.propertyNames-&gt;defineProperty, ASCIILiteral(&quot;'defineProperty' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (definePropertyMethod.isUndefined())
</span><span class="cx">         return performDefaultDefineOwnProperty();
</span><span class="cx"> 
</span><span class="cx">     JSObject* descriptorObject = constructObjectFromPropertyDescriptor(exec, descriptor);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     MarkedArgumentBuffer arguments;
</span><span class="cx">     arguments.append(target);
</span><span class="lines">@@ -826,12 +787,10 @@
</span><span class="cx">     arguments.append(identifierToSafePublicJSValue(vm, Identifier::fromUid(&amp;vm, propertyName.uid())));
</span><span class="cx">     arguments.append(descriptorObject);
</span><span class="cx">     JSValue trapResult = call(exec, definePropertyMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     bool trapResultAsBool = trapResult.toBoolean(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (!trapResultAsBool)
</span><span class="cx">         return false;
</span><span class="lines">@@ -838,12 +797,10 @@
</span><span class="cx"> 
</span><span class="cx">     PropertyDescriptor targetDescriptor;
</span><span class="cx">     bool isTargetDescriptorDefined = target-&gt;getOwnPropertyDescriptor(exec, propertyName, targetDescriptor);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     bool targetIsExtensible = target-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     bool settingConfigurableToFalse = descriptor.configurablePresent() &amp;&amp; !descriptor.configurable();
</span><span class="cx"> 
</span><span class="cx">     if (!isTargetDescriptorDefined) {
</span><span class="lines">@@ -900,8 +857,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue ownKeysMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;ownKeys&quot;), ASCIILiteral(&quot;'ownKeys' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     JSObject* target = this-&gt;target();
</span><span class="cx">     if (ownKeysMethod.isUndefined()) {
</span><span class="cx">         target-&gt;methodTable(exec-&gt;vm())-&gt;getOwnPropertyNames(target, exec, trapResult, enumerationMode);
</span><span class="lines">@@ -911,8 +867,7 @@
</span><span class="cx">     MarkedArgumentBuffer arguments;
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     JSValue arrayLikeObject = call(exec, ownKeysMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     PropertyNameMode propertyNameMode = trapResult.mode();
</span><span class="cx">     RuntimeTypeMask resultFilter = 0;
</span><span class="lines">@@ -939,8 +894,7 @@
</span><span class="cx">             return dontExitEarly;
</span><span class="cx"> 
</span><span class="cx">         Identifier ident = value.toPropertyKey(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return doExitEarly;
</del><ins>+        RETURN_IF_EXCEPTION(scope, doExitEarly);
</ins><span class="cx"> 
</span><span class="cx">         uncheckedResultKeys.add(ident.impl());
</span><span class="cx">         trapResult.addUnchecked(ident.impl());
</span><span class="lines">@@ -948,22 +902,19 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     createListFromArrayLike(exec, arrayLikeObject, dontThrowAnExceptionTypeFilter, ASCIILiteral(&quot;Proxy handler's 'ownKeys' method must return an array-like object containing only Strings and Symbols&quot;), addPropName);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     bool targetIsExensible = target-&gt;isExtensible(exec);
</span><span class="cx"> 
</span><span class="cx">     PropertyNameArray targetKeys(&amp;vm, propertyNameMode);
</span><span class="cx">     target-&gt;methodTable(vm)-&gt;getOwnPropertyNames(target, exec, targetKeys, enumerationMode);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     Vector&lt;UniquedStringImpl*&gt; targetConfigurableKeys;
</span><span class="cx">     Vector&lt;UniquedStringImpl*&gt; targetNonConfigurableKeys;
</span><span class="cx">     for (const Identifier&amp; ident : targetKeys) {
</span><span class="cx">         PropertyDescriptor descriptor;
</span><span class="cx">         bool isPropertyDefined = target-&gt;getOwnPropertyDescriptor(exec, ident.impl(), descriptor); 
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         if (isPropertyDefined &amp;&amp; !descriptor.configurable())
</span><span class="cx">             targetNonConfigurableKeys.append(ident.impl());
</span><span class="cx">         else
</span><span class="lines">@@ -1051,8 +1002,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue setPrototypeOfMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;setPrototypeOf&quot;), ASCIILiteral(&quot;'setPrototypeOf' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     JSObject* target = this-&gt;target();
</span><span class="cx">     if (setPrototypeOfMethod.isUndefined())
</span><span class="lines">@@ -1062,12 +1012,10 @@
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     arguments.append(prototype);
</span><span class="cx">     JSValue trapResult = call(exec, setPrototypeOfMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     bool trapResultAsBool = trapResult.toBoolean(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     
</span><span class="cx">     if (!trapResultAsBool) {
</span><span class="cx">         if (shouldThrowIfCantSet)
</span><span class="lines">@@ -1076,14 +1024,12 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool targetIsExtensible = target-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     if (targetIsExtensible)
</span><span class="cx">         return true;
</span><span class="cx"> 
</span><span class="cx">     JSValue targetPrototype = target-&gt;getPrototype(vm, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     if (!sameValue(exec, prototype, targetPrototype)) {
</span><span class="cx">         throwVMTypeError(exec, scope, ASCIILiteral(&quot;Proxy 'setPrototypeOf' trap returned true when its target is non-extensible and the new prototype value is not the same as the current prototype value. It should have returned false&quot;));
</span><span class="cx">         return false;
</span><span class="lines">@@ -1116,8 +1062,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue getPrototypeOfMethod = handler-&gt;getMethod(exec, callData, callType, makeIdentifier(vm, &quot;getPrototypeOf&quot;), ASCIILiteral(&quot;'getPrototypeOf' property of a Proxy's handler should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSObject* target = this-&gt;target();
</span><span class="cx">     if (getPrototypeOfMethod.isUndefined())
</span><span class="lines">@@ -1126,8 +1071,7 @@
</span><span class="cx">     MarkedArgumentBuffer arguments;
</span><span class="cx">     arguments.append(target);
</span><span class="cx">     JSValue trapResult = call(exec, getPrototypeOfMethod, callType, callData, handler, arguments);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!trapResult.isObject() &amp;&amp; !trapResult.isNull()) {
</span><span class="cx">         throwVMTypeError(exec, scope, ASCIILiteral(&quot;Proxy handler's 'getPrototypeOf' trap should either return an object or null&quot;));
</span><span class="lines">@@ -1135,14 +1079,12 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     bool targetIsExtensible = target-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     if (targetIsExtensible)
</span><span class="cx">         return trapResult;
</span><span class="cx"> 
</span><span class="cx">     JSValue targetPrototype = target-&gt;getPrototype(vm, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     if (!sameValue(exec, targetPrototype, trapResult)) {
</span><span class="cx">         throwVMTypeError(exec, scope, ASCIILiteral(&quot;Proxy's 'getPrototypeOf' trap for a non-extensible target should return the same value as the target's prototype&quot;));
</span><span class="cx">         return JSValue();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeReflectObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/ReflectObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/ReflectObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/ReflectObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -123,8 +123,7 @@
</span><span class="cx">         arguments.append(value);
</span><span class="cx">         return false;
</span><span class="cx">     });
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     return JSValue::encode(construct(exec, target, constructType, constructData, arguments, newTarget));
</span><span class="cx"> }
</span><span class="lines">@@ -139,8 +138,7 @@
</span><span class="cx">     if (!target.isObject())
</span><span class="cx">         return JSValue::encode(throwTypeError(exec, scope, ASCIILiteral(&quot;Reflect.defineProperty requires the first argument be an object&quot;)));
</span><span class="cx">     auto propertyName = exec-&gt;argument(1).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     PropertyDescriptor descriptor;
</span><span class="cx">     if (!toPropertyDescriptor(exec, exec-&gt;argument(2), descriptor))
</span><span class="lines">@@ -178,8 +176,7 @@
</span><span class="cx">         return JSValue::encode(throwTypeError(exec, scope, ASCIILiteral(&quot;Reflect.get requires the first argument be an object&quot;)));
</span><span class="cx"> 
</span><span class="cx">     const Identifier propertyName = exec-&gt;argument(1).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsNull());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue receiver = target;
</span><span class="cx">     if (exec-&gt;argumentCount() &gt;= 3)
</span><span class="lines">@@ -200,8 +197,7 @@
</span><span class="cx">         return JSValue::encode(throwTypeError(exec, scope, ASCIILiteral(&quot;Reflect.getOwnPropertyDescriptor requires the first argument be an object&quot;)));
</span><span class="cx"> 
</span><span class="cx">     auto key = exec-&gt;argument(1).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     return JSValue::encode(objectConstructorGetOwnPropertyDescriptor(exec, asObject(target), key));
</span><span class="cx"> }
</span><span class="lines">@@ -229,8 +225,7 @@
</span><span class="cx">         return JSValue::encode(throwTypeError(exec, scope, ASCIILiteral(&quot;Reflect.isExtensible requires the first argument be an object&quot;)));
</span><span class="cx"> 
</span><span class="cx">     bool isExtensible = asObject(target)-&gt;isExtensible(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsBoolean(isExtensible));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -257,8 +252,7 @@
</span><span class="cx">         return JSValue::encode(throwTypeError(exec, scope, ASCIILiteral(&quot;Reflect.preventExtensions requires the first argument be an object&quot;)));
</span><span class="cx">     JSObject* object = asObject(target);
</span><span class="cx">     bool result = object-&gt;methodTable(vm)-&gt;preventExtensions(object, exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsBoolean(result));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -274,8 +268,7 @@
</span><span class="cx">     JSObject* targetObject = asObject(target);
</span><span class="cx"> 
</span><span class="cx">     auto propertyName = exec-&gt;argument(1).toPropertyKey(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue receiver = target;
</span><span class="cx">     if (exec-&gt;argumentCount() &gt;= 4)
</span><span class="lines">@@ -304,8 +297,7 @@
</span><span class="cx"> 
</span><span class="cx">     bool shouldThrowIfCantSet = false;
</span><span class="cx">     bool didSetPrototype = object-&gt;setPrototype(vm, exec, proto, shouldThrowIfCantSet);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsBoolean(didSetPrototype));
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/RegExpConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -221,8 +221,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     RegExpFlags result = regExpFlags(flagsString-&gt;value(exec));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return InvalidFlags;
</del><ins>+    RETURN_IF_EXCEPTION(scope, InvalidFlags);
</ins><span class="cx">     if (result == InvalidFlags)
</span><span class="cx">         throwSyntaxError(exec, scope, ASCIILiteral(&quot;Invalid flags supplied to RegExp constructor.&quot;));
</span><span class="cx">     return result;
</span><span class="lines">@@ -234,8 +233,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String pattern = patternArg.isUndefined() ? emptyString() : patternArg.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     RegExpFlags flags = toFlags(exec, flagsArg);
</span><span class="cx">     if (flags == InvalidFlags)
</span><span class="lines">@@ -246,8 +244,7 @@
</span><span class="cx">         return throwException(exec, scope, createSyntaxError(exec, regExp-&gt;errorMessage()));
</span><span class="cx"> 
</span><span class="cx">     Structure* structure = getRegExpStructure(exec, globalObject, newTarget);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     return RegExpObject::create(vm, structure, regExp);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -263,8 +260,7 @@
</span><span class="cx"> 
</span><span class="cx">     if (newTarget.isUndefined() &amp;&amp; constructAsRegexp &amp;&amp; flagsArg.isUndefined()) {
</span><span class="cx">         JSValue constructor = patternArg.get(exec, vm.propertyNames-&gt;constructor);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         if (callee == constructor) {
</span><span class="cx">             // We know that patternArg is a object otherwise constructAsRegexp would be false.
</span><span class="cx">             return patternArg.getObject();
</span><span class="lines">@@ -274,8 +270,7 @@
</span><span class="cx">     if (isPatternRegExp) {
</span><span class="cx">         RegExp* regExp = jsCast&lt;RegExpObject*&gt;(patternArg)-&gt;regExp();
</span><span class="cx">         Structure* structure = getRegExpStructure(exec, globalObject, newTarget);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">         if (!flagsArg.isUndefined()) {
</span><span class="cx">             RegExpFlags flags = toFlags(exec, flagsArg);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpConstructorh"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/RegExpConstructor.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
</span><del>- *  Copyright (C) 2003, 2007, 2008 Apple Inc. All Rights Reserved.
</del><ins>+ *  Copyright (C) 2003, 2007-2008, 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Lesser General Public
</span><span class="lines">@@ -139,8 +139,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSObject* object = asObject(value);
</span><span class="cx">     JSValue matchValue = object-&gt;get(exec, vm.propertyNames-&gt;matchSymbol);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     if (!matchValue.isUndefined())
</span><span class="cx">         return matchValue.toBoolean(exec);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/RegExpObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,6 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  *  Copyright (C) 1999-2000 Harri Porten (porten@kde.org)
</span><del>- *  Copyright (C) 2003, 2007, 2008, 2012, 2016 Apple Inc. All Rights Reserved.
</del><ins>+ *  Copyright (C) 2003, 2007-2008, 2012, 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  *  This library is free software; you can redistribute it and/or
</span><span class="cx">  *  modify it under the terms of the GNU Lesser General Public
</span><span class="lines">@@ -176,8 +176,7 @@
</span><span class="cx">     static unsigned maxSizeForDirectPath = 100000;
</span><span class="cx">     
</span><span class="cx">     JSArray* array = constructEmptyArray(exec, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto iterate = [&amp;] () {
</span><span class="cx">         size_t end = result.end;
</span><span class="lines">@@ -236,8 +235,7 @@
</span><span class="cx">     ASSERT(regExp-&gt;global());
</span><span class="cx"> 
</span><span class="cx">     setLastIndex(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     String s = string-&gt;value(exec);
</span><span class="cx">     RegExpConstructor* regExpConstructor = globalObject-&gt;regExpConstructor();
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeRegExpPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/RegExpPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -159,14 +159,12 @@
</span><span class="cx">         regExp = asRegExpObject(arg0)-&gt;regExp();
</span><span class="cx">     } else {
</span><span class="cx">         String pattern = !exec-&gt;argumentCount() ? emptyString() : arg0.toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         RegExpFlags flags = NoFlags;
</span><span class="cx">         if (!arg1.isUndefined()) {
</span><span class="cx">             flags = regExpFlags(arg1.toString(exec)-&gt;value(exec));
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">             if (flags == InvalidFlags)
</span><span class="cx">                 return throwVMError(exec, scope, createSyntaxError(exec, ASCIILiteral(&quot;Invalid flags supplied to RegExp constructor.&quot;)));
</span><span class="cx">         }
</span><span class="lines">@@ -192,20 +190,15 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue globalValue = regexp-&gt;get(exec, exec-&gt;propertyNames().global);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return string;
</del><ins>+    RETURN_IF_EXCEPTION(scope, string);
</ins><span class="cx">     JSValue ignoreCaseValue = regexp-&gt;get(exec, exec-&gt;propertyNames().ignoreCase);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return string;
</del><ins>+    RETURN_IF_EXCEPTION(scope, string);
</ins><span class="cx">     JSValue multilineValue = regexp-&gt;get(exec, exec-&gt;propertyNames().multiline);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return string;
</del><ins>+    RETURN_IF_EXCEPTION(scope, string);
</ins><span class="cx">     JSValue unicodeValue = regexp-&gt;get(exec, exec-&gt;propertyNames().unicode);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return string;
</del><ins>+    RETURN_IF_EXCEPTION(scope, string);
</ins><span class="cx">     JSValue stickyValue = regexp-&gt;get(exec, exec-&gt;propertyNames().sticky);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return string;
</del><ins>+    RETURN_IF_EXCEPTION(scope, string);
</ins><span class="cx"> 
</span><span class="cx">     unsigned index = 0;
</span><span class="cx">     if (globalValue.toBoolean(exec))
</span><span class="lines">@@ -239,18 +232,14 @@
</span><span class="cx">         return JSValue::encode(earlyReturnValue);
</span><span class="cx"> 
</span><span class="cx">     JSValue sourceValue = thisObject-&gt;get(exec, vm.propertyNames-&gt;source);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     String source = sourceValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue flagsValue = thisObject-&gt;get(exec, vm.propertyNames-&gt;flags);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     String flags = flagsValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, '/', source, '/', flags));
</span><span class="cx"> }
</span><span class="lines">@@ -340,8 +329,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope, ASCIILiteral(&quot;The RegExp.prototype.flags getter can only be called on an object&quot;));
</span><span class="cx"> 
</span><span class="cx">     auto flags = flagsString(exec, asObject(thisValue));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     return JSValue::encode(jsString(exec, flags.data()));
</span><span class="cx"> }
</span><span class="lines">@@ -479,8 +467,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSString* string = exec-&gt;uncheckedArgument(0).toString(exec);
</span><span class="cx">     String s = string-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     RegExpConstructor* regExpConstructor = exec-&gt;lexicalGlobalObject()-&gt;regExpConstructor();
</span><span class="cx">     MatchResult result = regExpConstructor-&gt;performMatch(vm, regExp, string, s, 0);
</span><span class="lines">@@ -588,8 +575,7 @@
</span><span class="cx">     // 3. [handled by JS builtin] Let S be ? ToString(string).
</span><span class="cx">     JSString* inputString = exec-&gt;argument(0).toString(exec);
</span><span class="cx">     String input = inputString-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     ASSERT(!input.isNull());
</span><span class="cx"> 
</span><span class="cx">     // 4. [handled by JS builtin] Let C be ? SpeciesConstructor(rx, %RegExp%).
</span><span class="lines">@@ -603,8 +589,7 @@
</span><span class="cx">     // 11. Let A be ArrayCreate(0).
</span><span class="cx">     // 12. Let lengthA be 0.
</span><span class="cx">     JSArray* result = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     unsigned resultLength = 0;
</span><span class="cx"> 
</span><span class="cx">     // 13. If limit is undefined, let lim be 2^32-1; else let lim be ? ToUint32(limit).
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSetConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/SetConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -61,18 +61,15 @@
</span><span class="cx"> 
</span><span class="cx">     JSGlobalObject* globalObject = asInternalFunction(exec-&gt;callee())-&gt;globalObject();
</span><span class="cx">     Structure* setStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), globalObject-&gt;setStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSSet* set = JSSet::create(exec, vm, setStructure);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSValue iterable = exec-&gt;argument(0);
</span><span class="cx">     if (iterable.isUndefinedOrNull())
</span><span class="cx">         return JSValue::encode(set);
</span><span class="cx"> 
</span><span class="cx">     JSValue adderFunction = set-&gt;get(exec, exec-&gt;propertyNames().add);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     CallData adderFunctionCallData;
</span><span class="cx">     CallType adderFunctionCallType = getCallData(adderFunction, adderFunctionCallData);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -100,8 +100,7 @@
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="cx">         double codePointAsDouble = exec-&gt;uncheckedArgument(i).toNumber(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         uint32_t codePoint = static_cast&lt;uint32_t&gt;(codePointAsDouble);
</span><span class="cx"> 
</span><span class="lines">@@ -126,8 +125,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     Structure* structure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), globalObject-&gt;stringObjectStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!exec-&gt;argumentCount())
</span><span class="cx">         return JSValue::encode(StringObject::create(vm, structure));
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeStringObjectcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/StringObject.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringObject.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/StringObject.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -121,8 +121,7 @@
</span><span class="cx">         bool isCurrentDefined = thisObject-&gt;getOwnPropertyDescriptor(exec, propertyName, current);
</span><span class="cx">         ASSERT(isCurrentDefined);
</span><span class="cx">         bool isExtensible = thisObject-&gt;isExtensible(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         return validateAndApplyPropertyDescriptor(exec, nullptr, propertyName, isExtensible, descriptor, isCurrentDefined, current, throwException);
</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 (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -480,8 +480,7 @@
</span><span class="cx"> 
</span><span class="cx">     const String&amp; source = string-&gt;value(exec);
</span><span class="cx">     unsigned sourceLen = source.length();
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     RegExpObject* regExpObject = asRegExpObject(searchValue);
</span><span class="cx">     RegExp* regExp = regExpObject-&gt;regExp();
</span><span class="cx">     bool global = regExp-&gt;global();
</span><span class="lines">@@ -489,8 +488,7 @@
</span><span class="cx">     if (global) {
</span><span class="cx">         // ES5.1 15.5.4.10 step 8.a.
</span><span class="cx">         regExpObject-&gt;setLastIndex(exec, 0);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (callType == CallType::None &amp;&amp; !replacementString.length())
</span><span class="cx">             return removeUsingRegExpSearch(vm, exec, string, source, regExp);
</span><span class="lines">@@ -512,8 +510,7 @@
</span><span class="cx">         int argCount = regExp-&gt;numSubpatterns() + 1 + 2;
</span><span class="cx">         JSFunction* func = jsCast&lt;JSFunction*&gt;(replaceValue);
</span><span class="cx">         CachedCall cachedCall(exec, func, argCount);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (source.is8Bit()) {
</span><span class="cx">             while (true) {
</span><span class="cx">                 int* ovector;
</span><span class="lines">@@ -540,8 +537,7 @@
</span><span class="cx">                 cachedCall.setThis(jsUndefined());
</span><span class="cx">                 JSValue jsResult = cachedCall.call();
</span><span class="cx">                 replacements.append(jsResult.toString(exec)-&gt;value(exec));
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return JSValue::encode(jsUndefined());
</del><ins>+                RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">                 lastIndex = result.end;
</span><span class="cx">                 startPosition = lastIndex;
</span><span class="lines">@@ -579,8 +575,7 @@
</span><span class="cx">                 cachedCall.setThis(jsUndefined());
</span><span class="cx">                 JSValue jsResult = cachedCall.call();
</span><span class="cx">                 replacements.append(jsResult.toString(exec)-&gt;value(exec));
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return JSValue::encode(jsUndefined());
</del><ins>+                RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">                 lastIndex = result.end;
</span><span class="cx">                 startPosition = lastIndex;
</span><span class="lines">@@ -618,9 +613,10 @@
</span><span class="cx">                 args.append(jsNumber(result.start));
</span><span class="cx">                 args.append(string);
</span><span class="cx"> 
</span><del>-                replacements.append(call(exec, replaceValue, callType, callData, jsUndefined(), args).toString(exec)-&gt;value(exec));
-                if (UNLIKELY(scope.exception()))
-                    return JSValue::encode(jsUndefined());
</del><ins>+                JSValue value = call(exec, replaceValue, callType, callData, jsUndefined(), args);
+                RETURN_IF_EXCEPTION(scope, encodedJSValue());
+                replacements.append(value.toString(exec)-&gt;value(exec));
+                RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">             } else {
</span><span class="cx">                 int replLen = replacementString.length();
</span><span class="cx">                 if (lastIndex &lt; result.start || replLen) {
</span><span class="lines">@@ -665,8 +661,7 @@
</span><span class="cx">     if (regExp-&gt;global()) {
</span><span class="cx">         // ES5.1 15.5.4.10 step 8.a.
</span><span class="cx">         searchValue-&gt;setLastIndex(exec, 0);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         return removeUsingRegExpSearch(vm, exec, thisValue, thisValue-&gt;value(exec), regExp);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -697,8 +692,7 @@
</span><span class="cx">     CallType callType = getCallData(replaceValue, callData);
</span><span class="cx">     if (callType == CallType::None) {
</span><span class="cx">         replacementString = replaceValue.toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return replaceUsingRegExpSearch(
</span><span class="lines">@@ -711,8 +705,7 @@
</span><span class="cx"> 
</span><span class="cx">     const String&amp; string = jsString-&gt;value(exec);
</span><span class="cx">     String searchString = searchValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     size_t matchStart = string.find(searchString);
</span><span class="cx"> 
</span><span class="lines">@@ -727,13 +720,11 @@
</span><span class="cx">         args.append(jsNumber(matchStart));
</span><span class="cx">         args.append(jsString);
</span><span class="cx">         replaceValue = call(exec, replaceValue, callType, callData, jsUndefined(), args);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String replaceString = replaceValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     StringImpl* stringImpl = string.impl();
</span><span class="cx">     String leftPart(StringImpl::createSubstringSharingImpl(*stringImpl, 0, matchStart));
</span><span class="lines">@@ -817,8 +808,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     JSString* string = thisValue.toString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return replace(vm, exec, string, searchValue, replaceValue);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -828,8 +818,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSString* string = exec-&gt;thisValue().toString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue searchValue = exec-&gt;argument(0);
</span><span class="cx">     if (!searchValue.inherits(RegExpObject::info()))
</span><span class="lines">@@ -844,8 +833,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSString* string = exec-&gt;thisValue().toString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     return replaceUsingStringSearch(exec-&gt;vm(), exec, string, exec-&gt;argument(0), exec-&gt;argument(1));
</span><span class="cx"> }
</span><span class="lines">@@ -953,8 +941,7 @@
</span><span class="cx">         return JSValue::encode(jsUndefined());
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     double doublePosition = argument0.toInteger(exec);
</span><span class="cx">     if (doublePosition &gt;= 0 &amp;&amp; doublePosition &lt; length)
</span><span class="lines">@@ -1065,8 +1052,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     int len = s.length();
</span><span class="cx">     RELEASE_ASSERT(len &gt;= 0);
</span><span class="lines">@@ -1130,15 +1116,13 @@
</span><span class="cx">     // 3. Let S be the result of calling ToString, giving it the this value as its argument.
</span><span class="cx">     // 7. Let s be the number of characters in S.
</span><span class="cx">     String input = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     ASSERT(!input.isNull());
</span><span class="cx"> 
</span><span class="cx">     // 4. Let A be a new array created as if by the expression new Array()
</span><span class="cx">     //    where Array is the standard built-in constructor with that name.
</span><span class="cx">     JSArray* result = constructEmptyArray(exec, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 5. Let lengthA be 0.
</span><span class="cx">     unsigned resultLength = 0;
</span><span class="lines">@@ -1154,8 +1138,7 @@
</span><span class="cx">     //    otherwise let R = ToString(separator).
</span><span class="cx">     JSValue separatorValue = exec-&gt;uncheckedArgument(0);
</span><span class="cx">     String separator = separatorValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 10. If lim == 0, return A.
</span><span class="cx">     if (!limit)
</span><span class="lines">@@ -1263,8 +1246,7 @@
</span><span class="cx">         len = jsString-&gt;length();
</span><span class="cx">     } else {
</span><span class="cx">         uString = thisValue.toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         len = uString.length();
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -1316,8 +1298,7 @@
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx"> 
</span><span class="cx">     JSString* jsString = thisValue.toString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx">     JSValue a1 = exec-&gt;argument(1);
</span><span class="lines">@@ -1390,13 +1371,11 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx">     String str = a0.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsNumber(Collator().collate(s, str)));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1416,8 +1395,7 @@
</span><span class="cx">     const String&amp; s = sVal-&gt;value(state);
</span><span class="cx"> 
</span><span class="cx">     // 3. ReturnIfAbrupt(S).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // Optimization for empty strings.
</span><span class="cx">     if (s.isEmpty())
</span><span class="lines">@@ -1427,8 +1405,7 @@
</span><span class="cx">     Vector&lt;String&gt; requestedLocales = canonicalizeLocaleList(*state, state-&gt;argument(0));
</span><span class="cx"> 
</span><span class="cx">     // 5. ReturnIfAbrupt(requestedLocales).
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // 6. Let len be the number of elements in requestedLocales.
</span><span class="cx">     size_t len = requestedLocales.size();
</span><span class="lines">@@ -1511,8 +1488,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;big&gt;&quot;, s, &quot;&lt;/big&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1525,8 +1501,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;small&gt;&quot;, s, &quot;&lt;/small&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1539,8 +1514,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;blink&gt;&quot;, s, &quot;&lt;/blink&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1553,8 +1527,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;b&gt;&quot;, s, &quot;&lt;/b&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1567,8 +1540,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;tt&gt;&quot;, s, &quot;&lt;/tt&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1581,8 +1553,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;i&gt;&quot;, s, &quot;&lt;/i&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1595,8 +1566,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;strike&gt;&quot;, s, &quot;&lt;/strike&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1609,8 +1579,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;sub&gt;&quot;, s, &quot;&lt;/sub&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1623,8 +1592,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     return JSValue::encode(jsMakeNontrivialString(exec, &quot;&lt;sup&gt;&quot;, s, &quot;&lt;/sup&gt;&quot;));
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -1637,8 +1605,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx">     String color = a0.toWTFString(exec);
</span><span class="lines">@@ -1656,8 +1623,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx"> 
</span><span class="lines">@@ -1711,8 +1677,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx">     String anchor = a0.toWTFString(exec);
</span><span class="lines">@@ -1730,8 +1695,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     String s = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx">     String linkText = a0.toWTFString(exec);
</span><span class="lines">@@ -1778,8 +1742,7 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwTypeError(exec, scope);
</span><span class="cx">     String str = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     unsigned left = 0;
</span><span class="cx">     if (trimKind &amp; TrimLeft) {
</span><span class="lines">@@ -1836,19 +1799,16 @@
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx"> 
</span><span class="cx">     String stringToSearchIn = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx">     bool isRegularExpression = isRegExp(vm, exec, a0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     if (isRegularExpression)
</span><span class="cx">         return throwVMTypeError(exec, scope, &quot;Argument to String.prototype.startsWith cannot be a RegExp&quot;);
</span><span class="cx"> 
</span><span class="cx">     String searchString = a0.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue positionArg = exec-&gt;argument(1);
</span><span class="cx">     unsigned start = 0;
</span><span class="lines">@@ -1857,8 +1817,7 @@
</span><span class="cx">     else {
</span><span class="cx">         unsigned length = stringToSearchIn.length();
</span><span class="cx">         start = clampAndTruncateToUnsigned(positionArg.toInteger(exec), 0, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return JSValue::encode(jsBoolean(stringToSearchIn.hasInfixStartingAt(searchString, start)));
</span><span class="lines">@@ -1874,19 +1833,16 @@
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx"> 
</span><span class="cx">     String stringToSearchIn = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx">     bool isRegularExpression = isRegExp(vm, exec, a0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     if (isRegularExpression)
</span><span class="cx">         return throwVMTypeError(exec, scope, &quot;Argument to String.prototype.endsWith cannot be a RegExp&quot;);
</span><span class="cx"> 
</span><span class="cx">     String searchString = a0.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     unsigned length = stringToSearchIn.length();
</span><span class="cx"> 
</span><span class="lines">@@ -1896,8 +1852,7 @@
</span><span class="cx">         end = std::max(0, endPositionArg.asInt32());
</span><span class="cx">     else if (!endPositionArg.isUndefined()) {
</span><span class="cx">         end = clampAndTruncateToUnsigned(endPositionArg.toInteger(exec), 0, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return JSValue::encode(jsBoolean(stringToSearchIn.hasInfixEndingAt(searchString, std::min(end, length))));
</span><span class="lines">@@ -1912,8 +1867,7 @@
</span><span class="cx">     else {
</span><span class="cx">         unsigned length = stringToSearchIn.length();
</span><span class="cx">         start = clampAndTruncateToUnsigned(positionArg.toInteger(exec), 0, length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     return JSValue::encode(jsBoolean(stringToSearchIn.contains(searchString, true, start)));
</span><span class="lines">@@ -1929,19 +1883,16 @@
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx"> 
</span><span class="cx">     String stringToSearchIn = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;argument(0);
</span><span class="cx">     bool isRegularExpression = isRegExp(vm, exec, a0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     if (isRegularExpression)
</span><span class="cx">         return throwVMTypeError(exec, scope, &quot;Argument to String.prototype.includes cannot be a RegExp&quot;);
</span><span class="cx"> 
</span><span class="cx">     String searchString = a0.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue positionArg = exec-&gt;argument(1);
</span><span class="cx"> 
</span><span class="lines">@@ -1957,13 +1908,11 @@
</span><span class="cx">     ASSERT(checkObjectCoercible(thisValue));
</span><span class="cx"> 
</span><span class="cx">     String stringToSearchIn = thisValue.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue a0 = exec-&gt;uncheckedArgument(0);
</span><span class="cx">     String searchString = a0.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue positionArg = exec-&gt;argument(1);
</span><span class="cx"> 
</span><span class="lines">@@ -2018,15 +1967,13 @@
</span><span class="cx">     if (!checkObjectCoercible(thisValue))
</span><span class="cx">         return throwVMTypeError(exec, scope);
</span><span class="cx">     JSString::SafeView source = thisValue.toString(exec)-&gt;view(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     UNormalizationMode form = UNORM_NFC;
</span><span class="cx">     // Verify that the argument is provided and is not undefined.
</span><span class="cx">     if (!exec-&gt;argument(0).isUndefined()) {
</span><span class="cx">         String formString = exec-&gt;uncheckedArgument(0).toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (formString == &quot;NFC&quot;)
</span><span class="cx">             form = UNORM_NFC;
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeSymbolConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/SymbolConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/SymbolConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/SymbolConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -100,11 +100,9 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSString* stringKey = exec-&gt;argument(0).toString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     String string = stringKey-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     return JSValue::encode(Symbol::create(exec-&gt;vm(), exec-&gt;vm().symbolRegistry().symbolForKey(string)));
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeTemplateRegistrycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/TemplateRegistry.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/TemplateRegistry.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/TemplateRegistry.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2015 Yusuke Suzuki &lt;utatane.tea@gmail.com&gt;.
</span><ins>+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -48,11 +49,9 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     unsigned count = templateKey.cookedStrings().size();
</span><span class="cx">     JSArray* templateObject = constructEmptyArray(exec, nullptr, count);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     JSArray* rawObject = constructEmptyArray(exec, nullptr, count);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned index = 0; index &lt; count; ++index) {
</span><span class="cx">         templateObject-&gt;putDirectIndex(exec, index, jsString(exec, templateKey.cookedStrings()[index]), ReadOnly | DontDelete, PutDirectIndexLikePutDirect);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakMapConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakMapConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakMapConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/WeakMapConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -59,8 +59,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSGlobalObject* globalObject = asInternalFunction(exec-&gt;callee())-&gt;globalObject();
</span><span class="cx">     Structure* weakMapStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), globalObject-&gt;weakMapStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSWeakMap* weakMap = JSWeakMap::create(exec, weakMapStructure);
</span><span class="cx">     JSValue iterable = exec-&gt;argument(0);
</span><span class="cx">     if (iterable.isUndefinedOrNull())
</span><span class="lines">@@ -67,8 +66,7 @@
</span><span class="cx">         return JSValue::encode(weakMap);
</span><span class="cx"> 
</span><span class="cx">     JSValue adderFunction = weakMap-&gt;JSObject::get(exec, exec-&gt;propertyNames().set);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     CallData adderFunctionCallData;
</span><span class="cx">     CallType adderFunctionCallType = getCallData(adderFunction, adderFunctionCallData);
</span><span class="lines">@@ -83,12 +81,10 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         JSValue key = nextItem.get(exec, static_cast&lt;unsigned&gt;(0));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">         JSValue value = nextItem.get(exec, static_cast&lt;unsigned&gt;(1));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">         MarkedArgumentBuffer arguments;
</span><span class="cx">         arguments.append(key);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoreruntimeWeakSetConstructorcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/runtime/WeakSetConstructor.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/runtime/WeakSetConstructor.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/runtime/WeakSetConstructor.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -59,8 +59,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSGlobalObject* globalObject = asInternalFunction(exec-&gt;callee())-&gt;globalObject();
</span><span class="cx">     Structure* weakSetStructure = InternalFunction::createSubclassStructure(exec, exec-&gt;newTarget(), globalObject-&gt;weakSetStructure());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     JSWeakSet* weakSet = JSWeakSet::create(exec, weakSetStructure);
</span><span class="cx">     JSValue iterable = exec-&gt;argument(0);
</span><span class="cx">     if (iterable.isUndefinedOrNull())
</span><span class="lines">@@ -67,8 +66,7 @@
</span><span class="cx">         return JSValue::encode(weakSet);
</span><span class="cx"> 
</span><span class="cx">     JSValue adderFunction = weakSet-&gt;JSObject::get(exec, exec-&gt;propertyNames().add);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     CallData adderFunctionCallData;
</span><span class="cx">     CallType adderFunctionCallType = getCallData(adderFunction, adderFunctionCallData);
</span></span></pre></div>
<a id="trunkSourceJavaScriptCoretoolsJSDollarVMPrototypecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/JavaScriptCore/tools/JSDollarVMPrototype.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -312,8 +312,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(exec-&gt;vm());
</span><span class="cx">     for (unsigned i = 0; i &lt; exec-&gt;argumentCount(); ++i) {
</span><span class="cx">         String argStr = exec-&gt;uncheckedArgument(i).toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         dataLog(argStr);
</span><span class="cx">     }
</span><span class="cx">     return JSValue::encode(jsUndefined());
</span></span></pre></div>
<a id="trunkSourceWebCoreChangeLog"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/ChangeLog (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/ChangeLog        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/ChangeLog        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,3 +1,175 @@
</span><ins>+2016-09-26  Mark Lam  &lt;mark.lam@apple.com&gt;
+
+        Added RETURN_IF_EXCEPTION() macro and use it for exception checks.
+        https://bugs.webkit.org/show_bug.cgi?id=162521
+
+        Reviewed by Saam Barati.
+
+        No new tests because this patch is mostly refactoring.  The only change in
+        behavior is that functions that have a JSValue return type will now return the
+        empty JSValue when an exception is thrown.  I tested this behavior by running
+        the existing JSC and layout tests.
+
+        * bindings/js/ArrayValue.cpp:
+        (WebCore::ArrayValue::get):
+        * bindings/js/IDBBindingUtilities.cpp:
+        (WebCore::toJS):
+        * bindings/js/JSApplePaySessionCustom.cpp:
+        (WebCore::JSApplePaySession::completeShippingMethodSelection):
+        (WebCore::JSApplePaySession::completeShippingContactSelection):
+        (WebCore::JSApplePaySession::completePaymentMethodSelection):
+        * bindings/js/JSAudioTrackCustom.cpp:
+        (WebCore::JSAudioTrack::setKind):
+        (WebCore::JSAudioTrack::setLanguage):
+        * bindings/js/JSBlobCustom.cpp:
+        (WebCore::constructJSBlob):
+        * bindings/js/JSCSSStyleDeclarationCustom.cpp:
+        (WebCore::JSCSSStyleDeclaration::getPropertyCSSValue):
+        * bindings/js/JSCommandLineAPIHostCustom.cpp:
+        (WebCore::getJSListenerFunctions):
+        * bindings/js/JSCryptoAlgorithmDictionary.cpp:
+        (WebCore::JSCryptoAlgorithmDictionary::getAlgorithmIdentifier):
+        (WebCore::getHashAlgorithm):
+        (WebCore::createAesCbcParams):
+        (WebCore::createAesKeyGenParams):
+        (WebCore::createHmacKeyParams):
+        (WebCore::createRsaKeyGenParams):
+        (WebCore::createRsaOaepParams):
+        * bindings/js/JSCryptoKeySerializationJWK.cpp:
+        (WebCore::getStringFromJSON):
+        (WebCore::JSCryptoKeySerializationJWK::reconcileUsages):
+        (WebCore::JSCryptoKeySerializationJWK::keyDataRSAComponents):
+        (WebCore::buildJSONForRSAComponents):
+        (WebCore::addUsagesToJSON):
+        (WebCore::JSCryptoKeySerializationJWK::serialize):
+        * bindings/js/JSCustomElementInterface.cpp:
+        (WebCore::constructCustomElementSynchronously):
+        (WebCore::JSCustomElementInterface::upgradeElement):
+        * bindings/js/JSCustomElementRegistryCustom.cpp:
+        (WebCore::getCustomElementCallback):
+        (WebCore::JSCustomElementRegistry::define):
+        (WebCore::whenDefinedPromise):
+        * bindings/js/JSDOMBinding.cpp:
+        (WebCore::valueToUSVString):
+        (WebCore::hasIteratorMethod):
+        (WebCore::toSmallerInt):
+        (WebCore::toSmallerUInt):
+        (WebCore::toInt32EnforceRange):
+        (WebCore::toUInt32EnforceRange):
+        (WebCore::toInt64EnforceRange):
+        (WebCore::toUInt64EnforceRange):
+        * bindings/js/JSDOMBinding.h:
+        (WebCore::toJSSequence):
+        (WebCore::toJS):
+        (WebCore::jsFrozenArray):
+        * bindings/js/JSDOMPromise.cpp:
+        (WebCore::rejectPromiseWithExceptionIfAny):
+        * bindings/js/JSDOMStringMapCustom.cpp:
+        (WebCore::JSDOMStringMap::putDelegate):
+        * bindings/js/JSDOMWindowCustom.cpp:
+        (WebCore::JSDOMWindow::setLocation):
+        (WebCore::JSDOMWindow::open):
+        (WebCore::JSDOMWindow::showModalDialog):
+        (WebCore::handlePostMessage):
+        (WebCore::JSDOMWindow::setTimeout):
+        (WebCore::JSDOMWindow::setInterval):
+        * bindings/js/JSDataCueCustom.cpp:
+        (WebCore::constructJSDataCue):
+        * bindings/js/JSDeviceMotionEventCustom.cpp:
+        (WebCore::readAccelerationArgument):
+        (WebCore::readRotationRateArgument):
+        (WebCore::JSDeviceMotionEvent::initDeviceMotionEvent):
+        * bindings/js/JSDictionary.cpp:
+        (WebCore::JSDictionary::tryGetProperty):
+        (WebCore::JSDictionary::convertValue):
+        * bindings/js/JSDictionary.h:
+        (WebCore::JSDictionary::tryGetPropertyAndResult):
+        * bindings/js/JSDocumentCustom.cpp:
+        (WebCore::JSDocument::getCSSCanvasContext):
+        * bindings/js/JSFileCustom.cpp:
+        (WebCore::constructJSFile):
+        * bindings/js/JSGeolocationCustom.cpp:
+        (WebCore::JSGeolocation::getCurrentPosition):
+        (WebCore::JSGeolocation::watchPosition):
+        * bindings/js/JSHTMLAllCollectionCustom.cpp:
+        (WebCore::callHTMLAllCollection):
+        * bindings/js/JSHTMLCanvasElementCustom.cpp:
+        (WebCore::JSHTMLCanvasElement::getContext):
+        * bindings/js/JSHTMLElementCustom.cpp:
+        (WebCore::constructJSHTMLElement):
+        * bindings/js/JSHistoryCustom.cpp:
+        (WebCore::JSHistory::pushState):
+        (WebCore::JSHistory::replaceState):
+        * bindings/js/JSIDBDatabaseCustom.cpp:
+        (WebCore::JSIDBDatabase::createObjectStore):
+        * bindings/js/JSMessageEventCustom.cpp:
+        (WebCore::handleInitMessageEvent):
+        * bindings/js/JSMessagePortCustom.cpp:
+        (WebCore::fillMessagePortArray):
+        * bindings/js/JSMessagePortCustom.h:
+        (WebCore::handlePostMessage):
+        * bindings/js/JSMockContentFilterSettingsCustom.cpp:
+        (WebCore::JSMockContentFilterSettings::setDecisionPoint):
+        (WebCore::toDecision):
+        (WebCore::JSMockContentFilterSettings::setDecision):
+        (WebCore::JSMockContentFilterSettings::setUnblockRequestDecision):
+        * bindings/js/JSNodeFilterCustom.cpp:
+        (WebCore::JSNodeFilter::acceptNode):
+        * bindings/js/JSNodeOrString.cpp:
+        (WebCore::toNodeOrStringVector):
+        * bindings/js/JSSQLTransactionCustom.cpp:
+        (WebCore::JSSQLTransaction::executeSql):
+        * bindings/js/JSSVGLengthCustom.cpp:
+        (WebCore::JSSVGLength::convertToSpecifiedUnits):
+        * bindings/js/JSStorageCustom.cpp:
+        (WebCore::JSStorage::getOwnPropertyNames):
+        * bindings/js/JSTextTrackCustom.cpp:
+        (WebCore::JSTextTrack::setLanguage):
+        * bindings/js/JSVideoTrackCustom.cpp:
+        (WebCore::JSVideoTrack::setKind):
+        (WebCore::JSVideoTrack::setLanguage):
+        * bindings/js/JSWebGL2RenderingContextCustom.cpp:
+        (WebCore::JSWebGL2RenderingContext::getIndexedParameter):
+        * bindings/js/JSWebGLRenderingContextBaseCustom.cpp:
+        (WebCore::getObjectParameter):
+        (WebCore::JSWebGLRenderingContextBase::getExtension):
+        (WebCore::JSWebGLRenderingContextBase::getFramebufferAttachmentParameter):
+        (WebCore::JSWebGLRenderingContextBase::getParameter):
+        (WebCore::JSWebGLRenderingContextBase::getProgramParameter):
+        (WebCore::JSWebGLRenderingContextBase::getShaderParameter):
+        (WebCore::toVector):
+        (WebCore::dataFunctionf):
+        (WebCore::dataFunctionMatrix):
+        * bindings/js/JSWebKitSubtleCryptoCustom.cpp:
+        (WebCore::cryptoKeyFormatFromJSValue):
+        (WebCore::cryptoKeyUsagesFromJSValue):
+        (WebCore::JSWebKitSubtleCrypto::generateKey):
+        (WebCore::importKey):
+        (WebCore::JSWebKitSubtleCrypto::importKey):
+        (WebCore::exportKey):
+        (WebCore::JSWebKitSubtleCrypto::exportKey):
+        (WebCore::JSWebKitSubtleCrypto::unwrapKey):
+        * bindings/js/JSWorkerCustom.cpp:
+        (WebCore::constructJSWorker):
+        * bindings/js/JSWorkerGlobalScopeCustom.cpp:
+        (WebCore::JSWorkerGlobalScope::importScripts):
+        (WebCore::JSWorkerGlobalScope::setTimeout):
+        (WebCore::JSWorkerGlobalScope::setInterval):
+        * bindings/js/ReadableStreamDefaultController.cpp:
+        (WebCore::ReadableStreamDefaultController::invoke):
+        * bindings/js/ScheduledAction.cpp:
+        (WebCore::ScheduledAction::create):
+        * bindings/scripts/CodeGeneratorJS.pm:
+        (GenerateDictionaryImplementationContent):
+        (GenerateImplementation):
+        (GenerateParametersCheck):
+        (GenerateImplementationFunctionCall):
+        (GenerateConstructorDefinition):
+        * html/HTMLMediaElement.cpp:
+        (WebCore::controllerJSValue):
+        (WebCore::HTMLMediaElement::updateMediaControlsAfterPresentationModeChange):
+        (WebCore::HTMLMediaElement::getCurrentMediaControlsStatus):
+
</ins><span class="cx"> 2016-09-26  Michael Catanzaro  &lt;mcatanzaro@igalia.com&gt;
</span><span class="cx"> 
</span><span class="cx">         -Wtautological-compare triggered in URLParser::internalValuesConsistent
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsArrayValuecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ArrayValue.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ArrayValue.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/ArrayValue.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,6 @@
</span><span class="cx"> /*
</span><span class="cx">  * Copyright (C) 2012 Google Inc. All rights reserved.
</span><ins>+ * Copyright (C) 2016 Apple Inc. All Rights Reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -93,8 +94,7 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     value = indexedValue.toWTFString(m_exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     return true;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsIDBBindingUtilitiescpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/IDBBindingUtilities.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -97,8 +97,7 @@
</span><span class="cx">         auto&amp; inArray = key-&gt;array();
</span><span class="cx">         unsigned size = inArray.size();
</span><span class="cx">         auto outArray = constructEmptyArray(&amp;state, 0, &amp;globalObject, size);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         for (size_t i = 0; i &lt; size; ++i)
</span><span class="cx">             outArray-&gt;putDirectIndex(&amp;state, i, toJS(state, globalObject, inArray.at(i).get()));
</span><span class="cx">         return outArray;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSApplePaySessionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSApplePaySessionCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -55,16 +55,13 @@
</span><span class="cx"> 
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     uint16_t status = convert&lt;uint16_t&gt;(state, state.argument(0), NormalConversion);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     Dictionary newTotal = { &amp;state, state.argument(1) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     ArrayValue newLineItems { &amp;state, state.argument(2) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     impl.completeShippingMethodSelection(status, newTotal, newLineItems, ec);
</span><span class="cx">     setDOMException(&amp;state, ec);
</span><span class="cx"> 
</span><span class="lines">@@ -88,20 +85,16 @@
</span><span class="cx"> 
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     uint16_t status = convert&lt;uint16_t&gt;(state, state.argument(0), NormalConversion);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     ArrayValue newShippingMethods { &amp;state, state.argument(1) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     Dictionary newTotal = { &amp;state, state.argument(2) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     ArrayValue newLineItems { &amp;state, state.argument(3) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     impl.completeShippingContactSelection(status, newShippingMethods, newTotal, newLineItems, ec);
</span><span class="cx">     setDOMException(&amp;state, ec);
</span><span class="cx"> 
</span><span class="lines">@@ -125,12 +118,10 @@
</span><span class="cx"> 
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     Dictionary newTotal = { &amp;state, state.argument(0) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     ArrayValue newLineItems { &amp;state, state.argument(1) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     impl.completePaymentMethodSelection(newTotal, newLineItems, ec);
</span><span class="cx">     setDOMException(&amp;state, ec);
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSAudioTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSAudioTrackCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -47,8 +47,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     auto&amp; string = value.toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     wrapped().setKind(string);
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -63,8 +62,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     auto&amp; string = value.toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     wrapped().setLanguage(string);
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSBlobCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSBlobCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSBlobCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSBlobCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -80,8 +80,7 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned blobPartsLength = 0;
</span><span class="cx">     JSObject* blobParts = toJSSequence(exec, exec.uncheckedArgument(0), blobPartsLength);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     ASSERT(blobParts);
</span><span class="cx"> 
</span><span class="cx">     String type;
</span><span class="lines">@@ -101,8 +100,7 @@
</span><span class="cx"> 
</span><span class="cx">         // Attempt to get the endings property and validate it.
</span><span class="cx">         bool containsEndings = dictionary.get(&quot;endings&quot;, endings);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (containsEndings) {
</span><span class="cx">             if (endings != &quot;transparent&quot; &amp;&amp; endings != &quot;native&quot;)
</span><span class="lines">@@ -111,8 +109,7 @@
</span><span class="cx"> 
</span><span class="cx">         // Attempt to get the type property.
</span><span class="cx">         dictionary.get(&quot;type&quot;, type);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ASSERT(endings == &quot;transparent&quot; || endings == &quot;native&quot;);
</span><span class="lines">@@ -121,8 +118,7 @@
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; blobPartsLength; ++i) {
</span><span class="cx">         JSValue item = blobParts-&gt;get(&amp;exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (ArrayBuffer* arrayBuffer = toArrayBuffer(item))
</span><span class="cx">             blobBuilder.append(arrayBuffer);
</span><span class="lines">@@ -132,8 +128,7 @@
</span><span class="cx">             blobBuilder.append(blob);
</span><span class="cx">         else {
</span><span class="cx">             String string = item.toWTFString(&amp;exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">             blobBuilder.append(string, endings);
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCSSStyleDeclarationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSCSSStyleDeclarationCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -355,8 +355,7 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     String propertyName = state.uncheckedArgument(0).toWTFString(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;CSSValue&gt; cssValue = wrapped().getPropertyCSSValue(propertyName);
</span><span class="cx">     if (!cssValue)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCommandLineAPIHostCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSCommandLineAPIHostCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2007, 2008 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2007-2008, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  * Copyright (C) 2008 Matt Lilek &lt;webkit@mattlilek.com&gt;
</span><span class="cx">  * Copyright (C) 2010-2011 Google Inc. All rights reserved.
</span><span class="cx">  *
</span><span class="lines">@@ -70,8 +70,7 @@
</span><span class="cx">     VM&amp; vm = state.vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSArray* result = constructEmptyArray(&amp;state, nullptr);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     size_t handlersCount = listenerInfo.eventListenerVector.size();
</span><span class="cx">     for (size_t i = 0, outputIndex = 0; i &lt; handlersCount; ++i) {
</span><span class="cx">         const JSEventListener* jsListener = JSEventListener::cast(&amp;listenerInfo.eventListenerVector[i]-&gt;callback());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCryptoAlgorithmDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSCryptoAlgorithmDictionary.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -80,8 +80,7 @@
</span><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (!algorithmName.containsOnlyASCII()) {
</span><span class="cx">         throwSyntaxError(exec, scope);
</span><span class="lines">@@ -113,8 +112,7 @@
</span><span class="cx">     Identifier identifier = Identifier::fromString(exec, &quot;hash&quot;);
</span><span class="cx"> 
</span><span class="cx">     JSValue hash = getProperty(exec, object, &quot;hash&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     if (hash.isUndefinedOrNull()) {
</span><span class="cx">         if (isRequired == HashRequirement::Required)
</span><span class="lines">@@ -136,8 +134,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSValue iv = getProperty(exec, value.getObject(), &quot;iv&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     auto result = adoptRef(*new CryptoAlgorithmAesCbcParams);
</span><span class="cx"> 
</span><span class="lines">@@ -170,8 +167,7 @@
</span><span class="cx">     auto result = adoptRef(*new CryptoAlgorithmAesKeyGenParams);
</span><span class="cx"> 
</span><span class="cx">     JSValue lengthValue = getProperty(&amp;state, value.getObject(), &quot;length&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     result-&gt;length = convert&lt;uint16_t&gt;(state, lengthValue, EnforceRange);
</span><span class="cx"> 
</span><span class="lines">@@ -218,8 +214,7 @@
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     result-&gt;hasLength = jsDictionary.get(&quot;length&quot;, result-&gt;length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     return WTFMove(result);
</span><span class="cx"> }
</span><span class="lines">@@ -238,17 +233,14 @@
</span><span class="cx">     auto result = adoptRef(*new CryptoAlgorithmRsaKeyGenParams);
</span><span class="cx"> 
</span><span class="cx">     JSValue modulusLengthValue = getProperty(&amp;state, value.getObject(), &quot;modulusLength&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: Why no EnforceRange? Filed as &lt;https://www.w3.org/Bugs/Public/show_bug.cgi?id=23779&gt;.
</span><span class="cx">     result-&gt;modulusLength = convert&lt;uint32_t&gt;(state, modulusLengthValue, NormalConversion);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     JSValue publicExponentValue = getProperty(&amp;state, value.getObject(), &quot;publicExponent&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;Uint8Array&gt; publicExponentArray = toUint8Array(publicExponentValue);
</span><span class="cx">     if (!publicExponentArray) {
</span><span class="lines">@@ -287,8 +279,7 @@
</span><span class="cx">         return nullptr;
</span><span class="cx"> 
</span><span class="cx">     JSValue labelValue = getProperty(exec, value.getObject(), &quot;label&quot;);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     result-&gt;hasLabel = !labelValue.isUndefinedOrNull();
</span><span class="cx">     if (!result-&gt;hasLabel)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCryptoKeySerializationJWKcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSCryptoKeySerializationJWK.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -88,8 +88,7 @@
</span><span class="cx">     ASSERT(!scope.exception());
</span><span class="cx">     if (!jsValue.getString(exec, result)) {
</span><span class="cx">         // Can get an out of memory exception.
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         throwTypeError(exec, scope, String::format(&quot;Expected a string value for \&quot;%s\&quot; JSON key&quot;,  key));
</span><span class="cx">         return false;
</span><span class="cx">     }
</span><span class="lines">@@ -320,8 +319,7 @@
</span><span class="cx">                 return;
</span><span class="cx">         }
</span><span class="cx">     } else {
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">         String jwkUseString;
</span><span class="cx">         if (!getStringFromJSON(m_exec, m_json.get(), &quot;use&quot;, jwkUseString)) {
</span><span class="lines">@@ -437,8 +435,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!getBigIntegerVectorFromJSON(m_exec, m_json.get(), &quot;d&quot;, modulus)) {
</span><del>-        if (scope.exception())
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return CryptoKeyDataRSAComponents::createPublic(modulus, exponent);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -446,39 +443,33 @@
</span><span class="cx">     CryptoKeyDataRSAComponents::PrimeInfo secondPrimeInfo;
</span><span class="cx">     Vector&lt;CryptoKeyDataRSAComponents::PrimeInfo&gt; otherPrimeInfos;
</span><span class="cx">     if (!getBigIntegerVectorFromJSON(m_exec, m_json.get(), &quot;p&quot;, firstPrimeInfo.primeFactor)) {
</span><del>-        if (scope.exception())
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return CryptoKeyDataRSAComponents::createPrivate(modulus, exponent, privateExponent);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!getBigIntegerVectorFromJSON(m_exec, m_json.get(), &quot;dp&quot;, firstPrimeInfo.factorCRTExponent)) {
</span><del>-        if (scope.exception())
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return CryptoKeyDataRSAComponents::createPrivate(modulus, exponent, privateExponent);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!getBigIntegerVectorFromJSON(m_exec, m_json.get(), &quot;q&quot;, secondPrimeInfo.primeFactor)) {
</span><del>-        if (scope.exception())
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return CryptoKeyDataRSAComponents::createPrivate(modulus, exponent, privateExponent);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!getBigIntegerVectorFromJSON(m_exec, m_json.get(), &quot;dq&quot;, secondPrimeInfo.factorCRTExponent)) {
</span><del>-        if (scope.exception())
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return CryptoKeyDataRSAComponents::createPrivate(modulus, exponent, privateExponent);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     if (!getBigIntegerVectorFromJSON(m_exec, m_json.get(), &quot;qi&quot;, secondPrimeInfo.factorCRTCoefficient)) {
</span><del>-        if (scope.exception())
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return CryptoKeyDataRSAComponents::createPrivate(modulus, exponent, privateExponent);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSArray* otherPrimeInfoJSArray;
</span><span class="cx">     if (!getJSArrayFromJSON(m_exec, m_json.get(), &quot;oth&quot;, otherPrimeInfoJSArray)) {
</span><del>-        if (scope.exception())
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return CryptoKeyDataRSAComponents::createPrivateWithAdditionalData(modulus, exponent, privateExponent, firstPrimeInfo, secondPrimeInfo, otherPrimeInfos);
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -485,8 +476,7 @@
</span><span class="cx">     for (size_t i = 0; i &lt; otherPrimeInfoJSArray-&gt;length(); ++i) {
</span><span class="cx">         CryptoKeyDataRSAComponents::PrimeInfo info;
</span><span class="cx">         JSValue element = otherPrimeInfoJSArray-&gt;getIndex(m_exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         if (!element.isObject()) {
</span><span class="cx">             throwTypeError(m_exec, scope, ASCIILiteral(&quot;JWK \&quot;oth\&quot; array member is not an object&quot;));
</span><span class="cx">             return nullptr;
</span><span class="lines">@@ -574,8 +564,7 @@
</span><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     JSArray* oth = constructEmptyArray(exec, 0, exec-&gt;lexicalGlobalObject(), data.otherPrimeInfos().size());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     for (size_t i = 0, size = data.otherPrimeInfos().size(); i &lt; size; ++i) {
</span><span class="cx">         JSObject* jsPrimeInfo = constructEmptyObject(exec);
</span><span class="cx">         addToJSON(exec, jsPrimeInfo, &quot;r&quot;, base64URLEncode(data.otherPrimeInfos()[i].primeFactor));
</span><span class="lines">@@ -702,8 +691,7 @@
</span><span class="cx">     VM&amp; vm = exec-&gt;vm();
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx">     JSArray* keyOps = constructEmptyArray(exec, 0, exec-&gt;lexicalGlobalObject(), 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     unsigned index = 0;
</span><span class="cx">     if (usages &amp; CryptoKeyUsageSign)
</span><span class="lines">@@ -741,14 +729,12 @@
</span><span class="cx">     JSObject* result = constructEmptyObject(exec);
</span><span class="cx"> 
</span><span class="cx">     addJWKAlgorithmToJSON(exec, result, key);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return String();
</del><ins>+    RETURN_IF_EXCEPTION(scope, String());
</ins><span class="cx"> 
</span><span class="cx">     addBoolToJSON(exec, result, &quot;ext&quot;, key.extractable());
</span><span class="cx"> 
</span><span class="cx">     addUsagesToJSON(exec, result, key.usagesBitmap());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return String();
</del><ins>+    RETURN_IF_EXCEPTION(scope, String());
</ins><span class="cx"> 
</span><span class="cx">     if (is&lt;CryptoKeyDataOctetSequence&gt;(*keyData))
</span><span class="cx">         buildJSONForOctetSequence(exec, downcast&lt;CryptoKeyDataOctetSequence&gt;(*keyData).octetSequence(), result);
</span><span class="lines">@@ -758,8 +744,7 @@
</span><span class="cx">         throwTypeError(exec, scope, ASCIILiteral(&quot;Key doesn't support exportKey&quot;));
</span><span class="cx">         return String();
</span><span class="cx">     }
</span><del>-    if (UNLIKELY(scope.exception()))
-        return String();
</del><ins>+    RETURN_IF_EXCEPTION(scope, String());
</ins><span class="cx"> 
</span><span class="cx">     return JSONStringify(exec, result, 0);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCustomElementInterfacecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCustomElementInterface.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCustomElementInterface.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSCustomElementInterface.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -111,8 +111,7 @@
</span><span class="cx">     InspectorInstrumentationCookie cookie = JSMainThreadExecState::instrumentFunctionConstruct(&amp;document, constructType, constructData);
</span><span class="cx">     JSValue newElement = construct(&amp;state, constructor, constructType, constructData, args);
</span><span class="cx">     InspectorInstrumentation::didCallFunction(cookie, &amp;document);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     ASSERT(!newElement.isEmpty());
</span><span class="cx">     HTMLElement* wrappedElement = JSHTMLElement::toWrapped(newElement);
</span><span class="lines">@@ -167,8 +166,7 @@
</span><span class="cx">     ASSERT(context-&gt;isDocument());
</span><span class="cx">     JSDOMGlobalObject* globalObject = toJSDOMGlobalObject(context, *m_isolatedWorld);
</span><span class="cx">     ExecState* state = globalObject-&gt;globalExec();
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     ConstructData constructData;
</span><span class="cx">     ConstructType constructType = m_constructor-&gt;methodTable()-&gt;getConstructData(m_constructor.get(), constructData);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSCustomElementRegistryCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSCustomElementRegistryCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSCustomElementRegistryCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSCustomElementRegistryCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -46,8 +46,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSValue callback = prototype.get(&amp;state, id);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     if (callback.isUndefined())
</span><span class="cx">         return nullptr;
</span><span class="cx">     if (!callback.isFunction()) {
</span><span class="lines">@@ -88,8 +87,7 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     AtomicString localName(state.uncheckedArgument(0).toString(&amp;state)-&gt;toAtomicString(&amp;state));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue constructorValue = state.uncheckedArgument(1);
</span><span class="cx">     if (!constructorValue.isConstructor())
</span><span class="lines">@@ -118,8 +116,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSValue prototypeValue = constructor-&gt;get(&amp;state, vm.propertyNames-&gt;prototype);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     if (!prototypeValue.isObject())
</span><span class="cx">         return throwTypeError(&amp;state, scope, ASCIILiteral(&quot;Custom element constructor's prototype must be an object&quot;));
</span><span class="cx">     JSObject&amp; prototypeObject = *asObject(prototypeValue);
</span><span class="lines">@@ -129,26 +126,21 @@
</span><span class="cx"> 
</span><span class="cx">     if (auto* connectedCallback = getCustomElementCallback(state, prototypeObject, Identifier::fromString(&amp;vm, &quot;connectedCallback&quot;)))
</span><span class="cx">         elementInterface-&gt;setConnectedCallback(connectedCallback);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (auto* disconnectedCallback = getCustomElementCallback(state, prototypeObject, Identifier::fromString(&amp;vm, &quot;disconnectedCallback&quot;)))
</span><span class="cx">         elementInterface-&gt;setDisconnectedCallback(disconnectedCallback);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (auto* adoptedCallback = getCustomElementCallback(state, prototypeObject, Identifier::fromString(&amp;vm, &quot;adoptedCallback&quot;)))
</span><span class="cx">         elementInterface-&gt;setAdoptedCallback(adoptedCallback);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto* attributeChangedCallback = getCustomElementCallback(state, prototypeObject, Identifier::fromString(&amp;vm, &quot;attributeChangedCallback&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     if (attributeChangedCallback) {
</span><span class="cx">         auto value = convertOptional&lt;Vector&lt;String&gt;&gt;(state, constructor-&gt;get(&amp;state, Identifier::fromString(&amp;state, &quot;observedAttributes&quot;)));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         if (value)
</span><span class="cx">             elementInterface-&gt;setAttributeChangedCallback(attributeChangedCallback, *value);
</span><span class="cx">     }
</span><span class="lines">@@ -170,8 +162,7 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     AtomicString localName(state.uncheckedArgument(0).toString(&amp;state)-&gt;toAtomicString(&amp;state));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!validateCustomElementNameAndThrowIfNeeded(state, localName)) {
</span><span class="cx">         ASSERT(scope.exception());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -123,8 +123,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String string = value.toWTFString(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return { };
</del><ins>+    RETURN_IF_EXCEPTION(scope, { });
</ins><span class="cx">     StringView view { string };
</span><span class="cx"> 
</span><span class="cx">     // Fast path for 8-bit strings, since they can't have any surrogates.
</span><span class="lines">@@ -402,8 +401,7 @@
</span><span class="cx">     CallData callData;
</span><span class="cx">     CallType callType;
</span><span class="cx">     JSValue applyMethod = object-&gt;getMethod(&amp;state, callData, callType, vm.propertyNames-&gt;iteratorSymbol, ASCIILiteral(&quot;Symbol.iterator property should be callable&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     return !applyMethod.isUndefined();
</span><span class="cx"> }
</span><span class="lines">@@ -541,8 +539,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     double x = value.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx"> 
</span><span class="cx">     switch (configuration) {
</span><span class="cx">     case NormalConversion:
</span><span class="lines">@@ -588,8 +585,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     double x = value.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx"> 
</span><span class="cx">     switch (configuration) {
</span><span class="cx">     case NormalConversion:
</span><span class="lines">@@ -681,8 +677,7 @@
</span><span class="cx">         return value.asInt32();
</span><span class="cx"> 
</span><span class="cx">     double x = value.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx">     return enforceRange(state, x, kMinInt32, kMaxInt32);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -714,8 +709,7 @@
</span><span class="cx">         return value.asUInt32();
</span><span class="cx"> 
</span><span class="cx">     double x = value.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx">     return enforceRange(state, x, 0, kMaxUInt32);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -725,8 +719,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     double x = value.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx">     return enforceRange(state, x, -kJSMaxInteger, kJSMaxInteger);
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -736,8 +729,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     double x = value.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return 0;
</del><ins>+    RETURN_IF_EXCEPTION(scope, 0);
</ins><span class="cx">     return enforceRange(state, x, 0, kJSMaxInteger);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMBindingh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMBinding.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDOMBinding.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -579,8 +579,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     JSC::JSValue lengthValue = object-&gt;get(&amp;exec, exec.propertyNames().length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     if (lengthValue.isUndefinedOrNull()) {
</span><span class="cx">         throwSequenceTypeError(exec, scope);
</span><span class="lines">@@ -588,8 +587,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     length = lengthValue.toUInt32(&amp;exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     return object;
</span><span class="cx"> }
</span><span class="lines">@@ -635,8 +633,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSC::JSArray* array = constructEmptyArray(exec, nullptr, vector.size());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSC::jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</ins><span class="cx">     for (size_t i = 0; i &lt; vector.size(); ++i)
</span><span class="cx">         array-&gt;putDirectIndex(exec, i, toJS(exec, globalObject, vector[i]));
</span><span class="cx">     return array;
</span><span class="lines">@@ -648,8 +645,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     JSC::JSArray* array = constructEmptyArray(exec, nullptr, vector.size());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSC::jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</ins><span class="cx">     for (size_t i = 0; i &lt; vector.size(); ++i)
</span><span class="cx">         array-&gt;putDirectIndex(exec, i, toJS(exec, globalObject, vector[i].get()));
</span><span class="cx">     return array;
</span><span class="lines">@@ -738,12 +734,10 @@
</span><span class="cx">     JSC::MarkedArgumentBuffer list;
</span><span class="cx">     for (auto&amp; element : vector) {
</span><span class="cx">         list.append(JSValueTraits&lt;T&gt;::arrayJSValue(exec, globalObject, element));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSC::jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</ins><span class="cx">     }
</span><span class="cx">     auto* array = JSC::constructArray(exec, nullptr, globalObject, list);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSC::jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</ins><span class="cx">     return JSC::objectConstructorFreeze(exec, array);
</span><span class="cx"> }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMPromisecpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDOMPromise.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1,5 +1,5 @@
</span><span class="cx"> /*
</span><del>- * Copyright (C) 2013 Apple Inc. All rights reserved.
</del><ins>+ * Copyright (C) 2013, 2016 Apple Inc. All rights reserved.
</ins><span class="cx">  *
</span><span class="cx">  * Redistribution and use in source and binary forms, with or without
</span><span class="cx">  * modification, are permitted provided that the following conditions
</span><span class="lines">@@ -106,7 +106,7 @@
</span><span class="cx">     VM&amp; vm = state.vm();
</span><span class="cx">     auto scope = DECLARE_CATCH_SCOPE(vm);
</span><span class="cx"> 
</span><del>-    if (!scope.exception())
</del><ins>+    if (LIKELY(!scope.exception()))
</ins><span class="cx">         return;
</span><span class="cx"> 
</span><span class="cx">     JSValue error = scope.exception()-&gt;value();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMStringMapCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDOMStringMapCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -82,8 +82,7 @@
</span><span class="cx">         return false;
</span><span class="cx"> 
</span><span class="cx">     String stringValue = value.toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx"> 
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     wrapped().setItem(propertyNameToString(propertyName), stringValue, ec);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDOMWindowCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDOMWindowCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -397,8 +397,7 @@
</span><span class="cx"> #endif
</span><span class="cx"> 
</span><span class="cx">     String locationString = value.toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     if (Location* location = wrapped().location())
</span><span class="cx">         location-&gt;setHref(activeDOMWindow(&amp;state), firstDOMWindow(&amp;state), locationString);
</span><span class="lines">@@ -425,15 +424,12 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String urlString = valueToUSVStringWithUndefinedOrNullCheck(&amp;state, state.argument(0));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     JSValue targetValue = state.argument(1);
</span><span class="cx">     AtomicString target = targetValue.isUndefinedOrNull() ? AtomicString(&quot;_blank&quot;, AtomicString::ConstructFromLiteral) : targetValue.toString(&amp;state)-&gt;toAtomicString(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     String windowFeaturesString = valueToStringWithUndefinedOrNullCheck(&amp;state, state.argument(2));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;DOMWindow&gt; openedWindow = wrapped().open(urlString, target, windowFeaturesString, activeDOMWindow(&amp;state), firstDOMWindow(&amp;state));
</span><span class="cx">     if (!openedWindow)
</span><span class="lines">@@ -488,11 +484,9 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     String urlString = valueToStringWithUndefinedOrNullCheck(&amp;state, state.argument(0));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     String dialogFeaturesString = valueToStringWithUndefinedOrNullCheck(&amp;state, state.argument(2));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     DialogHandler handler(state);
</span><span class="cx"> 
</span><span class="lines">@@ -529,17 +523,14 @@
</span><span class="cx">         }
</span><span class="cx">         fillMessagePortArray(state, state.argument(transferablesArgIndex), messagePorts, arrayBuffers);
</span><span class="cx">     }
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto message = SerializedScriptValue::create(&amp;state, state.uncheckedArgument(0), &amp;messagePorts, &amp;arrayBuffers);
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     String targetOrigin = valueToUSVStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(targetOriginArgIndex));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     impl.postMessage(WTFMove(message), &amp;messagePorts, targetOrigin, callerDOMWindow(&amp;state), ec);
</span><span class="lines">@@ -563,8 +554,7 @@
</span><span class="cx"> 
</span><span class="cx">     ContentSecurityPolicy* contentSecurityPolicy = wrapped().document() ? wrapped().document()-&gt;contentSecurityPolicy() : nullptr;
</span><span class="cx">     std::unique_ptr&lt;ScheduledAction&gt; action = ScheduledAction::create(&amp;state, globalObject()-&gt;world(), contentSecurityPolicy);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!action)
</span><span class="cx">         return jsNumber(0);
</span><span class="lines">@@ -588,8 +578,7 @@
</span><span class="cx"> 
</span><span class="cx">     ContentSecurityPolicy* contentSecurityPolicy = wrapped().document() ? wrapped().document()-&gt;contentSecurityPolicy() : nullptr;
</span><span class="cx">     std::unique_ptr&lt;ScheduledAction&gt; action = ScheduledAction::create(&amp;state, globalObject()-&gt;world(), contentSecurityPolicy);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     int delay = state.argument(1).toInt32(&amp;state);
</span><span class="cx"> 
</span><span class="cx">     if (!action)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDataCueCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDataCueCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -58,12 +58,10 @@
</span><span class="cx">         return throwVMError(&amp;exec, scope, createNotEnoughArgumentsError(&amp;exec));
</span><span class="cx"> 
</span><span class="cx">     double startTime(exec.uncheckedArgument(0).toNumber(&amp;exec));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     double endTime(exec.uncheckedArgument(1).toNumber(&amp;exec));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     ScriptExecutionContext* context = castedThis-&gt;scriptExecutionContext();
</span><span class="cx">     if (!context)
</span><span class="lines">@@ -87,8 +85,7 @@
</span><span class="cx">     if (valueArgument.isCell() &amp;&amp; valueArgument.asCell()-&gt;inherits(std::remove_pointer&lt;JSArrayBuffer*&gt;::type::info())) {
</span><span class="cx"> 
</span><span class="cx">         ArrayBuffer* data = toArrayBuffer(valueArgument);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (UNLIKELY(!data)) {
</span><span class="cx">             setDOMException(&amp;exec, TypeError);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDeviceMotionEventCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDeviceMotionEventCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDeviceMotionEventCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDeviceMotionEventCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -55,28 +55,22 @@
</span><span class="cx">     ASSERT(!scope.exception());
</span><span class="cx"> 
</span><span class="cx">     JSValue xValue = object-&gt;get(&amp;state, Identifier::fromString(&amp;state, &quot;x&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     bool canProvideX = !xValue.isUndefinedOrNull();
</span><span class="cx">     double x = xValue.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     JSValue yValue = object-&gt;get(&amp;state, Identifier::fromString(&amp;state, &quot;y&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     bool canProvideY = !yValue.isUndefinedOrNull();
</span><span class="cx">     double y = yValue.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     JSValue zValue = object-&gt;get(&amp;state, Identifier::fromString(&amp;state, &quot;z&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     bool canProvideZ = !zValue.isUndefinedOrNull();
</span><span class="cx">     double z = zValue.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     if (!canProvideX &amp;&amp; !canProvideY &amp;&amp; !canProvideZ)
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -97,28 +91,22 @@
</span><span class="cx">     ASSERT(!scope.exception());
</span><span class="cx"> 
</span><span class="cx">     JSValue alphaValue = object-&gt;get(&amp;state, Identifier::fromString(&amp;state, &quot;alpha&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     bool canProvideAlpha = !alphaValue.isUndefinedOrNull();
</span><span class="cx">     double alpha = alphaValue.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     JSValue betaValue = object-&gt;get(&amp;state, Identifier::fromString(&amp;state, &quot;beta&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     bool canProvideBeta = !betaValue.isUndefinedOrNull();
</span><span class="cx">     double beta = betaValue.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     JSValue gammaValue = object-&gt;get(&amp;state, Identifier::fromString(&amp;state, &quot;gamma&quot;));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">     bool canProvideGamma = !gammaValue.isUndefinedOrNull();
</span><span class="cx">     double gamma = gammaValue.toNumber(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return nullptr;
</del><ins>+    RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx"> 
</span><span class="cx">     if (!canProvideAlpha &amp;&amp; !canProvideBeta &amp;&amp; !canProvideGamma)
</span><span class="cx">         return nullptr;
</span><span class="lines">@@ -188,16 +176,13 @@
</span><span class="cx">     // If any of the parameters are null or undefined, mark them as not provided.
</span><span class="cx">     // Otherwise, use the standard JavaScript conversion.
</span><span class="cx">     RefPtr&lt;DeviceMotionData::Acceleration&gt; acceleration = readAccelerationArgument(state.argument(3), state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;DeviceMotionData::Acceleration&gt; accelerationIncludingGravity = readAccelerationArgument(state.argument(4), state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     RefPtr&lt;DeviceMotionData::RotationRate&gt; rotationRate = readRotationRateArgument(state.argument(5), state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     bool intervalProvided = !state.argument(6).isUndefinedOrNull();
</span><span class="cx">     double interval = state.argument(6).toNumber(&amp;state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDictionarycpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDictionary.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDictionary.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -88,8 +88,7 @@
</span><span class="cx">         finalResult = slot.getValue(m_exec, identifier);
</span><span class="cx">         return true;
</span><span class="cx">     });
</span><del>-    if (UNLIKELY(scope.exception()))
-        return ExceptionThrown;
</del><ins>+    RETURN_IF_EXCEPTION(scope, ExceptionThrown);
</ins><span class="cx">     return propertyFound ? PropertyFound : NoPropertyFound;
</span><span class="cx"> }
</span><span class="cx"> 
</span><span class="lines">@@ -161,13 +160,11 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned length = 0;
</span><span class="cx">     JSObject* object = toJSSequence(*exec, value, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0 ; i &lt; length; ++i) {
</span><span class="cx">         JSValue itemValue = object-&gt;get(exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         result.append(itemValue.toString(exec)-&gt;value(exec));
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -236,13 +233,11 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned length = 0;
</span><span class="cx">     JSObject* object = toJSSequence(*exec, value, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0 ; i &lt; length; ++i) {
</span><span class="cx">         JSValue itemValue = object-&gt;get(exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         result.add(itemValue.toString(exec)-&gt;value(exec));
</span><span class="cx">     }
</span><span class="cx"> }
</span><span class="lines">@@ -313,13 +308,11 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned length = 0;
</span><span class="cx">     JSObject* object = toJSSequence(*exec, value, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0 ; i &lt; length; ++i) {
</span><span class="cx">         JSValue itemValue = object-&gt;get(exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">         auto stream = JSMediaStream::toWrapped(itemValue);
</span><span class="cx">         if (!stream) {
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDictionaryh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDictionary.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDictionary.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDictionary.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -215,8 +215,7 @@
</span><span class="cx">         Result result;
</span><span class="cx">         convertValue(m_exec, value, result);
</span><span class="cx"> 
</span><del>-        if (UNLIKELY(scope.exception()))
-            return ExceptionThrown;
</del><ins>+        RETURN_IF_EXCEPTION(scope, ExceptionThrown);
</ins><span class="cx"> 
</span><span class="cx">         setter(context, result);
</span><span class="cx">         break;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSDocumentCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSDocumentCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -153,17 +153,13 @@
</span><span class="cx">     if (UNLIKELY(state.argumentCount() &lt; 4))
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx">     auto contextId = state.uncheckedArgument(0).toWTFString(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     auto name = state.uncheckedArgument(1).toWTFString(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     auto width = convert&lt;int32_t&gt;(state, state.uncheckedArgument(2), NormalConversion);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     auto height = convert&lt;int32_t&gt;(state, state.uncheckedArgument(3), NormalConversion);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto* context = wrapped().getCSSCanvasContext(WTFMove(contextId), WTFMove(name), WTFMove(width), WTFMove(height));
</span><span class="cx">     if (!context)
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSFileCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSFileCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSFileCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSFileCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -60,8 +60,7 @@
</span><span class="cx"> 
</span><span class="cx">     unsigned blobPartsLength = 0;
</span><span class="cx">     JSObject* blobParts = toJSSequence(exec, arg, blobPartsLength);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     ASSERT(blobParts);
</span><span class="cx"> 
</span><span class="cx">     arg = exec.argument(1);
</span><span class="lines">@@ -69,8 +68,7 @@
</span><span class="cx">         return throwArgumentTypeError(exec, scope, 1, &quot;filename&quot;, &quot;File&quot;, nullptr, &quot;DOMString&quot;);
</span><span class="cx"> 
</span><span class="cx">     String filename = arg.toWTFString(&amp;exec).replace('/', ':');
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     String normalizedType;
</span><span class="cx">     Optional&lt;int64_t&gt; lastModified;
</span><span class="lines">@@ -87,8 +85,7 @@
</span><span class="cx">         // Attempt to get the type property.
</span><span class="cx">         String type;
</span><span class="cx">         dictionary.get(&quot;type&quot;, type);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         normalizedType = Blob::normalizedContentType(type);
</span><span class="cx"> 
</span><span class="lines">@@ -95,8 +92,7 @@
</span><span class="cx">         // Only try to parse the lastModified date if there was not an invalid type argument.
</span><span class="cx">         if (type.isEmpty() ||  !normalizedType.isEmpty()) {
</span><span class="cx">             dictionary.get(&quot;lastModified&quot;, lastModified);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         }
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="lines">@@ -107,8 +103,7 @@
</span><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0; i &lt; blobPartsLength; ++i) {
</span><span class="cx">         JSValue item = blobParts-&gt;get(&amp;exec, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (ArrayBuffer* arrayBuffer = toArrayBuffer(item))
</span><span class="cx">             blobBuilder.append(arrayBuffer);
</span><span class="lines">@@ -118,8 +113,7 @@
</span><span class="cx">             blobBuilder.append(blob);
</span><span class="cx">         else {
</span><span class="cx">             String string = item.toWTFString(&amp;exec);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return JSValue::encode(jsUndefined());
</del><ins>+            RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">             blobBuilder.append(string, ASCIILiteral(&quot;transparent&quot;));
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSGeolocationCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSGeolocationCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSGeolocationCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSGeolocationCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -108,17 +108,14 @@
</span><span class="cx">     // Arguments: PositionCallback, (optional)PositionErrorCallback, (optional)PositionOptions
</span><span class="cx"> 
</span><span class="cx">     auto positionCallback = createFunctionOnlyCallback&lt;JSPositionCallback&gt;(&amp;state, globalObject(), state.argument(0));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     ASSERT(positionCallback);
</span><span class="cx"> 
</span><span class="cx">     auto positionErrorCallback = createFunctionOnlyCallback&lt;JSPositionErrorCallback&gt;(&amp;state, globalObject(), state.argument(1), CallbackAllowUndefined | CallbackAllowNull);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto positionOptions = createPositionOptions(&amp;state, state.argument(2));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     ASSERT(positionOptions);
</span><span class="cx"> 
</span><span class="cx">     wrapped().getCurrentPosition(WTFMove(positionCallback), WTFMove(positionErrorCallback), WTFMove(positionOptions));
</span><span class="lines">@@ -133,17 +130,14 @@
</span><span class="cx">     // Arguments: PositionCallback, (optional)PositionErrorCallback, (optional)PositionOptions
</span><span class="cx"> 
</span><span class="cx">     auto positionCallback = createFunctionOnlyCallback&lt;JSPositionCallback&gt;(&amp;state, globalObject(), state.argument(0));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     ASSERT(positionCallback);
</span><span class="cx"> 
</span><span class="cx">     auto positionErrorCallback = createFunctionOnlyCallback&lt;JSPositionErrorCallback&gt;(&amp;state, globalObject(), state.argument(1), CallbackAllowUndefined | CallbackAllowNull);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     auto positionOptions = createPositionOptions(&amp;state, state.argument(2));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     ASSERT(positionOptions);
</span><span class="cx"> 
</span><span class="cx">     int watchID = wrapped().watchPosition(WTFMove(positionCallback), WTFMove(positionErrorCallback), WTFMove(positionOptions));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLAllCollectionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSHTMLAllCollectionCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -68,8 +68,7 @@
</span><span class="cx">     if (exec-&gt;argumentCount() == 1) {
</span><span class="cx">         // Support for document.all(&lt;index&gt;) etc.
</span><span class="cx">         String string = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">         if (Optional&lt;uint32_t&gt; index = parseIndex(*string.impl()))
</span><span class="cx">             return JSValue::encode(toJS(exec, jsCollection-&gt;globalObject(), collection.item(index.value())));
</span><span class="cx"> 
</span><span class="lines">@@ -79,8 +78,7 @@
</span><span class="cx"> 
</span><span class="cx">     // The second arg, if set, is the index of the item we want
</span><span class="cx">     String string = exec-&gt;argument(0).toString(exec)-&gt;value(exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx">     if (Optional&lt;uint32_t&gt; index = parseIndex(*exec-&gt;argument(1).toWTFString(exec).impl())) {
</span><span class="cx">         if (auto* item = collection.namedItemWithIndex(string, index.value()))
</span><span class="cx">             return JSValue::encode(toJS(exec, jsCollection-&gt;globalObject(), *item));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLCanvasElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSHTMLCanvasElementCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -86,8 +86,7 @@
</span><span class="cx"> #if ENABLE(WEBGL)
</span><span class="cx">     if (HTMLCanvasElement::is3dType(contextId)) {
</span><span class="cx">         get3DContextAttributes(state, attrs);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx"> #endif
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHTMLElementCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHTMLElementCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHTMLElementCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSHTMLElementCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -78,8 +78,7 @@
</span><span class="cx">     if (!elementInterface-&gt;isUpgradingElement()) {
</span><span class="cx">         Structure* baseStructure = getDOMStructure&lt;JSHTMLElement&gt;(vm, *globalObject);
</span><span class="cx">         auto* newElementStructure = InternalFunction::createSubclassStructure(&amp;exec, newTargetValue, baseStructure);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSValue::encode(jsUndefined());
</del><ins>+        RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">         Ref&lt;HTMLElement&gt; element = HTMLElement::create(elementInterface-&gt;name(), document);
</span><span class="cx">         element-&gt;setIsDefinedCustomElement(*elementInterface);
</span><span class="lines">@@ -98,13 +97,11 @@
</span><span class="cx">     ASSERT(elementWrapperValue.isObject());
</span><span class="cx"> 
</span><span class="cx">     JSValue newPrototype = newTarget-&gt;get(&amp;exec, vm.propertyNames-&gt;prototype);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSObject* elementWrapperObject = asObject(elementWrapperValue);
</span><span class="cx">     JSObject::setPrototype(elementWrapperObject, &amp;exec, newPrototype, true /* shouldThrowIfCantSet */);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     elementInterface-&gt;didUpgradeLastElementInConstructionStack();
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSHistoryCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSHistoryCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -63,19 +63,16 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     auto historyState = SerializedScriptValue::create(&amp;state, state.uncheckedArgument(0), 0, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: title should not be nullable.
</span><span class="cx">     String title = valueToStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(1));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     String url;
</span><span class="cx">     if (argCount &gt; 2) {
</span><span class="cx">         url = valueToUSVStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(2));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ExceptionCodeWithMessage ec;
</span><span class="lines">@@ -97,19 +94,16 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     auto historyState = SerializedScriptValue::create(&amp;state, state.uncheckedArgument(0), 0, 0);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     // FIXME: title should not be nullable.
</span><span class="cx">     String title = valueToStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(1));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     String url;
</span><span class="cx">     if (argCount &gt; 2) {
</span><span class="cx">         url = valueToUSVStringWithUndefinedOrNullCheck(&amp;state, state.uncheckedArgument(2));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ExceptionCodeWithMessage ec;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSIDBDatabaseCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSIDBDatabaseCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -55,8 +55,7 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     String name = state.argument(0).toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSValue optionsValue = state.argument(1);
</span><span class="cx">     if (!optionsValue.isUndefinedOrNull() &amp;&amp; !optionsValue.isObject())
</span><span class="lines">@@ -66,18 +65,15 @@
</span><span class="cx">     bool autoIncrement = false;
</span><span class="cx">     if (!optionsValue.isUndefinedOrNull()) {
</span><span class="cx">         JSValue keyPathValue = optionsValue.get(&amp;state, Identifier::fromString(&amp;state, &quot;keyPath&quot;));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">         if (!keyPathValue.isUndefinedOrNull()) {
</span><span class="cx">             keyPath = idbKeyPathFromValue(state, keyPathValue);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return jsUndefined();
</del><ins>+            RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         autoIncrement = optionsValue.get(&amp;state, Identifier::fromString(&amp;state, &quot;autoIncrement&quot;)).toBoolean(&amp;state);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     ExceptionCodeWithMessage ec;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMessageEventCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSMessageEventCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -119,12 +119,10 @@
</span><span class="cx">         messagePorts = std::make_unique&lt;MessagePortArray&gt;();
</span><span class="cx">         arrayBuffers = std::make_unique&lt;ArrayBufferArray&gt;();
</span><span class="cx">         fillMessagePortArray(state, state.argument(7), *messagePorts, *arrayBuffers);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx">     Deprecated::ScriptValue dataArg(vm, state.argument(3));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     MessageEvent&amp; event = jsEvent-&gt;wrapped();
</span><span class="cx">     event.initMessageEvent(typeArg, canBubbleArg, cancelableArg, dataArg, originArg, lastEventIdArg, sourceArg, WTFMove(messagePorts));
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMessagePortCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMessagePortCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMessagePortCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSMessagePortCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -73,13 +73,11 @@
</span><span class="cx">     // Validation of sequence types, per WebIDL spec 4.1.13.
</span><span class="cx">     unsigned length = 0;
</span><span class="cx">     JSObject* object = toJSSequence(state, value, length);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     for (unsigned i = 0 ; i &lt; length; ++i) {
</span><span class="cx">         JSValue value = object-&gt;get(&amp;state, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         // Validation of non-null objects, per HTML5 spec 10.3.3.
</span><span class="cx">         if (value.isUndefinedOrNull()) {
</span><span class="cx">             setDOMException(&amp;state, INVALID_STATE_ERR);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMessagePortCustomh"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMessagePortCustom.h (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMessagePortCustom.h        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSMessagePortCustom.h        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -61,8 +61,7 @@
</span><span class="cx">         ArrayBufferArray arrayBufferArray;
</span><span class="cx">         fillMessagePortArray(state, state.argument(1), portArray, arrayBufferArray);
</span><span class="cx">         auto message = SerializedScriptValue::create(&amp;state, state.uncheckedArgument(0), &amp;portArray, &amp;arrayBufferArray);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return JSC::jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</ins><span class="cx"> 
</span><span class="cx">         ExceptionCode ec = 0;
</span><span class="cx">         impl-&gt;postMessage(WTFMove(message), &amp;portArray, ec);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSMockContentFilterSettingsCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSMockContentFilterSettingsCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSMockContentFilterSettingsCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSMockContentFilterSettingsCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -62,8 +62,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     uint8_t nativeValue { convert&lt;uint8_t&gt;(state, value, EnforceRange) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     DecisionPoint decisionPoint { static_cast&lt;DecisionPoint&gt;(nativeValue) };
</span><span class="cx">     switch (decisionPoint) {
</span><span class="lines">@@ -98,8 +97,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     uint8_t nativeValue { convert&lt;uint8_t&gt;(state, value, EnforceRange) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return Decision::Allow;
</del><ins>+    RETURN_IF_EXCEPTION(scope, Decision::Allow);
</ins><span class="cx"> 
</span><span class="cx">     Decision decision { static_cast&lt;Decision&gt;(nativeValue) };
</span><span class="cx">     switch (decision) {
</span><span class="lines">@@ -123,8 +121,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     Decision decision { toDecision(state, value) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     wrapped().setDecision(decision);
</span><span class="cx"> }
</span><span class="lines">@@ -140,8 +137,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     Decision unblockRequestDecision { toDecision(state, value) };
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     wrapped().setUnblockRequestDecision(unblockRequestDecision);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeFilterCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeFilterCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeFilterCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSNodeFilterCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -49,8 +49,7 @@
</span><span class="cx">     ExecState* state = m_data-&gt;globalObject()-&gt;globalExec();
</span><span class="cx">     MarkedArgumentBuffer args;
</span><span class="cx">     args.append(toJS(state, m_data-&gt;globalObject(), node));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return NodeFilter::FILTER_REJECT;
</del><ins>+    RETURN_IF_EXCEPTION(scope, NodeFilter::FILTER_REJECT);
</ins><span class="cx"> 
</span><span class="cx">     NakedPtr&lt;Exception&gt; returnedException;
</span><span class="cx">     JSValue value = m_data-&gt;invokeCallback(args, JSCallbackData::CallbackType::FunctionOrObject, Identifier::fromString(state, &quot;acceptNode&quot;), returnedException);
</span><span class="lines">@@ -63,8 +62,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     uint16_t result = convert&lt;uint16_t&gt;(*state, value, NormalConversion);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return NodeFilter::FILTER_REJECT;
</del><ins>+    RETURN_IF_EXCEPTION(scope, NodeFilter::FILTER_REJECT);
</ins><span class="cx"> 
</span><span class="cx">     return result;
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSNodeOrStringcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSNodeOrString.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSNodeOrString.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSNodeOrString.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -50,8 +50,7 @@
</span><span class="cx">             result.uncheckedAppend(node-&gt;wrapped());
</span><span class="cx">         else {
</span><span class="cx">             String string = value.toWTFString(&amp;state);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return { };
</del><ins>+            RETURN_IF_EXCEPTION(scope, { });
</ins><span class="cx">             result.uncheckedAppend(string);
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSQLTransactionCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSSQLTransactionCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -53,8 +53,7 @@
</span><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     String sqlStatement = state.argument(0).toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     // Now assemble the list of SQL arguments
</span><span class="cx">     Vector&lt;SQLValue&gt; sqlValues;
</span><span class="lines">@@ -66,16 +65,13 @@
</span><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         JSValue lengthValue = object-&gt;get(&amp;state, state.propertyNames().length);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">         unsigned length = lengthValue.toUInt32(&amp;state);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">         for (unsigned i = 0 ; i &lt; length; ++i) {
</span><span class="cx">             JSValue value = object-&gt;get(&amp;state, i);
</span><del>-            if (UNLIKELY(scope.exception()))
-                return jsUndefined();
</del><ins>+            RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">             if (value.isUndefinedOrNull())
</span><span class="cx">                 sqlValues.append(SQLValue());
</span><span class="lines">@@ -84,8 +80,7 @@
</span><span class="cx">             else {
</span><span class="cx">                 // Convert the argument to a string and append it
</span><span class="cx">                 sqlValues.append(value.toString(&amp;state)-&gt;value(&amp;state));
</span><del>-                if (UNLIKELY(scope.exception()))
-                    return jsUndefined();
</del><ins>+                RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">             }
</span><span class="cx">         }
</span><span class="cx">     }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSSVGLengthCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSSVGLengthCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSSVGLengthCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSSVGLengthCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -90,8 +90,7 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     unsigned short unitType = state.uncheckedArgument(0).toUInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     SVGLengthContext lengthContext(wrapped().contextElement());
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSStorageCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSStorageCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -86,13 +86,11 @@
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     unsigned length = thisObject-&gt;wrapped().length(ec);
</span><span class="cx">     setDOMException(exec, ec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     for (unsigned i = 0; i &lt; length; ++i) {
</span><span class="cx">         propertyNames.add(Identifier::fromString(exec, thisObject-&gt;wrapped().key(i, ec)));
</span><span class="cx">         setDOMException(exec, ec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     }
</span><span class="cx">         
</span><span class="cx">     Base::getOwnPropertyNames(thisObject, exec, propertyNames, mode);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSTextTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSTextTrackCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -48,8 +48,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     auto&amp; string = value.toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     wrapped().setLanguage(string);
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSVideoTrackCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSVideoTrackCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -47,8 +47,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     auto&amp; string = value.toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     wrapped().setKind(string);
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(state);
</span><span class="lines">@@ -63,8 +62,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     auto&amp; string = value.toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">     wrapped().setLanguage(string);
</span><span class="cx"> #else
</span><span class="cx">     UNUSED_PARAM(state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWebGL2RenderingContextCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWebGL2RenderingContextCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWebGL2RenderingContextCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSWebGL2RenderingContextCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -106,11 +106,9 @@
</span><span class="cx"> 
</span><span class="cx">     WebGL2RenderingContext&amp; context = wrapped();
</span><span class="cx">     unsigned pname = exec.uncheckedArgument(0).toInt32(&amp;exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     unsigned index = exec.uncheckedArgument(1).toInt32(&amp;exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     WebGLGetInfo info = context.getIndexedParameter(pname, index);
</span><span class="cx">     return toJS(&amp;exec, globalObject(), info);
</span><span class="cx"> }
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWebGLRenderingContextBaseCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSWebGLRenderingContextBaseCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -199,11 +199,9 @@
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     WebGLRenderingContextBase&amp; context = obj-&gt;wrapped();
</span><span class="cx">     unsigned target = state.uncheckedArgument(0).toInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     unsigned pname = state.uncheckedArgument(1).toInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     WebGLGetInfo info;
</span><span class="cx">     switch (objectType) {
</span><span class="cx">     case kBuffer:
</span><span class="lines">@@ -335,8 +333,7 @@
</span><span class="cx">     
</span><span class="cx">     WebGLRenderingContextBase&amp; context = wrapped();
</span><span class="cx">     const String name = state.uncheckedArgument(0).toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     WebGLExtension* extension = context.getExtension(name);
</span><span class="cx">     return toJS(&amp;state, globalObject(), extension);
</span><span class="cx"> }
</span><span class="lines">@@ -357,14 +354,11 @@
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     WebGLRenderingContextBase&amp; context = wrapped();
</span><span class="cx">     unsigned target = state.uncheckedArgument(0).toInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     unsigned attachment = state.uncheckedArgument(1).toInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     unsigned pname = state.uncheckedArgument(2).toInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     WebGLGetInfo info = context.getFramebufferAttachmentParameter(target, attachment, pname, ec);
</span><span class="cx">     if (ec) {
</span><span class="cx">         setDOMException(&amp;state, ec);
</span><span class="lines">@@ -384,8 +378,7 @@
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     WebGLRenderingContextBase&amp; context = wrapped();
</span><span class="cx">     unsigned pname = state.uncheckedArgument(0).toInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     WebGLGetInfo info = context.getParameter(pname, ec);
</span><span class="cx">     if (ec) {
</span><span class="cx">         setDOMException(&amp;state, ec);
</span><span class="lines">@@ -408,8 +401,7 @@
</span><span class="cx">     if (!program &amp;&amp; !state.uncheckedArgument(0).isUndefinedOrNull())
</span><span class="cx">         return throwTypeError(&amp;state, scope);
</span><span class="cx">     unsigned pname = state.uncheckedArgument(1).toInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     WebGLGetInfo info = context.getProgramParameter(program, pname, ec);
</span><span class="cx">     if (ec) {
</span><span class="cx">         setDOMException(&amp;state, ec);
</span><span class="lines">@@ -437,8 +429,7 @@
</span><span class="cx">         return throwTypeError(&amp;state, scope);
</span><span class="cx">     WebGLShader* shader = JSWebGLShader::toWrapped(state.uncheckedArgument(0));
</span><span class="cx">     unsigned pname = state.uncheckedArgument(1).toInt32(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     WebGLGetInfo info = context.getShaderParameter(shader, pname, ec);
</span><span class="cx">     if (ec) {
</span><span class="cx">         setDOMException(&amp;state, ec);
</span><span class="lines">@@ -511,8 +502,7 @@
</span><span class="cx">     
</span><span class="cx">     for (int32_t i = 0; i &lt; length; ++i) {
</span><span class="cx">         JSC::JSValue v = object-&gt;get(&amp;state, i);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         vector[i] = static_cast&lt;T&gt;(v.toNumber(&amp;state));
</span><span class="cx">     }
</span><span class="cx">     
</span><span class="lines">@@ -559,12 +549,10 @@
</span><span class="cx">     } else
</span><span class="cx">         index = state.uncheckedArgument(0).toInt32(&amp;state);
</span><span class="cx">     
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     
</span><span class="cx">     RefPtr&lt;Float32Array&gt; webGLArray = toFloat32Array(state.uncheckedArgument(1));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     if (webGLArray) {
</span><span class="lines">@@ -710,8 +698,7 @@
</span><span class="cx">         return throwTypeError(&amp;state, scope);
</span><span class="cx">     
</span><span class="cx">     bool transpose = state.uncheckedArgument(1).toBoolean(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     
</span><span class="cx">     RefPtr&lt;Float32Array&gt; webGLArray = toFloat32Array(state.uncheckedArgument(2));
</span><span class="cx">     
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWebKitSubtleCryptoCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSWebKitSubtleCryptoCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -84,8 +84,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     String keyFormatString = value.toString(&amp;state)-&gt;value(&amp;state);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return false;
</del><ins>+    RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">     if (keyFormatString == &quot;raw&quot;)
</span><span class="cx">         result = CryptoKeyFormat::Raw;
</span><span class="cx">     else if (keyFormatString == &quot;pkcs8&quot;)
</span><span class="lines">@@ -117,8 +116,7 @@
</span><span class="cx">     for (size_t i = 0; i &lt; array-&gt;length(); ++i) {
</span><span class="cx">         JSValue element = array-&gt;getIndex(&amp;state, i);
</span><span class="cx">         String usageString = element.toString(&amp;state)-&gt;value(&amp;state);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return false;
</del><ins>+        RETURN_IF_EXCEPTION(scope, false);
</ins><span class="cx">         if (usageString == &quot;encrypt&quot;)
</span><span class="cx">             result |= CryptoKeyUsageEncrypt;
</span><span class="cx">         else if (usageString == &quot;decrypt&quot;)
</span><span class="lines">@@ -421,8 +419,7 @@
</span><span class="cx">     bool extractable = false;
</span><span class="cx">     if (state.argumentCount() &gt;= 2) {
</span><span class="cx">         extractable = state.uncheckedArgument(1).toBoolean(&amp;state);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     CryptoKeyUsage keyUsages = 0;
</span><span class="lines">@@ -474,8 +471,7 @@
</span><span class="cx">             return;
</span><span class="cx">         }
</span><span class="cx">         keySerialization = std::make_unique&lt;JSCryptoKeySerializationJWK&gt;(&amp;state, jwkString);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         break;
</span><span class="cx">     }
</span><span class="cx">     default:
</span><span class="lines">@@ -491,8 +487,7 @@
</span><span class="cx">             throwTypeError(&amp;state, scope, ASCIILiteral(&quot;Algorithm specified in key is not compatible with one passed to importKey as argument&quot;));
</span><span class="cx">         return;
</span><span class="cx">     }
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     algorithm = reconciledResult-&gt;algorithm;
</span><span class="cx">     parameters = reconciledResult-&gt;parameters;
</span><span class="lines">@@ -503,16 +498,13 @@
</span><span class="cx">     ASSERT(parameters);
</span><span class="cx"> 
</span><span class="cx">     keySerialization-&gt;reconcileExtractable(extractable);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     keySerialization-&gt;reconcileUsages(keyUsages);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     auto keyData = keySerialization-&gt;keyData();
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx">     algorithm-&gt;importKey(*parameters, *keyData, extractable, keyUsages, WTFMove(callback), WTFMove(failureCallback), ec);
</span><span class="lines">@@ -557,8 +549,7 @@
</span><span class="cx">     bool extractable = false;
</span><span class="cx">     if (state.argumentCount() &gt;= 4) {
</span><span class="cx">         extractable = state.uncheckedArgument(3).toBoolean(&amp;state);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     CryptoKeyUsage keyUsages = 0;
</span><span class="lines">@@ -579,8 +570,7 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     WebCore::importKey(state, keyFormat, data, WTFMove(algorithm), WTFMove(parameters), extractable, keyUsages, WTFMove(successCallback), WTFMove(failureCallback));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     return promise;
</span><span class="cx"> }
</span><span class="lines">@@ -606,8 +596,7 @@
</span><span class="cx">     }
</span><span class="cx">     case CryptoKeyFormat::JWK: {
</span><span class="cx">         String result = JSCryptoKeySerializationJWK::serialize(&amp;state, key);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return;
</del><ins>+        RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx">         CString utf8String = result.utf8(StrictConversion);
</span><span class="cx">         Vector&lt;uint8_t&gt; resultBuffer;
</span><span class="cx">         resultBuffer.append(utf8String.data(), utf8String.length());
</span><span class="lines">@@ -648,8 +637,7 @@
</span><span class="cx">     };
</span><span class="cx"> 
</span><span class="cx">     WebCore::exportKey(state, keyFormat, *key, WTFMove(successCallback), WTFMove(failureCallback));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx"> 
</span><span class="cx">     return promise;
</span><span class="cx"> }
</span><span class="lines">@@ -780,8 +768,7 @@
</span><span class="cx">     bool extractable = false;
</span><span class="cx">     if (state.argumentCount() &gt;= 6) {
</span><span class="cx">         extractable = state.uncheckedArgument(5).toBoolean(&amp;state);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx"> 
</span><span class="cx">     CryptoKeyUsage keyUsages = 0;
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSWorkerCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -56,8 +56,7 @@
</span><span class="cx">         return throwVMError(&amp;exec, scope, createNotEnoughArgumentsError(&amp;exec));
</span><span class="cx"> 
</span><span class="cx">     String scriptURL = exec.uncheckedArgument(0).toWTFString(&amp;exec);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSValue::encode(JSValue());
</del><ins>+    RETURN_IF_EXCEPTION(scope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     // See section 4.8.2 step 14 of WebWorkers for why this is the lexicalGlobalObject.
</span><span class="cx">     DOMWindow&amp; window = asJSDOMWindow(exec.lexicalGlobalObject())-&gt;wrapped();
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsJSWorkerGlobalScopeCustomcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/JSWorkerGlobalScopeCustom.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -70,8 +70,7 @@
</span><span class="cx">     Vector&lt;String&gt; urls;
</span><span class="cx">     for (unsigned i = 0; i &lt; state.argumentCount(); ++i) {
</span><span class="cx">         urls.append(valueToUSVString(&amp;state, state.uncheckedArgument(i)));
</span><del>-        if (UNLIKELY(scope.exception()))
-            return jsUndefined();
</del><ins>+        RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     }
</span><span class="cx">     ExceptionCode ec = 0;
</span><span class="cx"> 
</span><span class="lines">@@ -89,8 +88,7 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;ScheduledAction&gt; action = ScheduledAction::create(&amp;state, globalObject()-&gt;world(), wrapped().contentSecurityPolicy());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     if (!action)
</span><span class="cx">         return jsNumber(0);
</span><span class="cx">     int delay = state.argument(1).toInt32(&amp;state);
</span><span class="lines">@@ -106,8 +104,7 @@
</span><span class="cx">         return throwException(&amp;state, scope, createNotEnoughArgumentsError(&amp;state));
</span><span class="cx"> 
</span><span class="cx">     std::unique_ptr&lt;ScheduledAction&gt; action = ScheduledAction::create(&amp;state, globalObject()-&gt;world(), wrapped().contentSecurityPolicy());
</span><del>-    if (UNLIKELY(scope.exception()))
-        return jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSValue());
</ins><span class="cx">     if (!action)
</span><span class="cx">         return jsNumber(0);
</span><span class="cx">     int delay = state.argument(1).toInt32(&amp;state);
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsReadableStreamDefaultControllercpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/ReadableStreamDefaultController.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -53,8 +53,7 @@
</span><span class="cx">     auto scope = DECLARE_THROW_SCOPE(vm);
</span><span class="cx"> 
</span><span class="cx">     auto function = object.get(&amp;state, JSC::Identifier::fromString(&amp;state, propertyName));
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSC::jsUndefined();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</ins><span class="cx"> 
</span><span class="cx">     if (!function.isFunction()) {
</span><span class="cx">         if (!function.isUndefined())
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsjsScheduledActioncpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/js/ScheduledAction.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/js/ScheduledAction.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/js/ScheduledAction.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -57,8 +57,7 @@
</span><span class="cx">         if (policy &amp;&amp; !policy-&gt;allowEval(exec))
</span><span class="cx">             return nullptr;
</span><span class="cx">         String string = v.toString(exec)-&gt;value(exec);
</span><del>-        if (UNLIKELY(scope.exception()))
-            return nullptr;
</del><ins>+        RETURN_IF_EXCEPTION(scope, nullptr);
</ins><span class="cx">         return std::unique_ptr&lt;ScheduledAction&gt;(new ScheduledAction(string, isolatedWorld));
</span><span class="cx">     }
</span><span class="cx"> 
</span></span></pre></div>
<a id="trunkSourceWebCorebindingsscriptsCodeGeneratorJSpm"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/bindings/scripts/CodeGeneratorJS.pm        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -1026,8 +1026,7 @@
</span><span class="cx">         my $needExceptionCheck = 0;
</span><span class="cx">         foreach my $member (@{$dictionary-&gt;members}) {
</span><span class="cx">             if ($needExceptionCheck) {
</span><del>-                $result .= &quot;    if (UNLIKELY(throwScope.exception()))\n&quot;;
-                $result .= &quot;        return Nullopt;\n&quot;;
</del><ins>+                $result .= &quot;    RETURN_IF_EXCEPTION(throwScope, Nullopt);\n&quot;;
</ins><span class="cx">             }
</span><span class="cx">             # FIXME: Eventually we will want this to share a lot more code with JSValueToNative.
</span><span class="cx">             my $type = $member-&gt;type;
</span><span class="lines">@@ -3248,8 +3247,7 @@
</span><span class="cx">                     push(@implContent, &quot;    if (!value.isUndefinedOrNull()) {\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;        nativeValue = $nativeValue;\n&quot;);
</span><span class="cx">                     if ($mayThrowException) {
</span><del>-                        push(@implContent, &quot;        if (UNLIKELY(throwScope.exception()))\n&quot;);
-                        push(@implContent, &quot;            return false;\n&quot;);
</del><ins>+                        push(@implContent, &quot;        RETURN_IF_EXCEPTION(throwScope, false);\n&quot;);
</ins><span class="cx">                     }
</span><span class="cx">                     push(@implContent, &quot;        if (UNLIKELY(!nativeValue)) {\n&quot;);
</span><span class="cx">                     push(@implContent, &quot;            throwAttributeTypeError(*state, throwScope, \&quot;$visibleInterfaceName\&quot;, \&quot;$name\&quot;, \&quot;$type\&quot;);\n&quot;);
</span><span class="lines">@@ -3259,8 +3257,7 @@
</span><span class="cx">                 } else {
</span><span class="cx">                     push(@implContent, &quot;    auto nativeValue = $nativeValue;\n&quot;);
</span><span class="cx">                     if ($mayThrowException) {
</span><del>-                        push(@implContent, &quot;    if (UNLIKELY(throwScope.exception()))\n&quot;);
-                        push(@implContent, &quot;        return false;\n&quot;);
</del><ins>+                        push(@implContent, &quot;    RETURN_IF_EXCEPTION(throwScope, false);\n&quot;);
</ins><span class="cx">                     }
</span><span class="cx">                 }
</span><span class="cx"> 
</span><span class="lines">@@ -4008,8 +4005,7 @@
</span><span class="cx">             push(@$outputArray, &quot;    auto $name = toArguments&lt;VariadicHelper&lt;$wrapperType, $wrappedType&gt;&gt;(*state, $argumentIndex);\n&quot;);
</span><span class="cx"> 
</span><span class="cx">             if (IsNativeType($type)) {
</span><del>-                push(@$outputArray, &quot;    if (UNLIKELY(throwScope.exception()))\n&quot;);
-                push(@$outputArray, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</del><ins>+                push(@$outputArray, &quot;    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n&quot;);
</ins><span class="cx">             }
</span><span class="cx">             else {
</span><span class="cx">                 push(@$outputArray, &quot;    if (!$name.arguments)\n&quot;);
</span><span class="lines">@@ -4051,8 +4047,7 @@
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             push(@$outputArray, &quot;$indent    $defineOptionalValue = parse&lt;$className&gt;(*state, ${name}Value);\n&quot;);
</span><del>-            push(@$outputArray, &quot;$indent    if (UNLIKELY(throwScope.exception()))\n&quot;);
-            push(@$outputArray, &quot;$indent        return JSValue::encode(jsUndefined());\n&quot;);
</del><ins>+            push(@$outputArray, &quot;$indent    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n&quot;);
</ins><span class="cx">             push(@$outputArray, &quot;$indent    if (UNLIKELY(!$optionalValue))\n&quot;);
</span><span class="cx">             push(@$outputArray, &quot;$indent        return throwArgumentMustBeEnumError(*state, throwScope, $argumentIndex, \&quot;$name\&quot;, \&quot;$visibleInterfaceName\&quot;, $quotedFunctionName, expectedEnumerationValues&lt;$className&gt;());\n&quot;);
</span><span class="cx">             push(@$outputArray, &quot;$indent    $name = optionalValue.value();\n&quot;) if $optionalValue ne $name;
</span><span class="lines">@@ -4077,8 +4072,7 @@
</span><span class="cx">                 push(@$outputArray, &quot;    if (!$checkedArgument.isUndefinedOrNull()) {\n&quot;);
</span><span class="cx">                 push(@$outputArray, &quot;        $name = $nativeValue;\n&quot;);
</span><span class="cx">                 if ($mayThrowException) {
</span><del>-                    push(@$outputArray, &quot;        if (UNLIKELY(throwScope.exception()))\n&quot;);
-                    push(@$outputArray, &quot;            return JSValue::encode(jsUndefined());\n&quot;);
</del><ins>+                    push(@$outputArray, &quot;        RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n&quot;);
</ins><span class="cx">                 }
</span><span class="cx">                 push(@$outputArray, &quot;        if (UNLIKELY(!$name))\n&quot;);
</span><span class="cx">                 push(@$outputArray, &quot;            return throwArgumentTypeError(*state, throwScope, $argumentIndex, \&quot;$name\&quot;, \&quot;$visibleInterfaceName\&quot;, $quotedFunctionName, \&quot;$type\&quot;);\n&quot;);
</span><span class="lines">@@ -4120,8 +4114,7 @@
</span><span class="cx">                 push(@$outputArray, &quot;    auto $name = ${outer}${nativeValue};\n&quot;);
</span><span class="cx">                 $value = &quot;WTFMove($name)&quot;;
</span><span class="cx">                 if ($mayThrowException) {
</span><del>-                    push(@$outputArray, &quot;    if (UNLIKELY(throwScope.exception()))\n&quot;);
-                    push(@$outputArray, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</del><ins>+                    push(@$outputArray, &quot;    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n&quot;);
</ins><span class="cx">                 }
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="lines">@@ -4497,8 +4490,7 @@
</span><span class="cx">         push(@implContent, &quot;\n&quot; . $indent . &quot;setDOMException(state, throwScope, ec);\n&quot;) if $raisesException;
</span><span class="cx"> 
</span><span class="cx">         if ($codeGenerator-&gt;ExtendedAttributeContains($function-&gt;signature-&gt;extendedAttributes-&gt;{&quot;CallWith&quot;}, &quot;ScriptState&quot;)) {
</span><del>-            push(@implContent, $indent . &quot;if (UNLIKELY(throwScope.exception()))\n&quot;);
-            push(@implContent, $indent . &quot;    return JSValue::encode(jsUndefined());\n&quot;);
</del><ins>+            push(@implContent, $indent . &quot;RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n&quot;);
</ins><span class="cx">         }
</span><span class="cx"> 
</span><span class="cx">         push(@implContent, $indent . &quot;return JSValue::encode(result);\n&quot;);
</span><span class="lines">@@ -5319,8 +5311,7 @@
</span><span class="cx">         return throwVMError(state, throwScope, createNotEnoughArgumentsError(state));
</span><span class="cx"> 
</span><span class="cx">     AtomicString eventType = state-&gt;uncheckedArgument(0).toString(state)-&gt;toAtomicString(state);
</span><del>-    if (UNLIKELY(throwScope.exception()))
-        return JSValue::encode(jsUndefined());
</del><ins>+    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());
</ins><span class="cx"> 
</span><span class="cx">     ${interfaceName}Init eventInit;
</span><span class="cx"> 
</span><span class="lines">@@ -5471,8 +5462,7 @@
</span><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             if ($codeGenerator-&gt;ExtendedAttributeContains($interface-&gt;extendedAttributes-&gt;{&quot;ConstructorCallWith&quot;}, &quot;ScriptState&quot;)) {
</span><del>-                 push(@$outputArray, &quot;    if (UNLIKELY(throwScope.exception()))\n&quot;);
-                 push(@$outputArray, &quot;        return JSValue::encode(jsUndefined());\n&quot;);
</del><ins>+                 push(@$outputArray, &quot;    RETURN_IF_EXCEPTION(throwScope, encodedJSValue());\n&quot;);
</ins><span class="cx">             }
</span><span class="cx"> 
</span><span class="cx">             push(@$outputArray, &quot;    return JSValue::encode(toJSNewlyCreated(state, castedThis-&gt;globalObject(), WTFMove(object)));\n&quot;);
</span></span></pre></div>
<a id="trunkSourceWebCorehtmlHTMLMediaElementcpp"></a>
<div class="modfile"><h4>Modified: trunk/Source/WebCore/html/HTMLMediaElement.cpp (206385 => 206386)</h4>
<pre class="diff"><span>
<span class="info">--- trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-09-26 19:09:03 UTC (rev 206385)
+++ trunk/Source/WebCore/html/HTMLMediaElement.cpp        2016-09-26 19:11:17 UTC (rev 206386)
</span><span class="lines">@@ -4048,8 +4048,7 @@
</span><span class="cx">     
</span><span class="cx">     JSC::Identifier controlsHost = JSC::Identifier::fromString(&amp;vm, &quot;controlsHost&quot;);
</span><span class="cx">     JSC::JSValue controlsHostJSWrapper = mediaJSWrapperObject-&gt;get(&amp;exec, controlsHost);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSC::jsNull();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</ins><span class="cx"> 
</span><span class="cx">     JSC::JSObject* controlsHostJSWrapperObject = JSC::jsDynamicCast&lt;JSC::JSObject*&gt;(controlsHostJSWrapper);
</span><span class="cx">     if (!controlsHostJSWrapperObject)
</span><span class="lines">@@ -4057,8 +4056,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSC::Identifier controllerID = JSC::Identifier::fromString(&amp;vm, &quot;controller&quot;);
</span><span class="cx">     JSC::JSValue controllerJSWrapper = controlsHostJSWrapperObject-&gt;get(&amp;exec, controllerID);
</span><del>-    if (UNLIKELY(scope.exception()))
-        return JSC::jsNull();
</del><ins>+    RETURN_IF_EXCEPTION(scope, JSC::JSValue());
</ins><span class="cx"> 
</span><span class="cx">     return controllerJSWrapper;
</span><span class="cx"> }
</span><span class="lines">@@ -6835,8 +6833,7 @@
</span><span class="cx">     JSC::JSValue controllerValue = controllerJSValue(*exec, *globalObject, *this);
</span><span class="cx">     JSC::JSObject* controllerObject = controllerValue.toObject(exec);
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return;
</del><ins>+    RETURN_IF_EXCEPTION(scope, void());
</ins><span class="cx"> 
</span><span class="cx">     JSC::JSValue functionValue = controllerObject-&gt;get(exec, JSC::Identifier::fromString(exec, &quot;handlePresentationModeChange&quot;));
</span><span class="cx">     if (UNLIKELY(scope.exception()) || functionValue.isUndefinedOrNull())
</span><span class="lines">@@ -6878,8 +6875,7 @@
</span><span class="cx">     JSC::JSValue controllerValue = controllerJSValue(*exec, *globalObject, *this);
</span><span class="cx">     JSC::JSObject* controllerObject = controllerValue.toObject(exec);
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return emptyString();
</del><ins>+    RETURN_IF_EXCEPTION(scope, emptyString());
</ins><span class="cx"> 
</span><span class="cx">     JSC::JSValue functionValue = controllerObject-&gt;get(exec, JSC::Identifier::fromString(exec, &quot;getCurrentControlsStatus&quot;));
</span><span class="cx">     if (UNLIKELY(scope.exception()) || functionValue.isUndefinedOrNull())
</span><span class="lines">@@ -6895,8 +6891,7 @@
</span><span class="cx"> 
</span><span class="cx">     JSC::JSValue outputValue = JSC::call(exec, function, callType, callData, controllerObject, argList);
</span><span class="cx"> 
</span><del>-    if (UNLIKELY(scope.exception()))
-        return emptyString();
</del><ins>+    RETURN_IF_EXCEPTION(scope, emptyString());
</ins><span class="cx"> 
</span><span class="cx">     return outputValue.getString(exec);
</span><span class="cx"> }
</span></span></pre>
</div>
</div>

</body>
</html>