diff options
author | Josh Matthews <josh@joshmatthews.net> | 2022-11-20 00:34:37 -0500 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2022-11-23 10:04:50 -0500 |
commit | bd77a4043c559c40bbd2edd4a5391096f5b8da45 (patch) | |
tree | 074f35996417a7ebe8c19b6af6f2acc8c1121043 /components/script/dom/htmlscriptelement.rs | |
parent | f1bb3dcad088073de5cfa11f2e992441b5d4467d (diff) | |
download | servo-bd77a4043c559c40bbd2edd4a5391096f5b8da45.tar.gz servo-bd77a4043c559c40bbd2edd4a5391096f5b8da45.zip |
Changes for spidermomkey upgrade.
Diffstat (limited to 'components/script/dom/htmlscriptelement.rs')
-rw-r--r-- | components/script/dom/htmlscriptelement.rs | 24 |
1 files changed, 10 insertions, 14 deletions
diff --git a/components/script/dom/htmlscriptelement.rs b/components/script/dom/htmlscriptelement.rs index d27fee98fb5..0b867750d14 100644 --- a/components/script/dom/htmlscriptelement.rs +++ b/components/script/dom/htmlscriptelement.rs @@ -13,7 +13,6 @@ use crate::dom::bindings::reflector::DomObject; use crate::dom::bindings::root::{Dom, DomRoot}; use crate::dom::bindings::settings_stack::AutoEntryScript; use crate::dom::bindings::str::{DOMString, USVString}; -use crate::dom::bindings::trace::RootedTraceableBox; use crate::dom::document::Document; use crate::dom::element::{ cors_setting_for_element, referrer_policy_for_element, reflect_cross_origin_attribute, @@ -44,10 +43,10 @@ use html5ever::{LocalName, Prefix}; use ipc_channel::ipc; use ipc_channel::router::ROUTER; use js::jsapi::{ - CanCompileOffThread, CompileOffThread1, FinishOffThreadScript, Heap, JSScript, OffThreadToken, + CanCompileOffThread, CompileToStencilOffThread1, OffThreadToken, }; use js::jsval::UndefinedValue; -use js::rust::{transform_str_to_source_text, CompileOptionsWrapper}; +use js::rust::{transform_str_to_source_text, CompileOptionsWrapper, FinishOffThreadStencil, Stencil}; use msg::constellation_msg::PipelineId; use net_traits::request::{ CorsSettings, CredentialsMode, Destination, ParserMetadata, RequestBuilder, @@ -66,6 +65,7 @@ use std::io::{Read, Seek, Write}; use std::mem::replace; use std::path::PathBuf; use std::process::Command; +use std::ptr; use std::rc::Rc; use std::sync::{Arc, Mutex}; use style::str::{StaticStringVec, HTML_SPACE_CHARACTERS}; @@ -113,21 +113,16 @@ unsafe extern "C" fn off_thread_compilation_callback( let cx = global.get_cx(); let _ar = enter_realm(&*global); - rooted!(in(*cx) - let compiled_script = FinishOffThreadScript(*cx, token.0) - ); + let compiled_script = FinishOffThreadStencil(*cx, token.0, ptr::null_mut()); - let load = if compiled_script.get().is_null() { + let load = if compiled_script.is_null() { Err(NetworkError::Internal( "Off-thread compilation failed.".into(), )) } else { let script_text = DOMString::from(script); - let heap = Heap::default(); - let source_code = RootedTraceableBox::new(heap); - source_code.set(compiled_script.get()); let code = SourceCode::Compiled(CompiledSourceCode { - source_code: source_code, + source_code: compiled_script, original_text: Rc::new(script_text), }); @@ -244,7 +239,7 @@ pub enum ScriptType { #[derive(JSTraceable, MallocSizeOf)] pub struct CompiledSourceCode { #[ignore_malloc_size_of = "SM handles JS values"] - pub source_code: RootedTraceableBox<Heap<*mut JSScript>>, + pub source_code: Stencil, #[ignore_malloc_size_of = "Rc is hard"] pub original_text: Rc<DOMString>, } @@ -446,7 +441,7 @@ impl FetchResponseListener for ClassicContext { }); unsafe { - assert!(!CompileOffThread1( + assert!(!CompileToStencilOffThread1( *cx, options.ptr as *const _, &mut transform_str_to_source_text(&context.script_text) as *mut _, @@ -1113,7 +1108,8 @@ impl HTMLScriptElement { .map(|record| record.handle()); if let Some(record) = record { - let evaluated = module_tree.execute_module(global, record); + rooted!(in(*global.get_cx()) let mut rval = UndefinedValue()); + let evaluated = module_tree.execute_module(global, record, rval.handle_mut().into()); if let Err(exception) = evaluated { module_tree.set_rethrow_error(exception); |