[Cross-posting to m.d.t.j-e.internals; please reply only to m.d.servo.] Hi all,
eddyb is proposing a new, macro-based approach to rooting SpiderMonkey types (i.e. types that use `js::jsapi::Rooted`, NOT Servo DOM objects, which still use `script::dom::bindings::js::Root`), as well as the fairly uncommon `script::dom::bindings::trace::RootedVec`. The goal is to stop using the `return_address` intrinsic, which is fundamentally incompatible with Rust's assumption that every type can be moved silently. We have been lucky enough to have the `return_address` approach work so far, but the introduction of MIR (mid-level intermediate representation; a large-scale refactoring of code generation within the Rust compiler) will break our code when it is turned on. Typical use changes from ``` let obj = RootedObject::new(cx, self.callback()); ``` to ``` rooted!(in(cx) let obj = self.callback()); ``` The pull requests are at: https://github.com/servo/rust-mozjs/pull/272 https://github.com/servo/servo/pull/11872 Comments from SpiderMonkey GC hackers are or course very welcome. Ms2ger _______________________________________________ dev-servo mailing list dev-servo@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-servo