aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--components/script/dom/globalscope.rs20
1 files changed, 14 insertions, 6 deletions
diff --git a/components/script/dom/globalscope.rs b/components/script/dom/globalscope.rs
index 783105af0d2..230f2517397 100644
--- a/components/script/dom/globalscope.rs
+++ b/components/script/dom/globalscope.rs
@@ -77,13 +77,14 @@ use embedder_traits::EmbedderMsg;
use ipc_channel::ipc::{self, IpcSender};
use ipc_channel::router::ROUTER;
use js::glue::{IsWrapper, UnwrapObjectDynamic};
+use js::jsapi::Compile1;
use js::jsapi::{CurrentGlobalOrNull, GetNonCCWObjectGlobal};
use js::jsapi::{HandleObject, Heap};
use js::jsapi::{JSContext, JSObject};
use js::jsval::{JSVal, UndefinedValue};
use js::panic::maybe_resume_unwind;
use js::rust::transform_str_to_source_text;
-use js::rust::wrappers::Evaluate2;
+use js::rust::wrappers::JS_ExecuteScript;
use js::rust::{get_object_class, CompileOptionsWrapper, ParentRuntime, Runtime};
use js::rust::{HandleValue, MutableHandleValue};
use js::{JSCLASS_IS_DOMJSCLASS, JSCLASS_IS_GLOBAL};
@@ -2568,15 +2569,22 @@ impl GlobalScope {
let options =
unsafe { CompileOptionsWrapper::new(*cx, filename.as_ptr(), line_number) };
- debug!("evaluating Dom string");
- let result = unsafe {
- Evaluate2(
+ rooted!(in(*cx) let compiled_script = unsafe {
+ Compile1(
*cx,
options.ptr,
&mut transform_str_to_source_text(code),
- rval,
)
- };
+ });
+
+ if compiled_script.is_null() {
+ debug!("error compiling Dom string");
+ report_pending_exception(*cx, true, InRealm::Entered(&ar));
+ return false;
+ }
+
+ debug!("evaluating Dom string");
+ let result = unsafe { JS_ExecuteScript(*cx, compiled_script.handle(), rval) };
if !result {
debug!("error evaluating Dom string");