--- a/ipc/ipdl/ipdl/lower.py
+++ b/ipc/ipdl/ipdl/lower.py
@@ -1155,40 +1155,17 @@ class Protocol(ipdl.ast.Protocol):
def exitedCallVar(self):
assert self.decl.type.isToplevel()
return ExprVar('ExitedCall')
def onCxxStackVar(self):
assert self.decl.type.isToplevel()
return ExprVar('IsOnCxxStack')
- def nextActorIdExpr(self, side):
- assert self.decl.type.isToplevel()
- if side is 'parent': op = '++'
- elif side is 'child': op = '--'
- else: assert 0
- return ExprPrefixUnop(self.lastActorIdVar(), op)
-
- def actorIdInit(self, side):
- assert self.decl.type.isToplevel()
-
- # parents go up from FREED, children go down from NULL
- if side is 'parent': return _FREED_ACTOR_ID
- elif side is 'child': return _NULL_ACTOR_ID
- else: assert 0
-
# an actor's C++ private variables
- def lastActorIdVar(self):
- assert self.decl.type.isToplevel()
- return ExprVar('mLastRouteId')
-
- def actorMapVar(self):
- assert self.decl.type.isToplevel()
- return ExprVar('mActorMap')
-
def channelVar(self, actorThis=None):
if actorThis is not None:
return ExprSelect(actorThis, '->', 'mChannel')
return ExprVar('mChannel')
def routingId(self, actorThis=None):
if self.decl.type.isToplevel():
return ExprVar('MSG_ROUTING_CONTROL')
@@ -2925,18 +2902,16 @@ class _GenerateProtocolActorCode(ipdl.as
side = ExprVar('mozilla::ipc::' + self.side.title() + 'Side')
if ptype.isToplevel():
ctor.memberinits = [
ExprMemberInit(ExprVar('mozilla::ipc::IToplevelProtocol'),
[_protocolId(ptype), side]),
ExprMemberInit(p.channelVar(), [
ExprCall(ExprVar('ALLOW_THIS_IN_INITIALIZER_LIST'),
[ ExprVar.THIS ]) ]),
- ExprMemberInit(p.lastActorIdVar(),
- [ p.actorIdInit(self.side) ]),
ExprMemberInit(p.lastShmemIdVar(),
[ p.shmemIdInit(self.side) ]),
ExprMemberInit(p.stateVar(),
[ p.startState() ])
]
else:
ctor.memberinits = [
ExprMemberInit(ExprVar('mozilla::ipc::IProtocol'), [side]),
@@ -3334,21 +3309,16 @@ class _GenerateProtocolActorCode(ipdl.as
deallocself = MethodDefn(MethodDecl(deallocselfvar.name, virtual=1))
self.cls.addstmts([ deallocself, Whitespace.NL ])
self.implementPickling()
## private members
if ptype.isToplevel():
self.cls.addstmt(StmtDecl(Decl(p.channelType(), 'mChannel')))
- self.cls.addstmts([
- StmtDecl(Decl(Type('IDMap', T=Type('ProtocolBase')),
- p.actorMapVar().name)),
- StmtDecl(Decl(_actorIdType(), p.lastActorIdVar().name))
- ])
elif ptype.isManaged():
self.cls.addstmts([
StmtDecl(Decl(_actorIdType(), p.idVar().name))
])
if p.decl.type.isToplevel():
self.cls.addstmts([
StmtDecl(Decl(p.shmemMapType(), p.shmemMapVar().name)),
StmtDecl(Decl(_shmemIdType(), p.lastShmemIdVar().name))
@@ -3375,35 +3345,16 @@ class _GenerateProtocolActorCode(ipdl.as
sourcevar = ExprVar('aSource')
ivar = ExprVar('i')
kidsvar = ExprVar('kids')
ithkid = ExprIndex(kidsvar, ivar)
methods = []
if p.decl.type.isToplevel():
- register = MethodDefn(MethodDecl(
- p.registerMethod().name,
- params=[ Decl(protocolbase, routedvar.name) ],
- ret=_actorIdType(), virtual=1))
- registerid = MethodDefn(MethodDecl(
- p.registerIDMethod().name,
- params=[ Decl(protocolbase, routedvar.name),
- Decl(_actorIdType(), idvar.name) ],
- ret=_actorIdType(),
- virtual=1))
- lookup = MethodDefn(MethodDecl(
- p.lookupIDMethod().name,
- params=[ Decl(_actorIdType(), idvar.name) ],
- ret=protocolbase, virtual=1))
- unregister = MethodDefn(MethodDecl(
- p.unregisterMethod().name,
- params=[ Decl(_actorIdType(), idvar.name) ],
- virtual=1))
-
createshmem = MethodDefn(MethodDecl(
p.createSharedMemory().name,
ret=_rawShmemType(ptr=1),
params=[ Decl(Type.SIZE, sizevar.name),
Decl(_shmemTypeType(), typevar.name),
Decl(Type.BOOL, unsafevar.name),
Decl(_shmemIdType(ptr=1), idvar.name) ],
virtual=1))
@@ -3430,51 +3381,26 @@ class _GenerateProtocolActorCode(ipdl.as
getchannel.addstmt(StmtReturn(ExprAddrOf(p.channelVar())))
getchannelconst = MethodDefn(MethodDecl(
p.getChannelMethod().name,
ret=Type('MessageChannel', ptr=1, const=1),
virtual=1, const=1))
getchannelconst.addstmt(StmtReturn(ExprAddrOf(p.channelVar())))
- methods += [ register,
- registerid,
- lookup,
- unregister,
- createshmem,
+ methods += [ createshmem,
lookupshmem,
istracking,
destroyshmem,
getchannel,
getchannelconst ]
if p.decl.type.isToplevel():
tmpvar = ExprVar('tmp')
- register.addstmts([
- StmtDecl(Decl(_actorIdType(), tmpvar.name),
- p.nextActorIdExpr(self.side)),
- StmtExpr(ExprCall(
- ExprSelect(p.actorMapVar(), '.', 'AddWithID'),
- [ routedvar, tmpvar ])),
- StmtReturn(tmpvar)
- ])
- registerid.addstmts([
- StmtExpr(
- ExprCall(ExprSelect(p.actorMapVar(), '.', 'AddWithID'),
- [ routedvar, idvar ])),
- StmtReturn(idvar)
- ])
- lookup.addstmt(StmtReturn(
- ExprCall(ExprSelect(p.actorMapVar(), '.', 'Lookup'),
- [ idvar ])))
- unregister.addstmt(StmtReturn(
- ExprCall(ExprSelect(p.actorMapVar(), '.', 'Remove'),
- [ idvar ])))
-
# SharedMemory* CreateSharedMemory(size_t aSize, Type aType, bool aUnsafe, id_t* aId):
# RefPtr<SharedMemory> segment(Shmem::Alloc(aSize, aType, aUnsafe));
# if (!segment)
# return nullptr;
# Shmem shmem(segment.get(), [nextshmemid]);
# Message descriptor = shmem.ShareTo(subprocess, mId, descriptor);
# if (!descriptor)
# return nullptr;