RESOLVED FIXED170881
REGRESSION(215272): microbenchmark/seal-and-do-work and microbenchmark/freeze-and-do-work are 27x slower
https://bugs.webkit.org/show_bug.cgi?id=170881
Summary REGRESSION(215272): microbenchmark/seal-and-do-work and microbenchmark/freeze...
Caio Lima
Reported 2017-04-15 21:08:47 PDT
Comparing r215126 with r215394 I've found the following performance regression into microbenchmarks. Need to investigate the reason. baseline changes freeze-and-do-work 17.8163+-1.1731 ! 481.5174+-10.8908 ! definitely 27.0268x slower seal-and-do-work 18.0572+-1.2018 ! 491.9421+-18.0567 ! definitely 27.2436x slower <geometric> 17.9014+-0.9676 ! 486.4490+-11.4703 ! definitely 27.1737x slower
Attachments
Patch (1.90 KB, patch)
2017-04-17 16:36 PDT, Michael Saboff
saam: review+
Michael Saboff
Comment 1 2017-04-16 10:20:22 PDT
This is like change set r215272 <https://trac.webkit.org/changeset/215272>. I'll take a look at it.
Radar WebKit Bug Importer
Comment 2 2017-04-16 13:25:28 PDT
Michael Saboff
Comment 3 2017-04-17 16:36:07 PDT
Saam Barati
Comment 4 2017-04-17 17:09:42 PDT
Comment on attachment 307319 [details] Patch r=me
Mark Lam
Comment 5 2017-04-17 17:17:38 PDT
Comment on attachment 307319 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=307319&action=review > Source/JavaScriptCore/runtime/ObjectConstructor.cpp:614 > + if (isJSFinalObject(object) && !hasIndexedProperties(object->indexingType())) { > + object->seal(vm); > + return JSValue::encode(obj); > + } In r215272 <https://trac.webkit.org/changeset/215272>, you also eliminated the fast paths for objectConstructorIsSealed() and objectConstructorIsFrozen(). Should those be restored as well with the additional !hasIndexedProperties() check?
Michael Saboff
Comment 6 2017-04-18 09:25:43 PDT
(In reply to Mark Lam from comment #5) > Comment on attachment 307319 [details] > Patch > > View in context: > https://bugs.webkit.org/attachment.cgi?id=307319&action=review > > > Source/JavaScriptCore/runtime/ObjectConstructor.cpp:614 > > + if (isJSFinalObject(object) && !hasIndexedProperties(object->indexingType())) { > > + object->seal(vm); > > + return JSValue::encode(obj); > > + } > > In r215272 <https://trac.webkit.org/changeset/215272>, you also eliminated > the fast paths for objectConstructorIsSealed() and > objectConstructorIsFrozen(). Should those be restored as well with the > additional !hasIndexedProperties() check? Yes. I added those checks back in.
Michael Saboff
Comment 7 2017-04-18 10:54:28 PDT
Note You need to log in before you can comment on or make changes to this bug.