Skip to content

Commit b5ad994

Browse files
author
bors-servo
authored
Auto merge of #21029 - asajeffrey:smup, r=<try>
Upgrade to SM 60 <!-- Please describe your changes on the following line: --> This is the mozjs_sys smup PR. Depends on servo/mozjs#138 and servo/rust-mozjs#430. --- <!-- Thank you for contributing to Servo! Please replace each `[ ]` by `[X]` when the step is complete, and replace `__` with appropriate data: --> - [X] `./mach build -d` does not report any errors - [X] `./mach test-tidy` does not report any errors - [X] These changes fix #20585 <!-- Either: --> - [X] These changes do not require tests because the existing tests will ensure SM is still working <!-- Also, please make sure that "Allow edits from maintainers" checkbox is checked, so that we can help you if you get stuck somewhere along the way.--> <!-- Pull requests that do not address these steps are welcome, but they will require additional verification as part of the review process. --> <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/21029) <!-- Reviewable:end -->
2 parents ad83faa + acc983a commit b5ad994

File tree

238 files changed

+23451
-955
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

238 files changed

+23451
-955
lines changed

.travis.yml

+6
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,19 @@ matrix:
4444
- ./mach clean-nightlies --keep 2 --force
4545
- ./mach clean-cargo-cache --keep 2 --force
4646
env:
47+
CC=gcc-6
48+
CXX=g++-6
4749
CCACHE=/usr/bin/ccache
4850
RUSTFLAGS=-Dwarnings
4951
CARGO_INCREMENTAL=0
5052
addons:
5153
apt:
54+
sources:
55+
- ubuntu-toolchain-r-test
5256
packages:
57+
- autoconf2.13
5358
- cmake
59+
- g++-6
5460
- gperf
5561
- libosmesa6-dev
5662
- libgles2-mesa-dev

Cargo.lock

+40-40
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ opt-level = 3
1818
# lto = false
1919

2020
[patch.crates-io]
21+
servo-fontconfig-sys = { git = "https://github.com/asajeffrey/libfontconfig.git", branch = "expat-config" }
2122
# If you need to temporarily test Servo with a local fork of some upstream
2223
# crate, add that here. Use the form:
2324
#

appveyor.yml

+2
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
version: 1.0.{build}
2+
image: Visual Studio 2017
23

34
environment:
45
CCACHE_DIR: "%APPVEYOR_BUILD_FOLDER%\\.ccache"
@@ -48,6 +49,7 @@ install:
4849
- appveyor-retry appveyor DownloadFile https://gstreamer.freedesktop.org/data/pkg/windows/1.14.1/gstreamer-1.0-x86_64-1.14.1.msi
4950
- msiexec /i gstreamer-1.0-devel-x86_64-1.14.1.msi /quiet /qn /norestart /log install-devel.log
5051
- msiexec /i gstreamer-1.0-x86_64-1.14.1.msi /quiet /qn /norestart /log install.log
52+
- call "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvars64.bat"
5153
- appveyor-retry appveyor DownloadFile https://win.rustup.rs/ -FileName rustup-init.exe
5254
- rustup-init.exe -y --default-host x86_64-pc-windows-msvc --default-toolchain none
5355
- set PATH=%PATH%;C:\Users\appveyor\.cargo\bin

components/malloc_size_of/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ euclid = "0.19"
2929
hashglobe = { path = "../hashglobe" }
3030
hyper = { version = "0.10", optional = true }
3131
hyper_serde = { version = "0.8", optional = true }
32-
mozjs = { version = "0.7.1", features = ["promises"], optional = true }
32+
mozjs = { version = "0.8.0", optional = true }
3333
selectors = { path = "../selectors" }
3434
serde = { version = "1.0.27", optional = true }
3535
serde_bytes = { version = "0.10", optional = true }

components/script/Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ metrics = {path = "../metrics"}
6565
mitochondria = "1.1.2"
6666
mime = "0.2.1"
6767
mime_guess = "1.8.0"
68-
mozjs = { version = "0.7.1", features = ["promises"]}
68+
mozjs = "0.8.0"
6969
msg = {path = "../msg"}
7070
net_traits = {path = "../net_traits"}
7171
num-traits = "0.2"

