mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 986317 - Stop exposing urgent semantics in IPDL files (r=bent)
This commit is contained in:
parent
ed9575b3aa
commit
f38a7de260
@ -214,8 +214,6 @@ class INTR(PrettyPrinted):
|
||||
pretty = 'intr'
|
||||
class SYNC(PrettyPrinted):
|
||||
pretty = 'sync'
|
||||
class URGENT(PrettyPrinted):
|
||||
pretty = 'urgent'
|
||||
class RPC(PrettyPrinted):
|
||||
pretty = 'rpc'
|
||||
|
||||
@ -223,26 +221,8 @@ class INOUT(PrettyPrinted):
|
||||
pretty = 'inout'
|
||||
class IN(PrettyPrinted):
|
||||
pretty = 'in'
|
||||
@staticmethod
|
||||
def prettySS(cls, ss): return _prettyTable['in'][ss.pretty]
|
||||
class OUT(PrettyPrinted):
|
||||
pretty = 'out'
|
||||
@staticmethod
|
||||
def prettySS(ss): return _prettyTable['out'][ss.pretty]
|
||||
|
||||
_prettyTable = {
|
||||
IN : { 'async': 'AsyncRecv',
|
||||
'sync': 'SyncRecv',
|
||||
'intr': 'IntrAnswer',
|
||||
'rpc': 'RPCAnswer',
|
||||
'urgent': 'UrgentAnswer' },
|
||||
OUT : { 'async': 'AsyncSend',
|
||||
'sync': 'SyncSend',
|
||||
'intr': 'IntrCall',
|
||||
'rpc': 'RPCCall',
|
||||
'urgent': 'UrgentCall' }
|
||||
# inout doesn't make sense here
|
||||
}
|
||||
|
||||
|
||||
class Namespace(Node):
|
||||
|
@ -5,7 +5,7 @@
|
||||
import os, sys
|
||||
|
||||
from ipdl.ast import Visitor
|
||||
from ipdl.ast import IN, OUT, INOUT, ASYNC, SYNC, INTR, URGENT
|
||||
from ipdl.ast import IN, OUT, INOUT, ASYNC, SYNC, INTR
|
||||
|
||||
class CodePrinter:
|
||||
def __init__(self, outf=sys.stdout, indentCols=4):
|
||||
|
@ -277,13 +277,13 @@ def _putInNamespaces(cxxthing, namespaces):
|
||||
|
||||
def _sendPrefix(msgtype):
|
||||
"""Prefix of the name of the C++ method that sends |msgtype|."""
|
||||
if msgtype.isInterrupt() or msgtype.isUrgent() or msgtype.isRpc():
|
||||
if msgtype.isInterrupt() or msgtype.isRpc():
|
||||
return 'Call'
|
||||
return 'Send'
|
||||
|
||||
def _recvPrefix(msgtype):
|
||||
"""Prefix of the name of the C++ method that handles |msgtype|."""
|
||||
if msgtype.isInterrupt() or msgtype.isUrgent() or msgtype.isRpc():
|
||||
if msgtype.isInterrupt() or msgtype.isRpc():
|
||||
return 'Answer'
|
||||
return 'Recv'
|
||||
|
||||
@ -4776,7 +4776,7 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor):
|
||||
self.asyncSwitch.addcase(lbl, case)
|
||||
elif sems is ipdl.ast.SYNC:
|
||||
self.syncSwitch.addcase(lbl, case)
|
||||
elif sems is ipdl.ast.INTR or sems is ipdl.ast.URGENT or sems is ipdl.ast.RPC:
|
||||
elif sems is ipdl.ast.INTR or sems is ipdl.ast.RPC:
|
||||
self.interruptSwitch.addcase(lbl, case)
|
||||
else: assert 0
|
||||
|
||||
@ -5171,15 +5171,20 @@ class _GenerateProtocolActorCode(ipdl.ast.Visitor):
|
||||
if md.decl.type.isSync():
|
||||
stmts.append(StmtExpr(ExprCall(
|
||||
ExprSelect(var, '->', 'set_sync'))))
|
||||
elif md.decl.type.isUrgent():
|
||||
stmts.append(StmtExpr(ExprCall(
|
||||
ExprSelect(var, '->', 'set_urgent'))))
|
||||
elif md.decl.type.isRpc():
|
||||
# We use urgent messages from the parent to the child and
|
||||
# RPC messages from the child to the parent. However,
|
||||
# replies should always be sent using the same semantics
|
||||
# as the original message, so we need to flip.
|
||||
if (self.side == 'parent') ^ reply:
|
||||
stmts.append(StmtExpr(ExprCall(
|
||||
ExprSelect(var, '->', 'set_urgent'))))
|
||||
else:
|
||||
stmts.append(StmtExpr(ExprCall(
|
||||
ExprSelect(var, '->', 'set_rpc'))))
|
||||
elif md.decl.type.isInterrupt():
|
||||
stmts.append(StmtExpr(ExprCall(
|
||||
ExprSelect(var, '->', 'set_interrupt'))))
|
||||
elif md.decl.type.isRpc():
|
||||
stmts.append(StmtExpr(ExprCall(
|
||||
ExprSelect(var, '->', 'set_rpc'))))
|
||||
|
||||
if reply:
|
||||
stmts.append(StmtExpr(ExprCall(
|
||||
|
@ -147,7 +147,6 @@ reserved = set((
|
||||
'struct',
|
||||
'sync',
|
||||
'union',
|
||||
'urgent',
|
||||
'using'))
|
||||
tokens = [
|
||||
'COLONCOLON', 'ID', 'STRING'
|
||||
@ -626,13 +625,11 @@ def p_SendSemanticsQual(p):
|
||||
"""SendSemanticsQual : ASYNC
|
||||
| INTR
|
||||
| RPC
|
||||
| URGENT
|
||||
| SYNC"""
|
||||
s = p[1]
|
||||
if 'async' == s: p[0] = ASYNC
|
||||
elif 'intr' == s: p[0] = INTR
|
||||
elif 'sync' == s: p[0] = SYNC
|
||||
elif 'urgent' == s: p[0] = URGENT
|
||||
elif 'rpc' == s: p[0] = RPC
|
||||
else:
|
||||
assert 0
|
||||
|
@ -7,7 +7,7 @@ import os, sys
|
||||
|
||||
from ipdl.ast import CxxInclude, Decl, Loc, QualifiedId, State, StructDecl, TransitionStmt
|
||||
from ipdl.ast import TypeSpec, UnionDecl, UsingStmt, Visitor, ASYNC, SYNC, INTR
|
||||
from ipdl.ast import IN, OUT, INOUT, ANSWER, CALL, RECV, SEND, URGENT, RPC
|
||||
from ipdl.ast import IN, OUT, INOUT, ANSWER, CALL, RECV, SEND, RPC
|
||||
import ipdl.builtin as builtin
|
||||
|
||||
_DELETE_MSG = '__delete__'
|
||||
@ -207,7 +207,6 @@ class IPDLType(Type):
|
||||
def isAsync(self): return self.sendSemantics is ASYNC
|
||||
def isSync(self): return self.sendSemantics is SYNC
|
||||
def isInterrupt(self): return self.sendSemantics is INTR
|
||||
def isUrgent(self): return self.sendSemantics is URGENT
|
||||
def isRpc(self): return self.sendSemantics is RPC
|
||||
|
||||
def talksAsync(self): return True
|
||||
@ -217,13 +216,12 @@ class IPDLType(Type):
|
||||
|
||||
def hasReply(self): return (self.isSync()
|
||||
or self.isInterrupt()
|
||||
or self.isUrgent()
|
||||
or self.isRpc())
|
||||
|
||||
def needsMoreJuiceThan(self, o):
|
||||
return (o.isAsync() and not self.isAsync()
|
||||
or o.isSync() and (self.isUrgent() or self.isRpc())
|
||||
or (o.isUrgent() or o.isRpc()) and self.isInterrupt())
|
||||
or o.isSync() and self.isRpc()
|
||||
or o.isRpc() and self.isInterrupt())
|
||||
|
||||
class StateType(IPDLType):
|
||||
def __init__(self, protocol, name, start=False):
|
||||
@ -1465,18 +1463,6 @@ class CheckTypes(TcheckVisitor):
|
||||
"sync parent-to-child messages are verboten (here, message `%s' in protocol `%s')",
|
||||
mname, pname)
|
||||
|
||||
if mtype.isUrgent() and (mtype.isIn() or mtype.isInout()):
|
||||
self.error(
|
||||
loc,
|
||||
"urgent child-to-parent messages are verboten (here, message `%s' in protocol `%s')",
|
||||
mname, pname)
|
||||
|
||||
if mtype.isRpc() and (mtype.isOut() or mtype.isInout()):
|
||||
self.error(
|
||||
loc,
|
||||
"rpc parent-to-child messages are verboten (here, message' `%s' in protocol `%s')",
|
||||
mname, pname)
|
||||
|
||||
if mtype.needsMoreJuiceThan(ptype):
|
||||
self.error(
|
||||
loc,
|
||||
|
@ -15,12 +15,12 @@ parent:
|
||||
|
||||
child:
|
||||
async Start();
|
||||
urgent Test1_InnerQuery() returns (uint32_t result);
|
||||
urgent Test1_NoReenter() returns (uint32_t result);
|
||||
urgent Test2_FirstUrgent();
|
||||
urgent Test2_SecondUrgent();
|
||||
urgent Test3_WakeUp() returns (uint32_t result);
|
||||
urgent Test4_WakeUp() returns (uint32_t result);
|
||||
rpc Test1_InnerQuery() returns (uint32_t result);
|
||||
rpc Test1_NoReenter() returns (uint32_t result);
|
||||
rpc Test2_FirstUrgent();
|
||||
rpc Test2_SecondUrgent();
|
||||
rpc Test3_WakeUp() returns (uint32_t result);
|
||||
rpc Test4_WakeUp() returns (uint32_t result);
|
||||
};
|
||||
|
||||
} // namespace _ipdltest
|
||||
|
@ -11,9 +11,9 @@ parent:
|
||||
|
||||
child:
|
||||
async Start();
|
||||
urgent Reply1() returns (uint32_t result);
|
||||
urgent Reply2() returns (uint32_t result);
|
||||
urgent FinalTest_Hang();
|
||||
rpc Reply1() returns (uint32_t result);
|
||||
rpc Reply2() returns (uint32_t result);
|
||||
rpc FinalTest_Hang();
|
||||
};
|
||||
|
||||
} // namespace _ipdltest
|
||||
|
@ -1,8 +1,6 @@
|
||||
sync protocol tooWeakRpcSync {
|
||||
|
||||
// it's an error to declare a sync protocol with an rpc or urgent message
|
||||
// it's an error to declare a sync protocol with an rpc message
|
||||
parent:
|
||||
rpc Msg();
|
||||
child:
|
||||
urgent Msg2();
|
||||
};
|
||||
|
@ -1,6 +0,0 @@
|
||||
intr protocol urgentChildToParent {
|
||||
|
||||
// can't declare urgent child-to-parent messages
|
||||
parent: ugrent Msg();
|
||||
|
||||
};
|
@ -23,25 +23,25 @@ child:
|
||||
async DropObject(uint64_t objId);
|
||||
|
||||
// These roughly map to the ProxyHandler hooks that CPOWs need.
|
||||
urgent PreventExtensions(uint64_t objId) returns (ReturnStatus rs);
|
||||
urgent GetPropertyDescriptor(uint64_t objId, nsString id, uint32_t flags) returns (ReturnStatus rs, PPropertyDescriptor result);
|
||||
urgent GetOwnPropertyDescriptor(uint64_t objId, nsString id, uint32_t flags) returns (ReturnStatus rs, PPropertyDescriptor result);
|
||||
urgent DefineProperty(uint64_t objId, nsString id, PPropertyDescriptor descriptor) returns (ReturnStatus rs);
|
||||
urgent Delete(uint64_t objId, nsString id) returns (ReturnStatus rs, bool successful);
|
||||
rpc PreventExtensions(uint64_t objId) returns (ReturnStatus rs);
|
||||
rpc GetPropertyDescriptor(uint64_t objId, nsString id, uint32_t flags) returns (ReturnStatus rs, PPropertyDescriptor result);
|
||||
rpc GetOwnPropertyDescriptor(uint64_t objId, nsString id, uint32_t flags) returns (ReturnStatus rs, PPropertyDescriptor result);
|
||||
rpc DefineProperty(uint64_t objId, nsString id, PPropertyDescriptor descriptor) returns (ReturnStatus rs);
|
||||
rpc Delete(uint64_t objId, nsString id) returns (ReturnStatus rs, bool successful);
|
||||
|
||||
urgent Has(uint64_t objId, nsString id) returns (ReturnStatus rs, bool has);
|
||||
urgent HasOwn(uint64_t objId, nsString id) returns (ReturnStatus rs, bool has);
|
||||
urgent Get(uint64_t objId, uint64_t receiverId, nsString id) returns (ReturnStatus rs, JSVariant result);
|
||||
urgent Set(uint64_t objId, uint64_t receiverId, nsString id, bool strict, JSVariant value) returns (ReturnStatus rs, JSVariant result);
|
||||
rpc Has(uint64_t objId, nsString id) returns (ReturnStatus rs, bool has);
|
||||
rpc HasOwn(uint64_t objId, nsString id) returns (ReturnStatus rs, bool has);
|
||||
rpc Get(uint64_t objId, uint64_t receiverId, nsString id) returns (ReturnStatus rs, JSVariant result);
|
||||
rpc Set(uint64_t objId, uint64_t receiverId, nsString id, bool strict, JSVariant value) returns (ReturnStatus rs, JSVariant result);
|
||||
|
||||
urgent IsExtensible(uint64_t objId) returns (ReturnStatus rs, bool result);
|
||||
urgent Call(uint64_t objId, JSParam[] argv) returns (ReturnStatus rs, JSVariant result, JSParam[] outparams);
|
||||
urgent ObjectClassIs(uint64_t objId, uint32_t classValue) returns (bool result);
|
||||
urgent ClassName(uint64_t objId) returns (nsString name);
|
||||
rpc IsExtensible(uint64_t objId) returns (ReturnStatus rs, bool result);
|
||||
rpc Call(uint64_t objId, JSParam[] argv) returns (ReturnStatus rs, JSVariant result, JSParam[] outparams);
|
||||
rpc ObjectClassIs(uint64_t objId, uint32_t classValue) returns (bool result);
|
||||
rpc ClassName(uint64_t objId) returns (nsString name);
|
||||
|
||||
urgent GetPropertyNames(uint64_t objId, uint32_t flags) returns (ReturnStatus rs, nsString[] names);
|
||||
urgent InstanceOf(uint64_t objId, JSIID iid) returns (ReturnStatus rs, bool instanceof);
|
||||
urgent DOMInstanceOf(uint64_t objId, int prototypeID, int depth) returns (ReturnStatus rs, bool instanceof);
|
||||
rpc GetPropertyNames(uint64_t objId, uint32_t flags) returns (ReturnStatus rs, nsString[] names);
|
||||
rpc InstanceOf(uint64_t objId, JSIID iid) returns (ReturnStatus rs, bool instanceof);
|
||||
rpc DOMInstanceOf(uint64_t objId, int prototypeID, int depth) returns (ReturnStatus rs, bool instanceof);
|
||||
|
||||
parent:
|
||||
async __delete__();
|
||||
|
Loading…
Reference in New Issue
Block a user