diff options
author | Ms2ger <ms2ger@gmail.com> | 2013-11-08 11:57:11 +0100 |
---|---|---|
committer | Ms2ger <ms2ger@gmail.com> | 2013-11-09 14:07:09 +0100 |
commit | 255864a843cfa01440c1f1c8c177a24b3aa3e1bf (patch) | |
tree | 9337b377dde375b1fb0ac495ce8644047a3a5a7b /src | |
parent | 610d1649cdb351a6fe9e1540a323e36edc2403b8 (diff) | |
download | servo-255864a843cfa01440c1f1c8c177a24b3aa3e1bf.tar.gz servo-255864a843cfa01440c1f1c8c177a24b3aa3e1bf.zip |
Simplify InterfaceObjectToString.
Diffstat (limited to 'src')
-rw-r--r-- | src/components/script/dom/bindings/utils.rs | 21 |
1 files changed, 18 insertions, 3 deletions
diff --git a/src/components/script/dom/bindings/utils.rs b/src/components/script/dom/bindings/utils.rs index 99997c0f38a..bbc25af0145 100644 --- a/src/components/script/dom/bindings/utils.rs +++ b/src/components/script/dom/bindings/utils.rs @@ -40,6 +40,21 @@ use js; static TOSTRING_CLASS_RESERVED_SLOT: libc::size_t = 0; static TOSTRING_NAME_RESERVED_SLOT: libc::size_t = 1; +mod jsval { + use js::glue::{RUST_JSVAL_IS_STRING, RUST_JSVAL_TO_STRING}; + use js::jsapi::{JSVal, JSString}; + + #[fixed_stack_segment] + pub fn is_string(v: JSVal) -> bool { + unsafe { RUST_JSVAL_IS_STRING(v) == 1 } + } + + #[fixed_stack_segment] + pub unsafe fn to_string(v: JSVal) -> *JSString { + RUST_JSVAL_TO_STRING(v) + } +} + pub struct GlobalStaticData { proxy_handlers: HashMap<uint, *libc::c_void>, attribute_ids: HashMap<uint, ~[jsid]>, @@ -70,8 +85,6 @@ extern fn InterfaceObjectToString(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) let v = GetFunctionNativeReserved(callee, TOSTRING_CLASS_RESERVED_SLOT); let clasp: *JSClass = cast::transmute(RUST_JSVAL_TO_PRIVATE(*v)); - let v = GetFunctionNativeReserved(callee, TOSTRING_NAME_RESERVED_SLOT); - if GetObjectJSClass(obj) != clasp { /*let jsname: *JSString = RUST_JSVAL_TO_STRING(*v); let length = 0; @@ -83,7 +96,9 @@ extern fn InterfaceObjectToString(cx: *JSContext, _argc: c_uint, vp: *mut JSVal) return 0; } - let name = jsval_to_str(cx, *v).unwrap(); + let v = *GetFunctionNativeReserved(callee, TOSTRING_NAME_RESERVED_SLOT); + assert!(jsval::is_string(v)); + let name = jsstring_to_str(cx, jsval::to_string(v)); let retval = Some(~"function " + name + "() {\n [native code]\n}"); *vp = domstring_to_jsval(cx, &retval); return 1; |