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