diff options
author | Brian Anderson <banderson@mozilla.com> | 2013-08-28 15:43:47 -0700 |
---|---|---|
committer | Brian Anderson <banderson@mozilla.com> | 2013-08-29 15:36:36 -0700 |
commit | 1026556477ea428a8cdd4bee065a74b0b950b472 (patch) | |
tree | 32f515c1d2cecc5d32146e3c453c43544aa54cce /src/components/script/dom/bindings/codegen/CodegenRust.py | |
parent | 79956abb384177fb5035e5d1f00f1ac152e081e5 (diff) | |
download | servo-1026556477ea428a8cdd4bee065a74b0b950b472.tar.gz servo-1026556477ea428a8cdd4bee065a74b0b950b472.zip |
Update Rust
Diffstat (limited to 'src/components/script/dom/bindings/codegen/CodegenRust.py')
-rw-r--r-- | src/components/script/dom/bindings/codegen/CodegenRust.py | 63 |
1 files changed, 34 insertions, 29 deletions
diff --git a/src/components/script/dom/bindings/codegen/CodegenRust.py b/src/components/script/dom/bindings/codegen/CodegenRust.py index c9dc5d28aee..5aae8dcec5a 100644 --- a/src/components/script/dom/bindings/codegen/CodegenRust.py +++ b/src/components/script/dom/bindings/codegen/CodegenRust.py @@ -1947,8 +1947,8 @@ class MethodDefiner(PropertyDefiner): decls = ''.join([stringDecl(m) for m in array]) return decls + self.generatePrefableArray( array, name, - ' JSFunctionSpec {name: &%s_name as *u8 as *libc::c_char, call: JSNativeWrapper {op: %s, info: %s}, nargs: %s, flags: %s as u16, selfHostedName: 0 as *libc::c_char }', - ' JSFunctionSpec {name: 0 as *libc::c_char, call: JSNativeWrapper {op: 0 as *u8, info: 0 as *JSJitInfo}, nargs: 0, flags: 0, selfHostedName: 0 as *libc::c_char }', + ' JSFunctionSpec {name: &%s_name as *u8 as *libc::c_char, call: JSNativeWrapper {op: Some(%s), info: %s}, nargs: %s, flags: %s as u16, selfHostedName: 0 as *libc::c_char }', + ' JSFunctionSpec {name: 0 as *libc::c_char, call: JSNativeWrapper {op: None, info: 0 as *JSJitInfo}, nargs: 0, flags: 0, selfHostedName: 0 as *libc::c_char }', 'JSFunctionSpec', pref, specData, doIdArrays) @@ -1969,16 +1969,16 @@ class AttrDefiner(PropertyDefiner): def getter(attr): native = ("genericLenientGetter" if attr.hasLenientThis() else "genericGetter") - return ("JSPropertyOpWrapper {op: %(native)s, info: &%(name)s_getterinfo as *JSJitInfo}" + return ("JSPropertyOpWrapper {op: Some(%(native)s), info: &%(name)s_getterinfo as *JSJitInfo}" % {"name" : attr.identifier.name, "native" : native}) def setter(attr): if attr.readonly: - return "JSStrictPropertyOpWrapper {op: 0 as *u8, info: 0 as *JSJitInfo}" + return "JSStrictPropertyOpWrapper {op: None, info: 0 as *JSJitInfo}" native = ("genericLenientSetter" if attr.hasLenientThis() else "genericSetter") - return ("JSStrictPropertyOpWrapper {op: %(native)s, info: &%(name)s_setterinfo as *JSJitInfo}" + return ("JSStrictPropertyOpWrapper {op: Some(%(native)s), info: &%(name)s_setterinfo as *JSJitInfo}" % {"name" : attr.identifier.name, "native" : native}) @@ -1996,7 +1996,7 @@ class AttrDefiner(PropertyDefiner): return decls + self.generatePrefableArray( array, name, ' JSPropertySpec { name: &%s_name as *u8 as *libc::c_char, tinyid: 0, flags: ((%s) & 0xFF) as u8, getter: %s, setter: %s }', - ' JSPropertySpec { name: 0 as *libc::c_char, tinyid: 0, flags: 0, getter: JSPropertyOpWrapper {op: 0 as *u8, info: 0 as *JSJitInfo}, setter: JSStrictPropertyOpWrapper {op: 0 as *u8, info: 0 as *JSJitInfo} }', + ' JSPropertySpec { name: 0 as *libc::c_char, tinyid: 0, flags: 0, getter: JSPropertyOpWrapper {op: None, info: 0 as *JSJitInfo}, setter: JSStrictPropertyOpWrapper {op: None, info: 0 as *JSJitInfo} }', 'JSPropertySpec', PropertyDefiner.getControllingPref, specData, doIdArrays) @@ -2201,7 +2201,7 @@ class CGDOMJSClass(CGThing): #return "extern DOMJSClass Class;\n" return "" def define(self): - traceHook = TRACE_HOOK_NAME if self.descriptor.customTrace else '0 as *u8' + traceHook = "Some(%s)" % TRACE_HOOK_NAME if self.descriptor.customTrace else 'None' return """ static Class_name: [u8, ..%i] = %s; static Class: DOMJSClass = DOMJSClass { @@ -2214,11 +2214,11 @@ static Class: DOMJSClass = DOMJSClass { enumerate: crust::JS_EnumerateStub, resolve: crust::JS_ResolveStub, convert: crust::JS_ConvertStub, - finalize: %s, /* finalize */ - checkAccess: 0 as *u8, /* checkAccess */ - call: 0 as *u8, /* call */ - hasInstance: 0 as *u8, /* hasInstance */ - construct: 0 as *u8, /* construct */ + finalize: Some(%s), /* finalize */ + checkAccess: None, /* checkAccess */ + call: None, /* call */ + hasInstance: None, /* hasInstance */ + construct: None, /* construct */ trace: %s, /* trace */ reserved: (0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 05 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 10 @@ -2261,12 +2261,12 @@ static PrototypeClass: JSClass = JSClass { enumerate: crust::JS_EnumerateStub, resolve: crust::JS_ResolveStub, convert: crust::JS_ConvertStub, - finalize: 0 as *u8, /* finalize */ - checkAccess: 0 as *u8, /* checkAccess */ - call: 0 as *u8, /* call */ - hasInstance: 0 as *u8, /* hasInstance */ - construct: 0 as *u8, /* construct */ - trace: 0 as *u8, /* trace */ + finalize: None, /* finalize */ + checkAccess: None, /* checkAccess */ + call: None, /* call */ + hasInstance: None, /* hasInstance */ + construct: None, /* construct */ + trace: None, /* trace */ reserved: (0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 05 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 10 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, 0 as *libc::c_void, // 15 @@ -2402,12 +2402,16 @@ class CGAbstractMethod(CGThing): def _decorators(self): decorators = [] if self.alwaysInline: - decorators.append('#[inline(always)]') + # FIXME Rust #8801 #[inline(always)] and #[fixed_stack_segment] not compatible + # decorators.append('#[inline(always)]') + pass elif self.inline: #decorators.append('inline') pass if self.extern: decorators.append('extern') + if not self.extern: + decorators.append('#[fixed_stack_segment]') if self.static: #decorators.append('static') pass @@ -2696,7 +2700,7 @@ class CGCreateInterfaceObjectsMethod(CGAbstractMethod): %s);""" % ( "&PrototypeClass" if needInterfacePrototypeObject else "ptr::null()", "&InterfaceObjectClass" if needInterfaceObjectClass else "ptr::null()", - constructHook if needConstructor else "ptr::null()", + "Some(%s)" % constructHook if needConstructor else "None", constructArgs, domClass, arrayPtr("methods"), arrayPtr("attrs"), @@ -3171,13 +3175,13 @@ class CGGenericMethod(CGAbstractBindingMethod): """ def __init__(self, descriptor): args = [Argument('*JSContext', 'cx'), Argument('libc::c_uint', 'argc'), - Argument('*JSVal', 'vp')] + Argument('*mut JSVal', 'vp')] CGAbstractBindingMethod.__init__(self, descriptor, 'genericMethod', args) def generate_code(self): return CGIndenter(CGGeneric( - "let _info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, vp));\n" - "return CallJitMethodOp(_info, cx, obj, this as *libc::c_void, argc, vp);")) + "let _info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, &*vp));\n" + "return CallJitMethodOp(_info, cx, obj, this as *libc::c_void, argc, &*vp);")) class CGAbstractStaticMethod(CGAbstractMethod): """ @@ -3224,8 +3228,8 @@ class CGGenericGetter(CGAbstractBindingMethod): A class for generating the C++ code for an IDL attribute getter. """ def __init__(self, descriptor, lenientThis=False): - args = [Argument('*JSContext', 'cx'), Argument('uint', 'argc'), - Argument('*JSVal', 'vp')] + args = [Argument('*JSContext', 'cx'), Argument('libc::c_uint', 'argc'), + Argument('*mut JSVal', 'vp')] if lenientThis: name = "genericLenientGetter" unwrapFailureCode = ( @@ -3240,8 +3244,8 @@ class CGGenericGetter(CGAbstractBindingMethod): def generate_code(self): return CGIndenter(CGGeneric( - "let info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, vp));\n" - "return CallJitPropertyOp(info, cx, obj, this as *libc::c_void, vp);")) + "let info: *JSJitInfo = RUST_FUNCTION_VALUE_TO_JITINFO(JS_CALLEE(cx, &*vp));\n" + "return CallJitPropertyOp(info, cx, obj, this as *libc::c_void, &*vp);")) class CGSpecializedGetter(CGAbstractExternMethod): """ @@ -3279,7 +3283,7 @@ class CGGenericSetter(CGAbstractBindingMethod): A class for generating the Rust code for an IDL attribute setter. """ def __init__(self, descriptor, lenientThis=False): - args = [Argument('*JSContext', 'cx'), Argument('uint', 'argc'), + args = [Argument('*JSContext', 'cx'), Argument('libc::c_uint', 'argc'), Argument('*mut JSVal', 'vp')] if lenientThis: name = "genericLenientSetter" @@ -3357,7 +3361,7 @@ class CGMemberJITInfo(CGThing): failstr = "true" if infallible else "false" return ("\n" "static %s: JSJitInfo = JSJitInfo {\n" - " op: %s,\n" + " op: %s as *u8,\n" " protoID: %s,\n" " depth: %s,\n" " isInfallible: %s, /* False in setters. */\n" @@ -4388,6 +4392,7 @@ class CGDictionary(CGThing): " return true;\n" " }\n" "\n" if not self.workers else "") + + " #[fixed_stack_segment]\n" + " pub fn Init(&mut self, cx: *JSContext, val: JSVal) -> JSBool {\n" " unsafe {\n" + # NOTE: jsids are per-runtime, so don't use them in workers |