WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
194375
[JSC] sizeof(JSString) should be 16
https://bugs.webkit.org/show_bug.cgi?id=194375
Summary
[JSC] sizeof(JSString) should be 16
Yusuke Suzuki
Reported
2019-02-06 21:04:20 PST
Discussed with Keith. Currently, JSString takes 24bytes. Because of GC size classes, it becomes 32bytes. But some members are just copy of things in StringImpl. We should remove length and flags fields from JSString to make it fit in 16bytes.
Attachments
Patch
(90.75 KB, patch)
2019-02-08 17:08 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(111.30 KB, patch)
2019-02-09 00:00 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(102.56 KB, patch)
2019-02-11 15:34 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Starts working on all tiers
(119.44 KB, patch)
2019-02-12 00:27 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ews117 for mac-highsierra
(411.81 KB, application/zip)
2019-02-12 01:40 PST
,
EWS Watchlist
no flags
Details
Fix more
(119.69 KB, patch)
2019-02-12 02:21 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Fix more
(119.57 KB, patch)
2019-02-12 15:34 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
More sane implementation
(123.23 KB, patch)
2019-02-12 17:01 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
More changes for fences
(125.00 KB, patch)
2019-02-13 15:09 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(120.76 KB, patch)
2019-02-13 16:32 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(120.83 KB, patch)
2019-02-13 16:36 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(120.45 KB, patch)
2019-02-13 16:39 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(128.81 KB, patch)
2019-02-14 22:42 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(140.91 KB, patch)
2019-02-18 18:41 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(146.17 KB, patch)
2019-02-18 23:09 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ews102 for mac-highsierra
(2.54 MB, application/zip)
2019-02-19 00:27 PST
,
EWS Watchlist
no flags
Details
Archive of layout-test-results from ews106 for mac-highsierra-wk2
(2.80 MB, application/zip)
2019-02-19 03:32 PST
,
EWS Watchlist
no flags
Details
Patch
(148.46 KB, patch)
2019-02-19 21:02 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(155.66 KB, patch)
2019-02-20 22:39 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(156.45 KB, patch)
2019-02-21 11:46 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(156.77 KB, patch)
2019-02-21 11:55 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(154.37 KB, patch)
2019-02-21 12:20 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(154.37 KB, patch)
2019-02-21 12:46 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(155.40 KB, patch)
2019-02-21 12:54 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(154.55 KB, patch)
2019-02-21 13:22 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Archive of layout-test-results from ews114 for mac-highsierra
(2.21 MB, application/zip)
2019-02-21 15:59 PST
,
EWS Watchlist
no flags
Details
Archive of layout-test-results from ews123 for ios-simulator-wk2
(2.49 MB, application/zip)
2019-02-21 16:11 PST
,
EWS Watchlist
no flags
Details
Patch
(156.10 KB, patch)
2019-02-21 16:34 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(156.32 KB, patch)
2019-02-21 17:12 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(156.19 KB, patch)
2019-02-21 17:45 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(158.95 KB, patch)
2019-02-21 19:31 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(181.44 KB, patch)
2019-02-22 22:53 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(181.49 KB, patch)
2019-02-22 23:01 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(181.06 KB, patch)
2019-02-26 21:17 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(182.56 KB, patch)
2019-02-26 23:30 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Patch
(182.42 KB, patch)
2019-02-26 23:57 PST
,
Yusuke Suzuki
saam
: review+
ews-watchlist
: commit-queue-
Details
Formatted Diff
Diff
Archive of layout-test-results from ews107 for mac-highsierra-wk2
(2.58 MB, application/zip)
2019-02-27 01:29 PST
,
EWS Watchlist
no flags
Details
Patch for landing
(183.37 KB, patch)
2019-02-28 19:12 PST
,
Yusuke Suzuki
no flags
Details
Formatted Diff
Diff
Show Obsolete
(35)
View All
Add attachment
proposed patch, testcase, etc.
Yusuke Suzuki
Comment 1
2019-02-08 17:08:32 PST
Created
attachment 361566
[details]
Patch
EWS Watchlist
Comment 2
2019-02-08 17:11:28 PST
Attachment 361566
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1549: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1560: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 4 in 22 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 3
2019-02-08 22:48:47 PST
In non-rope string boolify case, we can just use string pointer comparison with empty string, let's do that to minimize the bloated instructions.
Yusuke Suzuki
Comment 4
2019-02-09 00:00:52 PST
Created
attachment 361603
[details]
Patch
Yusuke Suzuki
Comment 5
2019-02-11 15:34:47 PST
Created
attachment 361717
[details]
Patch
Yusuke Suzuki
Comment 6
2019-02-12 00:27:38 PST
Created
attachment 361778
[details]
Starts working on all tiers
EWS Watchlist
Comment 7
2019-02-12 00:31:46 PST
Attachment 361778
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/bytecode/AccessCase.cpp:52: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:305: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:305: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:411: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1554: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1565: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 8 in 22 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 8
2019-02-12 00:35:34 PST
I've quickly run this with cli JetStream2, and surprisingly perf is not so bad (neutral). I thought I start optimizing bunch of things from now..., lol. Before: Total Score: 161.205 After: Total Score: 161.397
EWS Watchlist
Comment 9
2019-02-12 01:40:54 PST
Comment on
attachment 361778
[details]
Starts working on all tiers
Attachment 361778
[details]
did not pass mac-debug-ews (mac): Output:
https://webkit-queues.webkit.org/results/11119540
Number of test failures exceeded the failure limit.
EWS Watchlist
Comment 10
2019-02-12 01:40:56 PST
Created
attachment 361785
[details]
Archive of layout-test-results from ews117 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews117 Port: mac-highsierra Platform: Mac OS X 10.13.6
Yusuke Suzuki
Comment 11
2019-02-12 02:21:23 PST
Created
attachment 361786
[details]
Fix more
EWS Watchlist
Comment 12
2019-02-12 02:39:26 PST
Attachment 361786
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/bytecode/AccessCase.cpp:52: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:305: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:305: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:413: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1554: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1565: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 8 in 22 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 13
2019-02-12 15:34:11 PST
Created
attachment 361854
[details]
Fix more
EWS Watchlist
Comment 14
2019-02-12 15:37:39 PST
Attachment 361854
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/bytecode/AccessCase.cpp:52: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:305: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:305: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:413: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1554: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1565: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 8 in 22 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 15
2019-02-12 17:01:28 PST
Created
attachment 361868
[details]
More sane implementation
EWS Watchlist
Comment 16
2019-02-12 17:29:38 PST
Attachment 361868
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/bytecode/AccessCase.cpp:52: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:193: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:304: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:304: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:412: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1554: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1565: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 9 in 25 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 17
2019-02-13 15:09:58 PST
Created
attachment 361943
[details]
More changes for fences
Yusuke Suzuki
Comment 18
2019-02-13 16:32:16 PST
Created
attachment 361958
[details]
Patch
EWS Watchlist
Comment 19
2019-02-13 16:36:01 PST
Attachment 361958
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/bytecode/AccessCase.cpp:52: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:193: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:342: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:342: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:450: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1554: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1565: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 9 in 25 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 20
2019-02-13 16:36:12 PST
Created
attachment 361961
[details]
Patch
Yusuke Suzuki
Comment 21
2019-02-13 16:39:05 PST
Created
attachment 361962
[details]
Patch
EWS Watchlist
Comment 22
2019-02-13 16:40:44 PST
Attachment 361962
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/bytecode/AccessCase.cpp:52: Alphabetical sorting problem. [build/include_order] [4] ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:193: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:342: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:342: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:450: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1554: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1565: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 9 in 25 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 23
2019-02-14 22:42:30 PST
Created
attachment 362097
[details]
Patch
EWS Watchlist
Comment 24
2019-02-14 22:44:47 PST
Attachment 362097
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:193: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:334: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:334: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:442: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1553: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1564: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 8 in 28 files If any of these errors are false positives, please file a bug against check-webkit-style.
EWS Watchlist
Comment 25
2019-02-15 01:22:45 PST
Comment on
attachment 362097
[details]
Patch
Attachment 362097
[details]
did not pass jsc-ews (mac): Output:
https://webkit-queues.webkit.org/results/11156325
New failing tests: stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager-no-cjit-validate stress/to-lower-case-intrinsic-on-empty-rope.js.bytecode-cache stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-inline-validate stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-collect-continuously stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit-b3o1 stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager stress/to-lower-case-intrinsic-on-empty-rope.js.default stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-maximal-flush-validate-no-cjit stress/to-lower-case-intrinsic-on-empty-rope.js.no-llint stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-small-pool stress/to-lower-case-intrinsic-on-empty-rope.js.no-ftl stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-validate-sampling-profiler stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-validate-phases stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-b3o1 stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-put-stack-validate apiTests
Yusuke Suzuki
Comment 26
2019-02-15 02:17:21 PST
(In reply to Build Bot from
comment #25
)
> Comment on
attachment 362097
[details]
> Patch > >
Attachment 362097
[details]
did not pass jsc-ews (mac): > Output:
https://webkit-queues.webkit.org/results/11156325
> > New failing tests: > stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager-no-cjit-validate > stress/to-lower-case-intrinsic-on-empty-rope.js.bytecode-cache > stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-inline- > validate > stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-collect-continuously > stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit-b3o1 > stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager > stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager > stress/to-lower-case-intrinsic-on-empty-rope.js.default > stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-maximal-flush-validate- > no-cjit > stress/to-lower-case-intrinsic-on-empty-rope.js.no-llint > stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit > stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-small-pool > stress/to-lower-case-intrinsic-on-empty-rope.js.no-ftl > stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-validate- > sampling-profiler > stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-validate-phases > stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-b3o1 > stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-put-stack- > validate > apiTests
This test becomes invalid now since this patch starts not allowing empty ropes now. Need to fix this test (maybe, just checking the produced string becomes non rope).
Yusuke Suzuki
Comment 27
2019-02-18 18:41:49 PST
Created
attachment 362362
[details]
Patch
EWS Watchlist
Comment 28
2019-02-18 18:44:42 PST
Attachment 362362
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:193: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:331: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:331: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:439: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1557: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1568: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 8 in 30 files If any of these errors are false positives, please file a bug against check-webkit-style.
EWS Watchlist
Comment 29
2019-02-18 21:23:56 PST
Comment on
attachment 362362
[details]
Patch
Attachment 362362
[details]
did not pass jsc-ews (mac): Output:
https://webkit-queues.webkit.org/results/11199739
New failing tests: stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager-no-cjit-validate stress/to-lower-case-intrinsic-on-empty-rope.js.bytecode-cache stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-inline-validate stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-collect-continuously stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit-b3o1 stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager stress/to-lower-case-intrinsic-on-empty-rope.js.default stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-maximal-flush-validate-no-cjit stress/to-lower-case-intrinsic-on-empty-rope.js.no-llint stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-small-pool stress/to-lower-case-intrinsic-on-empty-rope.js.no-ftl stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-validate-sampling-profiler stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-validate-phases stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-b3o0 stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-put-stack-validate apiTests
Yusuke Suzuki
Comment 30
2019-02-18 23:09:00 PST
Created
attachment 362369
[details]
Patch
EWS Watchlist
Comment 31
2019-02-18 23:11:32 PST
Attachment 362369
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.cpp:347: More than one command on the same line [whitespace/newline] [4] ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:390: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:390: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:491: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1557: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1568: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 9 in 30 files If any of these errors are false positives, please file a bug against check-webkit-style.
EWS Watchlist
Comment 32
2019-02-19 00:27:06 PST
Comment on
attachment 362369
[details]
Patch
Attachment 362369
[details]
did not pass mac-ews (mac): Output:
https://webkit-queues.webkit.org/results/11201199
New failing tests: webgl/1.0.2/conformance/more/conformance/quickCheckAPI-B3.html
EWS Watchlist
Comment 33
2019-02-19 00:27:08 PST
Created
attachment 362370
[details]
Archive of layout-test-results from ews102 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-ews. Bot: ews102 Port: mac-highsierra Platform: Mac OS X 10.13.6
EWS Watchlist
Comment 34
2019-02-19 01:47:44 PST
Comment on
attachment 362369
[details]
Patch
Attachment 362369
[details]
did not pass jsc-ews (mac): Output:
https://webkit-queues.webkit.org/results/11201291
New failing tests: stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager-no-cjit-validate stress/StringObject-define-length-getter-rope-string-oom.js.dfg-eager-no-cjit-validate stress/StringObject-define-length-getter-rope-string-oom.js.ftl-eager stress/regress-189132.js.dfg-maximal-flush-validate-no-cjit stress/regress-189132.js.default stress/to-lower-case-intrinsic-on-empty-rope.js.bytecode-cache stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-maximal-flush-validate-no-cjit stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-validate-sampling-profiler stress/to-lower-case-intrinsic-on-empty-rope.js.no-ftl stress/regress-189132.js.ftl-eager stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-validate-phases stress/StringObject-define-length-getter-rope-string-oom.js.bytecode-cache stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-collect-continuously stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-no-put-stack-validate stress/regress-189132.js.ftl-no-cjit-no-inline-validate stress/StringObject-define-length-getter-rope-string-oom.js.ftl-eager-no-cjit stress/regress-189132.js.bytecode-cache stress/regress-189132.js.dfg-eager-no-cjit-validate stress/regress-189132.js.ftl-no-cjit-small-pool stress/regress-189132.js.ftl-no-cjit-validate-sampling-profiler stress/StringObject-define-length-getter-rope-string-oom.js.no-ftl stress/regress-189132.js.ftl-eager-no-cjit-b3o1 stress/StringObject-define-length-getter-rope-string-oom.js.ftl-eager-no-cjit-b3o1 stress/regress-189132.js.ftl-no-cjit-no-put-stack-validate stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-small-pool stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager stress/to-lower-case-intrinsic-on-empty-rope.js.no-llint stress/regress-189132.js.ftl-eager-no-cjit stress/StringObject-define-length-getter-rope-string-oom.js.dfg-eager stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-put-stack-validate stress/StringObject-define-length-getter-rope-string-oom.js.no-cjit-collect-continuously stress/regress-189132.js.no-ftl stress/regress-189132.js.no-llint stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-b3o0 stress/StringObject-define-length-getter-rope-string-oom.js.default stress/regress-189132.js.ftl-no-cjit-b3o0 stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit stress/to-lower-case-intrinsic-on-empty-rope.js.default stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit-b3o1 stress/StringObject-define-length-getter-rope-string-oom.js.dfg-maximal-flush-validate-no-cjit stress/StringObject-define-length-getter-rope-string-oom.js.no-llint stress/regress-189132.js.no-cjit-validate-phases stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-inline-validate stress/regress-189132.js.no-cjit-collect-continuously stress/regress-189132.js.dfg-eager stress/StringObject-define-length-getter-rope-string-oom.js.no-cjit-validate-phases stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-small-pool stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-validate-sampling-profiler stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-no-inline-validate stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-b3o0 apiTests
EWS Watchlist
Comment 35
2019-02-19 03:32:30 PST
Comment on
attachment 362369
[details]
Patch
Attachment 362369
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
https://webkit-queues.webkit.org/results/11202335
New failing tests: webgl/2.0.0/conformance/more/conformance/quickCheckAPI-B3.html
EWS Watchlist
Comment 36
2019-02-19 03:32:32 PST
Created
attachment 362379
[details]
Archive of layout-test-results from ews106 for mac-highsierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews106 Port: mac-highsierra-wk2 Platform: Mac OS X 10.13.6
Yusuke Suzuki
Comment 37
2019-02-19 21:02:18 PST
Created
attachment 362480
[details]
Patch
EWS Watchlist
Comment 38
2019-02-19 21:05:11 PST
Attachment 362480
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/dfg/DFGOperations.h:206: The parameter name "cell" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.cpp:347: More than one command on the same line [whitespace/newline] [4] ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] ERROR: Source/JavaScriptCore/runtime/JSString.h:390: The parameter name "vm" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:390: The parameter name "string" adds no information, so it should be removed. [readability/parameter_name] [5] ERROR: Source/JavaScriptCore/runtime/JSString.h:491: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1557: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] ERROR: Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1568: Tests for true/false, null/non-null, and zero/non-zero should all be done without equality comparisons. [readability/comparison_to_zero] [5] Total errors found: 9 in 32 files If any of these errors are false positives, please file a bug against check-webkit-style.
EWS Watchlist
Comment 39
2019-02-19 23:42:47 PST
Comment on
attachment 362480
[details]
Patch
Attachment 362480
[details]
did not pass jsc-ews (mac): Output:
https://webkit-queues.webkit.org/results/11214764
New failing tests: stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager-no-cjit-validate stress/StringObject-define-length-getter-rope-string-oom.js.dfg-eager-no-cjit-validate stress/StringObject-define-length-getter-rope-string-oom.js.ftl-eager stress/regress-189132.js.dfg-maximal-flush-validate-no-cjit stress/regress-189132.js.default stress/to-lower-case-intrinsic-on-empty-rope.js.bytecode-cache stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-maximal-flush-validate-no-cjit stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-validate-sampling-profiler stress/to-lower-case-intrinsic-on-empty-rope.js.no-ftl stress/regress-189132.js.ftl-eager stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-validate-phases stress/StringObject-define-length-getter-rope-string-oom.js.bytecode-cache stress/to-lower-case-intrinsic-on-empty-rope.js.no-cjit-collect-continuously stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-no-put-stack-validate stress/regress-189132.js.ftl-no-cjit-no-inline-validate stress/StringObject-define-length-getter-rope-string-oom.js.ftl-eager-no-cjit stress/regress-189132.js.bytecode-cache stress/regress-189132.js.dfg-eager-no-cjit-validate stress/regress-189132.js.ftl-no-cjit-small-pool stress/regress-189132.js.ftl-no-cjit-validate-sampling-profiler stress/StringObject-define-length-getter-rope-string-oom.js.no-ftl stress/regress-189132.js.ftl-eager-no-cjit-b3o1 stress/StringObject-define-length-getter-rope-string-oom.js.ftl-eager-no-cjit-b3o1 stress/regress-189132.js.ftl-no-cjit-no-put-stack-validate stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-small-pool stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager stress/to-lower-case-intrinsic-on-empty-rope.js.no-llint stress/regress-189132.js.ftl-eager-no-cjit stress/StringObject-define-length-getter-rope-string-oom.js.dfg-eager stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-put-stack-validate stress/StringObject-define-length-getter-rope-string-oom.js.no-cjit-collect-continuously stress/regress-189132.js.no-ftl stress/regress-189132.js.no-llint stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-b3o0 stress/StringObject-define-length-getter-rope-string-oom.js.default stress/regress-189132.js.ftl-no-cjit-b3o0 stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit stress/to-lower-case-intrinsic-on-empty-rope.js.default stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-eager-no-cjit-b3o1 stress/StringObject-define-length-getter-rope-string-oom.js.dfg-maximal-flush-validate-no-cjit stress/StringObject-define-length-getter-rope-string-oom.js.no-llint stress/regress-189132.js.no-cjit-validate-phases stress/to-lower-case-intrinsic-on-empty-rope.js.dfg-eager stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-no-inline-validate stress/regress-189132.js.no-cjit-collect-continuously stress/regress-189132.js.dfg-eager stress/StringObject-define-length-getter-rope-string-oom.js.no-cjit-validate-phases stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-small-pool stress/to-lower-case-intrinsic-on-empty-rope.js.ftl-no-cjit-validate-sampling-profiler stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-no-inline-validate stress/StringObject-define-length-getter-rope-string-oom.js.ftl-no-cjit-b3o0 apiTests
Yusuke Suzuki
Comment 40
2019-02-20 22:39:54 PST
Created
attachment 362595
[details]
Patch
Yusuke Suzuki
Comment 41
2019-02-21 11:46:17 PST
Created
attachment 362624
[details]
Patch
Yusuke Suzuki
Comment 42
2019-02-21 11:55:14 PST
Created
attachment 362625
[details]
Patch
EWS Watchlist
Comment 43
2019-02-21 11:57:05 PST
Attachment 362625
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 33 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 44
2019-02-21 12:20:00 PST
Created
attachment 362627
[details]
Patch
EWS Watchlist
Comment 45
2019-02-21 12:23:26 PST
Attachment 362627
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 31 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 46
2019-02-21 12:46:58 PST
Created
attachment 362629
[details]
Patch
EWS Watchlist
Comment 47
2019-02-21 12:49:44 PST
Attachment 362629
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 31 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 48
2019-02-21 12:54:01 PST
Created
attachment 362632
[details]
Patch
EWS Watchlist
Comment 49
2019-02-21 12:57:33 PST
Attachment 362632
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 31 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 50
2019-02-21 13:22:03 PST
Created
attachment 362638
[details]
Patch
EWS Watchlist
Comment 51
2019-02-21 13:25:42 PST
Attachment 362638
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 31 files If any of these errors are false positives, please file a bug against check-webkit-style.
EWS Watchlist
Comment 52
2019-02-21 15:59:57 PST
Comment on
attachment 362638
[details]
Patch
Attachment 362638
[details]
did not pass mac-debug-ews (mac): Output:
https://webkit-queues.webkit.org/results/11237156
New failing tests: imported/w3c/web-platform-tests/IndexedDB/idbfactory-open-request-error.html
EWS Watchlist
Comment 53
2019-02-21 15:59:59 PST
Created
attachment 362658
[details]
Archive of layout-test-results from ews114 for mac-highsierra The attached test failures were seen while running run-webkit-tests on the mac-debug-ews. Bot: ews114 Port: mac-highsierra Platform: Mac OS X 10.13.6
EWS Watchlist
Comment 54
2019-02-21 16:11:10 PST
Comment on
attachment 362638
[details]
Patch
Attachment 362638
[details]
did not pass ios-sim-ews (ios-simulator-wk2): Output:
https://webkit-queues.webkit.org/results/11237101
New failing tests: webgl/2.0.0/conformance/more/conformance/quickCheckAPI-B3.html
EWS Watchlist
Comment 55
2019-02-21 16:11:13 PST
Created
attachment 362661
[details]
Archive of layout-test-results from ews123 for ios-simulator-wk2 The attached test failures were seen while running run-webkit-tests on the ios-sim-ews. Bot: ews123 Port: ios-simulator-wk2 Platform: Mac OS X 10.13.6
Yusuke Suzuki
Comment 56
2019-02-21 16:34:17 PST
Created
attachment 362669
[details]
Patch
EWS Watchlist
Comment 57
2019-02-21 16:37:05 PST
Attachment 362669
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 31 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 58
2019-02-21 17:12:23 PST
Created
attachment 362672
[details]
Patch
EWS Watchlist
Comment 59
2019-02-21 17:15:29 PST
Attachment 362672
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 31 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 60
2019-02-21 17:45:32 PST
Created
attachment 362676
[details]
Patch
EWS Watchlist
Comment 61
2019-02-21 17:47:48 PST
Attachment 362676
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 31 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 62
2019-02-21 19:31:50 PST
Created
attachment 362686
[details]
Patch
EWS Watchlist
Comment 63
2019-02-21 19:35:27 PST
Attachment 362686
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 32 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 64
2019-02-21 20:17:36 PST
Comment on
attachment 362686
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=362686&action=review
> Source/JavaScriptCore/ChangeLog:9 > + Both classes cut 16 bytes per instance in GC allocation. This new layout is used in 64bit architectures which allows unaligned accesses and
Ignore this "unaligned access" part, this feature is no longer used in the latest patch. I'll drop this part.
Yusuke Suzuki
Comment 65
2019-02-22 14:44:14 PST
Comment on
attachment 362686
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=362686&action=review
> Source/JavaScriptCore/runtime/JSString.h:494 > { > Base::finishCreation(vm); > ASSERT(!sumOverflows<int32_t>(s1->length(), s2->length())); > + setIsSubstring(false); > setLength(s1->length() + s2->length()); > setIs8Bit(s1->is8Bit() && s2->is8Bit()); > - setIsSubstring(false); > - fiber(0).set(vm, this, s1); > - fiber(1).set(vm, this, s2); > - fiber(2).clear(); > + initializeFiber0(vm, s1); > + initializeFiber1(vm, s2); > + initializeFiber2(vm, nullptr); > + ASSERT((s1->length() + s2->length()) == length()); > } > > void finishCreation(VM& vm, JSString* s1, JSString* s2, JSString* s3) > { > Base::finishCreation(vm); > ASSERT(!sumOverflows<int32_t>(s1->length(), s2->length(), s3->length())); > + setIsSubstring(false); > setLength(s1->length() + s2->length() + s3->length()); > setIs8Bit(s1->is8Bit() && s2->is8Bit() && s3->is8Bit()); > - setIsSubstring(false); > - fiber(0).set(vm, this, s1); > - fiber(1).set(vm, this, s2); > - fiber(2).set(vm, this, s3); > + initializeFiber0(vm, s1); > + initializeFiber1(vm, s2); > + initializeFiber2(vm, s3); > + ASSERT((s1->length() + s2->length() + s3->length()) == length()); > } > > void finishCreation(VM& vm, ExecState* exec, JSString* base, unsigned offset, unsigned length)
NOTE: Moving JSRopeString::finishCreation's operations into JSRopeString constructors is better since we would like to ensure that all the JSRopeString's fields valid before JSCell::finishCreation(vm) performs mutator fence. I'll move them in the updated patch.
Saam Barati
Comment 66
2019-02-22 19:05:15 PST
Comment on
attachment 362686
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=362686&action=review
> Source/JavaScriptCore/ChangeLog:14 > + We emit store-store fence when we put String pointer. This should exist even before this patch, so this patch also fixes one concurrency issue.
"store-store fence when we put String pointer" => "store-store fence before we put String pointer"
> Source/JavaScriptCore/ChangeLog:18 > + fibers to compress three fibers + length + flags into three pointer width storage.
Maybe worth a memory diagram of the layout here for future reference?
> Source/JavaScriptCore/ChangeLog:24 > +
You need to talk about how you made the empty JSString* a singleton.
> Source/JavaScriptCore/bytecode/InlineAccess.cpp:322 > + jit.loadPtr(CCallHelpers::Address(base, JSString::offsetOfValue()), scratch); > + auto isRope = jit.branchIfRopeStringImpl(scratch); > + jit.load32(CCallHelpers::Address(scratch, StringImpl::lengthMemoryOffset()), value.payloadGPR()); > + auto done = jit.jump(); > + > + isRope.link(&jit); > + jit.load32(CCallHelpers::Address(base, JSRopeString::offsetOfLength()), value.payloadGPR()); > + > + done.link(&jit);
Let's verify this fits in the inline nop-sled still. I think it should.
> Source/JavaScriptCore/dfg/DFGOperations.cpp:2180 > + if (to > from && to > 0 && from < length) { > + if (from < 0) > + from = 0; > + if (to > length) > + to = length; > + scope.release(); > + return jsSubstring(exec, string, static_cast<unsigned>(from), static_cast<unsigned>(to) - static_cast<unsigned>(from)); > + }
Do we not have a helper for this already? Perhaps we can abstract parts out of the normal runtime functionality?
> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1554 > + auto emitPopulateSliceIndex = [&] (Edge& target, GPRReg indexGPR, GPRReg lengthGPR, GPRReg resultGPR) {
Let's try to make the previous version of this have a variant that allows for your use case since the code is almost identical.
> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2189 > + // unsigned comparison so we can filter out negative indices and indices that are too large
you should put this above comment above speculation check.
> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2233 > + m_jit.loadPtr(MacroAssembler::Address(baseReg, JSString::offsetOfValue()), scratchReg);
aren't you missing an isRope check here? If so, please add a test.
> Source/JavaScriptCore/runtime/JSString.h:178 > unsigned length = value->length();
Can we assert the length is non-zero?
Yusuke Suzuki
Comment 67
2019-02-22 21:14:37 PST
Comment on
attachment 362686
[details]
Patch Thanks! I'm now reflecting your comments on my patch :D
Yusuke Suzuki
Comment 68
2019-02-22 21:31:48 PST
Comment on
attachment 362686
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=362686&action=review
>> Source/JavaScriptCore/ChangeLog:9 >> + Both classes cut 16 bytes per instance in GC allocation. This new layout is used in 64bit architectures which allows unaligned accesses and > > Ignore this "unaligned access" part, this feature is no longer used in the latest patch. I'll drop this part.
Fixed.
>> Source/JavaScriptCore/ChangeLog:14 >> + We emit store-store fence when we put String pointer. This should exist even before this patch, so this patch also fixes one concurrency issue. > > "store-store fence when we put String pointer" => "store-store fence before we put String pointer"
Fixed.
>> Source/JavaScriptCore/ChangeLog:18 >> + fibers to compress three fibers + length + flags into three pointer width storage. > > Maybe worth a memory diagram of the layout here for future reference?
OK, I've pasted the diagram shown in JSString.h here :)
>> Source/JavaScriptCore/ChangeLog:24 >> + > > You need to talk about how you made the empty JSString* a singleton.
Nice, yeah, I should do this. Fixed.
>> Source/JavaScriptCore/bytecode/InlineAccess.cpp:322 >> + done.link(&jit); > > Let's verify this fits in the inline nop-sled still. I think it should.
I've checked and found that basically various inline access sizes are changed. I've updated the numbers.
>> Source/JavaScriptCore/dfg/DFGOperations.cpp:2180 >> + } > > Do we not have a helper for this already? Perhaps we can abstract parts out of the normal runtime functionality?
Make sense, I'll extract the similar part in runtime function and this DFG operation and put it in some Inlines header to be shared.
>> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:1554 >> + auto emitPopulateSliceIndex = [&] (Edge& target, GPRReg indexGPR, GPRReg lengthGPR, GPRReg resultGPR) { > > Let's try to make the previous version of this have a variant that allows for your use case since the code is almost identical.
OK, fixed.
>> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2189 >> + // unsigned comparison so we can filter out negative indices and indices that are too large > > you should put this above comment above speculation check.
Oops, right. Fixed.
>> Source/JavaScriptCore/dfg/DFGSpeculativeJIT.cpp:2233 >> + m_jit.loadPtr(MacroAssembler::Address(baseReg, JSString::offsetOfValue()), scratchReg); > > aren't you missing an isRope check here? If so, please add a test.
This is OK. As you can see, the old code does not have rope check too (the old code also accesses StringImpl::flagsOffset in L2187). This is because this code is for GetByVal. We already emit Array check thing for Array::String (this is also asserted in L2230), and it forces rope to be resolved. So here, the input is always non rope string.
>> Source/JavaScriptCore/runtime/JSString.h:178 >> unsigned length = value->length(); > > Can we assert the length is non-zero?
Sure! Fixed.
Yusuke Suzuki
Comment 69
2019-02-22 22:53:53 PST
Created
attachment 362816
[details]
Patch
Yusuke Suzuki
Comment 70
2019-02-22 22:54:40 PST
Comment on
attachment 362816
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=362816&action=review
> Source/JavaScriptCore/bytecode/InlineAccess.h:50 > #if CPU(X86_64) > - return 23; > + return 26; > #elif CPU(X86) > return 27; > #elif CPU(ARM64)
I'll update ARM64 part in the subsequent revision of this patch.
Yusuke Suzuki
Comment 71
2019-02-22 23:01:54 PST
Created
attachment 362817
[details]
Patch
EWS Watchlist
Comment 72
2019-02-22 23:04:30 PST
Attachment 362817
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 37 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 73
2019-02-26 21:17:00 PST
Created
attachment 363064
[details]
Patch
EWS Watchlist
Comment 74
2019-02-26 21:19:59 PST
Attachment 363064
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 37 files If any of these errors are false positives, please file a bug against check-webkit-style.
Yusuke Suzuki
Comment 75
2019-02-26 23:30:23 PST
Created
attachment 363076
[details]
Patch
Yusuke Suzuki
Comment 76
2019-02-26 23:57:53 PST
Created
attachment 363077
[details]
Patch
EWS Watchlist
Comment 77
2019-02-27 00:00:48 PST
Attachment 363077
[details]
did not pass style-queue: ERROR: Source/JavaScriptCore/ftl/FTLAbstractHeapRepository.h:196: JSString_value is incorrectly named. Don't use underscores in your identifier names. [readability/naming/underscores] [4] Total errors found: 1 in 39 files If any of these errors are false positives, please file a bug against check-webkit-style.
EWS Watchlist
Comment 78
2019-02-27 01:29:06 PST
Comment on
attachment 363077
[details]
Patch
Attachment 363077
[details]
did not pass mac-wk2-ews (mac-wk2): Output:
https://webkit-queues.webkit.org/results/11300827
New failing tests: http/wpt/mediarecorder/MediaRecorder-AV-audio-video-dataavailable.html
EWS Watchlist
Comment 79
2019-02-27 01:29:09 PST
Created
attachment 363080
[details]
Archive of layout-test-results from ews107 for mac-highsierra-wk2 The attached test failures were seen while running run-webkit-tests on the mac-wk2-ews. Bot: ews107 Port: mac-highsierra-wk2 Platform: Mac OS X 10.13.6
Yusuke Suzuki
Comment 80
2019-02-27 10:58:52 PST
(In reply to Build Bot from
comment #79
)
> Created
attachment 363080
[details]
> Archive of layout-test-results from ews107 for mac-highsierra-wk2 > > The attached test failures were seen while running run-webkit-tests on the > mac-wk2-ews. > Bot: ews107 Port: mac-highsierra-wk2 Platform: Mac OS X 10.13.6
I don't think this is related since this crash happens in initAVEncoderBitRateKey, initialization part of softlinking.
Yusuke Suzuki
Comment 81
2019-02-28 12:25:33 PST
Comment on
attachment 363077
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=363077&action=review
> Source/JavaScriptCore/bytecode/InlineAccess.cpp:169 > + constexpr bool failIfCantInline = true;
Oops, ignore this. I used this to explore the value I want.
Saam Barati
Comment 82
2019-02-28 12:37:39 PST
Comment on
attachment 363077
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=363077&action=review
r=me with comments.
> Source/JavaScriptCore/bytecode/InlineAccess.cpp:169 > + constexpr bool failIfCantInline = true;
this should go back to being false.
> Source/JavaScriptCore/bytecode/InlineAccess.h:47 > + return 26;
Do we need to bump sizes on arm64?
> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5269 > + Allocator allocatorValue = allocatorForNonVirtualConcurrently<JSRopeString>(*m_jit.vm(), sizeof(JSRopeString), AllocatorForMode::AllocatorIfExists);
Should we assert this isn't null since we're calling AllocatorIfExists but also assuming it's a constant? E.g, the code below breaks if it's not a constant.
> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5324 > + m_jit.and32(TrustedImm32(string->is8Bit() ? StringImpl::flagIs8Bit() : 0), scratchGPR);
Why not and16 to be consistent w/ below?
> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6506 > + struct FlagsAndLength { > + LValue flags; > + LValue length; > + };
style nit: This should go inside compileMakeRope
> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6587 > + LValue length = lengthCheck;
this is unneeded.
> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6590 > + length
just use lengthCheck here
> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6621 > +
Instead of having duplicate code in mergeFlagsAndLength and initializeFlagsAndLength, I think you could just repeatedly call initializeFlagAndLengths (and also rename the lambda) and just do: LValue flags = m_out.bitAnd(flagsAndLength.flags, <flags>); CheckValue* lengthCheck = m_out.speculateAdd(flagsAndLength.length, <length>)); return FlagsAndLength ...
> Source/JavaScriptCore/runtime/JSString.cpp:245 > + WTF::storeStoreFence(); > + new (&uninitializedValueInternal()) String(WTFMove(string));
This is valid today, since this constructor is just a single refptr move. However, this would be incorrect in the future if sizeof(String) ever changes. Maybe we should have a static_assert here? It might be cleaner if we just treated this field like RefPtr<StringImpl> ourselves.
> Source/JavaScriptCore/runtime/JSString.cpp:246 > + ASSERT(!JSString::isRope());
Might also be worth a comment saying we don't clear the other bits since we could be reading the length concurrently.
> Source/JavaScriptCore/runtime/JSString.h:41 > +IGNORE_RETURN_TYPE_WARNINGS_BEGIN
What's this needed for?
> Source/JavaScriptCore/runtime/JSString.h:280 > + static constexpr uintptr_t flagMask = 0xffff000000000000ULL; > + static constexpr uintptr_t stringMask = ~(flagMask | IsRopeInPointer); > + static constexpr uintptr_t Is8BitInPointer = static_cast<uintptr_t>(Is8Bit) << 48;
style nit: capitalization of first letter seems inconsistent here.
> Source/JavaScriptCore/runtime/JSString.h:496 > + initializeLength(s1->length() + s2->length() + s3->length());
Seems like this is prior code, but where do we check for overflow?
> Source/JavaScriptCore/runtime/JSString.h:541 > + vm.heap.writeBarrier(this, s1); > + vm.heap.writeBarrier(this, s2);
Why? |this| is guaranteed to be in new space here.
> Source/JavaScriptCore/runtime/JSString.h:549 > + vm.heap.writeBarrier(this, s1); > + vm.heap.writeBarrier(this, s2); > + vm.heap.writeBarrier(this, s3);
ditto
> Source/JavaScriptCore/runtime/JSString.h:556 > + vm.heap.writeBarrier(this, updatedBase);
ditto
> Source/JavaScriptCore/runtime/JSString.h:667 > + uintptr_t pointer = bitwise_cast<uintptr_t>(fiber);
let's also assert that !(pointer & ~stringMask)
> Source/JavaScriptCore/runtime/JSString.h:734 > +ALWAYS_INLINE bool JSString::is8Bit() const
It's worth a comment saying this can be run concurrently.
> Source/JavaScriptCore/runtime/JSString.h:750 > +ALWAYS_INLINE unsigned JSString::length() const
ditto
> Source/JavaScriptCore/runtime/JSString.h:754 > + return static_cast<const JSRopeString*>(this)->length();
You should say why this is safe to call concurrently. It's because we never override the length bits when we resolve a rope. Also nit: use jsCast
> JSTests/stress/to-lower-case-intrinsic-on-empty-rope.js:-24 > - assert(isRope(rope)); // Keep this test future proofed. If this stops returning a rope, we should try to find another way to return an empty rope.
Instead of deleting this test, can you just change this to !isRope(rope) and rename variables appropriately?
Yusuke Suzuki
Comment 83
2019-02-28 15:16:08 PST
Comment on
attachment 363077
[details]
Patch View in context:
https://bugs.webkit.org/attachment.cgi?id=363077&action=review
Thanks!
>>> Source/JavaScriptCore/bytecode/InlineAccess.cpp:169 >>> + constexpr bool failIfCantInline = true; >> >> Oops, ignore this. I used this to explore the value I want. > > this should go back to being false.
Fixed.
>> Source/JavaScriptCore/bytecode/InlineAccess.h:47 >> + return 26; > > Do we need to bump sizes on arm64?
Yes, I'm now updating it on ARM64 machine :)
>> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5269 >> + Allocator allocatorValue = allocatorForNonVirtualConcurrently<JSRopeString>(*m_jit.vm(), sizeof(JSRopeString), AllocatorForMode::AllocatorIfExists); > > Should we assert this isn't null since we're calling AllocatorIfExists but also assuming it's a constant? E.g, the code below breaks if it's not a constant.
If allocatorValue is nullptr constant, then emitAllocateJSCell emits the jump to the slow path. So this works :)
>> Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp:5324 >> + m_jit.and32(TrustedImm32(string->is8Bit() ? StringImpl::flagIs8Bit() : 0), scratchGPR); > > Why not and16 to be consistent w/ below?
Right now, and32 only has `TrustedImm32(), GPRReg` formed version in ARM64. I can add it easily, but given that we would change this code in a follow-up patch, I think we should do that in that patch if necessary.
>> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6506 >> + }; > > style nit: This should go inside compileMakeRope
Fixed
>> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6587 >> + LValue length = lengthCheck; > > this is unneeded.
Right. Fixed.
>> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6590 >> + length > > just use lengthCheck here
Fixed.
>> Source/JavaScriptCore/ftl/FTLLowerDFGToB3.cpp:6621 >> + > > Instead of having duplicate code in mergeFlagsAndLength and initializeFlagsAndLength, I think you could just repeatedly call initializeFlagAndLengths (and also rename the lambda) and just do: > > LValue flags = m_out.bitAnd(flagsAndLength.flags, <flags>); > CheckValue* lengthCheck = m_out.speculateAdd(flagsAndLength.length, <length>)); > return FlagsAndLength ...
Sounds reasonable. Fixed.
>> Source/JavaScriptCore/runtime/JSString.cpp:245 >> + new (&uninitializedValueInternal()) String(WTFMove(string)); > > This is valid today, since this constructor is just a single refptr move. However, this would be incorrect in the future if sizeof(String) ever changes. Maybe we should have a static_assert here? > > It might be cleaner if we just treated this field like RefPtr<StringImpl> ourselves.
Yes, and you're right. I like the idea, using RefPtr<StringImpl> directly in JSString. But it involves bunch of code changes and I would like to do that in a subsequent patch. For now, I inserted static_assert(sizeof(String) == sizeof(RefPtr<StringImpl>)) here.
>> Source/JavaScriptCore/runtime/JSString.cpp:246 >> + ASSERT(!JSString::isRope()); > > Might also be worth a comment saying we don't clear the other bits since we could be reading the length concurrently.
Right! Added a comment.
>> Source/JavaScriptCore/runtime/JSString.h:41 >> +IGNORE_RETURN_TYPE_WARNINGS_BEGIN > > What's this needed for?
Previously I had a code requiring this but we no longer have that. We can remove this, fixed.
>> Source/JavaScriptCore/runtime/JSString.h:280 >> + static constexpr uintptr_t Is8BitInPointer = static_cast<uintptr_t>(Is8Bit) << 48; > > style nit: capitalization of first letter seems inconsistent here.
I'm still not sure the right convention because I can see JSString::MaxLength and JSBigInt::maxLength. Here, I use `is8BitInPointer`. Fixed.
>> Source/JavaScriptCore/runtime/JSString.h:496 >> + initializeLength(s1->length() + s2->length() + s3->length()); > > Seems like this is prior code, but where do we check for overflow?
Yes. Our jsString factory functions do that before calling actual JSRopeString::create / JSString::create functions because we already have another MaxLength limit.
>> Source/JavaScriptCore/runtime/JSString.h:541 >> + vm.heap.writeBarrier(this, s2); > > Why? |this| is guaranteed to be in new space here.
Right! This is unnecessary. Removed.
>> Source/JavaScriptCore/runtime/JSString.h:549 >> + vm.heap.writeBarrier(this, s3); > > ditto
Fixed.
>> Source/JavaScriptCore/runtime/JSString.h:556 >> + vm.heap.writeBarrier(this, updatedBase); > > ditto
Fixed.
> Source/JavaScriptCore/runtime/JSString.h:567 > + vm.heap.writeBarrier(this, substringBase());
I removed this too.
>> Source/JavaScriptCore/runtime/JSString.h:667 >> + uintptr_t pointer = bitwise_cast<uintptr_t>(fiber); > > let's also assert that !(pointer & ~stringMask)
Sounds nice, fixed.
>> Source/JavaScriptCore/runtime/JSString.h:734 >> +ALWAYS_INLINE bool JSString::is8Bit() const > > It's worth a comment saying this can be run concurrently.
Super nice. Fixed.
>> Source/JavaScriptCore/runtime/JSString.h:750 >> +ALWAYS_INLINE unsigned JSString::length() const > > ditto
Fixed.
>> Source/JavaScriptCore/runtime/JSString.h:754 >> + return static_cast<const JSRopeString*>(this)->length(); > > You should say why this is safe to call concurrently. It's because we never override the length bits when we resolve a rope. > > Also nit: use jsCast
Fixed.
>> JSTests/stress/to-lower-case-intrinsic-on-empty-rope.js:-24 >> - assert(isRope(rope)); // Keep this test future proofed. If this stops returning a rope, we should try to find another way to return an empty rope. > > Instead of deleting this test, can you just change this to !isRope(rope) and rename variables appropriately?
Yeah, fixed.
Yusuke Suzuki
Comment 84
2019-02-28 17:56:11 PST
I changed InlineAccess's linkCodeInline to use `bool needsBranchCompaction = true`. This is because now StringLength inline access code may use jumps, which are not correctly handled if ENABLE(BRANCH_COMPACTION) is on and needsBranchCompaction = false.
Yusuke Suzuki
Comment 85
2019-02-28 19:12:08 PST
Created
attachment 363288
[details]
Patch for landing
Yusuke Suzuki
Comment 86
2019-02-28 19:13:40 PST
Committed
r242252
: <
https://trac.webkit.org/changeset/242252
>
Radar WebKit Bug Importer
Comment 87
2019-02-28 19:14:28 PST
<
rdar://problem/48498246
>
Saam Barati
Comment 88
2019-02-28 19:54:38 PST
(In reply to Yusuke Suzuki from
comment #84
)
> I changed InlineAccess's linkCodeInline to use `bool needsBranchCompaction = > true`. > This is because now StringLength inline access code may use jumps, which are > not correctly handled if ENABLE(BRANCH_COMPACTION) is on and > needsBranchCompaction = false.
Can you explain?
Ryan Haddad
Comment 89
2019-02-28 21:15:11 PST
Two webkitpy tests are failing after this change: [1871/1875] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFStringImpl_SummaryProvider_8bit_string failed: Traceback (most recent call last): File "/Volumes/Data/slave/mojave-release-tests-wk1/build/Tools/lldb/lldb_webkit_unittest.py", line 118, in serial_test_WTFStringImpl_SummaryProvider_8bit_string self.assertEqual(summary, "{ length = 8, is8bit = 1, contents = 'r\\xe9sum\\xe9' }") AssertionError: "{ length = 8, is8bit = 0, contents = '\\uc372\\u73a9\\u6d75\\ua9c3\\x00\\x00\\x02\\x00' }" != "{ length = 8, is8bit = 1, contents = 'r\\xe9sum\\xe9' }" [1873/1875] lldb_webkit_unittest.TestSummaryProviders.serial_test_WTFString_SummaryProvider_8bit_string failed: Traceback (most recent call last): File "/Volumes/Data/slave/mojave-release-tests-wk1/build/Tools/lldb/lldb_webkit_unittest.py", line 136, in serial_test_WTFString_SummaryProvider_8bit_string self.assertEqual(summary, "{ length = 8, contents = 'r\\xe9sum\\xe9' }") AssertionError: "{ length = 8, contents = '\\uc372\\u73a9\\u6d75\\ua9c3\\x00\\x00\\x02\\x00' }" != "{ length = 8, contents = 'r\\xe9sum\\xe9' }"
https://build.webkit.org/builders/Apple%20Mojave%20Release%20WK1%20%28Tests%29/builds/3313/steps/webkitpy-test/logs/stdio
Yusuke Suzuki
Comment 90
2019-02-28 22:33:27 PST
(In reply to Ryan Haddad from
comment #89
)
> Two webkitpy tests are failing after this change: > > [1871/1875] > lldb_webkit_unittest.TestSummaryProviders. > serial_test_WTFStringImpl_SummaryProvider_8bit_string failed: > Traceback (most recent call last): > File > "/Volumes/Data/slave/mojave-release-tests-wk1/build/Tools/lldb/ > lldb_webkit_unittest.py", line 118, in > serial_test_WTFStringImpl_SummaryProvider_8bit_string > self.assertEqual(summary, "{ length = 8, is8bit = 1, contents = > 'r\\xe9sum\\xe9' }") > AssertionError: "{ length = 8, is8bit = 0, contents = > '\\uc372\\u73a9\\u6d75\\ua9c3\\x00\\x00\\x02\\x00' }" != "{ length = 8, > is8bit = 1, contents = 'r\\xe9sum\\xe9' }" > > [1873/1875] > lldb_webkit_unittest.TestSummaryProviders. > serial_test_WTFString_SummaryProvider_8bit_string failed: > Traceback (most recent call last): > File > "/Volumes/Data/slave/mojave-release-tests-wk1/build/Tools/lldb/ > lldb_webkit_unittest.py", line 136, in > serial_test_WTFString_SummaryProvider_8bit_string > self.assertEqual(summary, "{ length = 8, contents = 'r\\xe9sum\\xe9' > }") > AssertionError: "{ length = 8, contents = > '\\uc372\\u73a9\\u6d75\\ua9c3\\x00\\x00\\x02\\x00' }" != "{ length = 8, > contents = 'r\\xe9sum\\xe9' }" > >
https://build.webkit.org/builders/
> Apple%20Mojave%20Release%20WK1%20%28Tests%29/builds/3313/steps/webkitpy-test/ > logs/stdio
Oh! Yeah, this failure is caused by this patch because I changed StringImpl's flags. I'll land the fix for that.
Yusuke Suzuki
Comment 91
2019-02-28 23:06:08 PST
(In reply to Saam Barati from
comment #88
)
> (In reply to Yusuke Suzuki from
comment #84
) > > I changed InlineAccess's linkCodeInline to use `bool needsBranchCompaction = > > true`. > > This is because now StringLength inline access code may use jumps, which are > > not correctly handled if ENABLE(BRANCH_COMPACTION) is on and > > needsBranchCompaction = false. > > Can you explain?
Sure. Previously, InlineAccess uses `needsBranchCompaction = false` configuration when linking the code in LinkBuffer. This configuration is no-op in x64, and it affects on ARM64 and ARMv7. When we emit `jump()` we pessimistically emits instructions on ARM64. And LinkBuffer's copyCompactAndLinkCode attempts to shrink the code by compacting branches. We have a special path in copyCompactAndLinkCode, which is used when we pass `needsBranchCompaction = false`. This mode is like, "If you know your generated code does not include any branches which can be compacted, then you can specify this option and copyCompactAndLinkCode skips compaction attempt". We used this option in InlineAccess's code generation because we did not emit any jumps except for patchable jumps in InlineAccess. Since patchable jumps are not compact-able, this option works fine. If this option is passed, we skip all the jump relocations and just copy the instruction data. But now StringLength has jumps. So this assumption becomes broken. If we use needsBranchCompaction option, we emit the broken code since we skip all the jump relocations. There are two ways to fix this issue I think. One is adding a jump relocation code to the path used for `needsBranchCompaction = false` too. Another is using `needsBranchCompaction = true`. I took the second one here since this is simple. If skipping compaction has significant impact, we can implement it in a subsequent patch.
Yusuke Suzuki
Comment 92
2019-03-01 00:41:33 PST
Committed
r242260
: <
https://trac.webkit.org/changeset/242260
>
Shawn Roberts
Comment 93
2019-03-05 10:52:07 PST
It appears since this revision that this is causing 79 Assertion failures on Debug JSC ChakraCore.yaml/ChakraCore/test/Basics/Length.js.default ChakraCore.yaml/ChakraCore/test/TaggedIntegers/comparison.js.defaultChakraCore.yaml/ChakraCore/test/UnifiedRegex/propertyString.js.default airjs-tests.yaml/stress-test.js jsc-layout-tests.yaml/js/script-tests/equality.js microbenchmarks/emscripten-cube2hash.js.no-ftl stress/get-by-val-with-string-generated.js stress/rest-parameter-many-arguments.js. stress/tailCallForwardArguments.js.ftl-no-cjit-small-pool wasm.yaml/wasm/js-api/globals-import.js Build Log :
https://build.webkit.org/builders/Apple%20High%20Sierra%20Debug%20JSC%20%28Tests%29/builds/2227/steps/jscore-test/logs/stdio
Yusuke Suzuki
Comment 94
2019-03-05 10:54:19 PST
(In reply to Shawn Roberts from
comment #93
)
> It appears since this revision that this is causing 79 Assertion failures on > Debug JSC > > ChakraCore.yaml/ChakraCore/test/Basics/Length.js.default > ChakraCore.yaml/ChakraCore/test/TaggedIntegers/comparison.js. > defaultChakraCore.yaml/ChakraCore/test/UnifiedRegex/propertyString.js.default > airjs-tests.yaml/stress-test.js > jsc-layout-tests.yaml/js/script-tests/equality.js > microbenchmarks/emscripten-cube2hash.js.no-ftl > stress/get-by-val-with-string-generated.js > stress/rest-parameter-many-arguments.js. > stress/tailCallForwardArguments.js.ftl-no-cjit-small-pool > wasm.yaml/wasm/js-api/globals-import.js > > Build Log : > >
https://build.webkit.org/builders/
> Apple%20High%20Sierra%20Debug%20JSC%20%28Tests%29/builds/2227/steps/jscore- > test/logs/stdio
I'll look into it now.
Yusuke Suzuki
Comment 95
2019-03-05 11:10:45 PST
(In reply to Yusuke Suzuki from
comment #94
)
> (In reply to Shawn Roberts from
comment #93
) > > It appears since this revision that this is causing 79 Assertion failures on > > Debug JSC > > > > ChakraCore.yaml/ChakraCore/test/Basics/Length.js.default > > ChakraCore.yaml/ChakraCore/test/TaggedIntegers/comparison.js. > > defaultChakraCore.yaml/ChakraCore/test/UnifiedRegex/propertyString.js.default > > airjs-tests.yaml/stress-test.js > > jsc-layout-tests.yaml/js/script-tests/equality.js > > microbenchmarks/emscripten-cube2hash.js.no-ftl > > stress/get-by-val-with-string-generated.js > > stress/rest-parameter-many-arguments.js. > > stress/tailCallForwardArguments.js.ftl-no-cjit-small-pool > > wasm.yaml/wasm/js-api/globals-import.js > > > > Build Log : > > > >
https://build.webkit.org/builders/
> > Apple%20High%20Sierra%20Debug%20JSC%20%28Tests%29/builds/2227/steps/jscore- > > test/logs/stdio > > I'll look into it now.
OK, this is missing exception check, I'll soon fix this.
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