Fix broken stacktraces

This commit is contained in:
Jarred Sumner
2022-11-09 18:55:51 -08:00
parent 7f5022db0c
commit cf378d51fd
2 changed files with 10 additions and 9 deletions

View File

@@ -2319,13 +2319,6 @@ void GlobalObject::finishCreation(VM& vm)
Base::finishCreation(vm);
ASSERT(inherits(info()));
JSC::JSObject* errorConstructor = this->errorConstructor();
errorConstructor->putDirectNativeFunctionWithoutTransition(vm, this, JSC::Identifier::fromString(vm, "captureStackTrace"_s), 2, errorConstructorFuncCaptureStackTrace, ImplementationVisibility::Public, JSC::NoIntrinsic, PropertyAttribute::DontEnum | 0);
// JSC default is 100
errorConstructor->deleteProperty(this, vm.propertyNames->stackTraceLimit);
errorConstructor->putDirect(vm, vm.propertyNames->stackTraceLimit, jsNumber(DEFAULT_ERROR_STACK_TRACE_LIMIT), JSC::PropertyAttribute::DontEnum | 0);
// Change prototype from null to object for synthetic modules.
m_moduleNamespaceObjectStructure.initLater(
[](const Initializer<Structure>& init) {
@@ -2579,6 +2572,12 @@ void GlobalObject::finishCreation(VM& vm)
#endif
RELEASE_ASSERT(classInfo());
JSC::JSObject* errorConstructor = this->errorConstructor();
errorConstructor->putDirectNativeFunctionWithoutTransition(vm, this, JSC::Identifier::fromString(vm, "captureStackTrace"_s), 2, errorConstructorFuncCaptureStackTrace, ImplementationVisibility::Public, JSC::NoIntrinsic, PropertyAttribute::DontEnum | 0);
// JSC default is 100
errorConstructor->putDirect(vm, vm.propertyNames->stackTraceLimit, jsNumber(DEFAULT_ERROR_STACK_TRACE_LIMIT), JSC::PropertyAttribute::DontEnum | 0);
}
JSC_DEFINE_HOST_FUNCTION(functionBunPeek,

View File

@@ -927,9 +927,11 @@ JSC__JSValue JSC__JSModuleLoader__evaluate(JSC__JSGlobalObject* globalObject, co
promise->rejectWithCaughtException(globalObject, scope);
}
if (promise->status(vm) == JSC::JSPromise::Status::Fulfilled) {
auto status = promise->status(vm);
if (status == JSC::JSPromise::Status::Fulfilled) {
return JSC::JSValue::encode(promise->result(vm));
} else if (promise->status(vm) == JSC::JSPromise::Status::Rejected) {
} else if (status == JSC::JSPromise::Status::Rejected) {
*arg6 = JSC::JSValue::encode(promise->result(vm));
return JSC::JSValue::encode(JSC::jsUndefined());
} else {