Closed
Bug 1438876
Opened 6 years ago
Closed 6 years ago
Apply CFG Flag to all libraries
Categories
(Core :: Security, defect)
Core
Security
Tracking
()
RESOLVED
INVALID
People
(Reporter: tjr, Unassigned)
References
Details
Attachments
(1 file)
59 bytes,
text/x-review-board-request
|
Details |
Currently we apply it to firefox.exe and mozglue. We'll need to aply it to all libraries (including xul.dll) Try run using current compiler: https://treeherder.mozilla.org/#/jobs?repo=try&revision=23f88c537e3028f7ba9e2f07d470cb6960753a9a https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&newProject=try&newRevision=23f88c537e3028f7ba9e2f07d470cb6960753a9a&framework=1&showOnlyImportant=1&selectedTimeRange=172800 Try run using new 15.5.6 compiler: https://treeherder.mozilla.org/#/jobs?repo=try&revision=35c6f2c70b06272d4f7b656a8ab2f3bdb83196c8 https://treeherder.mozilla.org/perf.html#/compare?originalProject=mozilla-central&newProject=try&newRevision=35c6f2c70b06272d4f7b656a8ab2f3bdb83196c8&framework=1&showOnlyImportant=1&selectedTimeRange=172800 Performance regression is not great. We'll have to investigate what we can do to improve it. Compiler Comparison: https://treeherder.mozilla.org/perf.html#/compare?originalProject=try&originalRevision=23f88c537e3028f7ba9e2f07d470cb6960753a9a&newProject=try&newRevision=35c6f2c70b06272d4f7b656a8ab2f3bdb83196c8&framework=1 It does look like the compiler makes a difference, but it's not all wins. Adding more runs to be sure. One of the other concerns was increase in binary size. Installer size: Old Compiler Opt 61,068,411.82 -> 62,435,617.00 PGO 62,015,080.55 -> 63,217,395.00 New Compiler Opt 61,068,411.82 -> 63,127,530.00 PGO 62,015,080.55 -> 64,795,203.00
Comment hidden (mozreview-request) |
Comment 2•6 years ago
|
||
(In reply to Tom Ritter [:tjr] from comment #0) > Performance regression is not great. We'll have to investigate what we can > do to improve it. I wonder if there's a way to get a list of top virtual functions (or better, all indirect calls/jumps); then we could start attacking the top offenders.. Not easy probably to get this data for a Windows PGO build.
Reporter | ||
Comment 3•6 years ago
|
||
(In reply to Jan de Mooij [:jandem] from comment #2) > (In reply to Tom Ritter [:tjr] from comment #0) > > Performance regression is not great. We'll have to investigate what we can > > do to improve it. > > I wonder if there's a way to get a list of top virtual functions (or better, > all indirect calls/jumps); then we could start attacking the top offenders.. > Not easy probably to get this data for a Windows PGO build. IIRC, CFG is implemented with a specific function that does the check. I wonder if one could use some WinDBG scripting to break on that function, grab the caller, and accumulate in some hashtable or something. (Or just print to a file for later analysis) Alex, did you do something like this?
Flags: needinfo?(agaynor)
Comment 4•6 years ago
|
||
That's basically how I captured all stack that called win32k functions. All my scripts are available at https://github.com/alex/win32k-stuff
Flags: needinfo?(agaynor)
Comment 5•6 years ago
|
||
Bug 1332680 has info on the places we could add |final| to de-virtualize the most callsites (which doesn't necessarily correspond to volume of invocations). Marking methods/classes as final should help because those sites no longer need CFG checks if they're devirtualized to be direct calls.
Reporter | ||
Comment 6•6 years ago
|
||
Until/Unless clang support improves, this cannot be done. See Bug 1485016 for more.
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → INVALID
You need to log in
before you can comment on or make changes to this bug.
Description
•