Title: [240718] trunk/Source/_javascript_Core
Revision
240718
Author
[email protected]
Date
2019-01-30 10:55:38 -0800 (Wed, 30 Jan 2019)

Log Message

[JSC] Make global static variables "const" as much as possible
https://bugs.webkit.org/show_bug.cgi?id=194015

Patch by Yusuke Suzuki <[email protected]> on 2019-01-30
Reviewed by Mark Lam.

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:

Modified Paths

Diff

Modified: trunk/Source/_javascript_Core/ChangeLog (240717 => 240718)


--- trunk/Source/_javascript_Core/ChangeLog	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/ChangeLog	2019-01-30 18:55:38 UTC (rev 240718)
@@ -1,3 +1,28 @@
+2019-01-30  Yusuke Suzuki  <[email protected]>
+
+        [JSC] Make global static variables "const" as much as possible
+        https://bugs.webkit.org/show_bug.cgi?id=194015
+
+        Reviewed by Mark Lam.
+
+        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  <[email protected]>
 
         Remove default constructor from LLIntPrototypeLoadAdaptiveStructureWatchpoint

Modified: trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generate_combined_header.py (240717 => 240718)


--- trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generate_combined_header.py	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generate_combined_header.py	2019-01-30 18:55:38 UTC (rev 240718)
@@ -91,7 +91,7 @@
                 '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)
 

Modified: trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generate_separate_header.py (240717 => 240718)


--- trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generate_separate_header.py	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generate_separate_header.py	2019-01-30 18:55:38 UTC (rev 240718)
@@ -125,7 +125,7 @@
                 '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)
 

Modified: trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generator.py (240717 => 240718)


--- trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generator.py	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/Scripts/wkbuiltins/builtins_generator.py	2019-01-30 18:55:38 UTC (rev 240718)
@@ -143,7 +143,7 @@
         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.

Modified: trunk/Source/_javascript_Core/assembler/MacroAssembler.h (240717 => 240718)


--- trunk/Source/_javascript_Core/assembler/MacroAssembler.h	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/assembler/MacroAssembler.h	2019-01-30 18:55:38 UTC (rev 240718)
@@ -1559,7 +1559,7 @@
     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];

Modified: trunk/Source/_javascript_Core/b3/air/AirFormTable.h (240717 => 240718)


--- trunk/Source/_javascript_Core/b3/air/AirFormTable.h	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/b3/air/AirFormTable.h	2019-01-30 18:55:38 UTC (rev 240718)
@@ -43,7 +43,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)
 {

Modified: trunk/Source/_javascript_Core/b3/air/opcode_generator.rb (240717 => 240718)


--- trunk/Source/_javascript_Core/b3/air/opcode_generator.rb	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/b3/air/opcode_generator.rb	2019-01-30 18:55:38 UTC (rev 240718)
@@ -699,7 +699,7 @@
     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 @@
     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)

Modified: trunk/Source/_javascript_Core/runtime/JSObject.cpp (240717 => 240718)


--- trunk/Source/_javascript_Core/runtime/JSObject.cpp	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/runtime/JSObject.cpp	2019-01-30 18:55:38 UTC (rev 240718)
@@ -123,7 +123,7 @@
 
 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);

Modified: trunk/Source/_javascript_Core/tools/CodeProfile.cpp (240717 => 240718)


--- trunk/Source/_javascript_Core/tools/CodeProfile.cpp	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/tools/CodeProfile.cpp	2019-01-30 18:55:38 UTC (rev 240718)
@@ -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]]",

Modified: trunk/Source/_javascript_Core/tools/CodeProfile.h (240717 => 240718)


--- trunk/Source/_javascript_Core/tools/CodeProfile.h	2019-01-30 18:44:24 UTC (rev 240717)
+++ trunk/Source/_javascript_Core/tools/CodeProfile.h	2019-01-30 18:55:38 UTC (rev 240718)
@@ -56,7 +56,6 @@
         m_children.append(WTFMove(child));
     }
 
-private:
     enum CodeType {
         EngineCode,
         GlobalThunk,
@@ -68,6 +67,8 @@
         EngineFrame,
         NumberOfCodeTypes
     };
+
+private:
     struct CodeRecord {
         CodeRecord(void* pc, CodeType type)
             : pc(pc)
@@ -83,8 +84,6 @@
     CodeProfile* m_parent;
     Vector<std::unique_ptr<CodeProfile>> m_children;
     TieredMMapArray<CodeRecord> m_samples;
-
-    static const char* s_codeTypeNames[NumberOfCodeTypes];
 };
 
 } // namespace JSC
_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to