Changeset 238391 in webkit for trunk/Source/JavaScriptCore/jsc.cpp
- Timestamp:
- Nov 19, 2018, 11:09:53 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/jsc.cpp
r237823 r238391 802 802 { 803 803 VM& vm = globalObject->vm(); 804 auto scope = DECLARE_CATCH_SCOPE(vm); 805 806 auto rejectPromise = [&] (JSValue error) { 807 return JSInternalPromiseDeferred::create(exec, globalObject)->reject(exec, error); 804 auto throwScope = DECLARE_THROW_SCOPE(vm); 805 806 auto* deferred = JSInternalPromiseDeferred::create(exec, globalObject); 807 RETURN_IF_EXCEPTION(throwScope, nullptr); 808 809 auto catchScope = DECLARE_CATCH_SCOPE(vm); 810 auto reject = [&] (JSValue rejectionReason) { 811 catchScope.clearException(); 812 auto result = deferred->reject(exec, rejectionReason); 813 catchScope.clearException(); 814 return result; 808 815 }; 809 816 810 817 if (sourceOrigin.isNull()) 811 return reject Promise(createError(exec, "Could not resolve the module specifier."_s));818 return reject(createError(exec, "Could not resolve the module specifier."_s)); 812 819 813 820 auto referrer = sourceOrigin.string(); 814 821 auto moduleName = moduleNameValue->value(exec); 815 if (UNLIKELY(scope.exception())) { 816 JSValue exception = scope.exception(); 817 scope.clearException(); 818 return rejectPromise(exception); 819 } 822 if (UNLIKELY(catchScope.exception())) 823 return reject(catchScope.exception()); 820 824 821 825 auto directoryName = extractDirectoryName(referrer.impl()); 822 826 if (!directoryName) 823 return reject Promise(createError(exec, makeString("Could not resolve the referrer name '", String(referrer.impl()), "'.")));827 return reject(createError(exec, makeString("Could not resolve the referrer name '", String(referrer.impl()), "'."))); 824 828 825 829 auto result = JSC::importModule(exec, Identifier::fromString(&vm, resolvePath(directoryName.value(), ModuleName(moduleName))), parameters, jsUndefined()); 826 scope.releaseAssertNoException(); 830 if (UNLIKELY(catchScope.exception())) 831 return reject(catchScope.exception()); 827 832 return result; 828 833 } … … 992 997 { 993 998 VM& vm = globalObject->vm(); 994 auto scope = DECLARE_CATCH_SCOPE(vm);999 auto throwScope = DECLARE_THROW_SCOPE(vm); 995 1000 JSInternalPromiseDeferred* deferred = JSInternalPromiseDeferred::create(exec, globalObject); 1001 RETURN_IF_EXCEPTION(throwScope, nullptr); 1002 1003 auto catchScope = DECLARE_CATCH_SCOPE(vm); 1004 auto reject = [&] (JSValue rejectionReason) { 1005 catchScope.clearException(); 1006 auto result = deferred->reject(exec, rejectionReason); 1007 catchScope.clearException(); 1008 return result; 1009 }; 1010 996 1011 String moduleKey = key.toWTFString(exec); 997 if (UNLIKELY(scope.exception())) { 998 JSValue exception = scope.exception(); 999 scope.clearException(); 1000 return deferred->reject(exec, exception); 1001 } 1012 if (UNLIKELY(catchScope.exception())) 1013 return reject(catchScope.exception()); 1002 1014 1003 1015 // Here, now we consider moduleKey as the fileName. 1004 1016 Vector<uint8_t> buffer; 1005 if (!fetchModuleFromLocalFileSystem(moduleKey, buffer)) { 1006 auto result = deferred->reject(exec, createError(exec, makeString("Could not open file '", moduleKey, "'."))); 1007 scope.releaseAssertNoException(); 1008 return result; 1009 } 1017 if (!fetchModuleFromLocalFileSystem(moduleKey, buffer)) 1018 return reject(createError(exec, makeString("Could not open file '", moduleKey, "'."))); 1010 1019 1011 1020 #if ENABLE(WEBASSEMBLY) … … 1013 1022 if (buffer.size() >= 4) { 1014 1023 if (buffer[0] == '\0' && buffer[1] == 'a' && buffer[2] == 's' && buffer[3] == 'm') { 1015 auto result = deferred->resolve(exec, JSSourceCode::create(vm, SourceCode(WebAssemblySourceProvider::create(WTFMove(buffer), SourceOrigin { moduleKey }, moduleKey)))); 1016 scope.releaseAssertNoException(); 1024 auto source = SourceCode(WebAssemblySourceProvider::create(WTFMove(buffer), SourceOrigin { moduleKey }, moduleKey)); 1025 catchScope.releaseAssertNoException(); 1026 auto sourceCode = JSSourceCode::create(vm, WTFMove(source)); 1027 catchScope.releaseAssertNoException(); 1028 auto result = deferred->resolve(exec, sourceCode); 1029 catchScope.clearException(); 1017 1030 return result; 1018 1031 } … … 1020 1033 #endif 1021 1034 1022 auto result = deferred->resolve(exec, JSSourceCode::create(vm, makeSource(stringFromUTF(buffer), SourceOrigin { moduleKey }, moduleKey, TextPosition(), SourceProviderSourceType::Module))); 1023 scope.releaseAssertNoException(); 1035 auto sourceCode = JSSourceCode::create(vm, makeSource(stringFromUTF(buffer), SourceOrigin { moduleKey }, moduleKey, TextPosition(), SourceProviderSourceType::Module)); 1036 catchScope.releaseAssertNoException(); 1037 auto result = deferred->resolve(exec, sourceCode); 1038 catchScope.clearException(); 1024 1039 return result; 1025 1040 }
Note:
See TracChangeset
for help on using the changeset viewer.