mirror of
https://github.com/servo/servo.git
synced 2025-08-06 14:10:11 +01:00
Pass a Reflector to WrapNewBindingObject instead of a Reflectable, and rename it GetReflector.
This commit is contained in:
parent
9d8c97d3b0
commit
4074412107
2 changed files with 8 additions and 23 deletions
|
@ -1569,16 +1569,7 @@ for (uint32_t i = 0; i < length; ++i) {
|
||||||
wrappingCode = ""
|
wrappingCode = ""
|
||||||
if (not descriptor.interface.isExternal() and
|
if (not descriptor.interface.isExternal() and
|
||||||
not descriptor.interface.isCallback()):
|
not descriptor.interface.isCallback()):
|
||||||
if descriptor.wrapperCache:
|
wrap = "GetReflector(cx, (%s).reflector(), ${jsvalPtr} as *mut JSVal)" % result
|
||||||
wrapMethod = "WrapNewBindingObject"
|
|
||||||
else:
|
|
||||||
if not isCreator:
|
|
||||||
raise MethodNotCreatorError(descriptor.interface.identifier.name)
|
|
||||||
wrapMethod = "WrapNewBindingNonWrapperCachedObject"
|
|
||||||
if descriptor.pointerType == '':
|
|
||||||
wrap = "%s.wrap(cx, ${obj}, ${jsvalPtr} as *mut JSVal)" % result
|
|
||||||
else:
|
|
||||||
wrap = "%s(cx, ${obj}, %s as @mut Reflectable, ${jsvalPtr} as *mut JSVal)" % (wrapMethod, result)
|
|
||||||
# We don't support prefable stuff in workers.
|
# We don't support prefable stuff in workers.
|
||||||
assert(not descriptor.prefable or not descriptor.workers)
|
assert(not descriptor.prefable or not descriptor.workers)
|
||||||
if not descriptor.prefable:
|
if not descriptor.prefable:
|
||||||
|
@ -1596,11 +1587,7 @@ for (uint32_t i = 0; i < length; ++i) {
|
||||||
failed = wrapAndSetPtr("HandleNewBindingWrappingFailure(cx, ${obj}, %s, ${jsvalPtr})" % result)
|
failed = wrapAndSetPtr("HandleNewBindingWrappingFailure(cx, ${obj}, %s, ${jsvalPtr})" % result)
|
||||||
wrappingCode += wrapAndSetPtr(wrap, failed)
|
wrappingCode += wrapAndSetPtr(wrap, failed)
|
||||||
else:
|
else:
|
||||||
#wrap = "WrapObject(cx, ${obj}, %s, %s${jsvalPtr})" % (result, getIID)
|
wrap = "GetReflector(cx, (%s).reflector(), ${jsvalPtr} as *mut JSVal)" % result
|
||||||
if descriptor.pointerType == '':
|
|
||||||
wrap = "(%s.wrap(cx, ${obj}, ${jsvalPtr}) != 0)" % result
|
|
||||||
else:
|
|
||||||
wrap = "if WrapNewBindingObject(cx, ${obj}, %s as @mut Reflectable, ${jsvalPtr}) { 1 } else { 0 };" % result
|
|
||||||
wrappingCode += wrapAndSetPtr(wrap)
|
wrappingCode += wrapAndSetPtr(wrap)
|
||||||
return (wrappingCode, False)
|
return (wrappingCode, False)
|
||||||
|
|
||||||
|
|
|
@ -583,13 +583,11 @@ impl Reflector {
|
||||||
}
|
}
|
||||||
|
|
||||||
#[fixed_stack_segment]
|
#[fixed_stack_segment]
|
||||||
pub fn WrapNewBindingObject(cx: *JSContext, _scope: *JSObject,
|
pub fn GetReflector(cx: *JSContext, reflector: &Reflector,
|
||||||
value: @mut Reflectable,
|
|
||||||
vp: *mut JSVal) -> JSBool {
|
vp: *mut JSVal) -> JSBool {
|
||||||
unsafe {
|
|
||||||
let reflector = value.mut_reflector();
|
|
||||||
let obj = reflector.get_jsobject();
|
let obj = reflector.get_jsobject();
|
||||||
assert!(obj.is_not_null());
|
assert!(obj.is_not_null());
|
||||||
|
unsafe {
|
||||||
*vp = RUST_OBJECT_TO_JSVAL(obj);
|
*vp = RUST_OBJECT_TO_JSVAL(obj);
|
||||||
return JS_WrapValue(cx, cast::transmute(vp));
|
return JS_WrapValue(cx, cast::transmute(vp));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue