Closed
Bug 792652
Opened 12 years ago
Closed 8 years ago
IPDL: Refactor the division of code that's generated and code that's manually written
Categories
(Core :: IPC, defect)
Core
IPC
Tracking
()
RESOLVED
FIXED
mozilla52
Tracking | Status | |
---|---|---|
firefox52 | --- | fixed |
People
(Reporter: cjones, Assigned: billm)
References
Details
Attachments
(18 files)
16.61 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
12.18 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
2.63 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
17.31 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
10.81 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
12.23 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
12.52 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
7.76 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
4.95 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
14.32 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
8.15 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
10.15 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
9.91 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
6.83 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
4.43 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
10.73 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
22.48 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
7.27 KB,
patch
|
dvander
:
review+
|
Details | Diff | Splinter Review |
We currently autogenerate a lot of code, e.g. for managing listener maps, that seems like it could be manually written in C++. Manually-written code is considerably easier to maintain.
There were reasons the division was done like it was at the time, but these are worth revisiting every few years with better hindsight.
Assignee | ||
Updated•8 years ago
|
Assignee: nobody → wmccloskey
Assignee | ||
Comment 1•8 years ago
|
||
CloneProtocol is leftover code from Nuwa. We can remove it now.
Attachment #8807317 -
Flags: review?(dvander)
Assignee | ||
Comment 2•8 years ago
|
||
Currently all our protocols inherit from IProtocolManager<IProtocol>. I have
no idea why. This patch switches everything over to IProtocol, without any
templates. I had to move ReadActor to the .cpp file to avoid redefinition
errors.
Attachment #8807318 -
Flags: review?(dvander)
Assignee | ||
Comment 3•8 years ago
|
||
Currently toplevel protocols inherit from both IProtocolManager<IProtocol>
and IToplevelProtocol. This change makes IToplevelProtocol inherit from
IProtocol, so now toplevel protocols only inherit from
IToplevelProtocol.
Attachment #8807319 -
Flags: review?(dvander)
Assignee | ||
Comment 4•8 years ago
|
||
With this change, MessageChannel stores mListener as an IToplevelProtocol
rather than a MessageListener (which isn't really a useful concept on
its own). The MessageListener methods are split out to IProtocol and
IToplevelProtocol. MessageListener gets deleted. Some of the inline
functions in MessageChannel had to be moved to MessageChannel.cpp since
IToplevelProtocol isn't defined in MessageChannel.h.
Attachment #8807320 -
Flags: review?(dvander)
Assignee | ||
Comment 5•8 years ago
|
||
This patch stores mManager in IProtocol rather than in each individual
PFoo. It also adds a generic accessor for that field. Note that each
individual protocol still defines a Manager() function that returns
PFooParent or whatever. I tried to get rid of that but it was a lot
of work.
Attachment #8807321 -
Flags: review?(dvander)
Assignee | ||
Comment 6•8 years ago
|
||
This moves some of the generated methods in subprotocols that simply defer
to the parent protocol to IProtocol. These methods are still overridden in
the toplevel protocol.
Attachment #8807322 -
Flags: review?(dvander)
Assignee | ||
Comment 7•8 years ago
|
||
This moves the mChannel field to IProtocol. The toplevel protocol still keeps
its own mChannel field that's a MessageChannel (no pointer).
Attachment #8807323 -
Flags: review?(dvander)
Assignee | ||
Comment 8•8 years ago
|
||
Moves OnProcessingError, OnChannelError, OnChannelConnected so that they're
only generated for toplevel protocols. For some reason APZCTreeManagerChild
implemented OnProcessingError. I'm not sure what the intention was there so
I removed it.
Attachment #8807324 -
Flags: review?(dvander)
Assignee | ||
Comment 9•8 years ago
|
||
This patch adds a field to hold ParentSide/ChildSide state. Useful for
later changes.
Attachment #8807325 -
Flags: review?(dvander)
Assignee | ||
Comment 10•8 years ago
|
||
This patch moves FatalError to IProtocol. I had to make a few changes.
- I added a ProtocolName() method to find the name of the protocol.
- I gave the two-argument version of FatalError its own name. Otherwise
C++ doesn't like there to be two virtual methods with the same name
in cases where one is overridden and the other isn't (as happens
in IToplevelProtocol).
Attachment #8807326 -
Flags: review?(dvander)
Assignee | ||
Comment 11•8 years ago
|
||
This patch moves some shmem management code into IProtocol. Someday
maybe we can get rid of IHadBetterBeIPDLCodeCallingThis_OtherwiseIAmADoodyhead.
Attachment #8807327 -
Flags: review?(dvander)
Assignee | ||
Comment 12•8 years ago
|
||
A bunch of these methods just delegate from OnFoo to Foo. Not
sure why we have OnFoo.
Attachment #8807328 -
Flags: review?(dvander)
Assignee | ||
Comment 13•8 years ago
|
||
Moves some state to IToplevelProtocol.
Attachment #8807329 -
Flags: review?(dvander)
Assignee | ||
Comment 14•8 years ago
|
||
Move Open, Close, SetReplyTimeoutMs to IToplevelProtocol.
Attachment #8807330 -
Flags: review?(dvander)
Assignee | ||
Comment 15•8 years ago
|
||
Attachment #8807331 -
Flags: review?(dvander)
Assignee | ||
Comment 16•8 years ago
|
||
Attachment #8807332 -
Flags: review?(dvander)
Assignee | ||
Comment 17•8 years ago
|
||
Attachment #8807334 -
Flags: review?(dvander)
Assignee | ||
Comment 18•8 years ago
|
||
Attachment #8807362 -
Flags: review?(dvander)
Comment on attachment 8807317 [details] [diff] [review]
Get rid of CloneProtocol
Review of attachment 8807317 [details] [diff] [review]:
-----------------------------------------------------------------
Yay.
Attachment #8807317 -
Flags: review?(dvander) → review+
Attachment #8807318 -
Flags: review?(dvander) → review+
Attachment #8807319 -
Flags: review?(dvander) → review+
Attachment #8807320 -
Flags: review?(dvander) → review+
Attachment #8807321 -
Flags: review?(dvander) → review+
Attachment #8807322 -
Flags: review?(dvander) → review+
Attachment #8807323 -
Flags: review?(dvander) → review+
Comment on attachment 8807324 [details] [diff] [review]
Stop generating code for toplevel-only methods in non-toplevel protocols
Review of attachment 8807324 [details] [diff] [review]:
-----------------------------------------------------------------
::: gfx/layers/ipc/APZCTreeManagerChild.cpp
@@ -262,5 @@
> return true;
> }
>
> -void
> -APZCTreeManagerChild::OnProcessingError(
Maybe this was a top-level protocol at some point, but yes: makes sense to delete it now.
Attachment #8807324 -
Flags: review?(dvander) → review+
Attachment #8807325 -
Flags: review?(dvander) → review+
Attachment #8807326 -
Flags: review?(dvander) → review+
Comment on attachment 8807327 [details] [diff] [review]
Move shmem methods to ProtocolUtils
Review of attachment 8807327 [details] [diff] [review]:
-----------------------------------------------------------------
Sweet. This should simplify some stuff in Graphics.
Attachment #8807327 -
Flags: review?(dvander) → review+
Attachment #8807328 -
Flags: review?(dvander) → review+
Attachment #8807329 -
Flags: review?(dvander) → review+
Comment on attachment 8807330 [details] [diff] [review]
Move some channel methods to IToplevelProtocol
Review of attachment 8807330 [details] [diff] [review]:
-----------------------------------------------------------------
Do we need all the SetOtherProcessId calls around gecko anymore?
Attachment #8807330 -
Flags: review?(dvander) → review+
Attachment #8807331 -
Flags: review?(dvander) → review+
Attachment #8807332 -
Flags: review?(dvander) → review+
Comment on attachment 8807334 [details] [diff] [review]
Move over toplevel shmem code
Review of attachment 8807334 [details] [diff] [review]:
-----------------------------------------------------------------
Amazing all this stuff was shoved in lower.py, heh.
Attachment #8807334 -
Flags: review?(dvander) → review+
Assignee | ||
Comment 24•8 years ago
|
||
Yeah, I realized that we can now eliminate IShmemAllocator. That thing makes absolutely no sense.
Attachment #8807362 -
Flags: review?(dvander) → review+
Comment 25•8 years ago
|
||
Pushed by wmccloskey@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/92e7fee81fa2
Get rid of CloneProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/004cd692ba6d
Simplify IPDL type hierarchy (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/1829d5358808
IToplevelProtocol refactoring (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/dbbe3a8c00e7
Remove methods from MessageListener (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/5a1e3136323a
Store Manager() in IProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/e3e496eab991
Stop generating some simple sub-protocol methods (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/63a3c8e4016e
Move mChannel to IProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/8edf4b247250
Stop generating code for toplevel-only methods in non-toplevel protocols (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/bdf86b8b9c43
Add mSide to IProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/59e6d0a4f35b
Move FatalError to IProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/cf9c4164eb43
Move shmem methods to ProtocolUtils (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/94fcd3bf3f34
Remove pointless OnFoo methods (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/2ba36b8ac60c
Move over toplevel process ID field (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/b658ebaad5d7
Move some channel methods to IToplevelProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/75855b5a9ab9
Move TakeMinidump to IToplevelProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/95eff6c45cae
Move toplevel actor map to IToplevelProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/ddd915ab4a48
Move over toplevel shmem code (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/90eaf6aec002
Move mId to toplevel protocol (r=dvander)
I had to back these out for bustage like https://treeherder.mozilla.org/logviewer.html#?job_id=38836252&repo=mozilla-inbound
https://hg.mozilla.org/integration/mozilla-inbound/rev/d2098e1d1f2d
Flags: needinfo?(wmccloskey)
Comment 27•8 years ago
|
||
Pushed by wmccloskey@mozilla.com:
https://hg.mozilla.org/integration/mozilla-inbound/rev/3a1013533726
Get rid of CloneProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/7ad0b451ee01
Simplify IPDL type hierarchy (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/732e9da2ae25
IToplevelProtocol refactoring (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/6209f046a283
Remove methods from MessageListener (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/f6642de5fb7a
Store Manager() in IProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/1b4e8fdc3b83
Stop generating some simple sub-protocol methods (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/5435dcdac909
Move mChannel to IProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/7fe6dbb18a96
Stop generating code for toplevel-only methods in non-toplevel protocols (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/905828d9d423
Add mSide to IProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/1c07bc3a61d8
Move FatalError to IProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/93a3d7897772
Move shmem methods to ProtocolUtils (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/e6a0511d3d11
Remove pointless OnFoo methods (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/2abbc39dc74e
Move over toplevel process ID field (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/c2236f71a3ea
Move some channel methods to IToplevelProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/56e30c8c735b
Move TakeMinidump to IToplevelProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/b6feaf5672e0
Move toplevel actor map to IToplevelProtocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/85c13e8c3b61
Move over toplevel shmem code (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/ba1901eafef5
Move mId to toplevel protocol (r=dvander)
https://hg.mozilla.org/integration/mozilla-inbound/rev/7fb5ed600895
IPDL refactoring may need a clobber
Assignee | ||
Comment 28•8 years ago
|
||
I did a bunch of retriggers of that build here:
https://treeherder.mozilla.org/#/jobs?repo=mozilla-inbound&revision=90eaf6aec002136b753bb7f921cce5141dcd0f12
It never failed again. I suspect there may have been an issue where we need to clobber. I could be wrong, but it seems like a possibility. I'm not sure what else to do since I can't reproduce the issue anywhere. Anyway, I relanded.
Flags: needinfo?(wmccloskey)
Comment 29•8 years ago
|
||
bugherder |
https://hg.mozilla.org/mozilla-central/rev/3a1013533726
https://hg.mozilla.org/mozilla-central/rev/7ad0b451ee01
https://hg.mozilla.org/mozilla-central/rev/732e9da2ae25
https://hg.mozilla.org/mozilla-central/rev/6209f046a283
https://hg.mozilla.org/mozilla-central/rev/f6642de5fb7a
https://hg.mozilla.org/mozilla-central/rev/1b4e8fdc3b83
https://hg.mozilla.org/mozilla-central/rev/5435dcdac909
https://hg.mozilla.org/mozilla-central/rev/7fe6dbb18a96
https://hg.mozilla.org/mozilla-central/rev/905828d9d423
https://hg.mozilla.org/mozilla-central/rev/1c07bc3a61d8
https://hg.mozilla.org/mozilla-central/rev/93a3d7897772
https://hg.mozilla.org/mozilla-central/rev/e6a0511d3d11
https://hg.mozilla.org/mozilla-central/rev/2abbc39dc74e
https://hg.mozilla.org/mozilla-central/rev/c2236f71a3ea
https://hg.mozilla.org/mozilla-central/rev/56e30c8c735b
https://hg.mozilla.org/mozilla-central/rev/b6feaf5672e0
https://hg.mozilla.org/mozilla-central/rev/85c13e8c3b61
https://hg.mozilla.org/mozilla-central/rev/ba1901eafef5
https://hg.mozilla.org/mozilla-central/rev/7fb5ed600895
Status: NEW → RESOLVED
Closed: 8 years ago
status-firefox52:
--- → fixed
Resolution: --- → FIXED
Target Milestone: --- → mozilla52
You need to log in
before you can comment on or make changes to this bug.
Description
•