WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
20820
op_stricteq is slow
https://bugs.webkit.org/show_bug.cgi?id=20820
Summary
op_stricteq is slow
Cameron Zwarich (cpst)
Reported
2008-09-12 18:04:37 PDT
op_stricteq is 1.7% of the Shark profile of the Earley-Boyer benchmark. We should determine why this is the case and fix it.
Attachments
more speedups for the CTI case
(6.66 KB, patch)
2008-09-20 22:15 PDT
,
Maciej Stachowiak
no flags
Details
Formatted Diff
Diff
inline JIT the fast paths of the strict equal operator
(7.90 KB, patch)
2008-09-21 03:29 PDT
,
Maciej Stachowiak
oliver
: review+
Details
Formatted Diff
Diff
View All
Add attachment
proposed patch, testcase, etc.
Maciej Stachowiak
Comment 1
2008-09-20 22:15:30 PDT
Created
attachment 23619
[details]
more speedups for the CTI case
Darin Adler
Comment 2
2008-09-20 22:26:22 PDT
Comment on
attachment 23619
[details]
more speedups for the CTI case + (JSC::Machine::cti_op_stricteq): Check for pointer equality first; use inline version + of strictEqualSlowCase; remove unneeded exception check. I don't see any "check for pointer equality first" change. - r[dst] = jsBoolean(reinterpret_cast<intptr_t>(src1) == reinterpret_cast<intptr_t>(src2)); + r[dst]= jsBoolean(reinterpret_cast<intptr_t>(src1) == reinterpret_cast<intptr_t>(src2)); Should change this back. No reason to delete the space before that "=". - if (JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::from(0)) & (src2 != JSImmediate::from(0))) + if (JSImmediate::isEitherImmediate(src1, src2) & (src1 != JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate())) JSImmediate::from(0) doesn't get constant folded? r=me
Maciej Stachowiak
Comment 3
2008-09-20 22:53:36 PDT
(In reply to
comment #2
)
> (From update of
attachment 23619
[details]
[edit]) > + (JSC::Machine::cti_op_stricteq): Check for pointer equality first; use > inline version > + of strictEqualSlowCase; remove unneeded exception check. > > I don't see any "check for pointer equality first" change.
Oh right, I had to back that out after writing the ChangeLog because it was wrong for NaN. I'll fix ChangeLog too.
> > - r[dst] = jsBoolean(reinterpret_cast<intptr_t>(src1) == > reinterpret_cast<intptr_t>(src2)); > + r[dst]= jsBoolean(reinterpret_cast<intptr_t>(src1) == > reinterpret_cast<intptr_t>(src2)); > > Should change this back. No reason to delete the space before that "=".
> I fixed that.
> - if (JSImmediate::isEitherImmediate(src1, src2) & (src1 != > JSImmediate::from(0)) & (src2 != JSImmediate::from(0))) > + if (JSImmediate::isEitherImmediate(src1, src2) & (src1 != > JSImmediate::zeroImmediate()) & (src2 != JSImmediate::zeroImmediate())) > > JSImmediate::from(0) doesn't get constant folded? >
I think both get constant folded, but I figued it was better style to use zeroImmediate().
Maciej Stachowiak
Comment 4
2008-09-21 03:29:44 PDT
Created
attachment 23624
[details]
inline JIT the fast paths of the strict equal operator
Maciej Stachowiak
Comment 5
2008-09-21 03:30:00 PDT
Comment on
attachment 23619
[details]
more speedups for the CTI case unflagging since this is landed
Darin Adler
Comment 6
2008-09-22 14:07:16 PDT
http://trac.webkit.org/changeset/36738
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug