зеркало из 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))
|
fill("UnionMember<${structType} > m${name}", **vars))
|
||||||
enumValues.append("e" + vars["name"])
|
enumValues.append("e" + vars["name"])
|
||||||
|
|
||||||
toJSValCases.append(
|
skipToJSVal = False
|
||||||
CGCase("e" + vars["name"],
|
try:
|
||||||
self.getConversionToJS(vars, t)))
|
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(
|
destructorCases.append(
|
||||||
CGCase("e" + vars["name"],
|
CGCase("e" + vars["name"],
|
||||||
CGGeneric("Destroy%s();\n" % vars["name"])))
|
CGGeneric("Destroy%s();\n" % vars["name"])))
|
||||||
|
@ -8226,18 +8233,19 @@ class CGUnionStruct(CGThing):
|
||||||
bodyInHeader=not self.ownsMembers,
|
bodyInHeader=not self.ownsMembers,
|
||||||
inline=not self.ownsMembers))
|
inline=not self.ownsMembers))
|
||||||
|
|
||||||
methods.append(
|
if not skipToJSVal:
|
||||||
ClassMethod(
|
methods.append(
|
||||||
"ToJSVal",
|
ClassMethod(
|
||||||
"bool",
|
"ToJSVal",
|
||||||
[
|
"bool",
|
||||||
Argument("JSContext*", "cx"),
|
[
|
||||||
Argument("JS::Handle<JSObject*>", "scopeObj"),
|
Argument("JSContext*", "cx"),
|
||||||
Argument("JS::MutableHandle<JS::Value>", "rval")
|
Argument("JS::Handle<JSObject*>", "scopeObj"),
|
||||||
],
|
Argument("JS::MutableHandle<JS::Value>", "rval")
|
||||||
body=CGSwitch("mType", toJSValCases,
|
],
|
||||||
default=CGGeneric("return false;\n")).define(),
|
body=CGSwitch("mType", toJSValCases,
|
||||||
const=True))
|
default=CGGeneric("return false;\n")).define(),
|
||||||
|
const=True))
|
||||||
|
|
||||||
constructors = [ctor]
|
constructors = [ctor]
|
||||||
selfName = CGUnionStruct.unionTypeName(self.type, self.ownsMembers)
|
selfName = CGUnionStruct.unionTypeName(self.type, self.ownsMembers)
|
||||||
|
|
Загрузка…
Ссылка в новой задаче