Bug 28332 - REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
Summary: REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: JavaScriptCore (show other bugs)
Version: 528+ (Nightly build)
Hardware: PC OS X 10.5
: P2 Normal
Assignee: Oliver Hunt
URL:
Keywords: InRadar
Depends on: 28442
Blocks:
  Show dependency treegraph
 
Reported: 2009-08-14 17:14 PDT by Maciej Stachowiak
Modified: 2009-08-20 22:50 PDT (History)
3 users (show)

See Also:


Attachments
First pass at fixing regression. (11.96 KB, patch)
2009-08-20 00:13 PDT, Oliver Hunt
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Maciej Stachowiak 2009-08-14 17:14:52 PDT
http://www.betanews.com/article/Safari-403-speed-gains-hobbled-by-unexplained-poor-AJAX-performance/1250108985

This page claims: "Specifically, a heat where Safari 4 build 530.19 was timed at 23 ms, for a score of 8.96(almost nine times faster than IE7 on Vista), yielded a time of 371 ms (0.56) for build 531.9.1."

We have confirmation of a serious regression on both Mac and Windows.
Comment 1 Maciej Stachowiak 2009-08-14 17:16:10 PDT
<rdar://problem/7144974>
Comment 2 Maciej Stachowiak 2009-08-14 17:36:00 PDT
Radar bug closed as duplicate of <rdar://problem/7141850>
Comment 3 Oliver Hunt 2009-08-20 00:13:14 PDT
Created attachment 35189 [details]
First pass at fixing regression.
Comment 4 Oliver Hunt 2009-08-20 00:20:15 PDT
I'd appreciate it if folk could have a look at this first iteration of a fix for this regression.  It's actually quite straight forward in the end, it's memory neutral (actually due to what happens currently it's probably a memory win in the effected cases), and is a 1% progression on V8.

There is some gnarlyness to it though -- it uses a const_cast to be able to create the necessary pair for the hash lookup which is safe, but really really icky; it also adds StructureTransitionTable functions to Structure.h to allow inlining, but having seen performance i may try making them non-inlined and see if it's survivable.
Comment 5 Oliver Hunt 2009-08-20 22:50:32 PDT
Sigh, the info here was lost :-(

Bug fix (and a couple of followup patches) landed in r47601, 47604, and 47605