WebKit Bugzilla
Attachment 360571 Details for
Bug 194015
: [JSC] Make global static variables "const" as much as possible
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
Patch
bug-194015-20190130045456.patch (text/plain), 9.09 KB, created by
Yusuke Suzuki
on 2019-01-30 04:54:57 PST
(
hide
)
Description:
Patch
Filename:
MIME Type:
Creator:
Yusuke Suzuki
Created:
2019-01-30 04:54:57 PST
Size:
9.09 KB
patch
obsolete
>Subversion Revision: 240707 >diff --git a/Source/JavaScriptCore/ChangeLog b/Source/JavaScriptCore/ChangeLog >index 1bbad59724608212a7ec1fabed8c6a8f24e3f5f4..d09910dfb17341f80a759ea127a7e746b16d7849 100644 >--- a/Source/JavaScriptCore/ChangeLog >+++ b/Source/JavaScriptCore/ChangeLog >@@ -1,3 +1,28 @@ >+2019-01-30 Yusuke Suzuki <yusukesuzuki@slowstart.org> >+ >+ [JSC] Make global static variables "const" as much as possible >+ https://bugs.webkit.org/show_bug.cgi?id=194015 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Some of global static variables are not "const". For example, `static const char* name = ...` >+ is not constant variable. We should make it `static const char* const name = ...`. >+ >+ * Scripts/wkbuiltins/builtins_generate_combined_header.py: >+ (generate_externs_for_object): >+ * Scripts/wkbuiltins/builtins_generate_separate_header.py: >+ (generate_externs_for_object): >+ * Scripts/wkbuiltins/builtins_generator.py: >+ (BuiltinsGenerator.generate_embedded_code_string_section_for_data): >+ * assembler/MacroAssembler.h: >+ (JSC::MacroAssembler::additionBlindedConstant): >+ * b3/air/AirFormTable.h: >+ * b3/air/opcode_generator.rb: >+ * runtime/JSObject.cpp: >+ (JSC::JSObject::visitButterfly): >+ * tools/CodeProfile.cpp: >+ * tools/CodeProfile.h: >+ > 2019-01-29 Keith Miller <keith_miller@apple.com> > > Remove default constructor from LLIntPrototypeLoadAdaptiveStructureWatchpoint >diff --git a/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_header.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_header.py >index 88744b1f823527c5198cc9420285dd8567dd47c1..f09280558318d36ac73e88d94e172ec6e1023bd6 100644 >--- a/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_header.py >+++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_combined_header.py >@@ -91,7 +91,7 @@ def generate_externs_for_object(self, object): > 'codeName': BuiltinsGenerator.mangledNameForFunction(function) + 'Code', > } > >- lines.append("""extern const char* s_%(codeName)s; >+ lines.append("""extern const char* const s_%(codeName)s; > extern const int s_%(codeName)sLength; > extern const JSC::ConstructAbility s_%(codeName)sConstructAbility;""" % function_args) > >diff --git a/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_header.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_header.py >index 58c8f2ac8a6415a291cff888cf1f680c1d66047d..a273f745afebbc6f1be2cb98d9fc2dff27d96b43 100644 >--- a/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_header.py >+++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generate_separate_header.py >@@ -125,7 +125,7 @@ def generate_externs_for_object(self, object): > 'codeName': BuiltinsGenerator.mangledNameForFunction(function) + 'Code', > } > >- lines.append("""extern const char* s_%(codeName)s; >+ lines.append("""extern const char* const s_%(codeName)s; > extern const int s_%(codeName)sLength; > extern const JSC::ConstructAbility s_%(codeName)sConstructAbility;""" % function_args) > >diff --git a/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generator.py b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generator.py >index e8a7cc17b7831157ee50ceae7533f818de539797..a9eff68ecc1082025a8ad2dc08195c7144fbc678 100644 >--- a/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generator.py >+++ b/Source/JavaScriptCore/Scripts/wkbuiltins/builtins_generator.py >@@ -143,7 +143,7 @@ def generate_embedded_code_string_section_for_data(self, data): > lines.append("const JSC::ConstructAbility s_%(codeName)sConstructAbility = JSC::ConstructAbility::%(canConstruct)s;" % data); > lines.append("const int s_%(codeName)sLength = %(embeddedSourceLength)d;" % data); > lines.append("static const JSC::Intrinsic s_%(codeName)sIntrinsic = JSC::%(intrinsic)s;" % data); >- lines.append("const char* s_%(codeName)s =\n%(embeddedSource)s\n;" % data); >+ lines.append("const char* const s_%(codeName)s =\n%(embeddedSource)s\n;" % data); > return '\n'.join(lines) > > # Helper methods. >diff --git a/Source/JavaScriptCore/assembler/MacroAssembler.h b/Source/JavaScriptCore/assembler/MacroAssembler.h >index 3a72c2792240ab6865644570960510e6e1020d88..22c50ad10cab824bc3a10087c5b25fb702357b16 100644 >--- a/Source/JavaScriptCore/assembler/MacroAssembler.h >+++ b/Source/JavaScriptCore/assembler/MacroAssembler.h >@@ -1559,7 +1559,7 @@ class MacroAssembler : public MacroAssemblerBase { > BlindedImm32 additionBlindedConstant(Imm32 imm) > { > // The addition immediate may be used as a pointer offset. Keep aligned based on "imm". >- static uint32_t maskTable[4] = { 0xfffffffc, 0xffffffff, 0xfffffffe, 0xffffffff }; >+ static const uint32_t maskTable[4] = { 0xfffffffc, 0xffffffff, 0xfffffffe, 0xffffffff }; > > uint32_t baseValue = imm.asTrustedImm32().m_value; > uint32_t key = keyForConstant(baseValue) & maskTable[baseValue & 3]; >diff --git a/Source/JavaScriptCore/b3/air/AirFormTable.h b/Source/JavaScriptCore/b3/air/AirFormTable.h >index 6d3e504473504e27539a32da37ab1c55d8b97716..71492d3842dd93f2980a30a5abae540bde2babbb 100644 >--- a/Source/JavaScriptCore/b3/air/AirFormTable.h >+++ b/Source/JavaScriptCore/b3/air/AirFormTable.h >@@ -43,7 +43,7 @@ static const uint8_t formInvalidShift = 7; > > #define INVALID_INST_FORM (1 << formInvalidShift) > >-JS_EXPORT_PRIVATE extern uint8_t g_formTable[]; >+JS_EXPORT_PRIVATE extern const uint8_t g_formTable[]; > > inline Arg::Role decodeFormRole(uint8_t value) > { >diff --git a/Source/JavaScriptCore/b3/air/opcode_generator.rb b/Source/JavaScriptCore/b3/air/opcode_generator.rb >index bcdee9e68b962f7869763f4765939a6373a17f7a..d70ca63a918d7bd6686b3156d667c7e193d08f21 100644 >--- a/Source/JavaScriptCore/b3/air/opcode_generator.rb >+++ b/Source/JavaScriptCore/b3/air/opcode_generator.rb >@@ -699,7 +699,7 @@ def endArchs(outp, archs) > outp.puts "{" > outp.puts " size_t numOperands = args.size();" > outp.puts " size_t formOffset = (numOperands - 1) * numOperands / 2;" >- outp.puts " uint8_t* formBase = g_formTable + kind.opcode * #{formTableWidth} + formOffset;" >+ outp.puts " const uint8_t* formBase = g_formTable + kind.opcode * #{formTableWidth} + formOffset;" > outp.puts " for (size_t i = 0; i < numOperands; ++i) {" > outp.puts " uint8_t form = formBase[i];" > outp.puts " ASSERT(!(form & (1 << formInvalidShift)));" >@@ -822,7 +822,7 @@ def endArchs(outp, archs) > outp.puts "} // namespace WTF" > outp.puts "namespace JSC { namespace B3 { namespace Air {" > >- outp.puts "uint8_t g_formTable[#{$opcodes.size * formTableWidth}] = {" >+ outp.puts "const uint8_t g_formTable[#{$opcodes.size * formTableWidth}] = {" > $opcodes.values.each { > | opcode | > overloads = [nil] * (maxNumOperands + 1) >diff --git a/Source/JavaScriptCore/runtime/JSObject.cpp b/Source/JavaScriptCore/runtime/JSObject.cpp >index ca453d89cfbe4df14565bac0a6f882b5ba46d861..036ec0d8012cb07159ba806766b18d0a5f8ebd5a 100644 >--- a/Source/JavaScriptCore/runtime/JSObject.cpp >+++ b/Source/JavaScriptCore/runtime/JSObject.cpp >@@ -123,7 +123,7 @@ ALWAYS_INLINE void JSObject::markAuxiliaryAndVisitOutOfLineProperties(SlotVisito > > ALWAYS_INLINE Structure* JSObject::visitButterfly(SlotVisitor& visitor) > { >- static const char* raceReason = "JSObject::visitButterfly"; >+ static const char* const raceReason = "JSObject::visitButterfly"; > Structure* result = visitButterflyImpl(visitor); > if (!result) > visitor.didRace(this, raceReason); >diff --git a/Source/JavaScriptCore/tools/CodeProfile.cpp b/Source/JavaScriptCore/tools/CodeProfile.cpp >index b93c73d8c08efa816c36a18bc62d4a98271a617d..ec50a96f44abe93cf15206bceb38f14393555d7f 100644 >--- a/Source/JavaScriptCore/tools/CodeProfile.cpp >+++ b/Source/JavaScriptCore/tools/CodeProfile.cpp >@@ -36,7 +36,7 @@ > namespace JSC { > > // Map from CodeType enum to a corresponding name. >-const char* CodeProfile::s_codeTypeNames[CodeProfile::NumberOfCodeTypes] = { >+static const char* const s_codeTypeNames[CodeProfile::NumberOfCodeTypes] = { > "[[EngineCode]]", > "[[GlobalThunk]]", > "[[RegExpCode]]", >diff --git a/Source/JavaScriptCore/tools/CodeProfile.h b/Source/JavaScriptCore/tools/CodeProfile.h >index 3dd0ddce5269e6ed0106a6bc48d0f2d4c90af58a..16aa3e8d340954f4b0a03d5d22278de549b13710 100644 >--- a/Source/JavaScriptCore/tools/CodeProfile.h >+++ b/Source/JavaScriptCore/tools/CodeProfile.h >@@ -56,7 +56,6 @@ class CodeProfile { > m_children.append(WTFMove(child)); > } > >-private: > enum CodeType { > EngineCode, > GlobalThunk, >@@ -68,6 +67,8 @@ class CodeProfile { > EngineFrame, > NumberOfCodeTypes > }; >+ >+private: > struct CodeRecord { > CodeRecord(void* pc, CodeType type) > : pc(pc) >@@ -83,8 +84,6 @@ class CodeProfile { > CodeProfile* m_parent; > Vector<std::unique_ptr<CodeProfile>> m_children; > TieredMMapArray<CodeRecord> m_samples; >- >- static const char* s_codeTypeNames[NumberOfCodeTypes]; > }; > > } // namespace JSC
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
mark.lam
:
review+
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194015
: 360571