зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1021670 - Enable using non-wrapper-cached objects in unions; r=bzbarsky
--HG-- extra : rebase_source : 43353aa015a793d2eb6bed507213ceda2065d99e
This commit is contained in:
Родитель
fde35aa8b8
Коммит
02cf081e67
|
@ -8190,9 +8190,16 @@ class CGUnionStruct(CGThing):
|
|||
fill("UnionMember<${structType} > m${name}", **vars))
|
||||
enumValues.append("e" + vars["name"])
|
||||
|
||||
toJSValCases.append(
|
||||
CGCase("e" + vars["name"],
|
||||
self.getConversionToJS(vars, t)))
|
||||
skipToJSVal = False
|
||||
try:
|
||||
toJSValCases.append(
|
||||
CGCase("e" + vars["name"],
|
||||
self.getConversionToJS(vars, t)))
|
||||
except MethodNotNewObjectError:
|
||||
# If we can't have a ToJSVal() because one of our members can
|
||||
# only be returned from [NewObject] methods, then just skip
|
||||
# generating ToJSVal.
|
||||
skipToJSVal = True
|
||||
destructorCases.append(
|
||||
CGCase("e" + vars["name"],
|
||||
CGGeneric("Destroy%s();\n" % vars["name"])))
|
||||
|
@ -8226,18 +8233,19 @@ class CGUnionStruct(CGThing):
|
|||
bodyInHeader=not self.ownsMembers,
|
||||
inline=not self.ownsMembers))
|
||||
|
||||
methods.append(
|
||||
ClassMethod(
|
||||
"ToJSVal",
|
||||
"bool",
|
||||
[
|
||||
Argument("JSContext*", "cx"),
|
||||
Argument("JS::Handle<JSObject*>", "scopeObj"),
|
||||
Argument("JS::MutableHandle<JS::Value>", "rval")
|
||||
],
|
||||
body=CGSwitch("mType", toJSValCases,
|
||||
default=CGGeneric("return false;\n")).define(),
|
||||
const=True))
|
||||
if not skipToJSVal:
|
||||
methods.append(
|
||||
ClassMethod(
|
||||
"ToJSVal",
|
||||
"bool",
|
||||
[
|
||||
Argument("JSContext*", "cx"),
|
||||
Argument("JS::Handle<JSObject*>", "scopeObj"),
|
||||
Argument("JS::MutableHandle<JS::Value>", "rval")
|
||||
],
|
||||
body=CGSwitch("mType", toJSValCases,
|
||||
default=CGGeneric("return false;\n")).define(),
|
||||
const=True))
|
||||
|
||||
constructors = [ctor]
|
||||
selfName = CGUnionStruct.unionTypeName(self.type, self.ownsMembers)
|
||||
|
|
Загрузка…
Ссылка в новой задаче