- Revision
- 241214
- Author
- [email protected]
- Date
- 2019-02-08 15:06:41 -0800 (Fri, 08 Feb 2019)
Log Message
Use maxSingleCharacterString in comparisons instead of literal constants.
https://bugs.webkit.org/show_bug.cgi?id=194452
Reviewed by Yusuke Suzuki.
This way, if we ever change maxSingleCharacterString, it won't break all this code
that relies on it being 0xff implicitly.
* dfg/DFGSpeculativeJIT.cpp:
(JSC::DFG::SpeculativeJIT::compileStringSlice):
(JSC::DFG::SpeculativeJIT::compileGetByValOnString):
* ftl/FTLLowerDFGToB3.cpp:
(JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
(JSC::FTL::DFG::LowerDFGToB3::compileStringSlice):
* jit/ThunkGenerators.cpp:
(JSC::stringGetByValGenerator):
(JSC::charToString):
Modified Paths
Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (241213 => 241214)
--- trunk/Source/_javascript_Core/ChangeLog 2019-02-08 22:54:05 UTC (rev 241213)
+++ trunk/Source/_javascript_Core/ChangeLog 2019-02-08 23:06:41 UTC (rev 241214)
@@ -1,5 +1,25 @@
2019-02-08 Mark Lam <[email protected]>
+ Use maxSingleCharacterString in comparisons instead of literal constants.
+ https://bugs.webkit.org/show_bug.cgi?id=194452
+
+ Reviewed by Yusuke Suzuki.
+
+ This way, if we ever change maxSingleCharacterString, it won't break all this code
+ that relies on it being 0xff implicitly.
+
+ * dfg/DFGSpeculativeJIT.cpp:
+ (JSC::DFG::SpeculativeJIT::compileStringSlice):
+ (JSC::DFG::SpeculativeJIT::compileGetByValOnString):
+ * ftl/FTLLowerDFGToB3.cpp:
+ (JSC::FTL::DFG::LowerDFGToB3::compileStringCharAt):
+ (JSC::FTL::DFG::LowerDFGToB3::compileStringSlice):
+ * jit/ThunkGenerators.cpp:
+ (JSC::stringGetByValGenerator):
+ (JSC::charToString):
+
+2019-02-08 Mark Lam <[email protected]>
+
Fix DFG's doesGC() for CheckTierUp*, GetByVal, PutByVal*, and StringCharAt nodes.
https://bugs.webkit.org/show_bug.cgi?id=194446
<rdar://problem/47926792>
Modified: trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp (241213 => 241214)
--- trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2019-02-08 22:54:05 UTC (rev 241213)
+++ trunk/Source/_javascript_Core/dfg/DFGSpeculativeJIT.cpp 2019-02-08 23:06:41 UTC (rev 241214)
@@ -1577,7 +1577,7 @@
is16Bit.link(&m_jit);
m_jit.load16(MacroAssembler::BaseIndex(tempGPR, startIndexGPR, MacroAssembler::TimesTwo, 0), tempGPR);
- auto bigCharacter = m_jit.branch32(MacroAssembler::AboveOrEqual, tempGPR, TrustedImm32(0x100));
+ auto bigCharacter = m_jit.branch32(MacroAssembler::Above, tempGPR, TrustedImm32(maxSingleCharacterString));
// 8 bit string values don't need the isASCII check.
cont8Bit.link(&m_jit);
@@ -2194,7 +2194,7 @@
m_jit.load16(MacroAssembler::BaseIndex(storageReg, propertyReg, MacroAssembler::TimesTwo, 0), scratchReg);
JITCompiler::Jump bigCharacter =
- m_jit.branch32(MacroAssembler::AboveOrEqual, scratchReg, TrustedImm32(0x100));
+ m_jit.branch32(MacroAssembler::Above, scratchReg, TrustedImm32(maxSingleCharacterString));
// 8 bit string values don't need the isASCII check.
cont8Bit.link(&m_jit);
Modified: trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp (241213 => 241214)
--- trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp 2019-02-08 22:54:05 UTC (rev 241213)
+++ trunk/Source/_javascript_Core/ftl/FTLLowerDFGToB3.cpp 2019-02-08 23:06:41 UTC (rev 241214)
@@ -6612,7 +6612,7 @@
provenValue(m_graph.child(m_node, 1))));
ValueFromBlock char16Bit = m_out.anchor(char16BitValue);
m_out.branch(
- m_out.aboveOrEqual(char16BitValue, m_out.constInt32(0x100)),
+ m_out.above(char16BitValue, m_out.constInt32(maxSingleCharacterString)),
rarely(bigCharacter), usually(bitsContinuation));
m_out.appendTo(bigCharacter, bitsContinuation);
@@ -11973,7 +11973,7 @@
LValue char16BitValue = m_out.load16ZeroExt32(m_out.baseIndex(m_heaps.characters16, storage, m_out.zeroExtPtr(from)));
ValueFromBlock char16Bit = m_out.anchor(char16BitValue);
m_out.branch(
- m_out.aboveOrEqual(char16BitValue, m_out.constInt32(0x100)),
+ m_out.above(char16BitValue, m_out.constInt32(maxSingleCharacterString)),
rarely(bigCharacter), usually(bitsContinuation));
m_out.appendTo(bigCharacter, bitsContinuation);
Modified: trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp (241213 => 241214)
--- trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp 2019-02-08 22:54:05 UTC (rev 241213)
+++ trunk/Source/_javascript_Core/jit/ThunkGenerators.cpp 2019-02-08 23:06:41 UTC (rev 241214)
@@ -656,7 +656,7 @@
jit.load16(JSInterfaceJIT::BaseIndex(stringGPR, indexGPR, JSInterfaceJIT::TimesTwo, 0), stringGPR);
cont8Bit.link(&jit);
- failures.append(jit.branch32(JSInterfaceJIT::AboveOrEqual, stringGPR, JSInterfaceJIT::TrustedImm32(0x100)));
+ failures.append(jit.branch32(JSInterfaceJIT::Above, stringGPR, JSInterfaceJIT::TrustedImm32(maxSingleCharacterString)));
jit.move(JSInterfaceJIT::TrustedImmPtr(vm->smallStrings.singleCharacterStrings()), indexGPR);
jit.loadPtr(JSInterfaceJIT::BaseIndex(indexGPR, stringGPR, JSInterfaceJIT::ScalePtr, 0), stringGPR);
jit.ret();
@@ -701,7 +701,7 @@
static void charToString(SpecializedThunkJIT& jit, VM* vm, MacroAssembler::RegisterID src, MacroAssembler::RegisterID dst, MacroAssembler::RegisterID scratch)
{
- jit.appendFailure(jit.branch32(MacroAssembler::AboveOrEqual, src, MacroAssembler::TrustedImm32(0x100)));
+ jit.appendFailure(jit.branch32(MacroAssembler::Above, src, MacroAssembler::TrustedImm32(maxSingleCharacterString)));
jit.move(MacroAssembler::TrustedImmPtr(vm->smallStrings.singleCharacterStrings()), scratch);
jit.loadPtr(MacroAssembler::BaseIndex(scratch, src, MacroAssembler::ScalePtr, 0), dst);
jit.appendFailure(jit.branchTestPtr(MacroAssembler::Zero, dst));