Bug 194041 - [JSC] Make disassembler data structures constant read-only data
Summary: [JSC] Make disassembler data structures constant read-only data
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: New Bugs (show other bugs)
Version: WebKit Nightly Build
Hardware: Unspecified Unspecified
: P2 Normal
Assignee: Yusuke Suzuki
URL:
Keywords: InRadar
Depends on:
Blocks: 193606
  Show dependency treegraph
 
Reported: 2019-01-30 13:41 PST by Yusuke Suzuki
Modified: 2019-01-31 01:45 PST (History)
8 users (show)

See Also:


Attachments
Patch (6.36 KB, patch)
2019-01-30 13:42 PST, Yusuke Suzuki
mark.lam: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Yusuke Suzuki 2019-01-30 13:41:01 PST
[JSC] Make disassembler data structures constant ro data
Comment 1 Yusuke Suzuki 2019-01-30 13:42:26 PST
Created attachment 360611 [details]
Patch
Comment 2 EWS Watchlist 2019-01-30 13:44:06 PST
Attachment 360611 [details] did not pass style-queue:


ERROR: Source/JavaScriptCore/disassembler/udis86/ud_itab.py:252:  whitespace after '('  [pep8/E201] [5]
ERROR: Source/JavaScriptCore/disassembler/udis86/ud_itab.py:263:  multiple statements on one line (semicolon)  [pep8/E702] [5]
ERROR: Source/JavaScriptCore/disassembler/udis86/ud_itab.py:263:  whitespace after '('  [pep8/E201] [5]
ERROR: Source/JavaScriptCore/disassembler/udis86/ud_itab.py:296:  whitespace after '('  [pep8/E201] [5]
ERROR: Source/JavaScriptCore/disassembler/udis86/ud_itab.py:326:  whitespace after '('  [pep8/E201] [5]
Total errors found: 5 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Mark Lam 2019-01-30 13:45:04 PST
Comment on attachment 360611 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=360611&action=review

r=me

> Source/JavaScriptCore/ChangeLog:3
> +        [JSC] Make disassembler data structures constant ro data

can you spell out read-only please?
Comment 4 Yusuke Suzuki 2019-01-30 13:45:37 PST
Comment on attachment 360611 [details]
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=360611&action=review

>> Source/JavaScriptCore/ChangeLog:3
>> +        [JSC] Make disassembler data structures constant ro data
> 
> can you spell out read-only please?

Fixed.
Comment 5 Yusuke Suzuki 2019-01-30 14:12:57 PST
Committed r240730: <https://trac.webkit.org/changeset/240730>
Comment 6 Radar WebKit Bug Importer 2019-01-30 14:13:31 PST
<rdar://problem/47680981>
Comment 7 Michael Catanzaro 2019-01-30 19:28:03 PST
Committed r240755: <https://trac.webkit.org/changeset/240755>
Comment 8 Michael Catanzaro 2019-01-30 19:29:40 PST
(In reply to Michael Catanzaro from comment #7)
> Committed r240755: <https://trac.webkit.org/changeset/240755>

The output is kinda ugly:

const struct ud_lookup_table_list_entry ud_lookup_table_list[] = {
    /* 000 */ { ud_itab__0, UD_TAB__OPC_TABLE, (const char* const)"opctbl" },
    /* 001 */ { ud_itab__1, UD_TAB__OPC_MODE, (const char* const)"/m" },
    /* 002 */ { ud_itab__2, UD_TAB__OPC_MODE, (const char* const)"/m" },
    /* 003 */ { ud_itab__3, UD_TAB__OPC_MODE, (const char* const)"/m" },
    /* 004 */ { ud_itab__4, UD_TAB__OPC_TABLE, (const char* const)"opctbl" },

etc. But it's needed to avoid:

In file included from ../../Source/JavaScriptCore/disassembler/udis86/udis86_itab_holder.c:30:
DerivedSources/JavaScriptCore/udis86_itab.c:2677:35: error: conflicting types for ‘ud_lookup_table_list’
 struct ud_lookup_table_list_entry ud_lookup_table_list[] = {
                                   ^~~~~~~~~~~~~~~~~~~~
In file included from DerivedSources/JavaScriptCore/udis86_itab.c:2,
                 from ../../Source/JavaScriptCore/disassembler/udis86/udis86_itab_holder.c:30:
../../Source/JavaScriptCore/disassembler/udis86/udis86_decode.h:189:48: note: previous declaration of ‘ud_lookup_table_list’ was here
 extern const struct ud_lookup_table_list_entry ud_lookup_table_list[];
                                                ^~~~~~~~~~~~~~~~~~~~
In file included from ../../Source/JavaScriptCore/disassembler/udis86/udis86_itab_holder.c:30:
DerivedSources/JavaScriptCore/udis86_itab.c:3272:22: error: conflicting types for ‘ud_itab’
 struct ud_itab_entry ud_itab[] = {
                      ^~~~~~~
In file included from DerivedSources/JavaScriptCore/udis86_itab.c:2,
                 from ../../Source/JavaScriptCore/disassembler/udis86/udis86_itab_holder.c:30:
../../Source/JavaScriptCore/disassembler/udis86/udis86_decode.h:188:35: note: previous declaration of ‘ud_itab’ was here
 extern const struct ud_itab_entry ud_itab[];
                                   ^~~~~~~
Comment 9 Fujii Hironori 2019-01-30 19:51:08 PST
Same error message was reported for WinCairo.
https://build.webkit.org/builders/WinCairo%2064-bit%20WKL%20Release%20%28Build%29/builds/6570

They are solved by triggering Force Clean Build.
https://build.webkit.org/builders/WinCairo%2064-bit%20WKL%20Release%20%28Build%29/builds/6581

Seems a Ninja incremental build issue.
Comment 10 Fujii Hironori 2019-01-30 19:59:28 PST
According to the GTK build log, it seems that udis86_itab_holder.c was recompiled without regenerating udis86_itab.c by invoking ud_itab.py.
https://build.webkit.org/builders/GTK%20Linux%2064-bit%20Release%20%28Build%29/builds/18892/steps/compile-webkit/logs/stdio
Comment 11 Michael Catanzaro 2019-01-30 21:03:01 PST
Hmm, OK I tricked myself then; I manually deleted udis86_itab.c to test that change, just deleting it was probably enough. Indeed, changes to ud_itab.py don't result in a rebuild of the generated files.

I'll rollout my "fix."
Comment 12 Michael Catanzaro 2019-01-30 21:04:36 PST
Reverted r240755 for reason:

This was not correct

Committed r240760: <https://trac.webkit.org/changeset/240760>
Comment 13 Michael Catanzaro 2019-01-30 21:10:00 PST
Triggered clean builds on all the WPE and GTK bots. Surprisingly, the JSCOnly bots don't seem to need it for some reason, not sure why.
Comment 14 Fujii Hironori 2019-01-30 22:08:18 PST
Because we have no JSCOnly x86 bots compiling UDIS86 code path.

It seems difficult to attach a source dependency from ud_itab.py custom commad to udis86_itab_holder.c because it is difficult to determine which unified source bundle will includes udis86_itab_holder.c.
Anyway, I think ud_itab.py won't be modified frequently.
Comment 15 Fujii Hironori 2019-01-31 01:45:44 PST
I'm wrong. C files are not bundled. File a new ticker Bug 194085 to the incremental Ninja build issue.