Closed Bug 125123 Opened 24 years ago Closed 23 years ago

New semaphore implementation for OS/2

Categories

(NSPR :: NSPR, defect)

4.1.2
x86
OS/2
defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: mkaply, Assigned: netscape)

Details

(Keywords: perf)

Attachments

(2 files)

In our investigation of performance issues on OS/2, we found that one of the biggest impacts to performance was PR_Locking. What we found is that the OS/2 Mutex semaphore APIs are just too slow. This bug introduces a new semaphore called a fast RAM semaphore which emulates a mutex semaphore using event semaphores. With this change on 0.9.8, OS/2 actually runs Javascript faster than Windows.
Attached file New OS2VACPP.Asm
New version of OS2VACPP.ASM This file changed a great deal, so a new version is needed.
Keywords: perf
Comment on attachment 69137 [details] [diff] [review] Changes to _os2.h and os2cv.c >Index: pr/include/md/_os2.h >@@ -162,7 +189,11 @@ > }; > > struct _MDLock { >- HMTX mutex; /* this is recursive on NT */ >+#ifdef USE_RAMSEM >+ CRITICAL_SECTION mutex; /* this is recursive on NT */ >+#else >+ HMTX mutex; /* this is recursive on NT */ >+#endif Should we edit this comment? Maybe change "NT" to "OS/2"?
Comment on attachment 69139 [details] New OS2VACPP.Asm r=wtc.
Attachment #69139 - Flags: review+
Chris, could you take care of this bug? Thanks.
Assignee: wtc → seawood
Are these fastram semaphores safe for use on multi-processor (SMP) systems ? I have heard conflicting things about them. I do see the LOCK prefix in the code but I'm still not confident. The other thing if this code is ever to be ported to Windows is that the ASM code is written to the _Optlink convention that is unavailable in non-IBM compilers, so the parameter parsing will have to be rewritten in the ASM code.
Patch & new os2vacpp.asm have been checked into the tip & client branch. Checking in pr/include/md/_os2.h; /cvsroot/mozilla/nsprpub/pr/include/md/_os2.h,v <-- _os2.h new revision: 3.25; previous revision: 3.24 done Checking in pr/src/md/os2/os2cv.c; /cvsroot/mozilla/nsprpub/pr/src/md/os2/os2cv.c,v <-- os2cv.c new revision: 3.11; previous revision: 3.10 done Checking in pr/src/md/os2/os2vacpp.asm; /cvsroot/mozilla/nsprpub/pr/src/md/os2/os2vacpp.asm,v <-- os2vacpp.asm new revision: 1.2; previous revision: 1.1 done Checking in pr/include/md/_os2.h; /cvsroot/mozilla/nsprpub/pr/include/md/_os2.h,v <-- _os2.h new revision: 3.21.2.3; previous revision: 3.21.2.2 done Checking in pr/src/md/os2/os2cv.c; /cvsroot/mozilla/nsprpub/pr/src/md/os2/os2cv.c,v <-- os2cv.c new revision: 3.8.2.3; previous revision: 3.8.2.2 done Checking in pr/src/md/os2/os2vacpp.asm; /cvsroot/mozilla/nsprpub/pr/src/md/os2/os2vacpp.asm,v <-- os2vacpp.asm new revision: 1.1.4.1; previous revision: 1.1 done
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
verify, this is in.
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: