Closed Bug 286318 Opened 20 years ago Closed 20 years ago

Optimize frequently called function pk11_SessionFromHandle

Categories

(NSS :: Libraries, defect)

3.9.3
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: wtc, Assigned: wtc)

Details

Attachments

(1 file, 1 obsolete file)

pk11_SessionFromHandle is called a lot. We should make it run as fast as possible.
During the pk11wrap/softoken code review meeting, I wrote down on my notebook "optimize pk11_SessionFromHandle". That's why I filed this bug report. Unfortunately, looking at the code now, I no longer remember what optimizations I had in mind. The only optimization I remember is to save the result of PK11_SESSION_LOCK so we don't call the macro twice. This problem is in many other functions, so I fix them all in this patch. This patch needs to be reviewed carefully, especially if the original PK11_SESSION_LOCK calls are inside a loop.
Attachment #177554 - Flags: superreview?(rrelyea)
Attachment #177554 - Flags: review?(nelson)
Comment on attachment 177554 [details] [diff] [review] Save the result of PK11_SESSION_LOCK Given that PKCS11_USE_THREADS is always defined, and that PK11_USE_THREADS(x) always expands to x this patch is correct. If there was ever a chance that PKCS11_USE_THREADS would become undefined, and consequently PK11_USE_THREADS(x) would expand to empty, then this patch's new code would be assigning a value to an unused lock variable. I'd prefer to see all the PK11_USE_THREADS macros eliminated, making their calls to PZ_Lock and PZ_Unlock an unconditional part of the code. But that can be done in a separate patch. r=nelson
Attachment #177554 - Flags: review?(nelson) → review+
Comment on attachment 177554 [details] [diff] [review] Save the result of PK11_SESSION_LOCK Good point, Nelson. I missed that. I can put the declarations of the 'lock' variable in PK11_USE_THREADS(). I'll open a new bug to remove PK11_USE_THREADS(x).
Attachment #177554 - Flags: superreview?(rrelyea)
I put all relevant code in PK11_USE_THREADS() per Nelson's review comment.
Attachment #177554 - Attachment is obsolete: true
Attachment #177628 - Flags: review?(rrelyea)
I checked in the PK11_SESSION_LOCK patch, v1.1, on the NSS trunk for NSS 3.10. I'm marking the bug fixed. Please reopen if you see any other optimization we can do to pk11_SessionFromHandle. Checking in pkcs11.c; /cvsroot/mozilla/security/nss/lib/softoken/pkcs11.c,v <-- pkcs11.c new revision: 1.97; previous revision: 1.96 done Checking in pkcs11u.c; /cvsroot/mozilla/security/nss/lib/softoken/pkcs11u.c,v <-- pkcs11u.c new revision: 1.63; previous revision: 1.62 done
Status: NEW → RESOLVED
Closed: 20 years ago
Resolution: --- → FIXED
Target Milestone: --- → 3.10
Please don't increase the use of PK11_USE_THREADS! Please eliminate it. It doesn't have to all be eliminatged at once. Please?
I want to leave the code in a consistent state. The code is using PK11_USE_THREADS now. So my new code also uses that. Whether I think the macro is necessary is irrelevant. I will attach a patch to bug 286439 next to remove PK11_USE_THREADS.
Comment on attachment 177628 [details] [diff] [review] Save the result of PK11_SESSION_LOCK, v1.1 The remove PK11_USE_THREADS is a subject of another bug. r+ (for already checked in patch;)
Attachment #177628 - Flags: review?(rrelyea) → review+
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: