diff options
Diffstat (limited to 'src/javascript/jsc/bindings/bindings.cpp')
-rw-r--r-- | src/javascript/jsc/bindings/bindings.cpp | 30 |
1 files changed, 12 insertions, 18 deletions
diff --git a/src/javascript/jsc/bindings/bindings.cpp b/src/javascript/jsc/bindings/bindings.cpp index ed9642282..c18638ba3 100644 --- a/src/javascript/jsc/bindings/bindings.cpp +++ b/src/javascript/jsc/bindings/bindings.cpp @@ -1,7 +1,4 @@ - -#include "headers.h" #include "root.h" - #include "helpers.h" #include <JavaScriptCore/ExceptionScope.h> @@ -26,6 +23,11 @@ #include <JavaScriptCore/JSInternalPromise.h> +#include <JavaScriptCore/JSClassRef.h> +#include <JavaScriptCore/JSCallbackObject.h> + + + extern "C" { // #pragma mark - JSC::PropertyNameArray @@ -96,22 +98,14 @@ JSC__JSValue JSC__JSModuleLoader__evaluate(JSC__JSGlobalObject* arg0, const unsi JSC::JSLockHolder locker(vm); JSC::SourceCode sourceCode = JSC::makeSource(src, JSC::SourceOrigin { origin }, origin.lastPathComponent().toStringWithoutCopying(), WTF::TextPosition(), JSC::SourceProviderSourceType::Module); - - auto val = JSC::loadAndEvaluateModule(arg0, sourceCode, JSC::JSValue()); - vm.drainMicrotasks(); - - switch (val->status(vm)) { - case JSC::JSPromise::Status::Fulfilled: { - return JSC::JSValue::encode(val->result(vm)); - break; - } - - case JSC::JSPromise::Status::Rejected: { - *arg6 = JSC::JSValue::encode(val->result(vm)); - return JSC::JSValue::encode(JSC::jsUndefined()); - break; - } + WTF::NakedPtr<JSC::Exception> exception; + auto val = JSC::evaluate(arg0, sourceCode, JSC::JSValue(), exception); + if (exception.get()) { + *arg6 = JSC::JSValue::encode(JSC::JSValue(exception.get())); } + + vm.drainMicrotasks(); + return JSC::JSValue::encode(val); |