Summary: | Merge the instruction pair (less, jfalse) | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Product: | WebKit | Reporter: | Cameron Zwarich (cpst) <zwarich> | ||||||||||
Component: | JavaScriptCore | Assignee: | Nobody <webkit-unassigned> | ||||||||||
Status: | RESOLVED FIXED | ||||||||||||
Severity: | Normal | CC: | mjs | ||||||||||
Priority: | P2 | ||||||||||||
Version: | 528+ (Nightly build) | ||||||||||||
Hardware: | All | ||||||||||||
OS: | All | ||||||||||||
Attachments: |
|
Description
Cameron Zwarich (cpst)
2008-06-29 19:56:49 PDT
Created attachment 21999 [details]
Patch
Here's a patch that implements jnless. It has no dump code for the new opcode and the opcode documentation is wrong.
Created attachment 22000 [details]
SunSpider results
Here are the SunSpider results. I'll do a before-and-after with Shark on the regexp-dna test.
The regression seems to be entirely caused by the CodeGenerator logic, even though the regexp-dna test doesn't hit it. I can substitute an empty opcode at the end of the opcodes in Machine.cpp and I still get the regression. If I remove the extra logic in CodeGenerator::emitJumpIfFalse, it's fine. Created attachment 22002 [details]
Proposed patch
It turns out that the regression was entirely due to the changes in CodeGenerator. Adding ALWAYS_INLINE to CodeGenerator::rewindBinaryOp() fixed the regression. It is now a 2.4% progression on SunSpider.
Created attachment 22003 [details]
New SunSpider results
Here are new SunSpider results, for a reference.
Comment on attachment 22002 [details]
Proposed patch
r=me
|