From 24656cf136f43ecd95b2f1b6cfa4dc4a1e7d0696 Mon Sep 17 00:00:00 2001 From: "aydin.kim" Date: Wed, 24 Apr 2013 17:29:56 +0900 Subject: [PATCH] fix ABI incompatibility problem of some JS direct-connected API --- src/rust-mozjs | 2 +- src/servo/dom/bindings/codegen/CodegenRust.py | 2 +- src/servo/dom/bindings/document.rs | 6 +++--- src/servo/dom/bindings/element.rs | 2 +- src/servo/dom/bindings/utils.rs | 10 +++++----- src/servo/dom/bindings/window.rs | 6 +++--- 6 files changed, 14 insertions(+), 14 deletions(-) diff --git a/src/rust-mozjs b/src/rust-mozjs index aefcf146400a..35c775238ef6 160000 --- a/src/rust-mozjs +++ b/src/rust-mozjs @@ -1 +1 @@ -Subproject commit aefcf146400a42e7302243db2844f4022f938fc0 +Subproject commit 35c775238ef6c8e2297986b96cfaf269c9ab2782 diff --git a/src/servo/dom/bindings/codegen/CodegenRust.py b/src/servo/dom/bindings/codegen/CodegenRust.py index 71c22234ec52..ff548b2e985e 100644 --- a/src/servo/dom/bindings/codegen/CodegenRust.py +++ b/src/servo/dom/bindings/codegen/CodegenRust.py @@ -3568,7 +3568,7 @@ def finalizeHook(descriptor, hookName, context): pass else: assert descriptor.nativeIsISupports - release = """let val = JS_GetReservedSlot(obj, 0); + release = """let val = GetReservedSlot(obj, 0); let _: %s = cast::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val)); """ % (descriptor.pointerType + descriptor.nativeType) #return clearWrapper + release diff --git a/src/servo/dom/bindings/document.rs b/src/servo/dom/bindings/document.rs index 17f35735f526..113aceb96f83 100644 --- a/src/servo/dom/bindings/document.rs +++ b/src/servo/dom/bindings/document.rs @@ -8,7 +8,7 @@ use js::{JS_ARGV, JSPROP_ENUMERATE, JSPROP_SHARED, use js::jsapi::{JSContext, JSVal, JSObject, JSBool, JSFreeOp, JSPropertySpec, JSPropertyOpWrapper, JSStrictPropertyOpWrapper, JSNativeWrapper, JSFunctionSpec}; -use js::jsapi::bindgen::{JS_GetReservedSlot, JS_SetReservedSlot, +use js::jsapi::bindgen::{JS_SetReservedSlot, JS_DefineFunctions, JS_DefineProperties}; use js::glue::bindgen::*; use js::glue::{PROPERTY_STUB, STRICT_PROPERTY_STUB}; @@ -66,14 +66,14 @@ extern fn getElementsByTagName(cx: *JSContext, _argc: c_uint, vp: *JSVal) -> JSB unsafe fn unwrap(obj: *JSObject) -> *mut rust_box { //TODO: some kind of check if this is a Document object - let val = JS_GetReservedSlot(obj, 0); + let val = GetReservedSlot(obj, 0); RUST_JSVAL_TO_PRIVATE(val) as *mut rust_box } extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) { debug!("document finalize!"); unsafe { - let val = JS_GetReservedSlot(obj, 0); + let val = GetReservedSlot(obj, 0); let _doc: @Document = cast::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val)); } } diff --git a/src/servo/dom/bindings/element.rs b/src/servo/dom/bindings/element.rs index 9270375030d6..f8aa2ce70c54 100644 --- a/src/servo/dom/bindings/element.rs +++ b/src/servo/dom/bindings/element.rs @@ -24,7 +24,7 @@ use js::{JS_THIS_OBJECT, JS_SET_RVAL, JSPROP_NATIVE_ACCESSORS}; extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) { debug!("element finalize: %?!", obj as uint); unsafe { - let val = JS_GetReservedSlot(obj, DOM_OBJECT_SLOT as u32); + let val = GetReservedSlot(obj, DOM_OBJECT_SLOT as u32); let node: AbstractNode = cast::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val)); let _elem: ~Element = cast::transmute(node.raw_object()); } diff --git a/src/servo/dom/bindings/utils.rs b/src/servo/dom/bindings/utils.rs index c2cbd6714831..08a91922ebaa 100644 --- a/src/servo/dom/bindings/utils.rs +++ b/src/servo/dom/bindings/utils.rs @@ -10,7 +10,7 @@ use js::{JSCLASS_HAS_RESERVED_SLOTS, JSPROP_ENUMERATE, JSVAL_NULL, use js::jsapi::{JSContext, JSVal, JSObject, JSBool, jsid, JSClass, JSNative, JSFunctionSpec, JSPropertySpec, JSVal, JSPropertyDescriptor}; use js::jsapi::bindgen::{JS_ValueToString, - JS_GetReservedSlot, JS_SetReservedSlot, JS_NewStringCopyN, + JS_SetReservedSlot, JS_NewStringCopyN, JS_DefineFunctions, JS_DefineProperty, JS_GetClass, JS_GetPrototype, JS_LinkConstructorAndPrototype, JS_AlreadyHasOwnProperty, JS_NewObject, JS_NewFunction, @@ -20,7 +20,7 @@ use js::jsapi::bindgen::{JS_ValueToString, JS_HasPropertyById, JS_GetPrototype, JS_GetGlobalForObject, JS_EncodeString, JS_free}; use js::jsfriendapi::bindgen::JS_NewObjectWithUniqueType; -use js::glue::bindgen::{DefineFunctionWithReserved, GetObjectJSClass, RUST_OBJECT_TO_JSVAL}; +use js::glue::bindgen::{DefineFunctionWithReserved, GetObjectJSClass, RUST_OBJECT_TO_JSVAL, GetReservedSlot}; use js::glue::{PROPERTY_STUB, STRICT_PROPERTY_STUB, ENUMERATE_STUB, CONVERT_STUB, RESOLVE_STUB}; use js::glue::bindgen::*; @@ -111,7 +111,7 @@ pub unsafe fn unwrap(obj: *JSObject) -> T { } else { DOM_PROXY_OBJECT_SLOT } as u32; - let val = JS_GetReservedSlot(obj, slot); + let val = GetReservedSlot(obj, slot); cast::transmute(RUST_JSVAL_TO_PRIVATE(val)) } @@ -347,7 +347,7 @@ pub struct DOMJSClass { pub fn GetProtoOrIfaceArray(global: *JSObject) -> **JSObject { unsafe { /*assert ((*JS_GetClass(global)).flags & JSCLASS_DOM_GLOBAL) != 0;*/ - cast::transmute(RUST_JSVAL_TO_PRIVATE(JS_GetReservedSlot(global, DOM_PROTOTYPE_SLOT))) + cast::transmute(RUST_JSVAL_TO_PRIVATE(GetReservedSlot(global, DOM_PROTOTYPE_SLOT))) } } @@ -800,4 +800,4 @@ pub enum Error { FailureUnknown } -pub type ErrorResult = Result<(), Error>; \ No newline at end of file +pub type ErrorResult = Result<(), Error>; diff --git a/src/servo/dom/bindings/window.rs b/src/servo/dom/bindings/window.rs index e764674a4c94..5d1563f6f0f4 100644 --- a/src/servo/dom/bindings/window.rs +++ b/src/servo/dom/bindings/window.rs @@ -17,7 +17,7 @@ use js::global::jsval_to_rust_str; use js::glue::bindgen::*; use js::glue::bindgen::RUST_JSVAL_TO_INT; use js::jsapi::bindgen::{JS_DefineFunctions}; -use js::jsapi::bindgen::{JS_GetReservedSlot, JS_SetReservedSlot}; +use js::jsapi::bindgen::{JS_SetReservedSlot}; use js::jsapi::bindgen::{JS_ValueToString}; use js::jsapi::{JSContext, JSVal, JSObject, JSBool, JSFreeOp, JSFunctionSpec}; use js::jsapi::{JSNativeWrapper}; @@ -64,14 +64,14 @@ extern fn close(cx: *JSContext, _argc: c_uint, vp: *JSVal) -> JSBool { } unsafe fn unwrap(obj: *JSObject) -> *rust_box { - let val = JS_GetReservedSlot(obj, 0); + let val = GetReservedSlot(obj, 0); cast::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val)) } extern fn finalize(_fop: *JSFreeOp, obj: *JSObject) { debug!("finalize!"); unsafe { - let val = JS_GetReservedSlot(obj, 0); + let val = GetReservedSlot(obj, 0); let _: @Window = cast::reinterpret_cast(&RUST_JSVAL_TO_PRIVATE(val)); } }