components/script/dom/abstractworker.rs

-24
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@
55
use dom::bindings::refcounted::Trusted;
66
use dom::bindings::reflector::DomObject;
77
use dom::bindings::structuredclone::StructuredCloneData;
8-
use js::jsapi::{JSRuntime, JS_RequestInterruptCallback};
9-
use js::rust::Runtime;
108
use script_runtime::CommonScriptMsg;
119

1210
/// Messages used to control the worker event loops
@@ -28,25 +26,3 @@ impl<T: DomObject> SimpleWorkerErrorHandler<T> {
2826
}
2927
}
3028
}
31-
32-
#[derive(Clone, Copy)]
33-
pub struct SharedRt {
34-
rt: *mut JSRuntime
35-
}
36-
37-
impl SharedRt {
38-
pub fn new(rt: &Runtime) -> SharedRt {
39-
SharedRt {
40-
rt: rt.rt()
41-
}
42-
}
43-
44-
#[allow(unsafe_code)]
45-
pub fn request_interrupt(&self) {
46-
unsafe {
47-
JS_RequestInterruptCallback(self.rt);
48-
}
49-
}
50-
}
51-
#[allow(unsafe_code)]
52-
unsafe impl Send for SharedRt {}

components/script/dom/audiobuffer.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ use dom::bindings::reflector::{DomObject, Reflector, reflect_dom_object};
1111
use dom::bindings::root::DomRoot;
1212
use dom::window::Window;
1313
use dom_struct::dom_struct;
14-
use js::jsapi::{DetachDataDisposition, Heap, JSAutoCompartment, JSContext, JSObject};
14+
use js::jsapi::{Heap, JSAutoCompartment, JSContext, JSObject};
1515
use js::jsapi::JS_GetArrayBufferViewBuffer;
1616
use js::rust::CustomAutoRooterGuard;
1717
use js::rust::wrappers::JS_DetachArrayBuffer;
@@ -167,7 +167,7 @@ impl AudioBuffer {
167167
JS_GetArrayBufferViewBuffer(cx, channel.handle(), &mut is_shared));
168168
// This buffer is always created unshared
169169
debug_assert!(!is_shared);
170-
let _ = JS_DetachArrayBuffer(cx, view_buffer.handle(), DetachDataDisposition::KeepData);
170+
let _ = JS_DetachArrayBuffer(cx, view_buffer.handle());
171171
data
172172
} else {
173173
return None;

components/script/dom/bindings/codegen/CodegenRust.py

+52-34
Original file line numberDiff line numberDiff line change
@@ -1775,7 +1775,7 @@ def generateArray(self, array, name):
17751775
if len(array) == 0:
17761776
return ""
17771777

1778-
flags = "JSPROP_ENUMERATE | JSPROP_SHARED"
1778+
flags = "JSPROP_ENUMERATE"
17791779
if self.unforgeable:
17801780
flags += " | JSPROP_PERMANENT"
17811781

@@ -1822,15 +1822,18 @@ def specData(attr):
18221822
' JSPropertySpec {\n'
18231823
' name: %s as *const u8 as *const libc::c_char,\n'
18241824
' flags: (%s) as u8,\n'
1825-
' getter: %s,\n'
1826-
' setter: %s\n'
1827-
' }',
1828-
' JSPropertySpec {\n'
1829-
' name: 0 as *const libc::c_char,\n'
1830-
' flags: 0,\n'
1831-
' getter: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo },\n'
1832-
' setter: JSNativeWrapper { op: None, info: 0 as *const JSJitInfo }\n'
1825+
' __bindgen_anon_1: JSPropertySpec__bindgen_ty_1 {\n'
1826+
' accessors: JSPropertySpec__bindgen_ty_1__bindgen_ty_1 {\n'
1827+
' getter: JSPropertySpec__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {\n'
1828+
' native: %s,\n'
1829+
' },\n'
1830+
' setter: JSPropertySpec__bindgen_ty_1__bindgen_ty_1__bindgen_ty_2 {\n'
1831+
' native: %s,\n'
1832+
' }\n'
1833+
' }\n'
1834+
' }\n'
18331835
' }',
1836+
' JSPropertySpec::ZERO',
18341837
'JSPropertySpec',
18351838
PropertyDefiner.getControllingCondition, specData)
18361839

@@ -2124,7 +2127,7 @@ def define(self):
21242127
"domClass": DOMClass(self.descriptor),
21252128
"enumerateHook": "None",
21262129
"finalizeHook": FINALIZE_HOOK_NAME,
2127-
"flags": "0",
2130+
"flags": "JSCLASS_FOREGROUND_FINALIZE",
21282131
"name": str_to_const_array(self.descriptor.interface.identifier.name),
21292132
"resolveHook": "None",
21302133
"slots": "1",
@@ -2133,7 +2136,7 @@ def define(self):
21332136
if self.descriptor.isGlobal():
21342137
assert not self.descriptor.weakReferenceable
21352138
args["enumerateHook"] = "Some(enumerate_global)"
2136-
args["flags"] = "JSCLASS_IS_GLOBAL | JSCLASS_DOM_GLOBAL"
2139+
args["flags"] = "JSCLASS_IS_GLOBAL | JSCLASS_DOM_GLOBAL | JSCLASS_FOREGROUND_FINALIZE"
21372140
args["slots"] = "JSCLASS_GLOBAL_SLOT_COUNT + 1"
21382141
args["resolveHook"] = "Some(resolve_global)"
21392142
args["traceHook"] = "js::jsapi::JS_GlobalObjectTraceHook"
@@ -2143,9 +2146,8 @@ def define(self):
21432146
static CLASS_OPS: js::jsapi::JSClassOps = js::jsapi::JSClassOps {
21442147
addProperty: None,
21452148
delProperty: None,
2146-
getProperty: None,
2147-
setProperty: None,
21482149
enumerate: %(enumerateHook)s,
2150+
newEnumerate: None,
21492151
resolve: %(resolveHook)s,
21502152
mayResolve: None,
21512153
finalize: Some(%(finalizeHook)s),
@@ -2583,22 +2585,25 @@ def CreateBindingJSObject(descriptor, parent=None):
25832585
let handler = RegisterBindings::PROXY_HANDLERS[PrototypeList::Proxies::%s as usize];
25842586
rooted!(in(cx) let private = PrivateValue(raw as *const libc::c_void));
25852587
let obj = NewProxyObject(cx, handler,
2586-
private.handle(),
2588+
Handle::from_raw(UndefinedHandleValue),
25872589
proto.get(), %s.get(),
25882590
ptr::null_mut(), ptr::null_mut());
25892591
assert!(!obj.is_null());
2592+
SetProxyReservedSlot(obj, 0, &private.get());
25902593
rooted!(in(cx) let obj = obj);\
25912594
""" % (descriptor.name, parent)
25922595
else:
25932596
create += ("rooted!(in(cx) let obj = JS_NewObjectWithGivenProto(\n"
25942597
" cx, &Class.base as *const JSClass, proto.handle()));\n"
25952598
"assert!(!obj.is_null());\n"
25962599
"\n"
2597-
"JS_SetReservedSlot(obj.get(), DOM_OBJECT_SLOT,\n"
2598-
" PrivateValue(raw as *const libc::c_void));")
2600+
"let val = PrivateValue(raw as *const libc::c_void);\n"
2601+
"\n"
2602+
"JS_SetReservedSlot(obj.get(), DOM_OBJECT_SLOT, &val);")
25992603
if descriptor.weakReferenceable:
26002604
create += """
2601-
JS_SetReservedSlot(obj.get(), DOM_WEAK_SLOT, PrivateValue(ptr::null()));"""
2605+
let val = PrivateValue(ptr::null());
2606+
JS_SetReservedSlot(obj.get(), DOM_WEAK_SLOT, &val);"""
26022607
return create
26032608

26042609

@@ -2652,9 +2657,10 @@ def CopyUnforgeablePropertiesToInstance(descriptor):
26522657
else:
26532658
copyFunc = "JS_InitializePropertiesFromCompatibleNativeObject"
26542659
copyCode += """\
2660+
let ref mut slot = UndefinedValue();
2661+
JS_GetReservedSlot(proto.get(), DOM_PROTO_UNFORGEABLE_HOLDER_SLOT, slot);
26552662
rooted!(in(cx) let mut unforgeable_holder = ptr::null_mut::<JSObject>());
2656-
unforgeable_holder.handle_mut().set(
2657-
JS_GetReservedSlot(proto.get(), DOM_PROTO_UNFORGEABLE_HOLDER_SLOT).to_object());
2663+
unforgeable_holder.handle_mut().set(slot.to_object());
26582664
assert!(%(copyFunc)s(cx, %(obj)s.handle(), unforgeable_holder.handle()));
26592665
""" % {'copyFunc': copyFunc, 'obj': obj}
26602666

@@ -3013,7 +3019,7 @@ def defineAlias(alias):
30133019
CGGeneric(fill(
30143020
"""
30153021
assert!(${defineFn}(cx, prototype.handle(), ${prop}, aliasedVal.handle(),
3016-
JSPROP_ENUMERATE, None, None));
3022+
JSPROP_ENUMERATE as u32));
30173023
""",
30183024
defineFn=defineFn,
30193025
prop=prop))
@@ -3078,8 +3084,8 @@ def defineAliasesFor(m):
30783084
""" % {'holderClass': holderClass, 'holderProto': holderProto}))
30793085
code.append(InitUnforgeablePropertiesOnHolder(self.descriptor, self.properties))
30803086
code.append(CGGeneric("""\
3081-
JS_SetReservedSlot(prototype.get(), DOM_PROTO_UNFORGEABLE_HOLDER_SLOT,
3082-
ObjectValue(unforgeable_holder.get()))"""))
3087+
let val = ObjectValue(unforgeable_holder.get());
3088+
JS_SetReservedSlot(prototype.get(), DOM_PROTO_UNFORGEABLE_HOLDER_SLOT, &val)"""))
30833089

