WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
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
Details
Formatted Diff
Diff
WIP
(14.18 KB, patch)
2017-07-26 12:55 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(22.01 KB, patch)
2017-07-26 21:16 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(28.40 KB, patch)
2017-07-27 00:43 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(31.33 KB, patch)
2017-07-27 11:31 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(34.68 KB, patch)
2017-07-31 14:16 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(39.89 KB, patch)
2017-08-02 14:48 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(56.15 KB, patch)
2017-08-03 14:47 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(58.37 KB, patch)
2017-08-03 16:22 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(62.90 KB, patch)
2017-08-03 17:39 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(64.35 KB, patch)
2017-08-03 18:11 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(68.16 KB, patch)
2017-08-03 19:03 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(67.61 KB, patch)
2017-08-03 19:43 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(67.61 KB, patch)
2017-08-06 09:30 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(72.22 KB, patch)
2017-08-06 10:49 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(73.91 KB, patch)
2017-08-06 15:31 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(74.50 KB, patch)
2017-08-06 17:44 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(74.52 KB, patch)
2017-08-06 19:12 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(75.66 KB, patch)
2017-08-06 19:32 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(75.17 KB, patch)
2017-08-09 14:26 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(88.70 KB, patch)
2017-08-09 20:14 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(88.66 KB, patch)
2017-08-09 20:20 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(88.71 KB, patch)
2017-08-09 20:28 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(88.41 KB, patch)
2017-08-10 20:39 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(91.33 KB, patch)
2017-08-11 11:43 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(91.57 KB, patch)
2017-08-11 11:58 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(125.33 KB, patch)
2017-08-13 18:48 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(127.45 KB, patch)
2017-08-13 19:22 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(128.95 KB, patch)
2017-08-13 21:44 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(130.34 KB, patch)
2017-08-13 22:39 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(133.66 KB, patch)
2017-08-14 15:54 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(137.66 KB, patch)
2017-08-14 16:48 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(137.66 KB, patch)
2017-08-14 16:52 PDT
,
Saam Barati
buildbot
: commit-queue-
Details
Formatted Diff
Diff
WIP
(144.00 KB, patch)
2017-08-14 19:10 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(147.19 KB, patch)
2017-08-14 20:41 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(137.24 KB, patch)
2017-08-15 11:22 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(139.95 KB, patch)
2017-08-15 12:39 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(139.98 KB, patch)
2017-08-15 12:46 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(139.72 KB, patch)
2017-08-15 14:03 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(138.26 KB, patch)
2017-08-15 14:24 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(139.07 KB, patch)
2017-08-15 15:33 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(141.25 KB, patch)
2017-08-15 17:58 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(141.21 KB, patch)
2017-08-15 18:38 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(170.05 KB, patch)
2017-08-15 19:50 PDT
,
Saam Barati
buildbot
: commit-queue-
Details
Formatted Diff
Diff
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
Details
WIP
(171.02 KB, patch)
2017-08-16 13:01 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(171.43 KB, patch)
2017-08-16 20:36 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(183.32 KB, patch)
2017-08-17 20:00 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(186.36 KB, patch)
2017-08-18 19:16 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(191.54 KB, patch)
2017-08-21 13:15 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(195.42 KB, patch)
2017-08-21 23:45 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
WIP
(197.45 KB, patch)
2017-08-22 15:21 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
patch
(219.86 KB, patch)
2017-08-22 17:41 PDT
,
Saam Barati
fpizlo
: review+
Details
Formatted Diff
Diff
patch for landing
(240.27 KB, patch)
2017-08-23 15:22 PDT
,
Saam Barati
saam
: commit-queue-
Details
Formatted Diff
Diff
patch for landing
(240.26 KB, patch)
2017-08-23 16:15 PDT
,
Saam Barati
no flags
Details
Formatted Diff
Diff
Show Obsolete
(54)
View All
Add attachment
proposed patch, testcase, etc.
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
Created
attachment 316517
[details]
WIP
Saam Barati
Comment 4
2017-07-27 00:43:43 PDT
Created
attachment 316534
[details]
WIP
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
Created
attachment 316803
[details]
WIP
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
Created
attachment 317159
[details]
WIP
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
Created
attachment 317177
[details]
WIP
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
Created
attachment 317204
[details]
WIP
Saam Barati
Comment 16
2017-08-06 09:30:42 PDT
Created
attachment 317363
[details]
WIP
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
Created
attachment 317393
[details]
WIP
Saam Barati
Comment 22
2017-08-06 19:32:23 PDT
Created
attachment 317394
[details]
WIP
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
Created
attachment 317779
[details]
WIP
Saam Barati
Comment 26
2017-08-09 20:28:01 PDT
Created
attachment 317780
[details]
WIP
Saam Barati
Comment 27
2017-08-10 20:39:57 PDT
Created
attachment 317912
[details]
WIP
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
Created
attachment 317945
[details]
WIP
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
Created
attachment 318025
[details]
WIP
Saam Barati
Comment 34
2017-08-14 15:54:08 PDT
Created
attachment 318078
[details]
WIP
Saam Barati
Comment 35
2017-08-14 16:48:59 PDT
Created
attachment 318084
[details]
WIP
Saam Barati
Comment 36
2017-08-14 16:52:25 PDT
Created
attachment 318087
[details]
WIP
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
Created
attachment 318139
[details]
WIP
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
Created
attachment 318218
[details]
WIP
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
Created
attachment 318460
[details]
WIP
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
Created
attachment 318665
[details]
WIP
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
Created
attachment 318807
[details]
WIP
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
<
rdar://problem/34047845
>
Yusuke Suzuki
Comment 79
2017-08-23 18:05:08 PDT
Committed
r221124
: <
http://trac.webkit.org/changeset/221124
>
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
fixed 32-bit in:
https://trac.webkit.org/changeset/221210/webkit
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug