Closed
Bug 118823
Opened 23 years ago
Closed 22 years ago
better assembler for win32 xptcinvoke
Categories
(Core :: XPConnect, defect, P3)
Tracking
()
VERIFIED
FIXED
mozilla1.3beta
People
(Reporter: bernard.alleysson, Assigned: dbradley)
Details
(Keywords: perf)
Attachments
(2 files)
|
1.93 KB,
patch
|
dbradley
:
review+
shaver
:
superreview+
|
Details | Diff | Splinter Review |
|
2.11 KB,
text/plain
|
Details |
modifications: * make invoke_copy_to_stack fastcall instead of stdcall * test edx,edx instead of cmp edx,0 * use call [edx][eax*4] instead of computing address by hand results: this saves a few push/pop for arguments and better use addressing capabilities of x86 CPU I've tested this and everything works fine (mail, browser)
| Reporter | ||
Comment 1•23 years ago
|
||
| Reporter | ||
Comment 4•23 years ago
|
||
ok, I've just run through it I'll attach the results I've put some breakpoints and stepped through the assembly code (tested the case with 0 params)
| Reporter | ||
Comment 5•23 years ago
|
||
| Assignee | ||
Updated•22 years ago
|
| Assignee | ||
Comment 6•22 years ago
|
||
Moving out to 1.3. If this needs to be in before 1.3 please comment.
Target Milestone: mozilla1.2alpha → mozilla1.3alpha
| Assignee | ||
Comment 7•22 years ago
|
||
Everything looks good, one question I have is about the last call statement call [edx][eax*4]. I'm not real familiar with the call[reg][reg] syntax. Admittedly my x86 assembler is weak. Is this form new, or has it been around a while. When was it introduced?
| Reporter | ||
Comment 8•22 years ago
|
||
This addressing mode is valid for Intel 80386: http://sources.redhat.com/binutils/docs-2.12/as.info/i386-Memory.html And the CALL instruction can take a memory reference of 32 bits or a register reference (r/m 32). The syntax for a memory reference is "section:[base + index*scale + disp]". So I think that this was introduced with the Intel 80386 processor.
so [edx][eax*4] is the same as [edx+eax*4]?
| Reporter | ||
Comment 10•22 years ago
|
||
yes, absolutely
| Assignee | ||
Comment 11•22 years ago
|
||
Moving to 1.4 Alpha
Target Milestone: mozilla1.3alpha → mozilla1.4alpha
Is there a reason not to land this patch? It should give some perfimprovement to a function called quite a lot.
Keywords: patch
| Assignee | ||
Comment 13•22 years ago
|
||
Comment on attachment 64010 [details] [diff] [review] better assembler I meant to r= this, but forgot to. We need to get an sr=. Requesting shaver.
Attachment #64010 -
Flags: superreview?(shaver)
Attachment #64010 -
Flags: review+
Comment on attachment 64010 [details] [diff] [review] better assembler My first assembler of the new year! Looks good, thanks for the patch.
Attachment #64010 -
Flags: superreview?(shaver) → superreview+
| Assignee | ||
Comment 15•22 years ago
|
||
Patch checked in Thanks for the quick response Shaver. Updated milestone to 1.3beta to reflect when patch went in
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Target Milestone: mozilla1.4alpha → mozilla1.3beta
You need to log in
before you can comment on or make changes to this bug.
Description
•