30843090
return CGList(code, "\n")
30853091

@@ -3533,11 +3539,13 @@ def __init__(self, descriptor, name):
35333539
self.exposureSet = descriptor.interface.exposureSet
35343540

35353541
def definition_body(self):
3536-
preamble = "let global = GlobalScope::from_object(JS_CALLEE(cx, vp).to_object());\n"
3542+
preamble = """\
3543+
let args = CallArgs::from_vp(vp, argc);
3544+
let global = GlobalScope::from_object(args.callee());
3545+
"""
35373546
if len(self.exposureSet) == 1:
3538-
preamble += """
3539-
let global = DomRoot::downcast::<dom::types::%s>(global).unwrap();
3540-
""" % list(self.exposureSet)[0]
3547+
preamble += ("let global = DomRoot::downcast::<dom::types::%s>(global).unwrap();\n" %
3548+
list(self.exposureSet)[0])
35413549
return CGList([CGGeneric(preamble), self.generate_code()])
35423550

35433551
def generate_code(self):
@@ -3741,7 +3749,7 @@ def definition_body(self):
37413749
assert all(ord(c) < 128 for c in name)
37423750
return CGGeneric("""\
37433751
JS_DefineProperty(cx, obj, %s as *const u8 as *const libc::c_char,
3744-
HandleValue::from_raw(args.get(0)), JSPROP_ENUMERATE, None, None)""" % name)
3752+
HandleValue::from_raw(args.get(0)), JSPROP_ENUMERATE as u32)""" % name)
37453753

37463754

37473755
class CGMemberJITInfo(CGThing):
@@ -4959,7 +4967,9 @@ def definition_body(self):
49594967
obj = js::UnwrapObject(obj);
49604968
}*/
49614969
//MOZ_ASSERT(IsProxy(obj));
4962-
let box_ = GetProxyPrivate(obj.get()).to_private() as *const %s;
4970+
let ref mut slot = UndefinedValue();
4971+
GetProxyReservedSlot(obj.get(), 0, slot);
4972+
let box_ = slot.to_private() as *const %s;
49634973
return box_;""" % self.descriptor.concreteType)
49644974

49654975

@@ -4985,7 +4995,7 @@ def getBody(self):
49854995
attrs += " | JSPROP_READONLY"
49864996
# FIXME(#11868) Should assign to desc.value, desc.get() is a copy.
49874997
fillDescriptor = ("desc.get().value = result_root.get();\n"
4988-
"fill_property_descriptor(MutableHandle::from_raw(desc), proxy.get(), %s);\n"
4998+
"fill_property_descriptor(MutableHandle::from_raw(desc), proxy.get(), (%s) as u32);\n"
49894999
"return true;" % attrs)
49905000
templateValues = {
49915001
'jsvalRef': 'result_root.handle_mut()',
@@ -5011,7 +5021,7 @@ def getBody(self):
50115021
attrs = "0"
50125022
# FIXME(#11868) Should assign to desc.value, desc.get() is a copy.
50135023
fillDescriptor = ("desc.get().value = result_root.get();\n"
5014-
"fill_property_descriptor(MutableHandle::from_raw(desc), proxy.get(), %s);\n"
5024+
"fill_property_descriptor(MutableHandle::from_raw(desc), proxy.get(), (%s) as u32);\n"
50155025
"return true;" % attrs)
50165026
templateValues = {
50175027
'jsvalRef': 'result_root.handle_mut()',
@@ -5425,7 +5435,9 @@ def finalizeHook(descriptor, hookName, context):
54255435
"""
54265436
elif descriptor.weakReferenceable:
54275437
release += """\
5428-
let weak_box_ptr = JS_GetReservedSlot(obj, DOM_WEAK_SLOT).to_private() as *mut WeakBox<%s>;
5438+
let ref mut slot = UndefinedValue();
5439+
JS_GetReservedSlot(obj, DOM_WEAK_SLOT, slot);
5440+
let weak_box_ptr = slot.to_private() as *mut WeakBox<%s>;
54295441
if !weak_box_ptr.is_null() {
54305442
let count = {
54315443
let weak_box = &*weak_box_ptr;
@@ -5736,6 +5748,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
57365748
'js::jsapi::INTERNED_STRING_TO_JSID',
57375749
'js::jsapi::IsCallable',
57385750
'js::jsapi::JSAutoCompartment',
5751+
'js::jsapi::JSCLASS_FOREGROUND_FINALIZE',
57395752
'js::jsapi::JSCLASS_RESERVED_SLOTS_SHIFT',
57405753
'js::jsapi::JSClass',
57415754
'js::jsapi::JSContext',
@@ -5757,8 +5770,11 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
57575770
'js::jsapi::JSPROP_ENUMERATE',
57585771
'js::jsapi::JSPROP_PERMANENT',
57595772
'js::jsapi::JSPROP_READONLY',
5760-
'js::jsapi::JSPROP_SHARED',
57615773
'js::jsapi::JSPropertySpec',
5774+
'js::jsapi::JSPropertySpec__bindgen_ty_1',
5775+
'js::jsapi::JSPropertySpec__bindgen_ty_1__bindgen_ty_1',
5776+
'js::jsapi::JSPropertySpec__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1',
5777+
'js::jsapi::JSPropertySpec__bindgen_ty_1__bindgen_ty_1__bindgen_ty_2',
57625778
'js::jsapi::JSString',
57635779
'js::jsapi::JSTracer',
57645780
'js::jsapi::JSType',
@@ -5778,7 +5794,7 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
57785794
'js::rust::wrappers::JS_GetProperty',
57795795
'js::jsapi::JS_GetPropertyById',
57805796
'js::jsapi::JS_GetPropertyDescriptorById',
5781-
'js::jsapi::JS_GetReservedSlot',
5797+
'js::glue::JS_GetReservedSlot',
57825798
'js::jsapi::JS_HasProperty',
57835799
'js::jsapi::JS_HasPropertyById',
57845800
'js::rust::wrappers::JS_InitializePropertiesFromCompatibleNativeObject',
@@ -5813,12 +5829,14 @@ def generate_imports(config, cgthings, descriptors, callbacks=None, dictionaries
58135829
'js::jsval::ObjectOrNullValue',
58145830
'js::jsval::PrivateValue',
58155831
'js::jsval::UndefinedValue',
5832+
'js::jsapi::UndefinedHandleValue',
58165833
'js::glue::AppendToAutoIdVector',
58175834
'js::glue::CallJitGetterOp',
58185835
'js::glue::CallJitMethodOp',
58195836
'js::glue::CallJitSetterOp',
58205837
'js::glue::CreateProxyHandler',
5821-
'js::glue::GetProxyPrivate',
5838+
'js::glue::GetProxyReservedSlot',
5839+
'js::glue::SetProxyReservedSlot',
58225840
'js::rust::wrappers::NewProxyObject',
58235841
'js::glue::ProxyTraps',
58245842
'js::glue::RUST_JSID_IS_INT',

components/script/dom/bindings/constant.rs

+1-3
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,6 @@ pub unsafe fn define_constants(
6161
obj,
6262
spec.name.as_ptr() as *const libc::c_char,
6363
value.handle(),
64-
JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT,
65-
None,
66-
None));
64+
(JSPROP_ENUMERATE | JSPROP_READONLY | JSPROP_PERMANENT) as u32));
6765
}
6866
}

