Closed
Bug 408009
Opened 18 years ago
Closed 18 years ago
Make doGetObjectPrincipal() faster.
Categories
(Core :: Security: CAPS, defect)
Core
Security: CAPS
Tracking
()
RESOLVED
FIXED
mozilla1.9beta3
People
(Reporter: jst, Assigned: jst)
References
Details
(Keywords: perf)
Attachments
(2 files)
|
11.60 KB,
patch
|
bzbarsky
:
review+
brendan
:
review+
bzbarsky
:
superreview+
brendan
:
approval1.9+
|
Details | Diff | Splinter Review |
|
13.43 KB,
patch
|
Details | Diff | Splinter Review |
nsScriptSecurityManager::doGetObjectPrincipal() spends a good bit of time calling QI on a JSObject's private data to find out if it's a XPConnect wrapped native or not. That QI isn't needed, XPConnect has the information to do that check w/o an expensive QI, so we should expose that to caps and speed things up. I'm attaching a patch that does that, and also adds some code to exclude JSFunction objects (followed by a Call object) at at the start of the parent chain from the loop, and some other tweaks to speed things up as well.
Flags: blocking1.9+
Attachment #292705 -
Flags: superreview?(bzbarsky)
Attachment #292705 -
Flags: review?(bzbarsky)
Comment 1•18 years ago
|
||
Comment on attachment 292705 [details] [diff] [review]
Make doGetObjectPrincipal() faster.
>+++ b/caps/src/nsScriptSecurityManager.cpp
>+ // nsINode. Note that this is merely a performance
>+ // optimization, so missing this optimization is
>+ // non-critical and must result in us finding the same
>+ // principal that we would have gotten by asking the
>+ // nsINode here.
Can we please actually assert that (using aAllowShortCircuit; you'll need to change its default value back to true)?
>+ if (node) {
>+ result = node->NodePrincipal();
>+
>+ if (result) {
NodePrincipal() never returns null. So no need for this null-check.
>+++ b/js/src/jsfun.h
This probably needs review from Brendan or someone else who knows that code.
r+sr=bzbarsky on the xpconnect/caps changes, with the above issues fixed.
It would be nice to leave in a comment about using GetObjectPrincipal on the wrapper or something; if we could get that to work it would eliminate a QI (to nsIScriptObjectPrincipal on things whose classes start with 'W', 'M', 'C', and to nsINode on everything else).
Attachment #292705 -
Flags: superreview?(bzbarsky)
Attachment #292705 -
Flags: superreview+
Attachment #292705 -
Flags: review?(bzbarsky)
Attachment #292705 -
Flags: review+
| Assignee | ||
Comment 2•18 years ago
|
||
Comment on attachment 292705 [details] [diff] [review]
Make doGetObjectPrincipal() faster.
Brendan, you cool with the jsfun.h changes in this patch?
Attachment #292705 -
Flags: review?(brendan)
Updated•18 years ago
|
Attachment #292705 -
Flags: review?(brendan) → review+
Updated•18 years ago
|
Attachment #292705 -
Flags: approval1.9+
| Assignee | ||
Comment 3•18 years ago
|
||
This fixes what bz pointed out, and also bumps the IID for nsIXPConnect.
| Assignee | ||
Comment 4•18 years ago
|
||
Fix checked in.
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Updated•18 years ago
|
Flags: in-testsuite-
You need to log in
before you can comment on or make changes to this bug.
Description
•