From b4e02038ce91ee793b20d8838191719b482c27ca Mon Sep 17 00:00:00 2001 From: Jack Moffitt Date: Wed, 23 Jul 2014 12:41:11 -0600 Subject: [PATCH] Upgrade Rust. --- glue.rs | 46 ++++---- js.rc | 94 ++++++++-------- jsapi.rs | 286 ++++++++++++++++++++++++------------------------- jsfriendapi.rs | 6 +- jsglue.cpp | 12 +-- jsval.rs | 22 ++-- linkhack.rs | 4 +- rust.rs | 51 +++++---- 8 files changed, 259 insertions(+), 262 deletions(-) diff --git a/glue.rs b/glue.rs index 249d3fb79..43900a16a 100644 --- a/glue.rs +++ b/glue.rs @@ -14,21 +14,21 @@ pub type c_bool = libc::c_int; pub struct ProxyTraps { pub getPropertyDescriptor: Option c_bool>, pub getOwnPropertyDescriptor: Option JSBool>, - pub defineProperty: Option JSBool>, - pub getOwnPropertyNames: *u8, //XXX need a representation for AutoIdVector& + pub defineProperty: Option JSBool>, + pub getOwnPropertyNames: *const u8, //XXX need a representation for AutoIdVector& pub delete_: Option JSBool>, - pub enumerate: *u8, //XXX need a representation for AutoIdVector& + pub enumerate: *const u8, //XXX need a representation for AutoIdVector& pub has: Option JSBool>, pub hasOwn: Option JSBool>, pub get: Option JSBool>, pub set: Option JSBool>, - pub keys: *u8, //XXX need a representation for AutoIdVector& + pub keys: *const u8, //XXX need a representation for AutoIdVector& pub iterate: Option JSBool>, pub call: Option JSBool>, pub construct: Option JSBool>, - pub nativeCall: *u8, //XXX need a representation for IsAcceptableThis, NativeImpl, and CallArgs + pub nativeCall: *const u8, //XXX need a representation for IsAcceptableThis, NativeImpl, and CallArgs pub hasInstance: Option JSBool>, pub typeOf: Option uint>, //XXX JSType enum pub objectClassIs: Option JSBool>, //XXX ESClassValue enum @@ -39,7 +39,7 @@ pub struct ProxyTraps { pub iteratorNext: Option JSBool>, pub finalize: Option, pub getElementIfPresent: Option JSBool>, - pub getPrototypeOf: Option JSBool>, + pub getPrototypeOf: Option JSBool>, pub trace: Option, } @@ -60,23 +60,23 @@ extern { pub fn RUST_JS_NumberValue(d: f64) -> JSVal; //#[rust_stack] -pub fn CallJitPropertyOp(info: *JSJitInfo, cx: *mut JSContext, thisObj: *mut JSObject, specializedThis: *libc::c_void, vp: *mut JSVal) -> JSBool; +pub fn CallJitPropertyOp(info: *const JSJitInfo, cx: *mut JSContext, thisObj: *mut JSObject, specializedThis: *mut libc::c_void, vp: *mut JSVal) -> JSBool; //#[rust_stack] -pub fn CallJitMethodOp(info: *JSJitInfo, cx: *mut JSContext, thisObj: *mut JSObject, specializedThis: *libc::c_void, argc: libc::c_uint, vp: *mut JSVal) -> JSBool; +pub fn CallJitMethodOp(info: *const JSJitInfo, cx: *mut JSContext, thisObj: *mut JSObject, specializedThis: *mut libc::c_void, argc: libc::c_uint, vp: *mut JSVal) -> JSBool; //#[rust_stack] -pub fn RUST_FUNCTION_VALUE_TO_JITINFO(v: JSVal) -> *JSJitInfo; +pub fn RUST_FUNCTION_VALUE_TO_JITINFO(v: JSVal) -> *const JSJitInfo; pub fn SetFunctionNativeReserved(fun: *mut JSObject, which: libc::size_t, val: *mut JSVal); pub fn GetFunctionNativeReserved(fun: *mut JSObject, which: libc::size_t) -> *mut JSVal; -pub fn CreateProxyHandler(traps: *ProxyTraps, extra: *libc::c_void) -> *libc::c_void; -pub fn CreateWrapperProxyHandler(traps: *ProxyTraps) -> *libc::c_void; -pub fn NewProxyObject(cx: *mut JSContext, handler: *libc::c_void, priv_: *JSVal, +pub fn CreateProxyHandler(traps: *const ProxyTraps, extra: *const libc::c_void) -> *const libc::c_void; +pub fn CreateWrapperProxyHandler(traps: *const ProxyTraps) -> *const libc::c_void; +pub fn NewProxyObject(cx: *mut JSContext, handler: *const libc::c_void, priv_: *const JSVal, proto: *mut JSObject, parent: *mut JSObject, call: *mut JSObject, construct: *mut JSObject) -> *mut JSObject; -pub fn WrapperNew(cx: *mut JSContext, parent: *mut JSObject, handler: *libc::c_void) -> *mut JSObject; +pub fn WrapperNew(cx: *mut JSContext, parent: *mut JSObject, handler: *const libc::c_void) -> *mut JSObject; pub fn GetProxyExtra(obj: *mut JSObject, slot: libc::c_uint) -> JSVal; pub fn GetProxyPrivate(obj: *mut JSObject) -> JSVal; @@ -90,24 +90,24 @@ pub fn RUST_JSID_TO_INT(id: jsid) -> libc::c_int; pub fn RUST_JSID_IS_STRING(id: jsid) -> JSBool; pub fn RUST_JSID_TO_STRING(id: jsid) -> *mut JSString; -pub fn RUST_SET_JITINFO(func: *JSFunction, info: *JSJitInfo); +pub fn RUST_SET_JITINFO(func: *mut JSFunction, info: *const JSJitInfo); pub fn RUST_INTERNED_STRING_TO_JSID(cx: *mut JSContext, str: *mut JSString) -> jsid; pub fn DefineFunctionWithReserved(cx: *mut JSContext, obj: *mut JSObject, - name: *libc::c_char, call: JSNative, nargs: libc::c_uint, + name: *const libc::c_char, call: JSNative, nargs: libc::c_uint, attrs: libc::c_uint) -> *mut JSObject; -pub fn GetObjectJSClass(obj: *mut JSObject) -> *JSClass; -pub fn RUST_js_GetErrorMessage(userRef: *mut libc::c_void, locale: *libc::c_char, - errorNumber: libc::c_uint) -> *JSErrorFormatString; +pub fn GetObjectJSClass(obj: *mut JSObject) -> *mut JSClass; +pub fn RUST_js_GetErrorMessage(userRef: *mut libc::c_void, locale: *const libc::c_char, + errorNumber: libc::c_uint) -> *const JSErrorFormatString; pub fn js_IsObjectProxyClass(obj: *mut JSObject) -> bool; pub fn js_IsFunctionProxyClass(obj: *mut JSObject) -> bool; pub fn IsProxyHandlerFamily(obj: *mut JSObject) -> bool; -pub fn GetProxyHandlerExtra(obj: *mut JSObject) -> *libc::c_void; -pub fn GetProxyHandler(obj: *mut JSObject) -> *libc::c_void; -pub fn InvokeGetOwnPropertyDescriptor(handler: *libc::c_void, cx: *mut JSContext, proxy: *mut JSObject, id: jsid, set: JSBool, desc: *mut JSPropertyDescriptor) -> JSBool; +pub fn GetProxyHandlerExtra(obj: *mut JSObject) -> *const libc::c_void; +pub fn GetProxyHandler(obj: *mut JSObject) -> *mut libc::c_void; +pub fn InvokeGetOwnPropertyDescriptor(handler: *mut libc::c_void, cx: *mut JSContext, proxy: *mut JSObject, id: jsid, set: JSBool, desc: *mut JSPropertyDescriptor) -> JSBool; pub fn GetGlobalForObjectCrossCompartment(obj: *mut JSObject) -> *mut JSObject; -pub fn ReportError(cx: *mut JSContext, error: *libc::c_char); +pub fn ReportError(cx: *mut JSContext, error: *const libc::c_char); pub fn IsWrapper(obj: *mut JSObject) -> JSBool; -pub fn UnwrapObject(obj: *mut JSObject, stopAtOuter: JSBool, flags: *libc::c_uint) -> *mut JSObject; +pub fn UnwrapObject(obj: *mut JSObject, stopAtOuter: JSBool, flags: *mut libc::c_uint) -> *mut JSObject; } diff --git a/js.rc b/js.rc index 4fc9c3f19..bdeabf400 100644 --- a/js.rc +++ b/js.rc @@ -2,14 +2,12 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ -#![crate_id = "github.com/mozilla-servo/rust-mozjs#js:0.1"] -#![crate_type = "lib"] -#![crate_type = "dylib"] +#![crate_name = "js"] #![crate_type = "rlib"] -#![feature(globs, link_args, managed_boxes, phase)] +#![feature(globs, link_args, managed_boxes, phase, unsafe_destructor)] -#![allow(non_uppercase_statics, non_camel_case_types)] +#![allow(non_uppercase_statics, non_camel_case_types, non_snake_case_functions)] extern crate green; extern crate libc; @@ -50,8 +48,8 @@ pub mod jsfriendapi; pub static JSOPTION_STRICT: uint32_t = 0b00000000000001u32; pub static JSOPTION_WERROR: uint32_t = 0b00000000000010u32; pub static JSOPTION_VAROBJFIX: uint32_t = 0b00000000000100u32; -pub static JSOPTION_METHODJIT: uint32_t = (1 << 14) as u32; -pub static JSOPTION_TYPE_INFERENCE: uint32_t = (1 << 18) as u32; +pub static JSOPTION_METHODJIT: uint32_t = (1u32 << 14) as u32; +pub static JSOPTION_TYPE_INFERENCE: uint32_t = (1u32 << 18) as u32; pub static default_heapsize: u32 = 32_u32 * 1024_u32 * 1024_u32; pub static default_stacksize: uint = 8192u; @@ -78,11 +76,11 @@ pub static JSPROP_NATIVE_ACCESSORS: c_uint = 0x08; pub static JSCLASS_RESERVED_SLOTS_SHIFT: c_uint = 8; pub static JSCLASS_RESERVED_SLOTS_WIDTH: c_uint = 8; -pub static JSCLASS_RESERVED_SLOTS_MASK: c_uint = ((1 << JSCLASS_RESERVED_SLOTS_WIDTH) - 1); +pub static JSCLASS_RESERVED_SLOTS_MASK: c_uint = ((1u << JSCLASS_RESERVED_SLOTS_WIDTH as uint) - 1) as c_uint; pub static JSCLASS_HIGH_FLAGS_SHIFT: c_uint = JSCLASS_RESERVED_SLOTS_SHIFT + JSCLASS_RESERVED_SLOTS_WIDTH; -pub static JSCLASS_IS_GLOBAL: c_uint = (1<<(JSCLASS_HIGH_FLAGS_SHIFT+1)); +pub static JSCLASS_IS_GLOBAL: c_uint = (1<<((JSCLASS_HIGH_FLAGS_SHIFT as uint)+1)); pub static JSCLASS_GLOBAL_SLOT_COUNT: c_uint = JSProto_LIMIT * 3 + 24; @@ -102,7 +100,7 @@ pub enum JSGCTraceKind { } pub fn JSCLASS_HAS_RESERVED_SLOTS(n: c_uint) -> c_uint { - (n & JSCLASS_RESERVED_SLOTS_MASK) << JSCLASS_RESERVED_SLOTS_SHIFT + (n & JSCLASS_RESERVED_SLOTS_MASK) << (JSCLASS_RESERVED_SLOTS_SHIFT as uint) } #[inline(always)] @@ -137,14 +135,14 @@ pub unsafe fn JS_CALLEE(_cx: *mut JSContext, vp: *mut JSVal) -> JSVal { // '__test' module. #[cfg(test)] #[start] -fn start(argc: int, argv: **u8) -> int { +fn start(argc: int, argv: *const *const u8) -> int { green::start(argc, argv, rustuv::event_loop, __test::main) } pub type JSObjectOp = extern "C" fn(*mut JSContext, JSHandleObject) -> *mut JSObject; pub struct Class { - pub name: *libc::c_char, + pub name: *const libc::c_char, pub flags: uint32_t, pub addProperty: JSPropertyOp, pub delProperty: JSPropertyOp, @@ -165,46 +163,46 @@ pub struct Class { } pub struct ClassExtension { - pub equality: *u8, + pub equality: *const u8, pub outerObject: Option, pub innerObject: Option, - pub iteratorObject: *u8, - pub unused: *u8, - pub isWrappedNative: *u8, + pub iteratorObject: *const u8, + pub unused: *const u8, + pub isWrappedNative: *const u8, } pub struct ObjectOps { - pub lookupGeneric: *u8, - pub lookupProperty: *u8, - pub lookupElement: *u8, - pub lookupSpecial: *u8, - pub defineGeneric: *u8, - pub defineProperty: *u8, - pub defineElement: *u8, - pub defineSpecial: *u8, - pub getGeneric: *u8, - pub getProperty: *u8, - pub getElement: *u8, - pub getElementIfPresent: *u8, - pub getSpecial: *u8, - pub setGeneric: *u8, - pub setProperty: *u8, - pub setElement: *u8, - pub setSpecial: *u8, - pub getGenericAttributes: *u8, - pub getPropertyAttributes: *u8, - pub getElementAttributes: *u8, - pub getSpecialAttributes: *u8, - pub setGenericAttributes: *u8, - pub setPropertyAttributes: *u8, - pub setElementAttributes: *u8, - pub setSpecialAttributes: *u8, - pub deleteProperty: *u8, - pub deleteElement: *u8, - pub deleteSpecial: *u8, - - pub enumerate: *u8, - pub typeOf: *u8, + pub lookupGeneric: *const u8, + pub lookupProperty: *const u8, + pub lookupElement: *const u8, + pub lookupSpecial: *const u8, + pub defineGeneric: *const u8, + pub defineProperty: *const u8, + pub defineElement: *const u8, + pub defineSpecial: *const u8, + pub getGeneric: *const u8, + pub getProperty: *const u8, + pub getElement: *const u8, + pub getElementIfPresent: *const u8, + pub getSpecial: *const u8, + pub setGeneric: *const u8, + pub setProperty: *const u8, + pub setElement: *const u8, + pub setSpecial: *const u8, + pub getGenericAttributes: *const u8, + pub getPropertyAttributes: *const u8, + pub getElementAttributes: *const u8, + pub getSpecialAttributes: *const u8, + pub setGenericAttributes: *const u8, + pub setPropertyAttributes: *const u8, + pub setElementAttributes: *const u8, + pub setSpecialAttributes: *const u8, + pub deleteProperty: *const u8, + pub deleteElement: *const u8, + pub deleteSpecial: *const u8, + + pub enumerate: *const u8, + pub typeOf: *const u8, pub thisObject: Option, - pub clear: *u8, + pub clear: *const u8, } diff --git a/jsapi.rs b/jsapi.rs index 485753625..a2c27b55a 100644 --- a/jsapi.rs +++ b/jsapi.rs @@ -21,7 +21,7 @@ pub type JSBool = c_int; pub type jschar = uint16_t; pub type jsid = ptrdiff_t; pub type JSCallOnceType = JSBool; -pub type JSInitCallback = *u8; +pub type JSInitCallback = *mut u8; pub type JSProtoKey = c_uint; pub static JSProto_LIMIT: JSProtoKey = 41; @@ -127,14 +127,14 @@ pub type JSFinalizeOp = (arg1: *mut JSFreeOp, arg2: *mut JSObject)>; pub struct JSStringFinalizer { pub finalize: Option, + (arg1: *mut JSStringFinalizer, arg2: *mut jschar)>, } pub type JSCheckAccessOp = Option JSBool>; pub type JSHasInstanceOp = Option JSBool>; + (arg1: *mut JSContext, arg2: JSHandleObject, arg3: *const JSVal, arg4: *mut JSBool) -> JSBool>; pub type JSTraceOp = Option; @@ -143,7 +143,7 @@ pub type JSTraceNamePrinter = (arg1: *mut JSTracer, arg2: *mut c_char, arg3: size_t)>; pub type JSEqualityOp = Option JSBool>; + (arg1: *mut JSContext, arg2: JSHandleObject, arg3: *const JSVal, arg4: *mut JSBool) -> JSBool>; pub type JSNative = Option JSBool>; @@ -176,7 +176,7 @@ pub type JSOperationCallback = Option JSBool>; pub type JSErrorReporter = Option; + (arg1: *mut JSContext, arg2: *const c_char, arg3: *mut JSErrorReport)>; pub type Enum_JSExnType = c_int; pub static JSEXN_NONE: c_int = -1; pub static JSEXN_ERR: c_int = 0; @@ -190,14 +190,14 @@ pub static JSEXN_URIERR: c_int = 7; pub static JSEXN_LIMIT: c_int = 8; pub type JSExnType = Enum_JSExnType; pub struct JSErrorFormatString { - pub format: *c_char, + pub format: *const c_char, pub argCount: uint16_t, pub exnType: int16_t, } pub type JSErrorCallback = Option *JSErrorFormatString>; + (arg1: *mut c_void, arg2: *const c_char, arg3: c_uint) + -> *const JSErrorFormatString>; pub type JSLocaleToUpperCase = Option JSBool>; @@ -210,7 +210,7 @@ pub type JSLocaleCompare = -> JSBool>; pub type JSLocaleToUnicode = Option JSBool>; + (arg1: *mut JSContext, arg2: *const c_char, arg3: *mut JSVal) -> JSBool>; pub type JSDestroyPrincipalsOp = Option; pub type JSSubsumePrincipalsOp = @@ -261,7 +261,7 @@ pub static JS_GC_ROOT_GCTHING_PTR: c_uint = 1; pub type JSGCRootType = Enum_JSGCRootType; pub type JSGCRootMapFun = Option c_int>; + (arg1: *mut c_void, arg2: JSGCRootType, arg3: *const c_char, arg4: *mut c_void) -> c_int>; pub type JSTraceCallback = Option; @@ -269,7 +269,7 @@ pub struct JSTracer { pub runtime: *mut JSRuntime, pub callback: JSTraceCallback, pub debugPrinter: JSTraceNamePrinter, - pub debugPrintArg: *c_void, + pub debugPrintArg: *const c_void, pub debugPrintIndex: size_t, pub eagerlyTraceWeakMaps: JSBool, pub realLocation: *mut c_void, @@ -302,7 +302,7 @@ pub static JSGC_MODE_INCREMENTAL: c_uint = 2; pub type JSGCMode = Enum_JSGCMode; pub type JSClassInternal = Option; pub struct JSClass { - pub name: *c_char, + pub name: *const c_char, pub flags: uint32_t, pub addProperty: JSPropertyOp, pub delProperty: JSPropertyOp, @@ -321,35 +321,35 @@ pub struct JSClass { } pub struct JSConstDoubleSpec { pub dval: c_double, - pub name: *c_char, + pub name: *const c_char, pub flags: uint8_t, pub spare: [uint8_t, ..3u], } pub struct JSStrictPropertyOpWrapper { pub op: JSNative, - pub info: *JSJitInfo, + pub info: *const JSJitInfo, } pub struct JSPropertyOpWrapper { pub op: JSNative, - pub info: *JSJitInfo, + pub info: *const JSJitInfo, } pub struct JSNativeWrapper { pub op: JSNative, - pub info: *JSJitInfo, + pub info: *const JSJitInfo, } pub struct JSPropertySpec { - pub name: *c_char, + pub name: *const c_char, pub tinyid: int8_t, pub flags: uint8_t, pub getter: JSPropertyOpWrapper, pub setter: JSStrictPropertyOpWrapper, } pub struct JSFunctionSpec { - pub name: *c_char, + pub name: *const c_char, pub call: JSNativeWrapper, pub nargs: uint16_t, pub flags: uint16_t, - pub selfHostedName: *c_char, + pub selfHostedName: *const c_char, } pub struct JSPropertyDescriptor { pub obj: *mut JSObject, @@ -374,7 +374,7 @@ pub static JSEXEC_MAIN: c_uint = 1; pub type JSExecPart = Enum_JSExecPart; pub type JSONWriteCallback = Option JSBool>; + (arg1: *const jschar, arg2: uint32_t, arg3: *mut c_void) -> JSBool>; pub struct JSStructuredCloneCallbacks { pub read: ReadStructuredCloneOp, pub write: WriteStructuredCloneOp, @@ -388,17 +388,17 @@ pub struct JSLocaleCallbacks { pub localeGetErrorMessage: JSErrorCallback, } pub struct JSErrorReport { - pub filename: *c_char, + pub filename: *const c_char, pub originPrincipals: *mut JSPrincipals, pub lineno: c_uint, - pub linebuf: *c_char, - pub tokenptr: *c_char, - pub uclinebuf: *jschar, - pub uctokenptr: *jschar, + pub linebuf: *const c_char, + pub tokenptr: *const c_char, + pub uclinebuf: *const jschar, + pub uctokenptr: *const jschar, pub flags: c_uint, pub errorNumber: c_uint, - pub ucmessage: *jschar, - pub messageArgs: *mut *jschar, + pub ucmessage: *const jschar, + pub messageArgs: *mut *const jschar, pub exnType: int16_t, pub column: c_uint, } @@ -440,7 +440,7 @@ pub fn JS_GetEmptyStringValue(cx: *mut JSContext) -> JSVal; pub fn JS_GetEmptyString(rt: *mut JSRuntime) -> *mut JSString; -pub fn JS_ConvertArguments(cx: *mut JSContext, argc: c_uint, argv: *mut JSVal, format: *c_char, ...) -> JSBool; +pub fn JS_ConvertArguments(cx: *mut JSContext, argc: c_uint, argv: *mut JSVal, format: *const c_char, ...) -> JSBool; pub fn JS_ConvertValue(cx: *mut JSContext, v: JSVal, _type: JSType, vp: *mut JSVal) -> JSBool; @@ -478,7 +478,7 @@ pub fn JS_ValueToBoolean(cx: *mut JSContext, v: JSVal, bp: *mut JSBool) -> JSBoo pub fn JS_TypeOfValue(cx: *mut JSContext, v: JSVal) -> JSType; -pub fn JS_GetTypeName(cx: *mut JSContext, _type: JSType) -> *c_char; +pub fn JS_GetTypeName(cx: *mut JSContext, _type: JSType) -> *const c_char; pub fn JS_StrictlyEqual(cx: *mut JSContext, v1: JSVal, v2: JSVal, equal: *mut JSBool) -> JSBool; @@ -538,9 +538,9 @@ pub fn JS_GetVersion(cx: *mut JSContext) -> JSVersion; pub fn JS_SetVersion(cx: *mut JSContext, version: JSVersion) -> JSVersion; -pub fn JS_VersionToString(version: JSVersion) -> *c_char; +pub fn JS_VersionToString(version: JSVersion) -> *const c_char; -pub fn JS_StringToVersion(string: *c_char) -> JSVersion; +pub fn JS_StringToVersion(string: *const c_char) -> JSVersion; pub fn JS_GetOptions(cx: *mut JSContext) -> uint32_t; @@ -550,7 +550,7 @@ pub fn JS_ToggleOptions(cx: *mut JSContext, options: uint32_t) -> uint32_t; pub fn JS_SetJitHardening(rt: *mut JSRuntime, enabled: JSBool); -pub fn JS_GetImplementationVersion() -> *c_char; +pub fn JS_GetImplementationVersion() -> *const c_char; pub fn JS_SetDestroyCompartmentCallback(rt: *mut JSRuntime, callback: JSDestroyCompartmentCallback); @@ -630,7 +630,7 @@ pub fn JS_GetDefaultFreeOp(rt: *mut JSRuntime) -> *mut JSFreeOp; pub fn JS_updateMallocCounter(cx: *mut JSContext, nbytes: size_t); -pub fn JS_strdup(cx: *mut JSContext, s: *c_char) -> *mut c_char; +pub fn JS_strdup(cx: *mut JSContext, s: *const c_char) -> *mut c_char; pub fn JS_AddValueRoot(cx: *mut JSContext, vp: *mut JSVal) -> JSBool; @@ -640,15 +640,15 @@ pub fn JS_AddObjectRoot(cx: *mut JSContext, rp: *mut *mut JSObject) -> JSBool; pub fn JS_AddGCThingRoot(cx: *mut JSContext, rp: *mut *mut c_void) -> JSBool; -pub fn JS_AddNamedValueRoot(cx: *mut JSContext, vp: *mut JSVal, name: *c_char) -> JSBool; +pub fn JS_AddNamedValueRoot(cx: *mut JSContext, vp: *mut JSVal, name: *const c_char) -> JSBool; -pub fn JS_AddNamedStringRoot(cx: *mut JSContext, rp: *mut *mut JSString, name: *c_char) -> JSBool; +pub fn JS_AddNamedStringRoot(cx: *mut JSContext, rp: *mut *mut JSString, name: *const c_char) -> JSBool; -pub fn JS_AddNamedObjectRoot(cx: *mut JSContext, rp: *mut *mut JSObject, name: *c_char) -> JSBool; +pub fn JS_AddNamedObjectRoot(cx: *mut JSContext, rp: *mut *mut JSObject, name: *const c_char) -> JSBool; -pub fn JS_AddNamedScriptRoot(cx: *mut JSContext, rp: *mut *mut JSScript, name: *c_char) -> JSBool; +pub fn JS_AddNamedScriptRoot(cx: *mut JSContext, rp: *mut *mut JSScript, name: *const c_char) -> JSBool; -pub fn JS_AddNamedGCThingRoot(cx: *mut JSContext, rp: *mut *mut c_void, name: *c_char) -> JSBool; +pub fn JS_AddNamedGCThingRoot(cx: *mut JSContext, rp: *mut *mut c_void, name: *const c_char) -> JSBool; pub fn JS_RemoveValueRoot(cx: *mut JSContext, vp: *mut JSVal); @@ -666,9 +666,9 @@ pub fn JS_RemoveStringRootRT(rt: *mut JSRuntime, rp: *mut *mut JSString); pub fn JS_RemoveObjectRootRT(rt: *mut JSRuntime, rp: *mut *mut JSObject); -pub fn js_AddRootRT(rt: *mut JSRuntime, vp: *mut JSVal, name: *c_char) -> JSBool; +pub fn js_AddRootRT(rt: *mut JSRuntime, vp: *mut JSVal, name: *const c_char) -> JSBool; -pub fn js_AddGCThingRootRT(rt: *mut JSRuntime, rp: *mut *mut c_void, name: *c_char) -> JSBool; +pub fn js_AddGCThingRootRT(rt: *mut JSRuntime, rp: *mut *mut c_void, name: *const c_char) -> JSBool; pub fn js_RemoveRoot(rt: *mut JSRuntime, rp: *mut c_void); @@ -696,7 +696,7 @@ pub fn JS_TraceRuntime(trc: *mut JSTracer); pub fn JS_GetTraceThingInfo(buf: *mut c_char, bufsize: size_t, trc: *mut JSTracer, thing: *mut c_void, kind: JSGCTraceKind, includeDetails: JSBool); -pub fn JS_GetTraceEdgeName(trc: *mut JSTracer, buffer: *mut c_char, bufferSize: c_int) -> *c_char; +pub fn JS_GetTraceEdgeName(trc: *mut JSTracer, buffer: *mut c_char, bufferSize: c_int) -> *const c_char; pub fn JS_GC(rt: *mut JSRuntime); @@ -724,11 +724,11 @@ pub fn JS_SetGCParameterForThread(cx: *mut JSContext, key: JSGCParamKey, value: pub fn JS_GetGCParameterForThread(cx: *mut JSContext, key: JSGCParamKey) -> uint32_t; -pub fn JS_NewExternalString(cx: *mut JSContext, chars: *jschar, length: size_t, fin: *JSStringFinalizer) -> *mut JSString; +pub fn JS_NewExternalString(cx: *mut JSContext, chars: *const jschar, length: size_t, fin: *const JSStringFinalizer) -> *mut JSString; pub fn JS_IsExternalString(str: *mut JSString) -> JSBool; -pub fn JS_GetExternalStringFinalizer(str: *mut JSString) -> *JSStringFinalizer; +pub fn JS_GetExternalStringFinalizer(str: *mut JSString) -> *const JSStringFinalizer; pub fn JS_SetNativeStackQuota(cx: *mut JSRuntime, stackSize: size_t); @@ -754,13 +754,13 @@ pub fn JS_ResolveStub(cx: *mut JSContext, obj: JSHandleObject, id: JSHandleId) - pub fn JS_ConvertStub(cx: *mut JSContext, obj: JSHandleObject, _type: JSType, vp: JSMutableHandleValue) -> JSBool; -pub fn JS_InitClass(cx: *mut JSContext, obj: *mut JSObject, parent_proto: *mut JSObject, clasp: *JSClass, constructor: JSNative, nargs: c_uint, ps: *JSPropertySpec, fs: *JSFunctionSpec, static_ps: *JSPropertySpec, static_fs: *JSFunctionSpec) -> *mut JSObject; +pub fn JS_InitClass(cx: *mut JSContext, obj: *mut JSObject, parent_proto: *mut JSObject, clasp: *mut JSClass, constructor: JSNative, nargs: c_uint, ps: *mut JSPropertySpec, fs: *mut JSFunctionSpec, static_ps: *mut JSPropertySpec, static_fs: *mut JSFunctionSpec) -> *mut JSObject; pub fn JS_LinkConstructorAndPrototype(cx: *mut JSContext, ctor: *mut JSObject, proto: *mut JSObject) -> JSBool; -pub fn JS_GetClass(obj: JSRawObject) -> *JSClass; +pub fn JS_GetClass(obj: JSRawObject) -> *mut JSClass; -pub fn JS_InstanceOf(cx: *mut JSContext, obj: *mut JSObject, clasp: *JSClass, argv: *mut JSVal) -> JSBool; +pub fn JS_InstanceOf(cx: *mut JSContext, obj: *mut JSObject, clasp: *mut JSClass, argv: *mut JSVal) -> JSBool; pub fn JS_HasInstance(cx: *mut JSContext, obj: *mut JSObject, v: JSVal, bp: *mut JSBool) -> JSBool; @@ -768,7 +768,7 @@ pub fn JS_GetPrivate(obj: JSRawObject) -> *mut c_void; pub fn JS_SetPrivate(obj: JSRawObject, data: *mut c_void); -pub fn JS_GetInstancePrivate(cx: *mut JSContext, obj: *mut JSObject, clasp: *JSClass, argv: *mut JSVal) -> *mut c_void; +pub fn JS_GetInstancePrivate(cx: *mut JSContext, obj: *mut JSObject, clasp: *mut JSClass, argv: *mut JSVal) -> *mut c_void; pub fn JS_GetPrototype(obj: JSRawObject) -> *mut JSObject; @@ -782,9 +782,9 @@ pub fn JS_GetConstructor(cx: *mut JSContext, proto: *mut JSObject) -> *mut JSObj pub fn JS_GetObjectId(cx: *mut JSContext, obj: JSRawObject, idp: *mut jsid) -> JSBool; -pub fn JS_NewGlobalObject(cx: *mut JSContext, clasp: *JSClass, principals: *mut JSPrincipals) -> *mut JSObject; +pub fn JS_NewGlobalObject(cx: *mut JSContext, clasp: *const JSClass, principals: *mut JSPrincipals) -> *mut JSObject; -pub fn JS_NewObject(cx: *mut JSContext, clasp: *JSClass, proto: *mut JSObject, parent: *mut JSObject) -> *mut JSObject; +pub fn JS_NewObject(cx: *mut JSContext, clasp: *const JSClass, proto: *const JSObject, parent: *const JSObject) -> *mut JSObject; pub fn JS_IsExtensible(obj: JSRawObject) -> JSBool; @@ -792,7 +792,7 @@ pub fn JS_IsNative(obj: JSRawObject) -> JSBool; pub fn JS_GetObjectRuntime(obj: JSRawObject) -> *mut JSRuntime; -pub fn JS_NewObjectWithGivenProto(cx: *mut JSContext, clasp: *JSClass, proto: *mut JSObject, parent: *mut JSObject) -> *mut JSObject; +pub fn JS_NewObjectWithGivenProto(cx: *mut JSContext, clasp: *mut JSClass, proto: *mut JSObject, parent: *mut JSObject) -> *mut JSObject; pub fn JS_DeepFreezeObject(cx: *mut JSContext, obj: *mut JSObject) -> JSBool; @@ -800,41 +800,41 @@ pub fn JS_FreezeObject(cx: *mut JSContext, obj: *mut JSObject) -> JSBool; pub fn JS_New(cx: *mut JSContext, ctor: *mut JSObject, argc: c_uint, argv: *mut JSVal) -> *mut JSObject; -pub fn JS_DefineObject(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, clasp: *JSClass, proto: *mut JSObject, attrs: c_uint) -> *mut JSObject; +pub fn JS_DefineObject(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, clasp: *mut JSClass, proto: *mut JSObject, attrs: c_uint) -> *mut JSObject; pub fn JS_DefineConstDoubles(cx: *mut JSContext, obj: *mut JSObject, cds: *mut JSConstDoubleSpec) -> JSBool; -pub fn JS_DefineProperties(cx: *mut JSContext, obj: *mut JSObject, ps: *JSPropertySpec) -> JSBool; +pub fn JS_DefineProperties(cx: *mut JSContext, obj: *mut JSObject, ps: *const JSPropertySpec) -> JSBool; -pub fn JS_DefineProperty(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; +pub fn JS_DefineProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; pub fn JS_DefinePropertyById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; pub fn JS_DefineOwnProperty(cx: *mut JSContext, obj: *mut JSObject, id: jsid, descriptor: JSVal, bp: *mut JSBool) -> JSBool; -pub fn JS_GetPropertyAttributes(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, attrsp: *mut c_uint, foundp: *mut JSBool) -> JSBool; +pub fn JS_GetPropertyAttributes(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, attrsp: *mut c_uint, foundp: *mut JSBool) -> JSBool; -pub fn JS_GetPropertyAttrsGetterAndSetter(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, attrsp: *mut c_uint, foundp: *mut JSBool, getterp: *mut JSPropertyOp, setterp: *mut JSStrictPropertyOp) -> JSBool; +pub fn JS_GetPropertyAttrsGetterAndSetter(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, attrsp: *mut c_uint, foundp: *mut JSBool, getterp: *mut JSPropertyOp, setterp: *mut JSStrictPropertyOp) -> JSBool; pub fn JS_GetPropertyAttrsGetterAndSetterById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, attrsp: *mut c_uint, foundp: *mut JSBool, getterp: *mut JSPropertyOp, setterp: *mut JSStrictPropertyOp) -> JSBool; -pub fn JS_SetPropertyAttributes(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, attrs: c_uint, foundp: *mut JSBool) -> JSBool; +pub fn JS_SetPropertyAttributes(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, attrs: c_uint, foundp: *mut JSBool) -> JSBool; -pub fn JS_DefinePropertyWithTinyId(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, tinyid: int8_t, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; +pub fn JS_DefinePropertyWithTinyId(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, tinyid: int8_t, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; -pub fn JS_AlreadyHasOwnProperty(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, foundp: *mut JSBool) -> JSBool; +pub fn JS_AlreadyHasOwnProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, foundp: *mut JSBool) -> JSBool; pub fn JS_AlreadyHasOwnPropertyById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, foundp: *mut JSBool) -> JSBool; -pub fn JS_HasProperty(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, foundp: *mut JSBool) -> JSBool; +pub fn JS_HasProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, foundp: *mut JSBool) -> JSBool; pub fn JS_HasPropertyById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, foundp: *mut JSBool) -> JSBool; -pub fn JS_LookupProperty(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, vp: *mut JSVal) -> JSBool; +pub fn JS_LookupProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, vp: *mut JSVal) -> JSBool; pub fn JS_LookupPropertyById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, vp: *mut JSVal) -> JSBool; -pub fn JS_LookupPropertyWithFlags(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, flags: c_uint, vp: *mut JSVal) -> JSBool; +pub fn JS_LookupPropertyWithFlags(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, flags: c_uint, vp: *mut JSVal) -> JSBool; pub fn JS_LookupPropertyWithFlagsById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, flags: c_uint, objp: *mut *mut JSObject, vp: *mut JSVal) -> JSBool; @@ -842,9 +842,9 @@ pub fn JS_GetPropertyDescriptorById(cx: *mut JSContext, obj: *mut JSObject, id: pub fn JS_GetOwnPropertyDescriptor(cx: *mut JSContext, obj: *mut JSObject, id: jsid, vp: *mut JSVal) -> JSBool; -pub fn JS_GetProperty(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, vp: *mut JSVal) -> JSBool; +pub fn JS_GetProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, vp: *mut JSVal) -> JSBool; -pub fn JS_GetPropertyDefault(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, def: JSVal, vp: *mut JSVal) -> JSBool; +pub fn JS_GetPropertyDefault(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, def: JSVal, vp: *mut JSVal) -> JSBool; pub fn JS_GetPropertyById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, vp: *mut JSVal) -> JSBool; @@ -854,41 +854,41 @@ pub fn JS_ForwardGetPropertyTo(cx: *mut JSContext, obj: *mut JSObject, id: jsid, pub fn JS_GetMethodById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, objp: *mut *mut JSObject, vp: *mut JSVal) -> JSBool; -pub fn JS_GetMethod(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, objp: *mut *mut JSObject, vp: *mut JSVal) -> JSBool; +pub fn JS_GetMethod(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, objp: *mut *mut JSObject, vp: *mut JSVal) -> JSBool; -pub fn JS_SetProperty(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, vp: *mut JSVal) -> JSBool; +pub fn JS_SetProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, vp: *mut JSVal) -> JSBool; pub fn JS_SetPropertyById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, vp: *mut JSVal) -> JSBool; -pub fn JS_DeleteProperty(cx: *mut JSContext, obj: *mut JSObject, name: *c_char) -> JSBool; +pub fn JS_DeleteProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char) -> JSBool; -pub fn JS_DeleteProperty2(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, rval: *mut JSVal) -> JSBool; +pub fn JS_DeleteProperty2(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, rval: *mut JSVal) -> JSBool; pub fn JS_DeletePropertyById(cx: *mut JSContext, obj: *mut JSObject, id: jsid) -> JSBool; pub fn JS_DeletePropertyById2(cx: *mut JSContext, obj: *mut JSObject, id: jsid, rval: *mut JSVal) -> JSBool; -pub fn JS_DefineUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; +pub fn JS_DefineUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; -pub fn JS_GetUCPropertyAttributes(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, attrsp: *mut c_uint, foundp: *mut JSBool) -> JSBool; +pub fn JS_GetUCPropertyAttributes(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, attrsp: *mut c_uint, foundp: *mut JSBool) -> JSBool; -pub fn JS_GetUCPropertyAttrsGetterAndSetter(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, attrsp: *mut c_uint, foundp: *mut JSBool, getterp: *mut JSPropertyOp, setterp: *mut JSStrictPropertyOp) -> JSBool; +pub fn JS_GetUCPropertyAttrsGetterAndSetter(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, attrsp: *mut c_uint, foundp: *mut JSBool, getterp: *mut JSPropertyOp, setterp: *mut JSStrictPropertyOp) -> JSBool; -pub fn JS_SetUCPropertyAttributes(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, attrs: c_uint, foundp: *mut JSBool) -> JSBool; +pub fn JS_SetUCPropertyAttributes(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, attrs: c_uint, foundp: *mut JSBool) -> JSBool; -pub fn JS_DefineUCPropertyWithTinyId(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, tinyid: int8_t, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; +pub fn JS_DefineUCPropertyWithTinyId(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, tinyid: int8_t, value: JSVal, getter: JSPropertyOp, setter: JSStrictPropertyOp, attrs: c_uint) -> JSBool; -pub fn JS_AlreadyHasOwnUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, foundp: *mut JSBool) -> JSBool; +pub fn JS_AlreadyHasOwnUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, foundp: *mut JSBool) -> JSBool; -pub fn JS_HasUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, vp: *mut JSBool) -> JSBool; +pub fn JS_HasUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, vp: *mut JSBool) -> JSBool; -pub fn JS_LookupUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, vp: *mut JSVal) -> JSBool; +pub fn JS_LookupUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, vp: *mut JSVal) -> JSBool; -pub fn JS_GetUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, vp: *mut JSVal) -> JSBool; +pub fn JS_GetUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, vp: *mut JSVal) -> JSBool; -pub fn JS_SetUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, vp: *mut JSVal) -> JSBool; +pub fn JS_SetUCProperty(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, vp: *mut JSVal) -> JSBool; -pub fn JS_DeleteUCProperty2(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, rval: *mut JSVal) -> JSBool; +pub fn JS_DeleteUCProperty2(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, rval: *mut JSVal) -> JSBool; pub fn JS_NewArrayObject(cx: *mut JSContext, length: c_int, vector: *mut JSVal) -> *mut JSObject; @@ -938,15 +938,15 @@ pub fn JS_HoldPrincipals(principals: *mut JSPrincipals); pub fn JS_DropPrincipals(rt: *mut JSRuntime, principals: *mut JSPrincipals); -pub fn JS_SetSecurityCallbacks(rt: *mut JSRuntime, callbacks: *JSSecurityCallbacks); +pub fn JS_SetSecurityCallbacks(rt: *mut JSRuntime, callbacks: *const JSSecurityCallbacks); -pub fn JS_GetSecurityCallbacks(rt: *mut JSRuntime) -> *JSSecurityCallbacks; +pub fn JS_GetSecurityCallbacks(rt: *mut JSRuntime) -> *const JSSecurityCallbacks; pub fn JS_SetTrustedPrincipals(rt: *mut JSRuntime, prin: *mut JSPrincipals); pub fn JS_InitDestroyPrincipalsCallback(rt: *mut JSRuntime, destroyPrincipals: JSDestroyPrincipalsOp); -pub fn JS_NewFunction(cx: *mut JSContext, call: JSNative, nargs: c_uint, flags: c_uint, parent: *mut JSObject, name: *c_char) -> *mut JSFunction; +pub fn JS_NewFunction(cx: *mut JSContext, call: JSNative, nargs: c_uint, flags: c_uint, parent: *mut JSObject, name: *const c_char) -> *mut JSFunction; pub fn JS_NewFunctionById(cx: *mut JSContext, call: JSNative, nargs: c_uint, flags: c_uint, parent: *mut JSObject, id: jsid) -> *mut JSFunction; @@ -968,53 +968,53 @@ pub fn JS_IsNativeFunction(funobj: JSRawObject, call: JSNative) -> JSBool; pub fn JS_BindCallable(cx: *mut JSContext, callable: *mut JSObject, newThis: JSRawObject) -> *mut JSObject; -pub fn JS_DefineFunctions(cx: *mut JSContext, obj: *mut JSObject, fs: *JSFunctionSpec) -> JSBool; +pub fn JS_DefineFunctions(cx: *mut JSContext, obj: *mut JSObject, fs: *const JSFunctionSpec) -> JSBool; -pub fn JS_DefineFunction(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, call: JSNative, nargs: c_uint, attrs: c_uint) -> *mut JSFunction; +pub fn JS_DefineFunction(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, call: JSNative, nargs: c_uint, attrs: c_uint) -> *mut JSFunction; -pub fn JS_DefineUCFunction(cx: *mut JSContext, obj: *mut JSObject, name: *jschar, namelen: size_t, call: JSNative, nargs: c_uint, attrs: c_uint) -> *mut JSFunction; +pub fn JS_DefineUCFunction(cx: *mut JSContext, obj: *mut JSObject, name: *const jschar, namelen: size_t, call: JSNative, nargs: c_uint, attrs: c_uint) -> *mut JSFunction; pub fn JS_DefineFunctionById(cx: *mut JSContext, obj: *mut JSObject, id: jsid, call: JSNative, nargs: c_uint, attrs: c_uint) -> *mut JSFunction; pub fn JS_CloneFunctionObject(cx: *mut JSContext, funobj: *mut JSObject, parent: JSRawObject) -> *mut JSObject; -pub fn JS_BufferIsCompilableUnit(cx: *mut JSContext, bytes_are_utf8: JSBool, obj: *mut JSObject, bytes: *c_char, length: size_t) -> JSBool; +pub fn JS_BufferIsCompilableUnit(cx: *mut JSContext, bytes_are_utf8: JSBool, obj: *mut JSObject, bytes: *const c_char, length: size_t) -> JSBool; -pub fn JS_CompileScript(cx: *mut JSContext, obj: *mut JSObject, bytes: *c_char, length: size_t, filename: *c_char, lineno: c_uint) -> *mut JSScript; +pub fn JS_CompileScript(cx: *mut JSContext, obj: *mut JSObject, bytes: *const c_char, length: size_t, filename: *const c_char, lineno: c_uint) -> *mut JSScript; -pub fn JS_CompileScriptForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, bytes: *c_char, length: size_t, filename: *c_char, lineno: c_uint) -> *mut JSScript; +pub fn JS_CompileScriptForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, bytes: *const c_char, length: size_t, filename: *const c_char, lineno: c_uint) -> *mut JSScript; -pub fn JS_CompileScriptForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, bytes: *c_char, length: size_t, filename: *c_char, lineno: c_uint, version: JSVersion) -> *mut JSScript; +pub fn JS_CompileScriptForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, bytes: *const c_char, length: size_t, filename: *const c_char, lineno: c_uint, version: JSVersion) -> *mut JSScript; -pub fn JS_CompileUCScript(cx: *mut JSContext, obj: *mut JSObject, chars: *jschar, length: size_t, filename: *c_char, lineno: c_uint) -> *mut JSScript; +pub fn JS_CompileUCScript(cx: *mut JSContext, obj: *mut JSObject, chars: *const jschar, length: size_t, filename: *const c_char, lineno: c_uint) -> *mut JSScript; -pub fn JS_CompileUCScriptForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, chars: *jschar, length: size_t, filename: *c_char, lineno: c_uint) -> *mut JSScript; +pub fn JS_CompileUCScriptForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, chars: *const jschar, length: size_t, filename: *const c_char, lineno: c_uint) -> *mut JSScript; -pub fn JS_CompileUCScriptForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, chars: *jschar, length: size_t, filename: *c_char, lineno: c_uint, version: JSVersion) -> *mut JSScript; +pub fn JS_CompileUCScriptForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, chars: *const jschar, length: size_t, filename: *const c_char, lineno: c_uint, version: JSVersion) -> *mut JSScript; -pub fn JS_CompileUCScriptForPrincipalsVersionOrigin(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, originPrincipals: *mut JSPrincipals, chars: *jschar, length: size_t, filename: *c_char, lineno: c_uint, version: JSVersion) -> *mut JSScript; +pub fn JS_CompileUCScriptForPrincipalsVersionOrigin(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, originPrincipals: *mut JSPrincipals, chars: *const jschar, length: size_t, filename: *const c_char, lineno: c_uint, version: JSVersion) -> *mut JSScript; -pub fn JS_CompileUTF8File(cx: *mut JSContext, obj: *mut JSObject, filename: *c_char) -> *mut JSScript; +pub fn JS_CompileUTF8File(cx: *mut JSContext, obj: *mut JSObject, filename: *const c_char) -> *mut JSScript; -pub fn JS_CompileUTF8FileHandle(cx: *mut JSContext, obj: *mut JSObject, filename: *c_char, fh: *mut FILE) -> *mut JSScript; +pub fn JS_CompileUTF8FileHandle(cx: *mut JSContext, obj: *mut JSObject, filename: *const c_char, fh: *mut FILE) -> *mut JSScript; -pub fn JS_CompileUTF8FileHandleForPrincipals(cx: *mut JSContext, obj: *mut JSObject, filename: *c_char, fh: *mut FILE, principals: *mut JSPrincipals) -> *mut JSScript; +pub fn JS_CompileUTF8FileHandleForPrincipals(cx: *mut JSContext, obj: *mut JSObject, filename: *const c_char, fh: *mut FILE, principals: *mut JSPrincipals) -> *mut JSScript; -pub fn JS_CompileUTF8FileHandleForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, filename: *c_char, fh: *mut FILE, principals: *mut JSPrincipals, version: JSVersion) -> *mut JSScript; +pub fn JS_CompileUTF8FileHandleForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, filename: *const c_char, fh: *mut FILE, principals: *mut JSPrincipals, version: JSVersion) -> *mut JSScript; pub fn JS_GetGlobalFromScript(script: *mut JSScript) -> *mut JSObject; -pub fn JS_CompileFunction(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, nargs: c_uint, argnames: *mut *c_char, bytes: *c_char, length: size_t, filename: *c_char, lineno: c_uint) -> *mut JSFunction; +pub fn JS_CompileFunction(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, nargs: c_uint, argnames: *mut *const c_char, bytes: *const c_char, length: size_t, filename: *const c_char, lineno: c_uint) -> *mut JSFunction; -pub fn JS_CompileFunctionForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, name: *c_char, nargs: c_uint, argnames: *mut *c_char, bytes: *c_char, length: size_t, filename: *c_char, lineno: c_uint) -> *mut JSFunction; +pub fn JS_CompileFunctionForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, name: *const c_char, nargs: c_uint, argnames: *mut *const c_char, bytes: *const c_char, length: size_t, filename: *const c_char, lineno: c_uint) -> *mut JSFunction; -pub fn JS_CompileUCFunction(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, nargs: c_uint, argnames: *mut *c_char, chars: *jschar, length: size_t, filename: *c_char, lineno: c_uint) -> *mut JSFunction; +pub fn JS_CompileUCFunction(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, nargs: c_uint, argnames: *mut *const c_char, chars: *const jschar, length: size_t, filename: *const c_char, lineno: c_uint) -> *mut JSFunction; -pub fn JS_CompileUCFunctionForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, name: *c_char, nargs: c_uint, argnames: *mut *c_char, chars: *jschar, length: size_t, filename: *c_char, lineno: c_uint) -> *mut JSFunction; +pub fn JS_CompileUCFunctionForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, name: *const c_char, nargs: c_uint, argnames: *mut *const c_char, chars: *const jschar, length: size_t, filename: *const c_char, lineno: c_uint) -> *mut JSFunction; -pub fn JS_CompileUCFunctionForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, name: *c_char, nargs: c_uint, argnames: *mut *c_char, chars: *jschar, length: size_t, filename: *c_char, lineno: c_uint, version: JSVersion) -> *mut JSFunction; +pub fn JS_CompileUCFunctionForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, name: *const c_char, nargs: c_uint, argnames: *mut *const c_char, chars: *const jschar, length: size_t, filename: *const c_char, lineno: c_uint, version: JSVersion) -> *mut JSFunction; -pub fn JS_DecompileScript(cx: *mut JSContext, script: *mut JSScript, name: *c_char, indent: c_uint) -> *mut JSString; +pub fn JS_DecompileScript(cx: *mut JSContext, script: *mut JSScript, name: *const c_char, indent: c_uint) -> *mut JSString; pub fn JS_DecompileFunction(cx: *mut JSContext, fun: *mut JSFunction, indent: c_uint) -> *mut JSString; @@ -1024,23 +1024,23 @@ pub fn JS_ExecuteScript(cx: *mut JSContext, obj: *mut JSObject, script: *mut JSS pub fn JS_ExecuteScriptVersion(cx: *mut JSContext, obj: *mut JSObject, script: *mut JSScript, rval: *mut JSVal, version: JSVersion) -> JSBool; -pub fn JS_EvaluateScript(cx: *mut JSContext, obj: *mut JSObject, bytes: *c_char, length: c_uint, filename: *c_char, lineno: c_uint, rval: *mut JSVal) -> JSBool; +pub fn JS_EvaluateScript(cx: *mut JSContext, obj: *mut JSObject, bytes: *const c_char, length: c_uint, filename: *const c_char, lineno: c_uint, rval: *mut JSVal) -> JSBool; -pub fn JS_EvaluateScriptForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, bytes: *c_char, length: c_uint, filename: *c_char, lineno: c_uint, rval: *mut JSVal) -> JSBool; +pub fn JS_EvaluateScriptForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, bytes: *const c_char, length: c_uint, filename: *const c_char, lineno: c_uint, rval: *mut JSVal) -> JSBool; -pub fn JS_EvaluateScriptForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, bytes: *c_char, length: c_uint, filename: *c_char, lineno: c_uint, rval: *mut JSVal, version: JSVersion) -> JSBool; +pub fn JS_EvaluateScriptForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, bytes: *const c_char, length: c_uint, filename: *const c_char, lineno: c_uint, rval: *mut JSVal, version: JSVersion) -> JSBool; -pub fn JS_EvaluateUCScript(cx: *mut JSContext, obj: *mut JSObject, chars: *jschar, length: c_uint, filename: *c_char, lineno: c_uint, rval: *mut JSVal) -> JSBool; +pub fn JS_EvaluateUCScript(cx: *mut JSContext, obj: *mut JSObject, chars: *const jschar, length: c_uint, filename: *const c_char, lineno: c_uint, rval: *mut JSVal) -> JSBool; -pub fn JS_EvaluateUCScriptForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, chars: *jschar, length: c_uint, filename: *c_char, lineno: c_uint, rval: *mut JSVal) -> JSBool; +pub fn JS_EvaluateUCScriptForPrincipals(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, chars: *const jschar, length: c_uint, filename: *const c_char, lineno: c_uint, rval: *mut JSVal) -> JSBool; -pub fn JS_EvaluateUCScriptForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, chars: *jschar, length: c_uint, filename: *c_char, lineno: c_uint, rval: *mut JSVal, version: JSVersion) -> JSBool; +pub fn JS_EvaluateUCScriptForPrincipalsVersion(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, chars: *const jschar, length: c_uint, filename: *const c_char, lineno: c_uint, rval: *mut JSVal, version: JSVersion) -> JSBool; -pub fn JS_EvaluateUCScriptForPrincipalsVersionOrigin(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, originPrincipals: *mut JSPrincipals, chars: *jschar, length: c_uint, filename: *c_char, lineno: c_uint, rval: *mut JSVal, version: JSVersion) -> JSBool; +pub fn JS_EvaluateUCScriptForPrincipalsVersionOrigin(cx: *mut JSContext, obj: *mut JSObject, principals: *mut JSPrincipals, originPrincipals: *mut JSPrincipals, chars: *const jschar, length: c_uint, filename: *const c_char, lineno: c_uint, rval: *mut JSVal, version: JSVersion) -> JSBool; pub fn JS_CallFunction(cx: *mut JSContext, obj: *mut JSObject, fun: *mut JSFunction, argc: c_uint, argv: *mut JSVal, rval: *mut JSVal) -> JSBool; -pub fn JS_CallFunctionName(cx: *mut JSContext, obj: *mut JSObject, name: *c_char, argc: c_uint, argv: *mut JSVal, rval: *mut JSVal) -> JSBool; +pub fn JS_CallFunctionName(cx: *mut JSContext, obj: *mut JSObject, name: *const c_char, argc: c_uint, argv: *mut JSVal, rval: *mut JSVal) -> JSBool; pub fn JS_CallFunctionValue(cx: *mut JSContext, obj: *mut JSObject, fval: JSVal, argc: c_uint, argv: *mut JSVal, rval: *mut JSVal) -> JSBool; @@ -1056,29 +1056,29 @@ pub fn JS_SaveFrameChain(cx: *mut JSContext) -> JSBool; pub fn JS_RestoreFrameChain(cx: *mut JSContext); -pub fn JS_NewStringCopyN(cx: *mut JSContext, s: *c_char, n: size_t) -> *mut JSString; +pub fn JS_NewStringCopyN(cx: *mut JSContext, s: *const c_char, n: size_t) -> *mut JSString; -pub fn JS_NewStringCopyZ(cx: *mut JSContext, s: *c_char) -> *mut JSString; +pub fn JS_NewStringCopyZ(cx: *mut JSContext, s: *const c_char) -> *mut JSString; pub fn JS_InternJSString(cx: *mut JSContext, str: *mut JSString) -> *mut JSString; -pub fn JS_InternStringN(cx: *mut JSContext, s: *c_char, length: size_t) -> *mut JSString; +pub fn JS_InternStringN(cx: *mut JSContext, s: *const c_char, length: size_t) -> *mut JSString; -pub fn JS_InternString(cx: *mut JSContext, s: *c_char) -> *mut JSString; +pub fn JS_InternString(cx: *mut JSContext, s: *const c_char) -> *mut JSString; pub fn JS_NewUCString(cx: *mut JSContext, chars: *mut jschar, length: size_t) -> *mut JSString; -pub fn JS_NewUCStringCopyN(cx: *mut JSContext, s: *jschar, n: size_t) -> *mut JSString; +pub fn JS_NewUCStringCopyN(cx: *mut JSContext, s: *const jschar, n: size_t) -> *mut JSString; -pub fn JS_NewUCStringCopyZ(cx: *mut JSContext, s: *jschar) -> *mut JSString; +pub fn JS_NewUCStringCopyZ(cx: *mut JSContext, s: *const jschar) -> *mut JSString; -pub fn JS_InternUCStringN(cx: *mut JSContext, s: *jschar, length: size_t) -> *mut JSString; +pub fn JS_InternUCStringN(cx: *mut JSContext, s: *const jschar, length: size_t) -> *mut JSString; -pub fn JS_InternUCString(cx: *mut JSContext, s: *jschar) -> *mut JSString; +pub fn JS_InternUCString(cx: *mut JSContext, s: *const jschar) -> *mut JSString; pub fn JS_CompareStrings(cx: *mut JSContext, str1: *mut JSString, str2: *mut JSString, result: *mut int32_t) -> JSBool; -pub fn JS_StringEqualsAscii(cx: *mut JSContext, str: *mut JSString, asciiBytes: *c_char, _match: *mut JSBool) -> JSBool; +pub fn JS_StringEqualsAscii(cx: *mut JSContext, str: *mut JSString, asciiBytes: *const c_char, _match: *mut JSBool) -> JSBool; pub fn JS_PutEscapedString(cx: *mut JSContext, buffer: *mut c_char, size: size_t, str: *mut JSString, quote: c_char) -> size_t; @@ -1086,21 +1086,21 @@ pub fn JS_FileEscapedString(fp: *mut FILE, str: *mut JSString, quote: c_char) -> pub fn JS_GetStringLength(str: *mut JSString) -> size_t; -pub fn JS_GetStringCharsAndLength(cx: *mut JSContext, str: *mut JSString, length: *mut size_t) -> *jschar; +pub fn JS_GetStringCharsAndLength(cx: *mut JSContext, str: *mut JSString, length: *mut size_t) -> *const jschar; -pub fn JS_GetInternedStringChars(str: *mut JSString) -> *jschar; +pub fn JS_GetInternedStringChars(str: *mut JSString) -> *const jschar; -pub fn JS_GetInternedStringCharsAndLength(str: *mut JSString, length: *mut size_t) -> *jschar; +pub fn JS_GetInternedStringCharsAndLength(str: *mut JSString, length: *mut size_t) -> *const jschar; -pub fn JS_GetStringCharsZ(cx: *mut JSContext, str: *mut JSString) -> *jschar; +pub fn JS_GetStringCharsZ(cx: *mut JSContext, str: *mut JSString) -> *const jschar; -pub fn JS_GetStringCharsZAndLength(cx: *mut JSContext, str: *mut JSString, length: *mut size_t) -> *jschar; +pub fn JS_GetStringCharsZAndLength(cx: *mut JSContext, str: *mut JSString, length: *mut size_t) -> *const jschar; pub fn JS_FlattenString(cx: *mut JSContext, str: *mut JSString) -> *mut JSFlatString; -pub fn JS_GetFlatStringChars(str: *mut JSFlatString) -> *jschar; +pub fn JS_GetFlatStringChars(str: *mut JSFlatString) -> *const jschar; -pub fn JS_FlatStringEqualsAscii(str: *mut JSFlatString, asciiBytes: *c_char) -> JSBool; +pub fn JS_FlatStringEqualsAscii(str: *mut JSFlatString, asciiBytes: *const c_char) -> JSBool; pub fn JS_PutEscapedFlatString(buffer: *mut c_char, size: size_t, str: *mut JSFlatString, quote: c_char) -> size_t; @@ -1110,7 +1110,7 @@ pub fn JS_NewDependentString(cx: *mut JSContext, str: *mut JSString, start: size pub fn JS_ConcatStrings(cx: *mut JSContext, left: *mut JSString, right: *mut JSString) -> *mut JSString; -pub fn JS_UndependString(cx: *mut JSContext, str: *mut JSString) -> *jschar; +pub fn JS_UndependString(cx: *mut JSContext, str: *mut JSString) -> *const jschar; pub fn JS_MakeStringImmutable(cx: *mut JSContext, str: *mut JSString) -> JSBool; @@ -1118,11 +1118,11 @@ pub fn JS_CStringsAreUTF8() -> JSBool; pub fn JS_SetCStringsAreUTF8(); -pub fn JS_EncodeCharacters(cx: *mut JSContext, src: *jschar, srclen: size_t, dst: *mut c_char, dstlenp: *mut size_t) -> JSBool; +pub fn JS_EncodeCharacters(cx: *mut JSContext, src: *const jschar, srclen: size_t, dst: *mut c_char, dstlenp: *mut size_t) -> JSBool; -pub fn JS_DecodeBytes(cx: *mut JSContext, src: *c_char, srclen: size_t, dst: *mut jschar, dstlenp: *mut size_t) -> JSBool; +pub fn JS_DecodeBytes(cx: *mut JSContext, src: *const c_char, srclen: size_t, dst: *mut jschar, dstlenp: *mut size_t) -> JSBool; -pub fn JS_DecodeUTF8(cx: *mut JSContext, src: *c_char, srclen: size_t, dst: *mut jschar, dstlenp: *mut size_t) -> JSBool; +pub fn JS_DecodeUTF8(cx: *mut JSContext, src: *const c_char, srclen: size_t, dst: *mut jschar, dstlenp: *mut size_t) -> JSBool; pub fn JS_EncodeString(cx: *mut JSContext, str: *mut JSString) -> *mut c_char; @@ -1132,17 +1132,17 @@ pub fn JS_EncodeStringToBuffer(str: *mut JSString, buffer: *mut c_char, length: pub fn JS_Stringify(cx: *mut JSContext, vp: *mut JSVal, replacer: *mut JSObject, space: JSVal, callback: JSONWriteCallback, data: *mut c_void) -> JSBool; -pub fn JS_ParseJSON(cx: *mut JSContext, chars: *jschar, len: uint32_t, vp: *mut JSVal) -> JSBool; +pub fn JS_ParseJSON(cx: *mut JSContext, chars: *const jschar, len: uint32_t, vp: *mut JSVal) -> JSBool; -pub fn JS_ParseJSONWithReviver(cx: *mut JSContext, chars: *jschar, len: uint32_t, reviver: JSVal, vp: *mut JSVal) -> JSBool; +pub fn JS_ParseJSONWithReviver(cx: *mut JSContext, chars: *const jschar, len: uint32_t, reviver: JSVal, vp: *mut JSVal) -> JSBool; -pub fn JS_ReadStructuredClone(cx: *mut JSContext, data: *uint64_t, nbytes: size_t, version: uint32_t, vp: *mut JSVal, optionalCallbacks: *JSStructuredCloneCallbacks, closure: *mut c_void) -> JSBool; +pub fn JS_ReadStructuredClone(cx: *mut JSContext, data: *const uint64_t, nbytes: size_t, version: uint32_t, vp: *mut JSVal, optionalCallbacks: *const JSStructuredCloneCallbacks, closure: *mut c_void) -> JSBool; -pub fn JS_WriteStructuredClone(cx: *mut JSContext, v: JSVal, datap: *mut *mut uint64_t, nbytesp: *mut size_t, optionalCallbacks: *JSStructuredCloneCallbacks, closure: *mut c_void) -> JSBool; +pub fn JS_WriteStructuredClone(cx: *mut JSContext, v: JSVal, datap: *mut *mut uint64_t, nbytesp: *mut size_t, optionalCallbacks: *const JSStructuredCloneCallbacks, closure: *mut c_void) -> JSBool; -pub fn JS_StructuredClone(cx: *mut JSContext, v: JSVal, vp: *mut JSVal, optionalCallbacks: *JSStructuredCloneCallbacks, closure: *mut c_void) -> JSBool; +pub fn JS_StructuredClone(cx: *mut JSContext, v: JSVal, vp: *mut JSVal, optionalCallbacks: *const JSStructuredCloneCallbacks, closure: *mut c_void) -> JSBool; -pub fn JS_SetStructuredCloneCallbacks(rt: *mut JSRuntime, callbacks: *JSStructuredCloneCallbacks); +pub fn JS_SetStructuredCloneCallbacks(rt: *mut JSRuntime, callbacks: *const JSStructuredCloneCallbacks); pub fn JS_ReadUint32Pair(r: *mut JSStructuredCloneReader, p1: *mut uint32_t, p2: *mut uint32_t) -> JSBool; @@ -1152,7 +1152,7 @@ pub fn JS_ReadTypedArray(r: *mut JSStructuredCloneReader, vp: *mut JSVal) -> JSB pub fn JS_WriteUint32Pair(w: *mut JSStructuredCloneWriter, tag: uint32_t, data: uint32_t) -> JSBool; -pub fn JS_WriteBytes(w: *mut JSStructuredCloneWriter, p: *c_void, len: size_t) -> JSBool; +pub fn JS_WriteBytes(w: *mut JSStructuredCloneWriter, p: *const c_void, len: size_t) -> JSBool; pub fn JS_WriteTypedArray(w: *mut JSStructuredCloneWriter, v: JSVal) -> JSBool; @@ -1160,13 +1160,13 @@ pub fn JS_SetLocaleCallbacks(cx: *mut JSContext, callbacks: *mut JSLocaleCallbac pub fn JS_GetLocaleCallbacks(cx: *mut JSContext) -> *mut JSLocaleCallbacks; -pub fn JS_ReportError(cx: *mut JSContext, format: *c_char, ...); +pub fn JS_ReportError(cx: *mut JSContext, format: *const c_char, ...); pub fn JS_ReportErrorNumber(cx: *mut JSContext, errorCallback: JSErrorCallback, userRef: *mut c_void, errorNumber: c_uint, ...); pub fn JS_ReportErrorNumberUC(cx: *mut JSContext, errorCallback: JSErrorCallback, userRef: *mut c_void, errorNumber: c_uint, ...); -pub fn JS_ReportWarning(cx: *mut JSContext, format: *c_char, ...) -> JSBool; +pub fn JS_ReportWarning(cx: *mut JSContext, format: *const c_char, ...) -> JSBool; pub fn JS_ReportErrorFlagsAndNumber(cx: *mut JSContext, flags: c_uint, errorCallback: JSErrorCallback, userRef: *mut c_void, errorNumber: c_uint, ...) -> JSBool; @@ -1228,7 +1228,7 @@ pub fn JS_DropExceptionState(cx: *mut JSContext, state: *mut JSExceptionState); pub fn JS_ErrorFromException(cx: *mut JSContext, v: JSVal) -> *mut JSErrorReport; -pub fn JS_ThrowReportedError(cx: *mut JSContext, message: *c_char, reportp: *mut JSErrorReport) -> JSBool; +pub fn JS_ThrowReportedError(cx: *mut JSContext, message: *const c_char, reportp: *mut JSErrorReport) -> JSBool; pub fn JS_ThrowStopIteration(cx: *mut JSContext) -> JSBool; @@ -1242,7 +1242,7 @@ pub fn JS_SetRuntimeThread(rt: *mut JSRuntime); pub fn JS_SetNativeStackBounds(rt: *mut JSRuntime, minValue: uintptr_t, maxValue: uintptr_t); -pub fn JS_NewObjectForConstructor(cx: *mut JSContext, clasp: *JSClass, vp: *JSVal) -> *mut JSObject; +pub fn JS_NewObjectForConstructor(cx: *mut JSContext, clasp: *mut JSClass, vp: *const JSVal) -> *mut JSObject; pub fn JS_IndexToId(cx: *mut JSContext, index: uint32_t, id: *mut jsid) -> JSBool; @@ -1254,7 +1254,7 @@ pub fn JS_EncodeScript(cx: *mut JSContext, script: *mut JSScript, lengthp: *mut pub fn JS_EncodeInterpretedFunction(cx: *mut JSContext, funobj: JSRawObject, lengthp: *mut uint32_t) -> *mut c_void; -pub fn JS_DecodeScript(cx: *mut JSContext, data: *c_void, length: uint32_t, principals: *mut JSPrincipals, originPrincipals: *mut JSPrincipals) -> *mut JSScript; +pub fn JS_DecodeScript(cx: *mut JSContext, data: *const c_void, length: uint32_t, principals: *mut JSPrincipals, originPrincipals: *mut JSPrincipals) -> *mut JSScript; -pub fn JS_DecodeInterpretedFunction(cx: *mut JSContext, data: *c_void, length: uint32_t, principals: *mut JSPrincipals, originPrincipals: *mut JSPrincipals) -> *mut JSObject; +pub fn JS_DecodeInterpretedFunction(cx: *mut JSContext, data: *const c_void, length: uint32_t, principals: *mut JSPrincipals, originPrincipals: *mut JSPrincipals) -> *mut JSObject; } diff --git a/jsfriendapi.rs b/jsfriendapi.rs index 39ffa792f..eeb9b9f5b 100644 --- a/jsfriendapi.rs +++ b/jsfriendapi.rs @@ -4,7 +4,7 @@ use jsapi::{JSContext, JSObject}; -pub type JSJitPropertyOp = *u8; +pub type JSJitPropertyOp = *const u8; pub struct JSJitInfo { pub op: JSJitPropertyOp, @@ -26,8 +26,8 @@ pub mod bindgen { use libc::uintptr_t; extern { - pub fn JS_NewObjectWithUniqueType(cx: *mut JSContext, clasp: *JSClass, - proto: *mut JSObject, parent: *mut JSObject) -> *mut JSObject; + pub fn JS_NewObjectWithUniqueType(cx: *mut JSContext, clasp: *const JSClass, + proto: *const JSObject, parent: *const JSObject) -> *mut JSObject; pub fn JS_GetAddressableObject(rt: *mut JSRuntime, candidateObj: uintptr_t) -> *mut JSObject; } } diff --git a/jsglue.cpp b/jsglue.cpp index 2b7a2b9f9..9ddbac800 100644 --- a/jsglue.cpp +++ b/jsglue.cpp @@ -273,12 +273,12 @@ class WrapperProxyHandler : public js::DirectWrapper class ForwardingProxyHandler : public js::BaseProxyHandler { ProxyTraps mTraps; - void* mExtra; + const void* mExtra; public: - ForwardingProxyHandler(const ProxyTraps& aTraps, void* aExtra) + ForwardingProxyHandler(const ProxyTraps& aTraps, const void* aExtra) : js::BaseProxyHandler(&HandlerFamily), mTraps(aTraps), mExtra(aExtra) {} - void* getExtra() { + const void* getExtra() { return mExtra; } @@ -499,7 +499,7 @@ RUST_FUNCTION_VALUE_TO_JITINFO(jsval v) } JSBool -CallJitPropertyOp(JSJitInfo *info, JSContext* cx, JSObject* thisObj, void *specializedThis, jsval *vp) +CallJitPropertyOp(const JSJitInfo *info, JSContext* cx, JSObject* thisObj, void *specializedThis, jsval *vp) { struct { JSObject** obj; @@ -621,7 +621,7 @@ RUST_INTERNED_STRING_TO_JSID(JSContext* cx, JSString* str) { } JSFunction* -DefineFunctionWithReserved(JSContext* cx, JSObject* obj, char* name, JSNative call, +DefineFunctionWithReserved(JSContext* cx, JSObject* obj, const char* name, JSNative call, uint32_t nargs, uint32_t attrs) { return js::DefineFunctionWithReserved(cx, obj, name, call, nargs, attrs); @@ -657,7 +657,7 @@ IsProxyHandlerFamily(JSObject* obj) return js::GetProxyHandler(obj)->family() == &HandlerFamily; } -void* +const void* GetProxyHandlerExtra(JSObject* obj) { js::BaseProxyHandler* handler = js::GetProxyHandler(obj); diff --git a/jsval.rs b/jsval.rs index aed5e064f..4ffc469c1 100644 --- a/jsval.rs +++ b/jsval.rs @@ -8,7 +8,7 @@ use libc::c_void; use std::mem; #[cfg(target_word_size = "64")] -static JSVAL_TAG_SHIFT: int = 47; +static JSVAL_TAG_SHIFT: uint = 47u; #[repr(u8)] enum ValueType { @@ -146,7 +146,7 @@ pub fn UInt32Value(ui: u32) -> JSVal { #[cfg(target_word_size = "64")] #[inline(always)] pub fn StringValue(s: &JSString) -> JSVal { - let bits = s as *JSString as uint as u64; + let bits = s as *const JSString as uint as u64; assert!((bits >> JSVAL_TAG_SHIFT) == 0); BuildJSVal(JSVAL_TAG_STRING, bits) } @@ -154,7 +154,7 @@ pub fn StringValue(s: &JSString) -> JSVal { #[cfg(target_word_size = "32")] #[inline(always)] pub fn StringValue(s: &JSString) -> JSVal { - let bits = s as *JSString as uint as u64; + let bits = s as *const JSString as uint as u64; BuildJSVal(JSVAL_TAG_STRING, bits) } @@ -166,7 +166,7 @@ pub fn BooleanValue(b: bool) -> JSVal { #[cfg(target_word_size = "64")] #[inline(always)] pub fn ObjectValue(o: &JSObject) -> JSVal { - let bits = o as *JSObject as uint as u64; + let bits = o as *const JSObject as uint as u64; assert!((bits >> JSVAL_TAG_SHIFT) == 0); BuildJSVal(JSVAL_TAG_OBJECT, bits) } @@ -174,7 +174,7 @@ pub fn ObjectValue(o: &JSObject) -> JSVal { #[cfg(target_word_size = "32")] #[inline(always)] pub fn ObjectValue(o: &JSObject) -> JSVal { - let bits = o as *JSObject as uint as u64; + let bits = o as *const JSObject as uint as u64; BuildJSVal(JSVAL_TAG_OBJECT, bits) } @@ -189,7 +189,7 @@ pub fn ObjectOrNullValue(o: *mut JSObject) -> JSVal { #[cfg(target_word_size = "64")] #[inline(always)] -pub fn PrivateValue(o: *c_void) -> JSVal { +pub fn PrivateValue(o: *const c_void) -> JSVal { let ptrBits = o as uint as u64; assert!((ptrBits & 1) == 0); JSVal { @@ -199,7 +199,7 @@ pub fn PrivateValue(o: *c_void) -> JSVal { #[cfg(target_word_size = "32")] #[inline(always)] -pub fn PrivateValue(o: *c_void) -> JSVal { +pub fn PrivateValue(o: *const c_void) -> JSVal { let ptrBits = o as uint as u64; assert!((ptrBits & 1) == 0); BuildJSVal(JSVAL_TAG_PRIVATE, ptrBits) @@ -329,16 +329,16 @@ impl JSVal { } #[cfg(target_word_size = "64")] - pub fn to_private(&self) -> *c_void { + pub fn to_private(&self) -> *const c_void { assert!(self.is_double()); assert!((self.v & 0x8000000000000000u64) == 0); - (self.v << 1) as uint as *c_void + (self.v << 1) as uint as *const c_void } #[cfg(target_word_size = "32")] - pub fn to_private(&self) -> *c_void { + pub fn to_private(&self) -> *const c_void { let ptrBits: u32 = (self.v & 0x00000000FFFFFFFF) as u32; - ptrBits as *c_void + ptrBits as *const c_void } #[cfg(target_word_size = "64")] diff --git a/linkhack.rs b/linkhack.rs index 26848b80e..307fb7a7f 100644 --- a/linkhack.rs +++ b/linkhack.rs @@ -7,14 +7,14 @@ #[cfg(target_os = "linux")] #[link(name = "pthread")] #[link(name = "nspr4")] -#[link(name = "js_static")] +#[link(name = "js_static", kind = "static")] #[link(name = "stdc++")] #[link(name = "z")] extern { } #[cfg(target_os = "macos")] #[link(name = "nspr4")] -#[link(name = "js_static")] +#[link(name = "js_static", kind = "static")] #[link(name = "stdc++")] #[link(name = "z")] extern { } diff --git a/rust.rs b/rust.rs index 34dd91756..01079c0cd 100644 --- a/rust.rs +++ b/rust.rs @@ -109,7 +109,7 @@ impl Cx { } } - pub fn set_error_reporter(&self, reportfn: unsafe extern "C" fn(*mut JSContext, *c_char, *mut JSErrorReport)) { + pub fn set_error_reporter(&self, reportfn: unsafe extern "C" fn(*mut JSContext, *const c_char, *mut JSErrorReport)) { unsafe { JS_SetErrorReporter(self.ptr, Some(reportfn)); } @@ -117,36 +117,35 @@ impl Cx { pub fn evaluate_script(&self, glob: *mut JSObject, script: String, filename: String, line_num: uint) -> Result<(),()> { - let script_utf16 = script.to_utf16(); - filename.to_c_str().with_ref(|filename_cstr| { - let mut rval: JSVal = NullValue(); - debug!("Evaluating script from {:s} with content {}", filename, script); - // SpiderMonkey does not approve of null pointers. - let (ptr, len) = if script_utf16.len() == 0 { - static empty: &'static [u16] = &[]; - (empty.as_ptr(), 0) + let script_utf16: Vec = script.as_slice().utf16_units().collect(); + let filename_cstr = filename.to_c_str(); + let mut rval: JSVal = NullValue(); + debug!("Evaluating script from {:s} with content {}", filename, script); + // SpiderMonkey does not approve of null pointers. + let (ptr, len) = if script_utf16.len() == 0 { + static empty: &'static [u16] = &[]; + (empty.as_ptr(), 0) + } else { + (script_utf16.as_ptr(), script_utf16.len() as c_uint) + }; + assert!(ptr.is_not_null()); + unsafe { + if ERR == JS_EvaluateUCScript(self.ptr, glob, ptr, len, + filename_cstr.as_ptr(), line_num as c_uint, + &mut rval) { + debug!("...err!"); + Err(()) } else { - (script_utf16.as_ptr(), script_utf16.len() as c_uint) - }; - assert!(ptr.is_not_null()); - unsafe { - if ERR == JS_EvaluateUCScript(self.ptr, glob, ptr, len, - filename_cstr, line_num as c_uint, - &mut rval) { - debug!("...err!"); - Err(()) - } else { - // we could return the script result but then we'd have - // to root it and so forth and, really, who cares? - debug!("...ok!"); - Ok(()) - } + // we could return the script result but then we'd have + // to root it and so forth and, really, who cares? + debug!("...ok!"); + Ok(()) } - }) + } } } -pub extern fn reportError(_cx: *mut JSContext, msg: *c_char, report: *mut JSErrorReport) { +pub extern fn reportError(_cx: *mut JSContext, msg: *const c_char, report: *mut JSErrorReport) { unsafe { let fnptr = (*report).filename; let fname = if fnptr.is_not_null() {from_c_str(fnptr)} else {"none".to_string()};