RESOLVED FIXED Bug 174590
Support compiling catch in the DFG
https://bugs.webkit.org/show_bug.cgi?id=174590
Summary Support compiling catch in the DFG
Saam Barati
Reported 2017-07-17 10:56:41 PDT
To do this, we should: - profile live values at catch. We'll use this in prediction injection. Might also need to be used in CFA - support multiple entrypoints in the DFG. Each catch site will be an entrypoint. - For FTL compilations, we might need something similar to ExtractOSREntryLocal
Attachments
it begins (13.69 KB, patch)
2017-07-26 12:42 PDT, Saam Barati
no flags
WIP (14.18 KB, patch)
2017-07-26 12:55 PDT, Saam Barati
no flags
WIP (22.01 KB, patch)
2017-07-26 21:16 PDT, Saam Barati
no flags
WIP (28.40 KB, patch)
2017-07-27 00:43 PDT, Saam Barati
no flags
WIP (31.33 KB, patch)
2017-07-27 11:31 PDT, Saam Barati
no flags
WIP (34.68 KB, patch)
2017-07-31 14:16 PDT, Saam Barati
no flags
WIP (39.89 KB, patch)
2017-08-02 14:48 PDT, Saam Barati
no flags
WIP (56.15 KB, patch)
2017-08-03 14:47 PDT, Saam Barati
no flags
WIP (58.37 KB, patch)
2017-08-03 16:22 PDT, Saam Barati
no flags
WIP (62.90 KB, patch)
2017-08-03 17:39 PDT, Saam Barati
no flags
WIP (64.35 KB, patch)
2017-08-03 18:11 PDT, Saam Barati
no flags
WIP (68.16 KB, patch)
2017-08-03 19:03 PDT, Saam Barati
no flags
WIP (67.61 KB, patch)
2017-08-03 19:43 PDT, Saam Barati
no flags
WIP (67.61 KB, patch)
2017-08-06 09:30 PDT, Saam Barati
no flags
WIP (72.22 KB, patch)
2017-08-06 10:49 PDT, Saam Barati
no flags
WIP (73.91 KB, patch)
2017-08-06 15:31 PDT, Saam Barati
no flags
WIP (74.50 KB, patch)
2017-08-06 17:44 PDT, Saam Barati
no flags
WIP (74.52 KB, patch)
2017-08-06 19:12 PDT, Saam Barati
no flags
WIP (75.66 KB, patch)
2017-08-06 19:32 PDT, Saam Barati
no flags
WIP (75.17 KB, patch)
2017-08-09 14:26 PDT, Saam Barati
no flags
WIP (88.70 KB, patch)
2017-08-09 20:14 PDT, Saam Barati
no flags
WIP (88.66 KB, patch)
2017-08-09 20:20 PDT, Saam Barati
no flags
WIP (88.71 KB, patch)
2017-08-09 20:28 PDT, Saam Barati
no flags
WIP (88.41 KB, patch)
2017-08-10 20:39 PDT, Saam Barati
no flags
WIP (91.33 KB, patch)
2017-08-11 11:43 PDT, Saam Barati
no flags
WIP (91.57 KB, patch)
2017-08-11 11:58 PDT, Saam Barati
no flags
WIP (125.33 KB, patch)
2017-08-13 18:48 PDT, Saam Barati
no flags
WIP (127.45 KB, patch)
2017-08-13 19:22 PDT, Saam Barati
no flags
WIP (128.95 KB, patch)
2017-08-13 21:44 PDT, Saam Barati
no flags
WIP (130.34 KB, patch)
2017-08-13 22:39 PDT, Saam Barati
no flags
WIP (133.66 KB, patch)
2017-08-14 15:54 PDT, Saam Barati
no flags
WIP (137.66 KB, patch)
2017-08-14 16:48 PDT, Saam Barati
no flags
WIP (137.66 KB, patch)
2017-08-14 16:52 PDT, Saam Barati
buildbot: commit-queue-
WIP (144.00 KB, patch)
2017-08-14 19:10 PDT, Saam Barati
no flags
WIP (147.19 KB, patch)
2017-08-14 20:41 PDT, Saam Barati
no flags
WIP (137.24 KB, patch)
2017-08-15 11:22 PDT, Saam Barati
no flags
WIP (139.95 KB, patch)
2017-08-15 12:39 PDT, Saam Barati
no flags
WIP (139.98 KB, patch)
2017-08-15 12:46 PDT, Saam Barati
no flags
WIP (139.72 KB, patch)
2017-08-15 14:03 PDT, Saam Barati
no flags
WIP (138.26 KB, patch)
2017-08-15 14:24 PDT, Saam Barati
no flags
WIP (139.07 KB, patch)
2017-08-15 15:33 PDT, Saam Barati
no flags
WIP (141.25 KB, patch)
2017-08-15 17:58 PDT, Saam Barati
no flags
WIP (141.21 KB, patch)
2017-08-15 18:38 PDT, Saam Barati
no flags
WIP (170.05 KB, patch)
2017-08-15 19:50 PDT, Saam Barati
buildbot: commit-queue-
Archive of layout-test-results from ews115 for mac-elcapitan (3.64 MB, application/zip)
2017-08-15 21:51 PDT, Build Bot
no flags
WIP (171.02 KB, patch)
2017-08-16 13:01 PDT, Saam Barati
no flags
WIP (171.43 KB, patch)
2017-08-16 20:36 PDT, Saam Barati
no flags
WIP (183.32 KB, patch)
2017-08-17 20:00 PDT, Saam Barati
no flags
WIP (186.36 KB, patch)
2017-08-18 19:16 PDT, Saam Barati
no flags
WIP (191.54 KB, patch)
2017-08-21 13:15 PDT, Saam Barati
no flags
WIP (195.42 KB, patch)
2017-08-21 23:45 PDT, Saam Barati
no flags
WIP (197.45 KB, patch)
2017-08-22 15:21 PDT, Saam Barati
no flags
patch (219.86 KB, patch)
2017-08-22 17:41 PDT, Saam Barati
fpizlo: review+
patch for landing (240.27 KB, patch)
2017-08-23 15:22 PDT, Saam Barati
saam: commit-queue-
patch for landing (240.26 KB, patch)
2017-08-23 16:15 PDT, Saam Barati
no flags
Saam Barati
Comment 1 2017-07-26 12:42:11 PDT
Created attachment 316464 [details] it begins
Saam Barati
Comment 2 2017-07-26 12:55:16 PDT
Created attachment 316466 [details] WIP A tad bit more. I think the value profiling is working. I'm still not sure the way I did it is exactly what I want, but it's good enough to start implementing things in the DFG/FTL.
Saam Barati
Comment 3 2017-07-26 21:16:14 PDT
Saam Barati
Comment 4 2017-07-27 00:43:43 PDT
Saam Barati
Comment 5 2017-07-27 11:31:12 PDT
Created attachment 316558 [details] WIP I'm contemplating how I want to do SetArgument. Right now, we'll hoist type checks up to SetArgument, so it would be invalid to have DFG IR like this: ``` #0: SetArgument GetLocal(type check) ... EntrySwitch(#1, #2) #1: normal entry point #2 ExtractCatchVariable(exitNotOK) MovHint() SetLocal() .... ``` and also hoist type checks to the root block. So I'm thinking we may want the notion of multiple primordial SetArguments, and this will allow the above program to be: ``` #0 EntrySwitch(#1, #2) #1: normal entry point SetArgument() GetLocal(type check) .... #2 ExtractCatchVariable(exitNotOK) MovHint() SetLocal() ExitOK() SetArgument() GetLocal(type check) ... ``` But I need to think through this a bit more. We have code in a lot of places that assume there is only one set of primordial SetArgument nodes.
Saam Barati
Comment 6 2017-07-27 13:47:26 PDT
(In reply to Saam Barati from comment #5) > Created attachment 316558 [details] > WIP > > I'm contemplating how I want to do SetArgument. Right now, we'll hoist type > checks up to SetArgument, so it would be invalid to have DFG IR like this: > ``` > #0: > SetArgument > GetLocal(type check) > ... > EntrySwitch(#1, #2) > > #1: > normal entry point > > #2 > ExtractCatchVariable(exitNotOK) > MovHint() > SetLocal() > .... > ``` > > and also hoist type checks to the root block. So I'm thinking we may want > the notion of multiple primordial SetArguments, and this will allow the > above program to be: > > ``` > #0 > EntrySwitch(#1, #2) > > #1: > normal entry point > SetArgument() > GetLocal(type check) > .... > > #2 > ExtractCatchVariable(exitNotOK) > MovHint() > SetLocal() > ExitOK() > SetArgument() > GetLocal(type check) > ... > ``` > > But I need to think through this a bit more. We have code in a lot of places > that assume there is only one set of primordial SetArgument nodes. I suppose another alternative is to keep only one set of primordial SetArgument nodes, but to only allow the type check hoisting to happen once we've proven we're safe to exit.
Saam Barati
Comment 7 2017-07-31 14:16:09 PDT
Saam Barati
Comment 8 2017-08-02 14:48:25 PDT
Created attachment 317002 [details] WIP Some more. To get around the issue above, I think the plan is to introduce the concept of different entrypoints abstractly in the DFG. So places that do graph.block(0) will often just walk a vector of blocks that are the entrypoints. Then we'll OSR enter at these various entrypoints for the DFG. When converting to SSA, we'll move back to one true root block, and have that block have an EntrySwitch.
Saam Barati
Comment 9 2017-08-03 14:47:06 PDT
Saam Barati
Comment 10 2017-08-03 16:20:02 PDT
I'm starting to think this can be made two patches: 1. OSR enter into DFG 2. OSR enter into FTL
Saam Barati
Comment 11 2017-08-03 16:22:51 PDT
Saam Barati
Comment 12 2017-08-03 17:39:44 PDT
Created attachment 317186 [details] WIP I think I'm really close to actually starting to run some code.
Saam Barati
Comment 13 2017-08-03 18:11:39 PDT
Created attachment 317190 [details] WIP Unsurprisingly, it crashes running: ``` function f(i) { if (i) throw "foo"; } noInline(f); function foo(i) { let x = 20; try { f(i); } catch(e) { x = 30; } print(x); } noInline(foo); for (let i = 0; i < 1000; ++i) foo(!!(i%2)); ```
Saam Barati
Comment 14 2017-08-03 19:03:20 PDT
Created attachment 317196 [details] WIP Ok, it now ran the above program!
Saam Barati
Comment 15 2017-08-03 19:43:41 PDT
Saam Barati
Comment 16 2017-08-06 09:30:42 PDT
Saam Barati
Comment 17 2017-08-06 10:49:48 PDT
Created attachment 317368 [details] WIP It runs a handful of try/catch microbenchmarks I added a while ago. It also crashes on at least one of them. I remove Graph::m_arguments. It's now replaced with a map from Entrypoint->arguments.
Saam Barati
Comment 18 2017-08-06 15:31:23 PDT
Created attachment 317386 [details] WIP It passes all the try/catch tests I tried locally. Going to run all jsc tests and see what happens. There are still quite a few things I want to do to clean this patch up.
Saam Barati
Comment 19 2017-08-06 17:44:40 PDT
Created attachment 317389 [details] WIP More. Fixed a bug in FTL OSR entrypoint creation phase.
Saam Barati
Comment 20 2017-08-06 18:42:08 PDT
It passes all JSC tests. Now I need to start refining the patch.
Saam Barati
Comment 21 2017-08-06 19:12:40 PDT
Saam Barati
Comment 22 2017-08-06 19:32:23 PDT
Saam Barati
Comment 23 2017-08-09 14:26:19 PDT
Created attachment 317742 [details] WIP rebased
Saam Barati
Comment 24 2017-08-09 20:14:24 PDT
Created attachment 317777 [details] WIP starting to clean up the patch a bit
Saam Barati
Comment 25 2017-08-09 20:20:37 PDT
Saam Barati
Comment 26 2017-08-09 20:28:01 PDT
Saam Barati
Comment 27 2017-08-10 20:39:57 PDT
Saam Barati
Comment 28 2017-08-11 11:43:27 PDT
Created attachment 317942 [details] WIP Still need to write a CPSCFG class.
Saam Barati
Comment 29 2017-08-11 11:58:19 PDT
Saam Barati
Comment 30 2017-08-13 18:48:55 PDT
Created attachment 318018 [details] WIP Starting the process of specifying: - CPSCFG vs SSACFG - SSADominators vs CPSDominators - SSANaturalLoops vs CPSNaturalLoops
Saam Barati
Comment 31 2017-08-13 19:22:29 PDT
Created attachment 318019 [details] WIP still need to get it to compile
Saam Barati
Comment 32 2017-08-13 21:44:35 PDT
Created attachment 318023 [details] WIP It compiles.
Saam Barati
Comment 33 2017-08-13 22:39:32 PDT
Saam Barati
Comment 34 2017-08-14 15:54:08 PDT
Saam Barati
Comment 35 2017-08-14 16:48:59 PDT
Saam Barati
Comment 36 2017-08-14 16:52:25 PDT
Build Bot
Comment 37 2017-08-14 16:55:58 PDT
Attachment 318087 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:414: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:414: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:414: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:431: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:436: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:450: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:470: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:198: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:199: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:205: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:54: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:40: Alphabetical sorting problem. [build/include_order] [4] Total errors found: 16 in 74 files If any of these errors are false positives, please file a bug against check-webkit-style.
Build Bot
Comment 38 2017-08-14 18:01:04 PDT
Comment on attachment 318087 [details] WIP Attachment 318087 [details] did not pass jsc-ews (mac): Output: http://webkit-queues.webkit.org/results/4314855 New failing tests: stress/const-exception-handling.js.ftl-eager-no-cjit-b3o1 stress/lexical-let-exception-handling.js.ftl-eager-no-cjit-b3o1 stress/const-exception-handling.js.ftl-eager-no-cjit stress/lexical-let-exception-handling.js.ftl-eager-no-cjit
Saam Barati
Comment 39 2017-08-14 19:10:14 PDT
Created attachment 318099 [details] WIP These test failures are real. I'm trying to debug the crash, but it's hard. I think it's a memory smasher somewhere, and it doesn't crash with ASAN enabled.
Saam Barati
Comment 40 2017-08-14 20:41:06 PDT
Created attachment 318107 [details] WIP I found the bug. It has to do with: !!node->hasHeapPrediction implies that the origin bytecode also has a heap prediction. This is obviously not true for op_after_catch and ExtractCatchLocal. Will fix this in next WIP.
Saam Barati
Comment 41 2017-08-15 11:22:07 PDT
Saam Barati
Comment 42 2017-08-15 12:39:46 PDT
Created attachment 318148 [details] WIP We were using the CPSCFG incorrectly before because we were creating it too early. Fixed in this WIP
Saam Barati
Comment 43 2017-08-15 12:46:24 PDT
Created attachment 318150 [details] WIP rebased
Build Bot
Comment 44 2017-08-15 12:49:03 PDT
Attachment 318150 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:198: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:199: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGValidate.cpp:205: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:40: Alphabetical sorting problem. [build/include_order] [4] Total errors found: 11 in 75 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 45 2017-08-15 14:03:21 PDT
Created attachment 318169 [details] WIP should build now
Saam Barati
Comment 46 2017-08-15 14:24:51 PDT
Created attachment 318173 [details] WIP ok, it actually builds now
Build Bot
Comment 47 2017-08-15 14:27:51 PDT
Attachment 318173 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:41: Alphabetical sorting problem. [build/include_order] [4] Total errors found: 8 in 74 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 48 2017-08-15 15:33:20 PDT
Created attachment 318185 [details] WIP maybe 32-bit builds now
Build Bot
Comment 49 2017-08-15 15:36:15 PDT
Attachment 318185 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] Total errors found: 7 in 74 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 50 2017-08-15 17:58:53 PDT
Created attachment 318208 [details] WIP I think this is just about ready for review. I want to write a few tests and a changelog.
Build Bot
Comment 51 2017-08-15 18:01:29 PDT
Attachment 318208 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] Total errors found: 7 in 75 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 52 2017-08-15 18:38:22 PDT
Created attachment 318214 [details] WIP trying to get 32-bit to build
Build Bot
Comment 53 2017-08-15 18:41:37 PDT
Attachment 318214 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] Total errors found: 7 in 75 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 54 2017-08-15 19:50:53 PDT
Build Bot
Comment 55 2017-08-15 19:53:20 PDT
Attachment 318218 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] Total errors found: 7 in 77 files If any of these errors are false positives, please file a bug against check-webkit-style.
Build Bot
Comment 56 2017-08-15 21:51:26 PDT
Comment on attachment 318218 [details] WIP Attachment 318218 [details] did not pass mac-debug-ews (mac): Output: http://webkit-queues.webkit.org/results/4321573 Number of test failures exceeded the failure limit.
Build Bot
Comment 57 2017-08-15 21:51:32 PDT
Created attachment 318225 [details] Archive of layout-test-results from ews115 for mac-elcapitan The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews115 Port: mac-elcapitan Platform: Mac OS X 10.11.6
Build Bot
Comment 58 2017-08-16 00:19:43 PDT
Comment on attachment 318218 [details] WIP Attachment 318218 [details] did not pass jsc-ews (mac): Output: http://webkit-queues.webkit.org/results/4321936 New failing tests: stress/const-loop-semantics.js.ftl-no-cjit-no-put-stack-validate stress/arrowfunction-lexical-bind-supercall-3.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-lexical-bind-newtarget.js.dfg-maximal-flush-validate-no-cjit stress/dont-unwind-past-vm-entry-frame.js.dfg-maximal-flush-validate-no-cjit mozilla-tests.yaml/ecma_3/RegExp/regress-98306.js.mozilla-ftl-eager-no-cjit-validate-phases stress/const-not-strict-mode.js.dfg-maximal-flush-validate-no-cjit stress/proxy-set-prototype-of.js.ftl-eager-no-cjit mozilla-tests.yaml/ecma_3/RegExp/regress-98306.js.mozilla-dfg-eager-no-cjit-validate-phases stress/regress-163748.js.ftl-eager-no-cjit-b3o1 microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-no-put-stack-validate stress/inferred-infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit stress/destructuring-assignment-syntax.js.dfg-eager-no-cjit-validate stress/super-method-calls-check-tdz.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.ftl-no-cjit-validate-sampling-profiler stress/spec-empty-flows-through-cell-checks.js.dfg-maximal-flush-validate-no-cjit stress/typedarray-access-neutered.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.ftl-no-cjit-no-put-stack-validate stress/eval-func-decl-in-eval-within-with-scope.js.dfg-maximal-flush-validate-no-cjit stress/custom-iterators.js.dfg-eager-no-cjit-validate stress/eval-func-decl-block-with-var-sinthesize.js.dfg-maximal-flush-validate-no-cjit stress/eval-func-decl-within-eval-without-reassign-to-let.js.dfg-maximal-flush-validate-no-cjit stress/array-species-config-array-constructor.js.dfg-maximal-flush-validate-no-cjit stress/custom-iterators.js.ftl-eager-no-cjit stress/const-loop-semantics.js.dfg-eager-no-cjit-validate microbenchmarks/richards-try-catch.js.dfg-maximal-flush-validate-no-cjit stress/proxy-get-and-set-recursion-stack-overflow.js.dfg-maximal-flush-validate-no-cjit stress/lexical-scoping-break-continue.js.dfg-maximal-flush-validate-no-cjit stress/proxy-call.js.dfg-maximal-flush-validate-no-cjit stress/async-await-syntax.js.dfg-eager-no-cjit-validate stress/infinite-loop-that-uses-captured-variables-before-throwing.js.dfg-maximal-flush-validate-no-cjit mozilla-tests.yaml/ecma_3/RegExp/regress-188206.js.mozilla-ftl-eager-no-cjit-validate-phases stress/proxy-set.js.dfg-maximal-flush-validate-no-cjit stress/SharedArrayBuffer-opt.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-not-strict-mode.js.dfg-eager-no-cjit-validate stress/proxy-property-descriptor.js.dfg-maximal-flush-validate-no-cjit stress/variable-named-eval-under-tdz.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/v8-raytrace-with-try-catch.js.ftl-eager-no-cjit stress/create-subclass-structure-might-throw.js.ftl-eager-no-cjit-b3o1 microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-validate-sampling-profiler stress/tail-call-recognize.js.dfg-eager-no-cjit-validate stress/tail-call-recognize.js.ftl-eager-no-cjit-b3o1 stress/lexical-let-loop-semantics.js.dfg-maximal-flush-validate-no-cjit stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit-b3o1 stress/const-exception-handling.js.ftl-eager-no-cjit-b3o1 stress/builtin-function-is-construct-type-none.js.dfg-maximal-flush-validate-no-cjit stress/global-lexical-var-injection.js.dfg-maximal-flush-validate-no-cjit stress/infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit stress/tail-call-recognize.js.ftl-no-cjit-validate-sampling-profiler stress/const-not-strict-mode.js.no-cjit-validate-phases stress/regress-159779-1.js.ftl-eager-no-cjit stress/lexical-scoping-break-continue.js.ftl-eager-no-cjit-b3o1 stress/es6-default-parameters.js.dfg-maximal-flush-validate-no-cjit stress/proxy-json.js.dfg-maximal-flush-validate-no-cjit stress/template-literal-syntax.js.dfg-eager-no-cjit-validate stress/activation-sink-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit stress/regress-163748.js.dfg-eager-no-cjit-validate microbenchmarks/raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit stress/delete-to-object-exception.js.dfg-maximal-flush-validate-no-cjit stress/class-syntax-tdz-in-catch.js.dfg-maximal-flush-validate-no-cjit stress/import-syntax.js.ftl-eager-no-cjit stress/async-await-reserved-word.js.dfg-eager-no-cjit-validate stress/custom-iterators.js.ftl-eager-no-cjit-b3o1 stress/lexical-scoping-break-continue.js.ftl-eager-no-cjit stress/template-literal-syntax.js.ftl-eager-no-cjit stress/class-syntax-tdz-in-eval.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-not-strict-mode.js.ftl-eager-no-cjit stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit stress/es6-default-parameters.js.ftl-eager-no-cjit stress/tricky-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-lexical-bind-supercall-1.js.dfg-maximal-flush-validate-no-cjit stress/eval-func-decl-in-eval-within-block-with-let.js.dfg-maximal-flush-validate-no-cjit stress/symbol-toprimitive.js.dfg-maximal-flush-validate-no-cjit mozilla-tests.yaml/ecma_2/Statements/try-010.js.mozilla-dfg-eager-no-cjit-validate-phases mozilla-tests.yaml/ecma_2/Statements/try-001.js.mozilla-ftl-eager-no-cjit-validate-phases stress/async-await-basic.js.dfg-eager-no-cjit-validate stress/class-syntax-tdz.js.dfg-maximal-flush-validate-no-cjit stress/const-loop-semantics.js.ftl-eager-no-cjit stress/const-exception-handling.js.ftl-eager-no-cjit microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-eager-no-cjit microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-eager-no-cjit-b3o1 stress/proxy-revoke.js.ftl-no-cjit-validate-sampling-profiler stress/put-direct-index-broken-2.js.dfg-maximal-flush-validate-no-cjit stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit stress/tagged-templates-syntax.js.ftl-eager-no-cjit-b3o1 stress/class-syntax-double-constructor.js.dfg-maximal-flush-validate-no-cjit stress/proxy-has-property.js.dfg-maximal-flush-validate-no-cjit stress/typedarray-bad-getter.js.dfg-maximal-flush-validate-no-cjit stress/dfg-put-by-val-direct-with-edge-numbers.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-tdz.js.dfg-maximal-flush-validate-no-cjit stress/async-await-basic.js.ftl-eager-no-cjit-b3o1 stress/const-loop-semantics.js.ftl-no-cjit-no-inline-validate stress/import-syntax.js.dfg-eager-no-cjit-validate microbenchmarks/delta-blue-try-catch.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.ftl-no-cjit-no-inline-validate stress/catch-variables-under-tdz.js.dfg-eager-no-cjit-validate stress/global-lexical-variable-tdz.js.dfg-maximal-flush-validate-no-cjit stress/global-lexical-var-injection.js.ftl-no-cjit-validate-sampling-profiler stress/proxy-get-prototype-of.js.dfg-eager-no-cjit-validate stress/typedarray-functions-with-neutered.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-tdz-2.js.dfg-maximal-flush-validate-no-cjit stress/async-await-reserved-word.js.ftl-eager-no-cjit microbenchmarks/v8-raytrace-with-try-catch.js.ftl-eager-no-cjit-b3o1 stress/proxy-revoke.js.ftl-no-cjit-no-inline-validate microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-no-inline-validate stress/global-lexical-var-injection.js.ftl-eager-no-cjit stress/lexical-let-exception-handling.js.dfg-eager-no-cjit-validate stress/regress-153486.js.dfg-maximal-flush-validate-no-cjit stress/create-subclass-structure-might-throw.js.no-cjit-validate-phases stress/lexical-scoping-break-continue.js.ftl-no-cjit-validate-sampling-profiler stress/const-tdz.js.dfg-maximal-flush-validate-no-cjit stress/catch-variables-under-tdz.js.ftl-eager-no-cjit mozilla-tests.yaml/ecma_2/Statements/try-010.js.mozilla-ftl-eager-no-cjit-validate-phases stress/arrowfunction-lexical-bind-supercall-4.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-validate-sampling-profiler stress/tagged-template-tdz.js.dfg-maximal-flush-validate-no-cjit stress/create-subclass-structure-might-throw.js.ftl-no-cjit-validate-sampling-profiler stress/const-not-strict-mode.js.ftl-eager-no-cjit stress/es6-default-parameters.js.ftl-eager-no-cjit-b3o1 stress/activation-sink-osrexit-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-tdz-1.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-exception-handling.js.ftl-eager-no-cjit-b3o1 stress/tail-call-recognize.js.ftl-no-cjit-no-inline-validate stress/const-loop-semantics.js.ftl-no-cjit-validate-sampling-profiler stress/async-arrow-functions-lexical-super-binding.js.dfg-eager-no-cjit-validate stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit stress/function-constructor-reading-from-global-lexical-environment.js.dfg-maximal-flush-validate-no-cjit stress/const-loop-semantics.js.ftl-eager-no-cjit-b3o1 stress/eval-func-decl-within-eval-with-reassign-to-var.js.dfg-maximal-flush-validate-no-cjit stress/strcat-emtpy.js.dfg-maximal-flush-validate-no-cjit stress/proxy-get-prototype-of.js.ftl-eager-no-cjit stress/dont-strength-reduce-valuerep-of-doublerep.js.dfg-maximal-flush-validate-no-cjit stress/proxy-revoke.js.ftl-no-cjit-no-put-stack-validate stress/lexical-scoping-break-continue.js.ftl-no-cjit-no-inline-validate stress/super-get-by-id.js.dfg-eager-no-cjit-validate stress/tricky-infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit stress/global-lexical-var-injection.js.dfg-eager-no-cjit-validate stress/rest-parameter-is-destructuring.js.dfg-maximal-flush-validate-no-cjit stress/domjit-getter-complex-with-incorrect-object.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.dfg-eager-no-cjit-validate microbenchmarks/string-transcoding.js.dfg-maximal-flush-validate-no-cjit stress/tricky-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit stress/destructuring-assignment-syntax.js.ftl-eager-no-cjit stress/typedarray-access-monomorphic-neutered.js.dfg-maximal-flush-validate-no-cjit stress/const-loop-semantics.js.no-cjit-validate-phases microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-no-inline-validate stress/infinite-loop-that-uses-captured-variables-but-they-do-not-escape.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-constructor.js.dfg-maximal-flush-validate-no-cjit stress/async-await-reserved-word.js.ftl-eager-no-cjit-b3o1 stress/create-subclass-structure-might-throw.js.dfg-eager-no-cjit-validate stress/proxy-set-prototype-of.js.dfg-eager-no-cjit-validate stress/proxy-revoke.js.dfg-maximal-flush-validate-no-cjit stress/cloned-arguments-modification.js.dfg-maximal-flush-validate-no-cjit stress/import-syntax.js.ftl-eager-no-cjit-b3o1 stress/proxy-delete.js.dfg-maximal-flush-validate-no-cjit stress/reserved-word-with-escape.js.dfg-eager-no-cjit-validate stress/async-await-syntax.js.ftl-eager-no-cjit stress/proxy-is-array.js.dfg-maximal-flush-validate-no-cjit stress/tail-call-recognize.js.no-cjit-validate-phases stress/proxy-revoke.js.ftl-eager-no-cjit stress/const-loop-semantics.js.dfg-maximal-flush-validate-no-cjit stress/array-reverse-proxy.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-lexical-bind-supercall-2.js.dfg-maximal-flush-validate-no-cjit stress/proxy-get-prototype-of.js.ftl-eager-no-cjit-b3o1 microbenchmarks/fake-iterators-that-throw-when-finished.js.no-cjit-validate-phases stress/lexical-let-exception-handling.js.ftl-eager-no-cjit stress/super-get-by-id.js.no-cjit-validate-phases stress/proxy-own-keys.js.dfg-maximal-flush-validate-no-cjit stress/operation-in-throw-error.js.dfg-maximal-flush-validate-no-cjit stress/es6-default-parameters.js.dfg-eager-no-cjit-validate stress/reserved-word-with-escape.js.ftl-eager-no-cjit stress/create-subclass-structure-might-throw.js.ftl-no-cjit-no-inline-validate stress/global-lexical-var-injection.js.ftl-eager-no-cjit-b3o1 stress/global-lexical-var-injection.js.ftl-no-cjit-no-put-stack-validate stress/template-literal-line-terminators.js.ftl-eager-no-cjit-b3o1 stress/dfg-call-class-constructor.js.dfg-maximal-flush-validate-no-cjit stress/create-subclass-structure-might-throw.js.ftl-no-cjit-no-put-stack-validate stress/async-await-mozilla.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.ftl-eager-no-cjit-b3o1 stress/regress-159779-2.js.ftl-eager-no-cjit stress/destructuring-assignment-syntax.js.ftl-eager-no-cjit-b3o1 stress/class-syntax-tdz-in-conditional.js.dfg-maximal-flush-validate-no-cjit mozilla-tests.yaml/ecma_2/Statements/try-001.js.mozilla-dfg-eager-no-cjit-validate-phases microbenchmarks/v8-raytrace-with-try-catch.js.no-cjit-validate-phases stress/super-get-by-id.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-not-strict-mode.js.ftl-eager-no-cjit-b3o1 mozilla-tests.yaml/ecma_3/RegExp/regress-188206.js.mozilla-dfg-eager-no-cjit-validate-phases stress/reflect-construct.js.dfg-maximal-flush-validate-no-cjit stress/class-syntax-no-tdz-in-catch.js.dfg-maximal-flush-validate-no-cjit stress/super-property-access-tdz.js.dfg-maximal-flush-validate-no-cjit stress/string-prototype-methods-endsWith-startsWith-includes-correctness.js.dfg-maximal-flush-validate-no-cjit stress/class-syntax-tdz-in-loop.js.dfg-maximal-flush-validate-no-cjit stress/eval-func-decl-in-global-of-eval.js.dfg-maximal-flush-validate-no-cjit stress/class-derived-from-null.js.dfg-maximal-flush-validate-no-cjit stress/super-get-by-id.js.ftl-no-cjit-no-put-stack-validate microbenchmarks/v8-raytrace-with-try-catch.js.dfg-eager-no-cjit-validate stress/reflect-set-proxy-set.js.dfg-maximal-flush-validate-no-cjit stress/tail-call-recognize.js.ftl-eager-no-cjit stress/global-lexical-var-injection.js.ftl-no-cjit-no-inline-validate stress/async-await-basic.js.ftl-eager-no-cjit stress/dfg-exception-try-catch-in-constructor-with-inlined-throw.js.dfg-maximal-flush-validate-no-cjit stress/tail-call-recognize.js.ftl-no-cjit-no-put-stack-validate stress/proxy-revoke.js.no-cjit-validate-phases stress/eval-func-decl-block-with-var-and-remove.js.dfg-maximal-flush-validate-no-cjit stress/template-literal-line-terminators.js.dfg-eager-no-cjit-validate stress/catch-variables-under-tdz.js.ftl-eager-no-cjit-b3o1 stress/global-lexical-var-injection.js.no-cjit-validate-phases stress/global-lexical-redefine-const.js.dfg-maximal-flush-validate-no-cjit stress/async-await-syntax.js.ftl-eager-no-cjit-b3o1 stress/lexical-scoping-break-continue.js.dfg-eager-no-cjit-validate stress/typedarray-configure-index.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-not-strict-mode.js.dfg-maximal-flush-validate-no-cjit stress/super-get-by-id.js.ftl-no-cjit-validate-sampling-profiler microbenchmarks/fake-iterators-that-throw-when-finished.js.dfg-eager-no-cjit-validate slowMicrobenchmarks.yaml/slowMicrobenchmarks/v8-raytrace-with-try-catch-high-frequency-throws.js.no-cjit stress/proxy-revoke.js.dfg-eager-no-cjit-validate stress/const-exception-handling.js.dfg-eager-no-cjit-validate stress/rest-parameter-and-default-arguments.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/v8-raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit stress/template-literal-syntax.js.ftl-eager-no-cjit-b3o1 stress/tagged-templates-syntax.js.ftl-eager-no-cjit stress/lexical-scoping-break-continue.js.no-cjit-validate-phases stress/create-subclass-structure-might-throw.js.dfg-maximal-flush-validate-no-cjit stress/domjit-getter-type-check.js.dfg-maximal-flush-validate-no-cjit stress/proxy-set-prototype-of.js.ftl-eager-no-cjit-b3o1 stress/const-semantics.js.dfg-maximal-flush-validate-no-cjit stress/with.js.dfg-maximal-flush-validate-no-cjit stress/create-subclass-structure-might-throw.js.ftl-eager-no-cjit stress/proxy-revoke.js.ftl-eager-no-cjit-b3o1 stress/es6-for-of-loop-exception.js.dfg-maximal-flush-validate-no-cjit stress/sloppy-mode-function-hoisting.js.dfg-maximal-flush-validate-no-cjit stress/super-get-by-id.js.ftl-no-cjit-no-inline-validate stress/tail-call-recognize.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/fake-iterators-that-throw-when-finished.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-no-put-stack-validate stress/template-literal-line-terminators.js.ftl-eager-no-cjit stress/lexical-scoping-break-continue.js.ftl-no-cjit-no-put-stack-validate stress/tagged-templates-syntax.js.dfg-eager-no-cjit-validate stress/reserved-word-with-escape.js.ftl-eager-no-cjit-b3o1 stress/class-syntax-super-in-eval.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-tdz-4.js.dfg-maximal-flush-validate-no-cjit stress/regress-163748.js.ftl-eager-no-cjit
Build Bot
Comment 59 2017-08-16 02:15:16 PDT
Comment on attachment 318218 [details] WIP Attachment 318218 [details] did not pass jsc-ews (mac): Output: http://webkit-queues.webkit.org/results/4322567 New failing tests: stress/const-loop-semantics.js.ftl-no-cjit-no-put-stack-validate stress/arrowfunction-lexical-bind-supercall-3.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-lexical-bind-newtarget.js.dfg-maximal-flush-validate-no-cjit stress/dont-unwind-past-vm-entry-frame.js.dfg-maximal-flush-validate-no-cjit mozilla-tests.yaml/ecma_3/RegExp/regress-98306.js.mozilla-ftl-eager-no-cjit-validate-phases stress/const-not-strict-mode.js.dfg-maximal-flush-validate-no-cjit stress/proxy-set-prototype-of.js.ftl-eager-no-cjit mozilla-tests.yaml/ecma_3/RegExp/regress-98306.js.mozilla-dfg-eager-no-cjit-validate-phases stress/regress-163748.js.ftl-eager-no-cjit-b3o1 microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-no-put-stack-validate stress/inferred-infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit stress/destructuring-assignment-syntax.js.dfg-eager-no-cjit-validate stress/super-method-calls-check-tdz.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.ftl-no-cjit-validate-sampling-profiler stress/spec-empty-flows-through-cell-checks.js.dfg-maximal-flush-validate-no-cjit stress/typedarray-access-neutered.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.ftl-no-cjit-no-put-stack-validate stress/eval-func-decl-in-eval-within-with-scope.js.dfg-maximal-flush-validate-no-cjit stress/custom-iterators.js.dfg-eager-no-cjit-validate stress/eval-func-decl-block-with-var-sinthesize.js.dfg-maximal-flush-validate-no-cjit stress/eval-func-decl-within-eval-without-reassign-to-let.js.dfg-maximal-flush-validate-no-cjit stress/array-species-config-array-constructor.js.dfg-maximal-flush-validate-no-cjit stress/custom-iterators.js.ftl-eager-no-cjit stress/const-loop-semantics.js.dfg-eager-no-cjit-validate microbenchmarks/richards-try-catch.js.dfg-maximal-flush-validate-no-cjit stress/proxy-get-and-set-recursion-stack-overflow.js.dfg-maximal-flush-validate-no-cjit stress/lexical-scoping-break-continue.js.dfg-maximal-flush-validate-no-cjit stress/proxy-call.js.dfg-maximal-flush-validate-no-cjit stress/async-await-syntax.js.dfg-eager-no-cjit-validate stress/infinite-loop-that-uses-captured-variables-before-throwing.js.dfg-maximal-flush-validate-no-cjit mozilla-tests.yaml/ecma_3/RegExp/regress-188206.js.mozilla-ftl-eager-no-cjit-validate-phases stress/proxy-set.js.dfg-maximal-flush-validate-no-cjit stress/SharedArrayBuffer-opt.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-not-strict-mode.js.dfg-eager-no-cjit-validate stress/proxy-property-descriptor.js.dfg-maximal-flush-validate-no-cjit stress/variable-named-eval-under-tdz.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/v8-raytrace-with-try-catch.js.ftl-eager-no-cjit stress/create-subclass-structure-might-throw.js.ftl-eager-no-cjit-b3o1 microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-validate-sampling-profiler stress/tail-call-recognize.js.dfg-eager-no-cjit-validate stress/tail-call-recognize.js.ftl-eager-no-cjit-b3o1 stress/lexical-let-loop-semantics.js.dfg-maximal-flush-validate-no-cjit stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit-b3o1 stress/const-exception-handling.js.ftl-eager-no-cjit-b3o1 stress/builtin-function-is-construct-type-none.js.dfg-maximal-flush-validate-no-cjit stress/global-lexical-var-injection.js.dfg-maximal-flush-validate-no-cjit stress/infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit stress/tail-call-recognize.js.ftl-no-cjit-validate-sampling-profiler stress/const-not-strict-mode.js.no-cjit-validate-phases stress/regress-159779-1.js.ftl-eager-no-cjit stress/lexical-scoping-break-continue.js.ftl-eager-no-cjit-b3o1 stress/es6-default-parameters.js.dfg-maximal-flush-validate-no-cjit stress/proxy-json.js.dfg-maximal-flush-validate-no-cjit stress/template-literal-syntax.js.dfg-eager-no-cjit-validate stress/activation-sink-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit stress/regress-163748.js.dfg-eager-no-cjit-validate microbenchmarks/raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit stress/delete-to-object-exception.js.dfg-maximal-flush-validate-no-cjit stress/class-syntax-tdz-in-catch.js.dfg-maximal-flush-validate-no-cjit stress/import-syntax.js.ftl-eager-no-cjit stress/async-await-reserved-word.js.dfg-eager-no-cjit-validate stress/custom-iterators.js.ftl-eager-no-cjit-b3o1 stress/lexical-scoping-break-continue.js.ftl-eager-no-cjit stress/template-literal-syntax.js.ftl-eager-no-cjit stress/class-syntax-tdz-in-eval.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-not-strict-mode.js.ftl-eager-no-cjit stress/arrowfunction-activation-sink-osrexit-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit stress/es6-default-parameters.js.ftl-eager-no-cjit stress/tricky-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-lexical-bind-supercall-1.js.dfg-maximal-flush-validate-no-cjit stress/eval-func-decl-in-eval-within-block-with-let.js.dfg-maximal-flush-validate-no-cjit stress/symbol-toprimitive.js.dfg-maximal-flush-validate-no-cjit mozilla-tests.yaml/ecma_2/Statements/try-010.js.mozilla-dfg-eager-no-cjit-validate-phases mozilla-tests.yaml/ecma_2/Statements/try-001.js.mozilla-ftl-eager-no-cjit-validate-phases stress/async-await-basic.js.dfg-eager-no-cjit-validate stress/class-syntax-tdz.js.dfg-maximal-flush-validate-no-cjit stress/const-loop-semantics.js.ftl-eager-no-cjit stress/const-exception-handling.js.ftl-eager-no-cjit microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-eager-no-cjit microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-eager-no-cjit-b3o1 stress/proxy-revoke.js.ftl-no-cjit-validate-sampling-profiler stress/put-direct-index-broken-2.js.dfg-maximal-flush-validate-no-cjit stress/tricky-indirectly-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit stress/tagged-templates-syntax.js.ftl-eager-no-cjit-b3o1 stress/class-syntax-double-constructor.js.dfg-maximal-flush-validate-no-cjit stress/proxy-has-property.js.dfg-maximal-flush-validate-no-cjit stress/typedarray-bad-getter.js.dfg-maximal-flush-validate-no-cjit stress/dfg-put-by-val-direct-with-edge-numbers.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-tdz.js.dfg-maximal-flush-validate-no-cjit stress/async-await-basic.js.ftl-eager-no-cjit-b3o1 stress/const-loop-semantics.js.ftl-no-cjit-no-inline-validate stress/import-syntax.js.dfg-eager-no-cjit-validate microbenchmarks/delta-blue-try-catch.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.ftl-no-cjit-no-inline-validate stress/catch-variables-under-tdz.js.dfg-eager-no-cjit-validate stress/global-lexical-variable-tdz.js.dfg-maximal-flush-validate-no-cjit stress/global-lexical-var-injection.js.ftl-no-cjit-validate-sampling-profiler stress/proxy-get-prototype-of.js.dfg-eager-no-cjit-validate stress/typedarray-functions-with-neutered.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-tdz-2.js.dfg-maximal-flush-validate-no-cjit stress/async-await-reserved-word.js.ftl-eager-no-cjit microbenchmarks/v8-raytrace-with-try-catch.js.ftl-eager-no-cjit-b3o1 stress/proxy-revoke.js.ftl-no-cjit-no-inline-validate microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-no-inline-validate stress/global-lexical-var-injection.js.ftl-eager-no-cjit stress/lexical-let-exception-handling.js.dfg-eager-no-cjit-validate stress/regress-153486.js.dfg-maximal-flush-validate-no-cjit stress/create-subclass-structure-might-throw.js.no-cjit-validate-phases stress/lexical-scoping-break-continue.js.ftl-no-cjit-validate-sampling-profiler stress/const-tdz.js.dfg-maximal-flush-validate-no-cjit stress/catch-variables-under-tdz.js.ftl-eager-no-cjit mozilla-tests.yaml/ecma_2/Statements/try-010.js.mozilla-ftl-eager-no-cjit-validate-phases stress/arrowfunction-lexical-bind-supercall-4.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/v8-raytrace-with-try-catch.js.ftl-no-cjit-validate-sampling-profiler stress/tagged-template-tdz.js.dfg-maximal-flush-validate-no-cjit stress/create-subclass-structure-might-throw.js.ftl-no-cjit-validate-sampling-profiler stress/const-not-strict-mode.js.ftl-eager-no-cjit stress/es6-default-parameters.js.ftl-eager-no-cjit-b3o1 stress/activation-sink-osrexit-default-value-tdz-error.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-tdz-1.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-exception-handling.js.ftl-eager-no-cjit-b3o1 stress/tail-call-recognize.js.ftl-no-cjit-no-inline-validate stress/const-loop-semantics.js.ftl-no-cjit-validate-sampling-profiler stress/async-arrow-functions-lexical-super-binding.js.dfg-eager-no-cjit-validate stress/async-arrow-functions-lexical-super-binding.js.ftl-eager-no-cjit stress/function-constructor-reading-from-global-lexical-environment.js.dfg-maximal-flush-validate-no-cjit stress/const-loop-semantics.js.ftl-eager-no-cjit-b3o1 stress/eval-func-decl-within-eval-with-reassign-to-var.js.dfg-maximal-flush-validate-no-cjit stress/strcat-emtpy.js.dfg-maximal-flush-validate-no-cjit stress/proxy-get-prototype-of.js.ftl-eager-no-cjit stress/dont-strength-reduce-valuerep-of-doublerep.js.dfg-maximal-flush-validate-no-cjit stress/proxy-revoke.js.ftl-no-cjit-no-put-stack-validate stress/lexical-scoping-break-continue.js.ftl-no-cjit-no-inline-validate stress/super-get-by-id.js.dfg-eager-no-cjit-validate stress/tricky-infinite-loop-that-uses-captured-variables.js.dfg-maximal-flush-validate-no-cjit stress/global-lexical-var-injection.js.dfg-eager-no-cjit-validate stress/rest-parameter-is-destructuring.js.dfg-maximal-flush-validate-no-cjit stress/domjit-getter-complex-with-incorrect-object.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.dfg-eager-no-cjit-validate microbenchmarks/string-transcoding.js.dfg-maximal-flush-validate-no-cjit stress/tricky-inferred-infinite-loop-that-uses-captured-variables-and-creates-the-activation-outside-the-loop.js.dfg-maximal-flush-validate-no-cjit stress/destructuring-assignment-syntax.js.ftl-eager-no-cjit stress/typedarray-access-monomorphic-neutered.js.dfg-maximal-flush-validate-no-cjit stress/const-loop-semantics.js.no-cjit-validate-phases microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-no-inline-validate stress/infinite-loop-that-uses-captured-variables-but-they-do-not-escape.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-constructor.js.dfg-maximal-flush-validate-no-cjit stress/async-await-reserved-word.js.ftl-eager-no-cjit-b3o1 stress/create-subclass-structure-might-throw.js.dfg-eager-no-cjit-validate stress/proxy-set-prototype-of.js.dfg-eager-no-cjit-validate stress/proxy-revoke.js.dfg-maximal-flush-validate-no-cjit stress/cloned-arguments-modification.js.dfg-maximal-flush-validate-no-cjit stress/import-syntax.js.ftl-eager-no-cjit-b3o1 stress/proxy-delete.js.dfg-maximal-flush-validate-no-cjit stress/reserved-word-with-escape.js.dfg-eager-no-cjit-validate stress/async-await-syntax.js.ftl-eager-no-cjit stress/proxy-is-array.js.dfg-maximal-flush-validate-no-cjit stress/tail-call-recognize.js.no-cjit-validate-phases stress/proxy-revoke.js.ftl-eager-no-cjit stress/const-loop-semantics.js.dfg-maximal-flush-validate-no-cjit stress/array-reverse-proxy.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-lexical-bind-supercall-2.js.dfg-maximal-flush-validate-no-cjit stress/proxy-get-prototype-of.js.ftl-eager-no-cjit-b3o1 microbenchmarks/fake-iterators-that-throw-when-finished.js.no-cjit-validate-phases stress/lexical-let-exception-handling.js.ftl-eager-no-cjit stress/super-get-by-id.js.no-cjit-validate-phases stress/proxy-own-keys.js.dfg-maximal-flush-validate-no-cjit stress/operation-in-throw-error.js.dfg-maximal-flush-validate-no-cjit stress/es6-default-parameters.js.dfg-eager-no-cjit-validate stress/reserved-word-with-escape.js.ftl-eager-no-cjit stress/create-subclass-structure-might-throw.js.ftl-no-cjit-no-inline-validate stress/global-lexical-var-injection.js.ftl-eager-no-cjit-b3o1 stress/global-lexical-var-injection.js.ftl-no-cjit-no-put-stack-validate stress/template-literal-line-terminators.js.ftl-eager-no-cjit-b3o1 stress/dfg-call-class-constructor.js.dfg-maximal-flush-validate-no-cjit stress/create-subclass-structure-might-throw.js.ftl-no-cjit-no-put-stack-validate stress/async-await-mozilla.js.dfg-maximal-flush-validate-no-cjit stress/const-not-strict-mode.js.ftl-eager-no-cjit-b3o1 stress/regress-159779-2.js.ftl-eager-no-cjit stress/destructuring-assignment-syntax.js.ftl-eager-no-cjit-b3o1 stress/class-syntax-tdz-in-conditional.js.dfg-maximal-flush-validate-no-cjit mozilla-tests.yaml/ecma_2/Statements/try-001.js.mozilla-dfg-eager-no-cjit-validate-phases microbenchmarks/v8-raytrace-with-try-catch.js.no-cjit-validate-phases stress/super-get-by-id.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-not-strict-mode.js.ftl-eager-no-cjit-b3o1 mozilla-tests.yaml/ecma_3/RegExp/regress-188206.js.mozilla-dfg-eager-no-cjit-validate-phases stress/reflect-construct.js.dfg-maximal-flush-validate-no-cjit stress/class-syntax-no-tdz-in-catch.js.dfg-maximal-flush-validate-no-cjit stress/super-property-access-tdz.js.dfg-maximal-flush-validate-no-cjit stress/string-prototype-methods-endsWith-startsWith-includes-correctness.js.dfg-maximal-flush-validate-no-cjit stress/class-syntax-tdz-in-loop.js.dfg-maximal-flush-validate-no-cjit stress/eval-func-decl-in-global-of-eval.js.dfg-maximal-flush-validate-no-cjit stress/class-derived-from-null.js.dfg-maximal-flush-validate-no-cjit stress/super-get-by-id.js.ftl-no-cjit-no-put-stack-validate microbenchmarks/v8-raytrace-with-try-catch.js.dfg-eager-no-cjit-validate stress/reflect-set-proxy-set.js.dfg-maximal-flush-validate-no-cjit stress/tail-call-recognize.js.ftl-eager-no-cjit stress/global-lexical-var-injection.js.ftl-no-cjit-no-inline-validate stress/async-await-basic.js.ftl-eager-no-cjit stress/dfg-exception-try-catch-in-constructor-with-inlined-throw.js.dfg-maximal-flush-validate-no-cjit stress/tail-call-recognize.js.ftl-no-cjit-no-put-stack-validate stress/proxy-revoke.js.no-cjit-validate-phases stress/eval-func-decl-block-with-var-and-remove.js.dfg-maximal-flush-validate-no-cjit stress/template-literal-line-terminators.js.dfg-eager-no-cjit-validate stress/catch-variables-under-tdz.js.ftl-eager-no-cjit-b3o1 stress/global-lexical-var-injection.js.no-cjit-validate-phases stress/global-lexical-redefine-const.js.dfg-maximal-flush-validate-no-cjit stress/async-await-syntax.js.ftl-eager-no-cjit-b3o1 stress/lexical-scoping-break-continue.js.dfg-eager-no-cjit-validate stress/typedarray-configure-index.js.dfg-maximal-flush-validate-no-cjit stress/lexical-let-not-strict-mode.js.dfg-maximal-flush-validate-no-cjit stress/super-get-by-id.js.ftl-no-cjit-validate-sampling-profiler microbenchmarks/fake-iterators-that-throw-when-finished.js.dfg-eager-no-cjit-validate slowMicrobenchmarks.yaml/slowMicrobenchmarks/v8-raytrace-with-try-catch-high-frequency-throws.js.no-cjit stress/proxy-revoke.js.dfg-eager-no-cjit-validate stress/const-exception-handling.js.dfg-eager-no-cjit-validate stress/rest-parameter-and-default-arguments.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/v8-raytrace-with-try-catch.js.dfg-maximal-flush-validate-no-cjit stress/template-literal-syntax.js.ftl-eager-no-cjit-b3o1 stress/tagged-templates-syntax.js.ftl-eager-no-cjit stress/lexical-scoping-break-continue.js.no-cjit-validate-phases stress/create-subclass-structure-might-throw.js.dfg-maximal-flush-validate-no-cjit stress/domjit-getter-type-check.js.dfg-maximal-flush-validate-no-cjit stress/proxy-set-prototype-of.js.ftl-eager-no-cjit-b3o1 stress/const-semantics.js.dfg-maximal-flush-validate-no-cjit stress/with.js.dfg-maximal-flush-validate-no-cjit stress/create-subclass-structure-might-throw.js.ftl-eager-no-cjit stress/proxy-revoke.js.ftl-eager-no-cjit-b3o1 stress/es6-for-of-loop-exception.js.dfg-maximal-flush-validate-no-cjit stress/sloppy-mode-function-hoisting.js.dfg-maximal-flush-validate-no-cjit stress/super-get-by-id.js.ftl-no-cjit-no-inline-validate stress/tail-call-recognize.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/fake-iterators-that-throw-when-finished.js.dfg-maximal-flush-validate-no-cjit microbenchmarks/fake-iterators-that-throw-when-finished.js.ftl-no-cjit-no-put-stack-validate stress/template-literal-line-terminators.js.ftl-eager-no-cjit stress/lexical-scoping-break-continue.js.ftl-no-cjit-no-put-stack-validate stress/tagged-templates-syntax.js.dfg-eager-no-cjit-validate stress/reserved-word-with-escape.js.ftl-eager-no-cjit-b3o1 stress/class-syntax-super-in-eval.js.dfg-maximal-flush-validate-no-cjit stress/arrowfunction-tdz-4.js.dfg-maximal-flush-validate-no-cjit stress/regress-163748.js.ftl-eager-no-cjit
Saam Barati
Comment 60 2017-08-16 13:01:45 PDT
Created attachment 318283 [details] WIP Fix some bugs related to new validation. There were a few bugs pre-existing that would try to Flush the primordial set in a root block. This isn't allowed, as we require all locals to be dead at the root.
Saam Barati
Comment 61 2017-08-16 20:36:21 PDT
Created attachment 318324 [details] WIP I think this patch is exposing a few pre-existing bugs I need to think about fixing: - SetLocal of scope always flushes inside bytecode parser when a bit is set on CodeBlock. This might cause us to add a Flush that doesn't have a SetLocal definition that reaches it. This causes CPS rethreading to create a Phi that is linked to nothing. This will lead a root block to say that particular local is live. This will cause us to fail validation, which asserts that all locals are dead at the head of all root blocks. - Same thing as above, but in the LiveCatchVariablePreservationPhase for arbitrary locals I need to think about exactly how to fix this issue.
Saam Barati
Comment 62 2017-08-17 20:00:34 PDT
Build Bot
Comment 63 2017-08-17 20:03:09 PDT
Attachment 318460 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:165: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:172: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:175: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGLiveCatchVariablePreservationPhase.cpp:229: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:483: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:485: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp:650: Should have a space between // and comment [whitespace/comments] [4] Total errors found: 14 in 78 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 64 2017-08-18 19:16:11 PDT
Created attachment 318571 [details] WIP Probably doesn't compile, but I think I have a workable solution for the live catch variable preservation phase
Saam Barati
Comment 65 2017-08-21 13:15:10 PDT
Build Bot
Comment 66 2017-08-21 13:17:48 PDT
Attachment 318665 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3983: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3984: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3985: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3986: Should have a space between // and comment [whitespace/comments] [4] ERROR: Source/JavaScriptCore/bytecompiler/BytecodeGenerator.cpp:3987: Should have a space between // and comment [whitespace/comments] [4] Total errors found: 12 in 80 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 67 2017-08-21 23:45:07 PDT
Created attachment 318741 [details] WIP Just about ready for review, just going to read over the code once before writing a changelog.
Saam Barati
Comment 68 2017-08-22 15:21:57 PDT
Saam Barati
Comment 69 2017-08-22 17:41:42 PDT
Created attachment 318835 [details] patch This patch is ready for review. I am going to spend a little bit of time writing a more comprehensive program that uses try/catch, but that shouldn't stand in the way of the rest of the patch being reviewed.
Build Bot
Comment 70 2017-08-22 17:45:01 PDT
Attachment 318835 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2836: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] Total errors found: 8 in 86 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 71 2017-08-22 18:17:56 PDT
Comment on attachment 318835 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=318835&action=review Seems legit. > Source/JavaScriptCore/dfg/DFGCFAPhase.cpp:98 > - > + Revert > Source/JavaScriptCore/dfg/DFGCFG.h:99 > +template <typename T, typename = typename std::enable_if<std::is_same<T, CPSCFG>::value>::type> > +CPSCFG& selectCFG(Graph& graph) Whoa. What does this magic do? > Source/WTF/wtf/BackwardsGraph.h:44 > + using Node = SingleRootGraphNode<Graph>; > + using Set = SingleRootGraphSet<Graph>; > + template <typename T> using Map = SingleRootMap<T, Graph>; Nice
Keith Miller
Comment 72 2017-08-22 19:50:03 PDT
Comment on attachment 318835 [details] patch View in context: https://bugs.webkit.org/attachment.cgi?id=318835&action=review >> Source/JavaScriptCore/dfg/DFGCFG.h:99 >> +CPSCFG& selectCFG(Graph& graph) > > Whoa. What does this magic do? I think, It will only select this version of the function if T is CPSCFG. The default value errors unless someone provides a value for it. Since errors mean the template is not selected and no one provides the second template value it should always select the right function. I think you could also make this: template <typename T> CPSCFG& selectCFG(Graph& graph) { typedef typename std::enable_if<std::is_same<T, CPSCFG>::value>::type Enabled; ... } or if we had: #define ENABLE_TEMPLATE_IF(condition) static_assert(condition, "template disabled") template <typename T> CPSCFG& selectCFG(Graph& graph) { ENABLE_TEMPLATE_IF(std::is_same<T, CPSCFG>::value); ... }
Saam Barati
Comment 73 2017-08-23 15:22:37 PDT
Created attachment 318930 [details] patch for landing
Build Bot
Comment 74 2017-08-23 15:25:29 PDT
Attachment 318930 [details] did not pass style-queue: ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:177: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/ValueProfile.h:178: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/bytecode/CodeBlock.cpp:2836: Weird number of spaces at line-start. Are you using a 4-space indent? [whitespace/indent] [3] ERROR: Source/WTF/wtf/SingleRootGraph.h:26: Use #pragma once instead of #ifndef for header guard. [build/header_guard] [5] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Missing spaces around : [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Should be indented on a separate line, with the colon or comma first on that line. [whitespace/indent] [4] ERROR: Source/JavaScriptCore/dfg/DFGGraph.cpp:416: Comma should be at the beginning of the line in a member initialization list. [whitespace/init] [4] ERROR: Source/JavaScriptCore/dfg/DFGBasicBlock.cpp:40: Wrong number of spaces before statement. (expected: 8) [whitespace/indent] [4] Total errors found: 8 in 86 files If any of these errors are false positives, please file a bug against check-webkit-style.
Saam Barati
Comment 75 2017-08-23 16:15:17 PDT
Created attachment 318935 [details] patch for landing
WebKit Commit Bot
Comment 76 2017-08-23 16:58:40 PDT
Comment on attachment 318935 [details] patch for landing Clearing flags on attachment: 318935 Committed r221119: <http://trac.webkit.org/changeset/221119>
WebKit Commit Bot
Comment 77 2017-08-23 16:58:43 PDT
All reviewed patches have been landed. Closing bug.
Radar WebKit Bug Importer
Comment 78 2017-08-23 16:59:20 PDT
Yusuke Suzuki
Comment 79 2017-08-23 18:05:08 PDT
WebKit Commit Bot
Comment 80 2017-08-24 18:53:15 PDT
Re-opened since this is blocked by bug 175973
Saam Barati
Comment 81 2017-08-24 22:57:08 PDT
This regressed JSBench by 10-20% in my local testing. I think all that's needed to make this faster is to not eagerly run liveness since liveness is expensive and hurts page load when done unconditionally in a CodeBlock with op_catch. Instead, I'm going to do it on first exception throw.
Saam Barati
Comment 82 2017-08-24 23:54:39 PDT
(In reply to Saam Barati from comment #81) > This regressed JSBench by 10-20% in my local testing. I think all that's > needed to make this faster is to not eagerly run liveness since liveness is > expensive and hurts page load when done unconditionally in a CodeBlock with > op_catch. Instead, I'm going to do it on first exception throw. It looks like this fixes the JSBench regression locally for me. Will have a patch tomorrow.
Saam Barati
Comment 83 2017-08-25 11:27:56 PDT
remanded in: https://trac.webkit.org/changeset/221196/webkit I'm now computing liveness lazily once a catch actually executes. This fixed the JSBench regression for me locally.
Saam Barati
Comment 84 2017-08-25 15:57:27 PDT
Note You need to log in before you can comment on or make changes to this bug.