diff --git a/core/engine/src/builtins/error/mod.rs b/core/engine/src/builtins/error/mod.rs
index 65fd7415aa3..44c8f561b9b 100644
--- a/core/engine/src/builtins/error/mod.rs
+++ b/core/engine/src/builtins/error/mod.rs
@@ -10,6 +10,8 @@
//! [spec]: https://tc39.es/ecma262/#sec-error-objects
//! [mdn]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error
+use std::fmt::Write;
+
use crate::{
Context, JsArgs, JsData, JsResult, JsString, JsValue,
builtins::BuiltInObject,
@@ -20,7 +22,10 @@ use crate::{
property::Attribute,
realm::Realm,
string::StaticJsStrings,
- vm::shadow_stack::{Backtrace, ShadowEntry},
+ vm::{
+ NativeSourceInfo,
+ shadow_stack::{ErrorStack, ShadowEntry},
+ },
};
use boa_gc::{Finalize, Trace};
use boa_macros::js_str;
@@ -136,53 +141,67 @@ pub struct Error {
// The position of where the Error was created does not affect equality check.
#[unsafe_ignore_trace]
- pub(crate) position: IgnoreEq