RESOLVED FIXED 124630
Infer constant closure variables
https://bugs.webkit.org/show_bug.cgi?id=124630
Summary Infer constant closure variables
Filip Pizlo
Reported 2013-11-19 19:48:44 PST
Because that would be super cool
Attachments
it begins (29.85 KB, patch)
2013-12-02 14:45 PST, Filip Pizlo
no flags
it's about to get real (34.05 KB, patch)
2013-12-02 15:14 PST, Filip Pizlo
no flags
I wrote all of the code. (36.06 KB, patch)
2013-12-02 15:26 PST, Filip Pizlo
no flags
it successfully inferred things (37.71 KB, patch)
2013-12-02 20:39 PST, Filip Pizlo
no flags
and now, with tests! (51.87 KB, patch)
2013-12-02 22:05 PST, Filip Pizlo
buildbot: commit-queue-
the patch (61.13 KB, patch)
2013-12-03 15:44 PST, Filip Pizlo
no flags
the patch (59.83 KB, patch)
2013-12-03 15:51 PST, Filip Pizlo
buildbot: commit-queue-
the patch (65.17 KB, patch)
2013-12-03 18:26 PST, Filip Pizlo
ggaren: review+
eflews.bot: commit-queue-
Geoffrey Garen
Comment 1 2013-11-20 12:18:28 PST
Most of the time, a constant closure variable is assigned only once, and not inside a loop. Should we consider asking the parser to supply this information, instead of fancier run-time checks?
Filip Pizlo
Comment 2 2013-11-20 12:29:50 PST
(In reply to comment #1) > Most of the time, a constant closure variable is assigned only once, and not inside a loop. Should we consider asking the parser to supply this information, instead of fancier run-time checks? How would that solve the problem? Consider the following examples that would probably not work with a non-fancy parser-based analysis: Example #1: function foo() { function bar() { x; } var x; bar(); x = 42; // Assigned once! bar(); } There is no good way to naively fix this in the parser unless we required all constant closure variables to be assigned before anything that looked like a function call. Example #2: function foo() { var heap = new Array(); function bar() { heap; } } "heap" is only constant if foo() is only called once. You need at least some check for that. Example #3: function foo() { var heap = new Array(); function bar() { var heap2 = heap; function baz() { heap2; } } } Here, bar() is called twice and heap2 is assigned multiple times - but it will have the same value so long as foo() runs only once. It would be good to catch such cases. Bottom line, I'd like to build a closure variable inference that is powerful enough that I don't have to work on this problem again anytime soon. The obvious way to do that is to just have a store barrier on closure variables, and make sure that the store barrier is elided if it's already been tripped (similarly to how the global variable constant inference works already).
Oliver Hunt
Comment 3 2013-11-20 12:37:42 PST
I've considered this in the past, but basically came to the same conclusion that Fil has. Interestingly let variables may actually be doable in the parser (they are block scoped so don't suffer the same problems we might get from vars, but I also recall at some point the logical behaviour of |let| was the the value itself was included in the closure, rather than a reference. That said, it was a couple of years ago that that was the case, so who knows what the behaviour is now.
Filip Pizlo
Comment 4 2013-11-23 16:51:25 PST
It seems that the best way to do this is to combine watchpointing the fact that a scope is instantiated once and watchpointing the fact that the variable won't be assigned again. Basically, we start out by not watching closure variables. But we do set a watchpoint on whether create_activation was called once of more than once. If in the DFG we encounter a load from a scoped variable and: - We know that this scope has only been created once, and - We know that the variable either has no watchpoint yet or has a still-valid watchpoint set, then: We can create a watchpoint set for the variable (if necessary) and register watchpoints on both the created-once scope watchpoint set and the variable watchpoint set. Then we just need to figure out how best to trigger a fireAll() when someone writes to the closure variable.
Filip Pizlo
Comment 5 2013-12-02 14:45:15 PST
Created attachment 218217 [details] it begins
Filip Pizlo
Comment 6 2013-12-02 15:14:44 PST
Created attachment 218221 [details] it's about to get real
Filip Pizlo
Comment 7 2013-12-02 15:26:24 PST
Created attachment 218224 [details] I wrote all of the code. I'm too chicken to see if it works.
Filip Pizlo
Comment 8 2013-12-02 20:39:02 PST
Created attachment 218262 [details] it successfully inferred things
Filip Pizlo
Comment 9 2013-12-02 22:05:06 PST
Created attachment 218264 [details] and now, with tests!
WebKit Commit Bot
Comment 10 2013-12-02 22:32:45 PST
Attachment 218264 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/js/regress/infer-closure-const-then-mov-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-mov-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-mov-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-mov.html', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope.html', u'LayoutTests/js/regress/infer-closure-const-then-reenter-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-reenter-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-reenter-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-reenter.html', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-mov-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-mov.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-put-to-scope-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-put-to-scope.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-reenter-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-reenter.js', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/Instruction.h', u'Source/JavaScriptCore/bytecode/Opcode.h', u'Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h', u'Source/JavaScriptCore/bytecode/VariableWatchpointSet.h', u'Source/JavaScriptCore/bytecode/Watchpoint.h', u'Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp', u'Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h', u'Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.h', u'Source/JavaScriptCore/jit/JIT.cpp', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITOpcodes.cpp', u'Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm', u'Source/JavaScriptCore/llint/LowLevelInterpreter64.asm', u'Source/JavaScriptCore/runtime/CommonSlowPaths.cpp', u'Source/JavaScriptCore/runtime/CommonSlowPaths.h', u'Source/JavaScriptCore/runtime/ConstantMode.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSScope.cpp', u'Source/JavaScriptCore/runtime/SymbolTable.cpp']" exit_code: 1 ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:251: The parameter name "set" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:261: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:262: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:264: The parameter name "set" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 4 in 40 files If any of these errors are false positives, please file a bug against check-webkit-style.
Build Bot
Comment 11 2013-12-02 23:04:04 PST
Comment on attachment 218264 [details] and now, with tests! Attachment 218264 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.appspot.com/results/40458104
Build Bot
Comment 12 2013-12-02 23:19:32 PST
Comment on attachment 218264 [details] and now, with tests! Attachment 218264 [details] did not pass mac-ews (mac): Output: http://webkit-queues.appspot.com/results/42088049
Build Bot
Comment 13 2013-12-02 23:20:11 PST
Comment on attachment 218264 [details] and now, with tests! Attachment 218264 [details] did not pass win-ews (win): Output: http://webkit-queues.appspot.com/results/42518013
Filip Pizlo
Comment 14 2013-12-03 15:44:05 PST
Created attachment 218355 [details] the patch
WebKit Commit Bot
Comment 15 2013-12-03 15:45:24 PST
Attachment 218355 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/js/regress/infer-closure-const-then-mov-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-mov-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-mov-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-mov.html', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope.html', u'LayoutTests/js/regress/infer-closure-const-then-reenter-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-reenter-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-reenter-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-reenter.html', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-mov-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-mov.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-put-to-scope-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-put-to-scope.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-reenter-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-reenter.js', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/Instruction.h', u'Source/JavaScriptCore/bytecode/Opcode.h', u'Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h', u'Source/JavaScriptCore/bytecode/VariableWatchpointSet.h', u'Source/JavaScriptCore/bytecode/Watchpoint.h', u'Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp', u'Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h', u'Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.h', u'Source/JavaScriptCore/jit/JIT.cpp', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITOpcodes.cpp', u'Source/JavaScriptCore/jit/JITOpcodes32_64.cpp', u'Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm', u'Source/JavaScriptCore/llint/LowLevelInterpreter64.asm', u'Source/JavaScriptCore/runtime/CommonSlowPaths.cpp', u'Source/JavaScriptCore/runtime/CommonSlowPaths.h', u'Source/JavaScriptCore/runtime/ConstantMode.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSScope.cpp', u'Source/JavaScriptCore/runtime/SymbolTable.cpp']" exit_code: 1 ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:251: The parameter name "set" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:261: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:262: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:264: The parameter name "set" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 4 in 43 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 16 2013-12-03 15:46:13 PST
Comment on attachment 218355 [details] the patch View in context: https://bugs.webkit.org/attachment.cgi?id=218355&action=review > Source/JavaScriptCore/runtime/CommonSlowPaths.h:201 > +SLOW_PATH_HIDDEN_DECL(slow_path_captured_mov); > +SLOW_PATH_HIDDEN_DECL(slow_path_new_captured_func); > +SLOW_PATH_HIDDEN_DECL(slow_path_not); > +SLOW_PATH_HIDDEN_DECL(slow_path_eq); > +SLOW_PATH_HIDDEN_DECL(slow_path_neq); > +SLOW_PATH_HIDDEN_DECL(slow_path_stricteq); > +SLOW_PATH_HIDDEN_DECL(slow_path_nstricteq); > +SLOW_PATH_HIDDEN_DECL(slow_path_less); > +SLOW_PATH_HIDDEN_DECL(slow_path_lesseq); > +SLOW_PATH_HIDDEN_DECL(slow_path_greater); > +SLOW_PATH_HIDDEN_DECL(slow_path_greatereq); > +SLOW_PATH_HIDDEN_DECL(slow_path_inc); > +SLOW_PATH_HIDDEN_DECL(slow_path_dec); > +SLOW_PATH_HIDDEN_DECL(slow_path_to_number); > +SLOW_PATH_HIDDEN_DECL(slow_path_negate); > +SLOW_PATH_HIDDEN_DECL(slow_path_add); > +SLOW_PATH_HIDDEN_DECL(slow_path_mul); > +SLOW_PATH_HIDDEN_DECL(slow_path_sub); > +SLOW_PATH_HIDDEN_DECL(slow_path_div); > +SLOW_PATH_HIDDEN_DECL(slow_path_mod); > +SLOW_PATH_HIDDEN_DECL(slow_path_lshift); > +SLOW_PATH_HIDDEN_DECL(slow_path_rshift); > +SLOW_PATH_HIDDEN_DECL(slow_path_urshift); > +SLOW_PATH_HIDDEN_DECL(slow_path_bitand); > +SLOW_PATH_HIDDEN_DECL(slow_path_bitor); > +SLOW_PATH_HIDDEN_DECL(slow_path_bitxor); > +SLOW_PATH_HIDDEN_DECL(slow_path_typeof); > +SLOW_PATH_HIDDEN_DECL(slow_path_is_object); > +SLOW_PATH_HIDDEN_DECL(slow_path_is_function); > +SLOW_PATH_HIDDEN_DECL(slow_path_in); > +SLOW_PATH_HIDDEN_DECL(slow_path_del_by_val); > +SLOW_PATH_HIDDEN_DECL(slow_path_strcat); > +SLOW_PATH_HIDDEN_DECL(slow_path_to_primitive); > +SLOW_PATH_HIDDEN_DECL(slow_path_captured_mov); I don't know what happened here. I think I have some reverting to do.
Filip Pizlo
Comment 17 2013-12-03 15:51:42 PST
Created attachment 218357 [details] the patch Fix some style issues.
WebKit Commit Bot
Comment 18 2013-12-03 15:52:57 PST
Attachment 218357 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/js/regress/infer-closure-const-then-mov-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-mov-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-mov-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-mov.html', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope.html', u'LayoutTests/js/regress/infer-closure-const-then-reenter-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-reenter-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-reenter-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-reenter.html', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-mov-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-mov.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-put-to-scope-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-put-to-scope.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-reenter-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-reenter.js', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/Instruction.h', u'Source/JavaScriptCore/bytecode/Opcode.h', u'Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h', u'Source/JavaScriptCore/bytecode/VariableWatchpointSet.h', u'Source/JavaScriptCore/bytecode/Watchpoint.h', u'Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp', u'Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h', u'Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.h', u'Source/JavaScriptCore/jit/JIT.cpp', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITOpcodes.cpp', u'Source/JavaScriptCore/jit/JITOpcodes32_64.cpp', u'Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm', u'Source/JavaScriptCore/llint/LowLevelInterpreter64.asm', u'Source/JavaScriptCore/runtime/CommonSlowPaths.cpp', u'Source/JavaScriptCore/runtime/CommonSlowPaths.h', u'Source/JavaScriptCore/runtime/ConstantMode.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSScope.cpp', u'Source/JavaScriptCore/runtime/SymbolTable.cpp']" exit_code: 1 ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:251: The parameter name "set" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:265: The parameter name "set" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 2 in 43 files If any of these errors are false positives, please file a bug against check-webkit-style.
Build Bot
Comment 19 2013-12-03 16:12:18 PST
Comment on attachment 218357 [details] the patch Attachment 218357 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.appspot.com/results/39218300
Build Bot
Comment 20 2013-12-03 16:50:35 PST
Filip Pizlo
Comment 21 2013-12-03 18:14:06 PST
This is a big deal for emscripten/asm.js code. It does incur some small start-up costs so short-running or "code load" style tests are slightly penalized. Benchmark report for SunSpider, LongSpider, V8Spider, Octane, Kraken, and JSRegress on oldmac (MacPro4,1). VMs tested: "TipOfTree" at /Volumes/Data/pizlo/secondary/OpenSource/WebKitBuild/Release/jsc (r160044) "InferConstClosure" at /Volumes/Data/fromMiniMe/primary/OpenSource/WebKitBuild/Release/jsc (r160044) Collected 10 samples per benchmark/VM, with 10 VM invocations per benchmark. Emitted a call to gc() between sample measurements. Used 1 benchmark iteration per VM invocation for warm-up. Used the jsc-specific preciseTime() function to get microsecond-level timing. Reporting benchmark execution times with 95% confidence intervals in milliseconds. TipOfTree InferConstClosure SunSpider: 3d-cube 7.6387+-0.0644 ? 7.7471+-0.0767 ? might be 1.0142x slower 3d-morph 8.8122+-0.0829 ? 8.8220+-0.0746 ? 3d-raytrace 8.7783+-0.1044 ? 8.9295+-0.1573 ? might be 1.0172x slower access-binary-trees 2.0191+-0.0077 ? 2.0459+-0.0674 ? might be 1.0133x slower access-fannkuch 7.9568+-0.1212 7.9172+-0.0872 access-nbody 4.2404+-0.0295 4.2378+-0.0213 access-nsieve 5.0054+-0.0435 4.9861+-0.0682 bitops-3bit-bits-in-byte 1.8149+-0.0278 1.8092+-0.0064 bitops-bits-in-byte 6.9592+-0.1195 ? 7.0121+-0.0519 ? bitops-bitwise-and 2.9390+-0.0212 ? 2.9572+-0.0181 ? bitops-nsieve-bits 4.5473+-0.0715 ? 4.6083+-0.0050 ? might be 1.0134x slower controlflow-recursive 3.1231+-0.0115 ? 3.1307+-0.0138 ? crypto-aes 5.4359+-0.0189 ? 5.4702+-0.0389 ? crypto-md5 3.0878+-0.0112 ! 3.2198+-0.0217 ! definitely 1.0427x slower crypto-sha1 2.9966+-0.0322 2.9633+-0.0085 might be 1.0112x faster date-format-tofte 11.3554+-0.0715 ! 11.5464+-0.0723 ! definitely 1.0168x slower date-format-xparb 8.8198+-0.1266 8.6020+-0.0959 might be 1.0253x faster math-cordic 4.1979+-0.0133 ? 4.2147+-0.0203 ? math-partial-sums 10.1689+-0.1053 ? 10.2243+-0.0892 ? math-spectral-norm 2.7260+-0.0061 2.7256+-0.0047 regexp-dna 12.9910+-0.0866 12.9636+-0.0963 string-base64 5.4227+-0.0300 ? 5.4452+-0.0683 ? string-fasta 10.1692+-0.1796 ? 10.4419+-0.1741 ? might be 1.0268x slower string-tagcloud 14.9960+-0.1506 ? 15.0649+-0.0902 ? string-unpack-code 31.0751+-0.4038 ? 31.1186+-0.1856 ? string-validate-input 7.0238+-0.1051 ? 7.0292+-0.0589 ? <arithmetic> * 7.4731+-0.0149 ! 7.5090+-0.0121 ! definitely 1.0048x slower <geometric> 5.9636+-0.0044 ! 5.9948+-0.0098 ! definitely 1.0052x slower <harmonic> 4.8706+-0.0069 ! 4.8962+-0.0139 ! definitely 1.0053x slower TipOfTree InferConstClosure LongSpider: 3d-cube 2688.1418+-10.6655 ? 2694.1693+-6.0853 ? 3d-morph 1505.6124+-1.4850 1505.2880+-1.4175 3d-raytrace 1546.8071+-20.7261 1538.3861+-4.5666 access-binary-trees 2195.0808+-10.9519 ? 2200.0656+-12.1293 ? access-fannkuch 671.2556+-7.2202 666.8389+-3.0307 access-nbody 1496.0919+-1.2850 1495.8481+-0.8373 access-nsieve 1549.9365+-3.5279 ? 1561.5308+-28.1170 ? bitops-3bit-bits-in-byte 121.4071+-0.1159 ? 121.5552+-0.3241 ? bitops-bits-in-byte 619.4471+-2.5097 617.7735+-1.9121 bitops-nsieve-bits 1045.9646+-0.7847 ? 1047.1044+-0.9716 ? controlflow-recursive 1492.4583+-0.4425 ? 1492.6165+-0.6944 ? crypto-aes 1646.2260+-2.9662 ? 1648.5565+-6.3053 ? crypto-md5 1177.6470+-13.5925 1171.8501+-1.3995 crypto-sha1 1702.6676+-149.1954 1641.6657+-17.1778 might be 1.0372x faster date-format-tofte 1177.7609+-6.5563 ! 1209.3618+-17.8115 ! definitely 1.0268x slower date-format-xparb 1462.3250+-9.3955 ^ 1431.7562+-11.1928 ^ definitely 1.0214x faster math-cordic 1735.6093+-1.4208 1731.4899+-6.3273 math-partial-sums 1306.1804+-2.3798 1305.6983+-1.8734 math-spectral-norm 1826.9591+-1.5972 1826.3617+-0.6073 string-base64 506.0012+-1.5937 504.1431+-1.6183 string-fasta 988.9673+-2.6235 ? 994.8262+-5.2153 ? string-tagcloud 377.8290+-1.3537 ! 384.8073+-0.9561 ! definitely 1.0185x slower <arithmetic> 1310.9262+-6.5843 1308.7133+-2.1479 might be 1.0017x faster <geometric> * 1115.6763+-3.7509 1115.0316+-1.6436 might be 1.0006x faster <harmonic> 799.2485+-1.1917 ? 800.2049+-0.9782 ? might be 1.0012x slower TipOfTree InferConstClosure V8Spider: crypto 79.4193+-0.2292 ? 79.4963+-0.4007 ? deltablue 97.8427+-0.7746 ? 97.9674+-0.7418 ? earley-boyer 71.3501+-0.6923 70.9401+-0.3431 raytrace 40.5313+-0.8088 40.3742+-0.3703 regexp 100.2500+-0.3853 ? 100.5651+-0.3583 ? richards 134.3512+-1.8194 133.2791+-0.9807 splay 46.8579+-1.4577 45.8055+-0.3641 might be 1.0230x faster <arithmetic> 81.5146+-0.3407 81.2040+-0.1909 might be 1.0038x faster <geometric> * 75.6379+-0.3897 75.2722+-0.1733 might be 1.0049x faster <harmonic> 69.7861+-0.5190 69.3500+-0.2073 might be 1.0063x faster TipOfTree InferConstClosure Octane and V8v7: encrypt 0.46508+-0.00042 ? 0.46567+-0.00043 ? decrypt 8.56674+-0.01046 ? 8.61606+-0.10372 ? deltablue x2 0.56078+-0.00360 ? 0.56582+-0.00800 ? earley 0.90335+-0.00520 ? 0.90517+-0.00615 ? boyer 12.25230+-0.03791 ? 12.37577+-0.11147 ? might be 1.0101x slower raytrace x2 4.32045+-0.03102 4.28477+-0.02267 regexp x2 33.06621+-0.30748 33.02849+-0.11323 richards x2 0.43048+-0.00607 0.42611+-0.00602 might be 1.0103x faster splay x2 0.64250+-0.00780 ^ 0.63143+-0.00313 ^ definitely 1.0175x faster navier-stokes x2 10.70671+-0.00698 ? 10.75972+-0.12440 ? closure 0.42686+-0.00031 ! 0.43352+-0.00099 ! definitely 1.0156x slower jquery 6.17270+-0.01945 ! 6.34557+-0.00792 ! definitely 1.0280x slower gbemu x2 71.81246+-0.66737 71.77826+-0.88062 mandreel x2 141.81848+-0.23738 141.78387+-0.09789 pdfjs x2 101.35605+-0.38267 ? 101.93625+-0.26740 ? box2d x2 35.73520+-0.41931 ^ 35.09301+-0.21133 ^ definitely 1.0183x faster V8v7: <arithmetic> 7.60261+-0.04066 ? 7.60971+-0.02459 ? might be 1.0009x slower <geometric> * 2.50988+-0.00884 2.50556+-0.00737 might be 1.0017x faster <harmonic> 1.03273+-0.00563 1.02826+-0.00584 might be 1.0043x faster Octane including V8v7: <arithmetic> 31.91099+-0.05836 ? 31.91220+-0.07783 ? might be 1.0000x slower <geometric> * 6.98526+-0.01532 6.98241+-0.01634 might be 1.0004x faster <harmonic> 1.43524+-0.00671 1.43304+-0.00717 might be 1.0015x faster TipOfTree InferConstClosure Kraken: ai-astar 494.064+-0.534 493.463+-0.652 audio-beat-detection 237.347+-0.720 237.091+-0.428 audio-dft 289.929+-1.580 289.672+-0.681 audio-fft 143.069+-0.201 143.037+-0.207 audio-oscillator 244.545+-0.921 243.982+-0.372 imaging-darkroom 285.128+-0.690 ? 285.218+-0.621 ? imaging-desaturate 158.438+-0.152 158.407+-0.115 imaging-gaussian-blur 363.654+-0.387 363.580+-0.269 json-parse-financial 79.881+-0.233 ? 80.735+-0.884 ? might be 1.0107x slower json-stringify-tinderbox 105.025+-0.432 104.961+-0.240 stanford-crypto-aes 90.684+-0.451 ? 91.121+-0.328 ? stanford-crypto-ccm 101.625+-1.061 ? 101.931+-1.897 ? stanford-crypto-pbkdf2 263.707+-0.997 ? 266.069+-2.690 ? stanford-crypto-sha256-iterative 113.981+-0.445 ? 114.356+-0.493 ? <arithmetic> * 212.220+-0.290 ? 212.402+-0.213 ? might be 1.0009x slower <geometric> 182.482+-0.291 ? 182.794+-0.337 ? might be 1.0017x slower <harmonic> 157.640+-0.312 ? 158.075+-0.498 ? might be 1.0028x slower TipOfTree InferConstClosure JSRegress: adapt-to-double-divide 22.7328+-0.0695 22.6688+-0.1014 aliased-arguments-getbyval 0.9574+-0.0051 ? 0.9617+-0.0049 ? allocate-big-object 2.6308+-0.0294 2.6263+-0.0094 arity-mismatch-inlining 0.9253+-0.0054 ? 0.9389+-0.0368 ? might be 1.0148x slower array-access-polymorphic-structure 10.0620+-0.7100 9.8188+-0.0770 might be 1.0248x faster array-nonarray-polymorhpic-access 56.5547+-0.3582 56.4829+-0.3402 array-with-double-add 5.7442+-0.0737 ? 5.7852+-0.0248 ? array-with-double-increment 4.2837+-0.0337 ? 4.3070+-0.0127 ? array-with-double-mul-add 6.8137+-0.0557 6.7543+-0.0875 array-with-double-sum 7.9785+-0.1222 ? 8.0089+-0.0239 ? array-with-int32-add-sub 10.4180+-0.1122 ? 10.4293+-0.1137 ? array-with-int32-or-double-sum 7.9658+-0.0809 ? 8.0337+-0.0422 ? ArrayBuffer-DataView-alloc-large-long-lived 118.7181+-0.8529 ? 118.8959+-0.7333 ? ArrayBuffer-DataView-alloc-long-lived 30.4118+-0.1161 ? 30.5505+-0.1382 ? ArrayBuffer-Int32Array-byteOffset 7.0755+-0.0510 7.0550+-0.0718 ArrayBuffer-Int8Array-alloc-huge-long-lived 215.7998+-2.1402 ? 217.0345+-1.9527 ? ArrayBuffer-Int8Array-alloc-large-long-lived-fragmented 166.6461+-1.4534 ? 167.6655+-1.1342 ? ArrayBuffer-Int8Array-alloc-large-long-lived 120.2743+-1.7025 119.8776+-1.7932 ArrayBuffer-Int8Array-alloc-long-lived-buffer 50.8003+-1.2617 ^ 48.3267+-0.2586 ^ definitely 1.0512x faster ArrayBuffer-Int8Array-alloc-long-lived 31.4243+-0.7813 30.8441+-0.1706 might be 1.0188x faster ArrayBuffer-Int8Array-alloc 27.6349+-0.8288 ^ 26.6049+-0.1229 ^ definitely 1.0387x faster asmjs_bool_bug 9.4795+-0.0649 ? 9.5421+-0.0579 ? basic-set 26.3323+-0.2748 ^ 21.7538+-0.2551 ^ definitely 1.2105x faster big-int-mul 5.5120+-0.0256 ? 5.5482+-0.0408 ? boolean-test 4.3297+-0.0071 ? 4.3707+-0.0583 ? branch-fold 4.9608+-0.0061 ? 4.9675+-0.0170 ? captured-assignments 0.6116+-0.0366 0.5934+-0.0085 might be 1.0307x faster cast-int-to-double 12.4823+-0.1455 12.4045+-0.1003 cell-argument 15.7777+-0.4046 ? 16.2226+-0.3642 ? might be 1.0282x slower cfg-simplify 3.9512+-0.0119 3.9466+-0.0060 cmpeq-obj-to-obj-other 13.2437+-0.3604 12.8109+-0.7073 might be 1.0338x faster constant-test 8.8807+-0.1129 8.7993+-0.0971 DataView-custom-properties 125.3973+-0.9066 ? 126.0536+-0.6077 ? delay-tear-off-arguments-strictmode 3.5124+-0.0102 ? 3.5180+-0.0074 ? destructuring-arguments-length 171.7488+-0.6448 171.6874+-1.3538 destructuring-arguments 8.5639+-0.0927 ! 8.7638+-0.0589 ! definitely 1.0234x slower destructuring-swap 8.5542+-0.0500 8.5489+-0.0471 direct-arguments-getbyval 0.8478+-0.0139 ? 0.8584+-0.0040 ? might be 1.0125x slower double-pollution-getbyval 11.1129+-0.1036 11.1000+-0.1234 double-pollution-putbyoffset 6.6234+-0.0369 6.5860+-0.0231 empty-string-plus-int 11.0492+-0.0786 ? 11.1739+-0.0752 ? might be 1.0113x slower emscripten-cube2hash 53.4529+-0.2841 ! 54.9739+-0.1216 ! definitely 1.0285x slower emscripten-memops 7795.4755+-51.3751 ^ 6979.9327+-95.2383 ^ definitely 1.1168x faster external-arguments-getbyval 2.0111+-0.0185 ? 2.0432+-0.0663 ? might be 1.0160x slower external-arguments-putbyval 3.0772+-0.0163 3.0449+-0.0209 might be 1.0106x faster Float32Array-matrix-mult 6.5115+-0.0345 ? 6.5156+-0.0468 ? Float32Array-to-Float64Array-set 95.7622+-0.4151 94.6017+-1.2150 might be 1.0123x faster Float64Array-alloc-long-lived 103.7769+-0.6520 103.3845+-0.3392 Float64Array-to-Int16Array-set 122.7161+-1.1848 ^ 117.3658+-0.6867 ^ definitely 1.0456x faster fold-double-to-int 21.0493+-0.1417 20.9068+-0.0728 for-of-iterate-array-entries 8.6530+-0.1280 8.5061+-0.0431 might be 1.0173x faster for-of-iterate-array-keys 3.4605+-0.0747 ? 3.4756+-0.0410 ? for-of-iterate-array-values 2.9547+-0.0462 ? 2.9898+-0.0790 ? might be 1.0119x slower function-dot-apply 3.1245+-0.0138 ? 3.1263+-0.0042 ? function-test 4.6676+-0.0802 ? 4.7811+-0.0428 ? might be 1.0243x slower get-by-id-chain-from-try-block 7.9956+-0.1289 ? 8.0783+-0.0672 ? might be 1.0103x slower get-by-id-proto-or-self 26.0391+-0.2496 25.9992+-0.1710 get-by-id-self-or-proto 23.7499+-0.6781 23.5318+-0.5851 get_callee_monomorphic 4.7693+-0.0354 ! 4.8813+-0.0542 ! definitely 1.0235x slower get_callee_polymorphic 4.4665+-0.0129 ? 4.4921+-0.0226 ? global-var-const-infer-fire-from-opt 0.9463+-0.0121 ? 0.9529+-0.0102 ? global-var-const-infer 0.7613+-0.0034 ! 0.7720+-0.0057 ! definitely 1.0140x slower HashMap-put-get-iterate-keys 41.5692+-0.4400 ? 42.0465+-0.1471 ? might be 1.0115x slower HashMap-put-get-iterate 63.0926+-2.4861 61.1107+-1.1143 might be 1.0324x faster HashMap-string-put-get-iterate 55.4212+-0.7306 54.0280+-0.6852 might be 1.0258x faster imul-double-only 17.7911+-0.1716 17.7389+-0.1048 imul-int-only 14.7243+-0.1353 ? 14.8227+-0.1041 ? imul-mixed 21.9117+-0.0920 ? 22.4463+-0.8797 ? might be 1.0244x slower in-four-cases 25.9424+-0.1089 ? 25.9730+-0.1128 ? in-one-case-false 12.0701+-0.1327 ? 12.0870+-0.0435 ? in-one-case-true 12.0993+-0.1424 12.0729+-0.0884 in-two-cases 13.0198+-0.0918 12.8709+-0.0935 might be 1.0116x faster indexed-properties-in-objects 4.6358+-0.0512 ? 4.6704+-0.0099 ? infer-closure-const-then-mov-no-inline 7.3790+-0.0764 ! 15.4794+-0.1261 ! definitely 2.0978x slower infer-closure-const-then-mov 88.1257+-0.1026 ^ 28.8633+-0.1170 ^ definitely 3.0532x faster infer-closure-const-then-put-to-scope-no-inline 27.2998+-0.2236 ^ 17.7046+-0.1079 ^ definitely 1.5420x faster infer-closure-const-then-put-to-scope 80.3574+-0.0869 ^ 35.7252+-0.0820 ^ definitely 2.2493x faster infer-closure-const-then-reenter-no-inline 131.8811+-0.1285 ^ 84.2390+-0.2008 ^ definitely 1.5656x faster infer-closure-const-then-reenter 84.4510+-0.2728 ^ 36.0372+-0.2965 ^ definitely 2.3434x faster infer-one-time-closure-ten-vars 92.1990+-0.1100 ^ 29.0712+-0.2669 ^ definitely 3.1715x faster infer-one-time-closure-two-vars 28.7893+-0.1183 28.7515+-0.1431 infer-one-time-closure 28.8128+-0.2159 ? 28.9166+-0.2181 ? infer-one-time-deep-closure 60.8296+-0.1261 ^ 58.5076+-0.1740 ^ definitely 1.0397x faster inline-arguments-access 1.6119+-0.0166 ? 1.6176+-0.0040 ? inline-arguments-local-escape 22.4428+-0.1992 ? 22.8501+-0.2138 ? might be 1.0181x slower inline-get-scoped-var 7.3817+-0.1379 ? 7.4612+-0.0731 ? might be 1.0108x slower inlined-put-by-id-transition 15.2557+-0.2052 14.9467+-0.2515 might be 1.0207x faster int-or-other-abs-then-get-by-val 9.4083+-0.0508 ? 9.4113+-0.0821 ? int-or-other-abs-zero-then-get-by-val 41.4324+-0.2700 41.2165+-0.3582 int-or-other-add-then-get-by-val 10.4694+-0.1289 ? 10.4840+-0.0197 ? int-or-other-add 10.7401+-0.1033 ? 10.8850+-0.0923 ? might be 1.0135x slower int-or-other-div-then-get-by-val 6.3512+-0.0498 ? 6.3980+-0.1033 ? int-or-other-max-then-get-by-val 8.7746+-0.1471 8.7323+-0.1245 int-or-other-min-then-get-by-val 6.9771+-0.0239 ? 6.9904+-0.1203 ? int-or-other-mod-then-get-by-val 6.1162+-0.0127 ? 6.1181+-0.0173 ? int-or-other-mul-then-get-by-val 6.5173+-0.0879 ? 6.5293+-0.0868 ? int-or-other-neg-then-get-by-val 7.8571+-0.0154 ? 7.8729+-0.0324 ? int-or-other-neg-zero-then-get-by-val 42.6450+-1.0077 42.0935+-0.1698 might be 1.0131x faster int-or-other-sub-then-get-by-val 10.4290+-0.0794 ? 10.5828+-0.1117 ? might be 1.0147x slower int-or-other-sub 8.7681+-0.1312 ? 8.8729+-0.0754 ? might be 1.0120x slower int-overflow-local 6.4192+-0.0992 ? 6.4325+-0.0642 ? Int16Array-alloc-long-lived 67.4344+-0.3356 67.4165+-0.4927 Int16Array-bubble-sort-with-byteLength 49.0290+-0.1237 ? 49.0698+-0.2043 ? Int16Array-bubble-sort 48.4399+-0.1559 48.3439+-0.1189 Int16Array-load-int-mul 1.8048+-0.0116 ? 1.8205+-0.0205 ? Int16Array-to-Int32Array-set 94.1709+-0.6158 ^ 88.4683+-0.5921 ^ definitely 1.0645x faster Int32Array-alloc-huge-long-lived 707.4789+-6.3190 705.2322+-5.4013 Int32Array-alloc-huge 801.1260+-7.8242 ? 802.7616+-6.5923 ? Int32Array-alloc-large-long-lived 968.5314+-6.9465 ? 979.0441+-7.6307 ? might be 1.0109x slower Int32Array-alloc-large 45.1514+-0.9163 ? 45.2350+-0.9358 ? Int32Array-alloc-long-lived 80.2466+-0.6802 ? 80.5690+-0.5625 ? Int32Array-alloc 4.4883+-0.0152 ? 4.4987+-0.0090 ? Int32Array-Int8Array-view-alloc 15.8532+-0.3394 ^ 15.2002+-0.3081 ^ definitely 1.0430x faster int52-spill 13.3227+-0.1608 ? 13.6355+-0.2333 ? might be 1.0235x slower Int8Array-alloc-long-lived 67.4277+-1.0180 66.8928+-0.6107 Int8Array-load-with-byteLength 5.0249+-0.0575 ? 5.0605+-0.0084 ? Int8Array-load 5.0525+-0.0486 5.0479+-0.0462 integer-divide 14.8829+-0.0750 ? 14.9689+-0.1694 ? integer-modulo 2.0001+-0.0101 ? 2.0065+-0.0098 ? large-int-captured 9.7005+-0.1350 ! 10.0284+-0.1024 ! definitely 1.0338x slower large-int-neg 26.3249+-0.2677 ? 26.5246+-0.1809 ? large-int 23.5454+-0.1817 23.5243+-0.1900 lots-of-fields 11.0478+-0.1527 10.9352+-0.1043 might be 1.0103x faster make-indexed-storage 4.2604+-0.0561 ? 4.3024+-0.0799 ? make-rope-cse 5.9810+-0.0662 ? 5.9939+-0.1483 ? marsaglia-larger-ints 112.0397+-0.2621 112.0026+-0.3080 marsaglia-osr-entry 47.0259+-0.0985 ? 47.1119+-0.1815 ? marsaglia 463.9281+-0.3487 ? 465.5078+-4.7632 ? method-on-number 30.8364+-0.4381 ? 31.1339+-0.4830 ? negative-zero-divide 0.4240+-0.0033 ! 0.4343+-0.0018 ! definitely 1.0244x slower negative-zero-modulo 0.4065+-0.0026 ! 0.4191+-0.0023 ! definitely 1.0310x slower negative-zero-negate 0.3953+-0.0060 ? 0.4221+-0.0263 ? might be 1.0678x slower nested-function-parsing-random 381.4915+-0.3715 ! 383.0010+-0.7066 ! definitely 1.0040x slower nested-function-parsing 48.0322+-0.0804 48.0255+-0.2124 new-array-buffer-dead 3.7207+-0.0472 3.7160+-0.0150 new-array-buffer-push 10.4829+-0.1496 ? 10.6141+-0.1380 ? might be 1.0125x slower new-array-dead 28.5293+-0.1136 ? 28.5826+-0.1340 ? new-array-push 6.8304+-0.0811 ? 6.8945+-0.0544 ? number-test 4.2705+-0.0137 ! 4.2975+-0.0073 ! definitely 1.0063x slower object-closure-call 13.2238+-0.0787 ? 13.2758+-0.0283 ? object-test 4.8460+-0.0493 ? 4.8700+-0.0356 ? poly-stricteq 75.9438+-0.1864 ? 76.8582+-1.3692 ? might be 1.0120x slower polymorphic-structure 21.1963+-0.0887 21.0806+-0.0678 polyvariant-monomorphic-get-by-id 11.9407+-0.0738 ? 12.0076+-0.1596 ? put-by-id 19.1250+-0.3711 ? 19.3291+-0.1985 ? might be 1.0107x slower put-by-val-large-index-blank-indexing-type 10.8350+-0.1058 10.8255+-0.1102 rare-osr-exit-on-local 20.2508+-0.1127 ? 20.2563+-0.1010 ? register-pressure-from-osr 31.2747+-0.0515 31.2624+-0.0973 simple-activation-demo 35.0997+-0.0641 ! 39.0609+-0.1438 ! definitely 1.1129x slower slow-array-profile-convergence 4.0331+-0.0223 ? 4.1010+-0.1713 ? might be 1.0168x slower slow-convergence 4.1750+-0.0223 ? 4.2023+-0.0142 ? sparse-conditional 1.3463+-0.0019 ! 1.3604+-0.0068 ! definitely 1.0105x slower splice-to-remove 77.3097+-0.1252 77.2926+-0.1994 stepanov_container 10574.1981+-35.3169 ^ 10079.5626+-25.7090 ^ definitely 1.0491x faster string-concat-object 2.9823+-0.0115 ? 2.9914+-0.0107 ? string-concat-pair-object 2.9503+-0.0253 2.9310+-0.0098 string-concat-pair-simple 16.9589+-0.2881 ? 17.0600+-0.2501 ? string-concat-simple 17.2697+-0.2101 16.8959+-0.3971 might be 1.0221x faster string-cons-repeat 10.4980+-0.0299 ? 10.5032+-0.0149 ? string-cons-tower 11.1196+-0.0404 11.0422+-0.0424 string-equality 42.1516+-0.1052 ! 42.4629+-0.0902 ! definitely 1.0074x slower string-get-by-val-big-char 12.7971+-0.0625 ! 13.1920+-0.1001 ! definitely 1.0309x slower string-get-by-val-out-of-bounds-insane 5.8139+-0.1233 5.8003+-0.0759 string-get-by-val-out-of-bounds 5.3495+-0.0302 5.3453+-0.0103 string-get-by-val 4.8937+-0.0652 4.8299+-0.0793 might be 1.0132x faster string-hash 2.7448+-0.0119 ? 2.7519+-0.0048 ? string-long-ident-equality 37.7510+-0.6113 ? 38.0123+-0.7714 ? string-repeat-arith 49.9212+-0.3825 ? 50.4378+-0.2920 ? might be 1.0103x slower string-sub 98.1765+-0.4327 ? 98.8461+-0.6513 ? string-test 4.2326+-0.0096 ! 4.2617+-0.0063 ! definitely 1.0069x slower string-var-equality 70.2884+-0.1626 ? 73.3425+-6.8271 ? might be 1.0435x slower structure-hoist-over-transitions 3.3966+-0.0687 3.3779+-0.0231 switch-char-constant 3.4608+-0.0121 ? 3.4846+-0.0203 ? switch-char 8.1564+-0.0824 ? 8.1569+-0.0759 ? switch-constant 9.2999+-0.1213 9.2564+-0.1251 switch-string-basic-big-var 20.2915+-0.1369 ? 20.3280+-0.1411 ? switch-string-basic-big 21.6543+-0.8716 21.5615+-0.7276 switch-string-basic-var 20.1884+-0.0842 20.1300+-0.1272 switch-string-basic 21.4617+-0.7202 21.4024+-0.8822 switch-string-big-length-tower-var 29.0044+-0.0918 28.9097+-0.1448 switch-string-length-tower-var 21.5760+-0.1213 21.4601+-0.0878 switch-string-length-tower 16.4781+-0.1013 ? 16.4801+-0.1352 ? switch-string-short 16.4452+-0.0536 16.4339+-0.0612 switch 13.5520+-0.1113 13.5406+-0.0907 tear-off-arguments-simple 2.2378+-0.0419 2.2256+-0.0057 tear-off-arguments 3.5557+-0.0074 ? 3.5689+-0.0150 ? temporal-structure 17.0236+-0.1554 ? 17.0538+-0.0568 ? to-int32-boolean 21.8172+-0.1498 21.7991+-0.1510 undefined-test 4.4914+-0.0292 4.4691+-0.0360 weird-inlining-const-prop 2.2844+-0.0058 ? 2.2939+-0.0080 ? <arithmetic> 139.8108+-0.3185 ^ 131.5298+-0.4734 ^ definitely 1.0630x faster <geometric> * 14.7927+-0.0134 ^ 14.4775+-0.0148 ^ definitely 1.0218x faster <harmonic> 5.3339+-0.0130 ! 5.3819+-0.0224 ! definitely 1.0090x slower TipOfTree InferConstClosure All benchmarks: <arithmetic> 210.4214+-0.6744 ^ 204.7346+-0.3765 ^ definitely 1.0278x faster <geometric> 20.9056+-0.0182 ^ 20.6150+-0.0137 ^ definitely 1.0141x faster <harmonic> 4.8067+-0.0077 ! 4.8326+-0.0143 ! definitely 1.0054x slower TipOfTree InferConstClosure Geomean of preferred means: <scaled-result> 48.9925+-0.0579 ^ 48.8156+-0.0278 ^ definitely 1.0036x faster
Filip Pizlo
Comment 22 2013-12-03 18:26:12 PST
Created attachment 218371 [details] the patch Fix a bunch of build issues.
WebKit Commit Bot
Comment 23 2013-12-03 18:27:54 PST
Attachment 218371 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/js/regress/infer-closure-const-then-mov-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-mov-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-mov-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-mov.html', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-put-to-scope.html', u'LayoutTests/js/regress/infer-closure-const-then-reenter-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-reenter-no-inline-expected.txt', u'LayoutTests/js/regress/infer-closure-const-then-reenter-no-inline.html', u'LayoutTests/js/regress/infer-closure-const-then-reenter.html', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-mov-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-mov.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-put-to-scope-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-put-to-scope.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-reenter-no-inline.js', u'LayoutTests/js/regress/script-tests/infer-closure-const-then-reenter.js', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/Instruction.h', u'Source/JavaScriptCore/bytecode/Opcode.h', u'Source/JavaScriptCore/bytecode/UnlinkedCodeBlock.h', u'Source/JavaScriptCore/bytecode/VariableWatchpointSet.h', u'Source/JavaScriptCore/bytecode/Watchpoint.h', u'Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp', u'Source/JavaScriptCore/bytecompiler/BytecodeGenerator.h', u'Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.h', u'Source/JavaScriptCore/jit/JIT.cpp', u'Source/JavaScriptCore/jit/JIT.h', u'Source/JavaScriptCore/jit/JITOpcodes.cpp', u'Source/JavaScriptCore/jit/JITOpcodes32_64.cpp', u'Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm', u'Source/JavaScriptCore/llint/LowLevelInterpreter64.asm', u'Source/JavaScriptCore/runtime/CommonSlowPaths.cpp', u'Source/JavaScriptCore/runtime/CommonSlowPaths.h', u'Source/JavaScriptCore/runtime/ConstantMode.h', u'Source/JavaScriptCore/runtime/JSGlobalObject.h', u'Source/JavaScriptCore/runtime/JSScope.cpp', u'Source/JavaScriptCore/runtime/SymbolTable.cpp']" exit_code: 1 ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:251: The parameter name "set" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/CommonSlowPaths.cpp:265: The parameter name "set" adds no information, so it should be removed. [readability/parameter_name] [5] Total errors found: 2 in 46 files If any of these errors are false positives, please file a bug against check-webkit-style.
EFL EWS Bot
Comment 24 2013-12-04 06:28:30 PST
Comment on attachment 218371 [details] the patch Attachment 218371 [details] did not pass efl-wk2-ews (efl-wk2): Output: http://webkit-queues.appspot.com/results/40778074
Filip Pizlo
Comment 25 2013-12-04 09:12:16 PST
(In reply to comment #24) > (From update of attachment 218371 [details]) > Attachment 218371 [details] did not pass efl-wk2-ews (efl-wk2): > Output: http://webkit-queues.appspot.com/results/40778074 Internal compiler error. I will ignore.
Geoffrey Garen
Comment 26 2013-12-04 10:55:27 PST
Comment on attachment 218371 [details] the patch r=me
Filip Pizlo
Comment 27 2013-12-04 11:29:12 PST
Note You need to log in before you can comment on or make changes to this bug.