components/script/dom/bindings/conversions.rs

+9-7
Original file line numberDiff line numberDiff line change
@@ -45,12 +45,13 @@ pub use js::conversions::{ConversionResult, FromJSValConvertible, ToJSValConvert
4545
pub use js::conversions::ConversionBehavior;
4646
use js::conversions::latin1_to_string;
4747
use js::error::throw_type_error;
48-
use js::glue::{GetProxyPrivate, IsWrapper};
48+
use js::glue::{IsWrapper, UnwrapObject};
4949
use js::glue::{RUST_JSID_IS_INT, RUST_JSID_TO_INT};
50-
use js::glue::{UnwrapObject, RUST_JSID_IS_STRING, RUST_JSID_TO_STRING};
50+
use js::glue::{RUST_JSID_IS_STRING, RUST_JSID_TO_STRING};
51+
use js::glue::GetProxyReservedSlot;
52+
use js::glue::JS_GetReservedSlot;
5153
use js::jsapi::{Heap, JSContext, JSObject, JSString};
52-
use js::jsapi::{JS_GetLatin1StringCharsAndLength, JS_GetReservedSlot};
53-
use js::jsapi::{JS_GetTwoByteStringCharsAndLength, JS_IsExceptionPending};
54+
use js::jsapi::{JS_GetLatin1StringCharsAndLength, JS_GetTwoByteStringCharsAndLength, JS_IsExceptionPending};
5455
use js::jsapi::{JS_NewStringCopyN, JS_StringHasLatin1Chars};
5556
use js::jsval::{ObjectValue, StringValue, UndefinedValue};
5657
use js::rust::{HandleId, HandleObject, HandleValue, MutableHandleValue};
@@ -347,11 +348,12 @@ pub const DOM_OBJECT_SLOT: u32 = 0;
347348

348349
/// Get the private pointer of a DOM object from a given reflector.
349350
pub unsafe fn private_from_object(obj: *mut JSObject) -> *const libc::c_void {
350-
let value = if is_dom_object(obj) {
351-
JS_GetReservedSlot(obj, DOM_OBJECT_SLOT)
351+
let mut value = UndefinedValue();
352+
if is_dom_object(obj) {
353+
JS_GetReservedSlot(obj, DOM_OBJECT_SLOT, &mut value);
352354
} else {
353355
debug_assert!(is_dom_proxy(obj));
354-
GetProxyPrivate(obj)
356+
GetProxyReservedSlot(obj, 0, &mut value);
355357
};
356358
if value.is_undefined() {
357359
ptr::null()

0 commit comments

Comments
 (0)