Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (125638 => 125639)
--- trunk/Source/_javascript_Core/ChangeLog 2012-08-15 02:52:20 UTC (rev 125638)
+++ trunk/Source/_javascript_Core/ChangeLog 2012-08-15 03:10:57 UTC (rev 125639)
@@ -1,3 +1,18 @@
+2012-08-14 Filip Pizlo <fpi...@apple.com>
+
+ Unreviewed, build fix for !ENABLE(DFG_JIT)
+
+ * jit/JITPropertyAccess.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ * jit/JITPropertyAccess32_64.cpp:
+ (JSC::JIT::emit_op_get_by_val):
+ (JSC::JIT::emit_op_put_by_val):
+ (JSC::JIT::privateCompilePatchGetArrayLength):
+ * llint/LowLevelInterpreter32_64.asm:
+ * llint/LowLevelInterpreter64.asm:
+
2012-08-13 Filip Pizlo <fpi...@apple.com>
Array checks should use the structure, not the class info
Modified: trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp (125638 => 125639)
--- trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp 2012-08-15 02:52:20 UTC (rev 125638)
+++ trunk/Source/_javascript_Core/jit/JITPropertyAccess.cpp 2012-08-15 03:10:57 UTC (rev 125639)
@@ -111,7 +111,9 @@
emitJumpSlowCaseIfNotJSCell(regT0, base);
loadPtr(Address(regT0, JSCell::structureOffset()), regT2);
+#if ENABLE(VALUE_PROFILER)
storePtr(regT2, currentInstruction[4].u.arrayProfile->addressOfLastSeenStructure());
+#endif
addSlowCase(branchPtr(NotEqual, Address(regT2, Structure::classInfoOffset()), TrustedImmPtr(&JSArray::s_info)));
loadPtr(Address(regT0, JSArray::storageOffset()), regT2);
@@ -234,7 +236,9 @@
zeroExtend32ToPtr(regT1, regT1);
emitJumpSlowCaseIfNotJSCell(regT0, base);
loadPtr(Address(regT0, JSCell::structureOffset()), regT2);
+#if ENABLE(VALUE_PROFILER)
storePtr(regT2, currentInstruction[4].u.arrayProfile->addressOfLastSeenStructure());
+#endif
addSlowCase(branchPtr(NotEqual, Address(regT2, Structure::classInfoOffset()), TrustedImmPtr(&JSArray::s_info)));
addSlowCase(branch32(AboveOrEqual, regT1, Address(regT0, JSArray::vectorLengthOffset())));
@@ -650,7 +654,9 @@
// Check eax is an array
loadPtr(Address(regT0, JSCell::structureOffset()), regT3);
+#if ENABLE(VALUE_PROFILER)
storePtr(regT3, m_codeBlock->getOrAddArrayProfile(stubInfo->bytecodeIndex)->addressOfLastSeenStructure());
+#endif
Jump failureCases1 = branchPtr(NotEqual, Address(regT3, Structure::classInfoOffset()), TrustedImmPtr(&JSArray::s_info));
// Checks out okay! - get the length from the storage
Modified: trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp (125638 => 125639)
--- trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp 2012-08-15 02:52:20 UTC (rev 125638)
+++ trunk/Source/_javascript_Core/jit/JITPropertyAccess32_64.cpp 2012-08-15 03:10:57 UTC (rev 125639)
@@ -210,7 +210,9 @@
addSlowCase(branch32(NotEqual, regT3, TrustedImm32(JSValue::Int32Tag)));
emitJumpSlowCaseIfNotJSCell(base, regT1);
loadPtr(Address(regT0, JSCell::structureOffset()), regT1);
+#if ENABLE(VALUE_PROFILER)
storePtr(regT1, currentInstruction[4].u.arrayProfile->addressOfLastSeenStructure());
+#endif
addSlowCase(branchPtr(NotEqual, Address(regT1, JSCell::classInfoOffset()), TrustedImmPtr(&JSArray::s_info)));
loadPtr(Address(regT0, JSArray::storageOffset()), regT3);
@@ -267,7 +269,9 @@
addSlowCase(branch32(NotEqual, regT3, TrustedImm32(JSValue::Int32Tag)));
emitJumpSlowCaseIfNotJSCell(base, regT1);
loadPtr(Address(regT0, JSCell::structureOffset()), regT1);
+#if ENABLE(VALUE_PROFILER)
storePtr(regT1, currentInstruction[4].u.arrayProfile->addressOfLastSeenStructure());
+#endif
addSlowCase(branchPtr(NotEqual, Address(regT1, Structure::classInfoOffset()), TrustedImmPtr(&JSArray::s_info)));
addSlowCase(branch32(AboveOrEqual, regT2, Address(regT0, JSArray::vectorLengthOffset())));
@@ -613,7 +617,9 @@
// Check for array
loadPtr(Address(regT0, JSCell::structureOffset()), regT2);
+#if ENABLE(VALUE_PROFILER)
storePtr(regT2, m_codeBlock->getOrAddArrayProfile(stubInfo->bytecodeIndex)->addressOfLastSeenStructure());
+#endif
Jump failureCases1 = branchPtr(NotEqual, Address(regT2, Structure::classInfoOffset()), TrustedImmPtr(&JSArray::s_info));
// Checks out okay! - get the length from the storage
Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm (125638 => 125639)
--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm 2012-08-15 02:52:20 UTC (rev 125638)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter32_64.asm 2012-08-15 03:10:57 UTC (rev 125639)
@@ -1261,7 +1261,9 @@
loadConstantOrVariablePayload(t3, Int32Tag, t1, .opGetByValSlow)
loadp JSCell::m_structure[t0], t3
loadp 16[PC], t2
- storep t3, ArrayProfile::m_lastSeenStructure[t2]
+ if VALUE_PROFILER
+ storep t3, ArrayProfile::m_lastSeenStructure[t2]
+ end
loadp CodeBlock[cfr], t2
loadp CodeBlock::m_globalData[t2], t2
loadp JSGlobalData::jsArrayClassInfo[t2], t2
@@ -1345,7 +1347,9 @@
loadConstantOrVariablePayload(t0, Int32Tag, t2, .opPutByValSlow)
loadp JSCell::m_structure[t1], t3
loadp 16[PC], t0
- storep t3, ArrayProfile::m_lastSeenStructure[t0]
+ if VALUE_PROFILER
+ storep t3, ArrayProfile::m_lastSeenStructure[t0]
+ end
loadp CodeBlock[cfr], t0
loadp CodeBlock::m_globalData[t0], t0
loadp JSGlobalData::jsArrayClassInfo[t0], t0
Modified: trunk/Source/_javascript_Core/llint/LowLevelInterpreter64.asm (125638 => 125639)
--- trunk/Source/_javascript_Core/llint/LowLevelInterpreter64.asm 2012-08-15 02:52:20 UTC (rev 125638)
+++ trunk/Source/_javascript_Core/llint/LowLevelInterpreter64.asm 2012-08-15 03:10:57 UTC (rev 125639)
@@ -1106,7 +1106,9 @@
sxi2p t1, t1
loadp JSCell::m_structure[t0], t3
loadp 32[PB, PC, 8], t2
- storep t3, ArrayProfile::m_lastSeenStructure[t2]
+ if VALUE_PROFILER
+ storep t3, ArrayProfile::m_lastSeenStructure[t2]
+ end
loadp CodeBlock[cfr], t2
loadp CodeBlock::m_globalData[t2], t2
loadp JSGlobalData::jsArrayClassInfo[t2], t2
@@ -1189,7 +1191,9 @@
sxi2p t2, t2
loadp JSCell::m_structure[t1], t3
loadp 32[PB, PC, 8], t0
- storep t3, ArrayProfile::m_lastSeenStructure[t0]
+ if VALUE_PROFILER
+ storep t3, ArrayProfile::m_lastSeenStructure[t0]
+ end
loadp CodeBlock[cfr], t0
loadp CodeBlock::m_globalData[t0], t0
loadp JSGlobalData::jsArrayClassInfo[t0], t0