Changeset 130359 in webkit for trunk/Source/JavaScriptCore/llint
- Timestamp:
- Oct 3, 2012, 9:03:14 PM (13 years ago)
- Location:
- trunk/Source/JavaScriptCore/llint
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter.asm
r128867 r130359 90 90 const HashFlags8BitBuffer = 64 91 91 92 # Property storage constants 93 if JSVALUE64 94 const InlineStorageCapacity = 6 95 else 96 const InlineStorageCapacity = 7 97 end 92 # Copied from PropertyOffset.h 93 const firstOutOfLineOffset = 100 98 94 99 95 # Allocation constants -
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
r129715 r130359 938 938 939 939 940 macro loadPropertyAtVariableOffsetKnownNot Final(propertyOffset, objectAndStorage, tag, payload)941 assert(macro (ok) bigteq propertyOffset, InlineStorageCapacity, ok end)940 macro loadPropertyAtVariableOffsetKnownNotInline(propertyOffset, objectAndStorage, tag, payload) 941 assert(macro (ok) bigteq propertyOffset, firstOutOfLineOffset, ok end) 942 942 negi propertyOffset 943 943 loadp JSObject::m_butterfly[objectAndStorage], objectAndStorage 944 loadi TagOffset + ( InlineStorageCapacity - 1) * 8 - sizeof IndexingHeader[objectAndStorage, propertyOffset, 8], tag945 loadi PayloadOffset + ( InlineStorageCapacity - 1) * 8 - sizeof IndexingHeader[objectAndStorage, propertyOffset, 8], payload944 loadi TagOffset + (firstOutOfLineOffset - 2) * 8[objectAndStorage, propertyOffset, 8], tag 945 loadi PayloadOffset + (firstOutOfLineOffset - 2) * 8[objectAndStorage, propertyOffset, 8], payload 946 946 end 947 947 948 948 macro loadPropertyAtVariableOffset(propertyOffset, objectAndStorage, tag, payload) 949 bilt propertyOffset, InlineStorageCapacity, .isInline949 bilt propertyOffset, firstOutOfLineOffset, .isInline 950 950 loadp JSObject::m_butterfly[objectAndStorage], objectAndStorage 951 951 negi propertyOffset 952 952 jmp .ready 953 953 .isInline: 954 addp JSFinalObject::m_inlineStorage - ( InlineStorageCapacity - 1) * 8 + sizeof IndexingHeader, objectAndStorage954 addp JSFinalObject::m_inlineStorage - (firstOutOfLineOffset - 2) * 8, objectAndStorage 955 955 .ready: 956 loadi TagOffset + ( InlineStorageCapacity - 1) * 8 - sizeof IndexingHeader[objectAndStorage, propertyOffset, 8], tag957 loadi PayloadOffset + ( InlineStorageCapacity - 1) * 8 - sizeof IndexingHeader[objectAndStorage, propertyOffset, 8], payload956 loadi TagOffset + (firstOutOfLineOffset - 2) * 8[objectAndStorage, propertyOffset, 8], tag 957 loadi PayloadOffset + (firstOutOfLineOffset - 2) * 8[objectAndStorage, propertyOffset, 8], payload 958 958 end 959 959 … … 969 969 bpneq t1, 12[PC], slow 970 970 loadi 16[PC], t1 971 loadPropertyAtVariableOffsetKnownNot Final(t1, t0, t2, t3)971 loadPropertyAtVariableOffsetKnownNotInline(t1, t0, t2, t3) 972 972 loadi 4[PC], t0 973 973 storei t2, TagOffset[cfr, t0, 8] … … 1365 1365 subi 1, t0 1366 1366 biaeq t0, JSPropertyNameIterator::m_numCacheableSlots[t3], .opGetByPnameSlow 1367 addi JSPropertyNameIterator::m_offsetBase[t3], t0 1367 bilt t0, JSPropertyNameIterator::m_cachedStructureInlineCapacity[t3], .opGetByPnameInlineProperty 1368 addi firstOutOfLineOffset, t0 1369 subi JSPropertyNameIterator::m_cachedStructureInlineCapacity[t3], t0 1370 .opGetByPnameInlineProperty: 1368 1371 loadPropertyAtVariableOffset(t0, t2, t1, t3) 1369 1372 loadi 4[PC], t0 -
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
r129713 r130359 797 797 798 798 799 macro loadPropertyAtVariableOffsetKnownNot Final(propertyOffsetAsPointer, objectAndStorage, value)800 assert(macro (ok) bigteq propertyOffsetAsPointer, InlineStorageCapacity, ok end)799 macro loadPropertyAtVariableOffsetKnownNotInline(propertyOffsetAsPointer, objectAndStorage, value) 800 assert(macro (ok) bigteq propertyOffsetAsPointer, firstOutOfLineOffset, ok end) 801 801 negp propertyOffsetAsPointer 802 802 loadp JSObject::m_butterfly[objectAndStorage], objectAndStorage 803 loadp ( InlineStorageCapacity - 1) * 8 - sizeof IndexingHeader[objectAndStorage, propertyOffsetAsPointer, 8], value803 loadp (firstOutOfLineOffset - 2) * 8[objectAndStorage, propertyOffsetAsPointer, 8], value 804 804 end 805 805 806 806 macro loadPropertyAtVariableOffset(propertyOffsetAsInt, objectAndStorage, value) 807 bilt propertyOffsetAsInt, InlineStorageCapacity, .isInline807 bilt propertyOffsetAsInt, firstOutOfLineOffset, .isInline 808 808 loadp JSObject::m_butterfly[objectAndStorage], objectAndStorage 809 809 negi propertyOffsetAsInt … … 811 811 jmp .ready 812 812 .isInline: 813 addp JSFinalObject::m_inlineStorage - ( InlineStorageCapacity - 1) * 8 + sizeof IndexingHeader, objectAndStorage813 addp JSFinalObject::m_inlineStorage - (firstOutOfLineOffset - 2) * 8, objectAndStorage 814 814 .ready: 815 loadp ( InlineStorageCapacity - 1) * 8 - sizeof IndexingHeader[objectAndStorage, propertyOffsetAsInt, 8], value815 loadp (firstOutOfLineOffset - 2) * 8[objectAndStorage, propertyOffsetAsInt, 8], value 816 816 end 817 817 … … 827 827 bpneq t1, 24[PB, PC, 8], slow 828 828 loadis 32[PB, PC, 8], t1 829 loadPropertyAtVariableOffset (t1, t0, t2)829 loadPropertyAtVariableOffsetKnownNotInline(t1, t0, t2) 830 830 loadis 8[PB, PC, 8], t0 831 831 storep t2, [cfr, t0, 8] … … 1209 1209 subi 1, t3 1210 1210 biaeq t3, JSPropertyNameIterator::m_numCacheableSlots[t1], .opGetByPnameSlow 1211 addi JSPropertyNameIterator::m_offsetBase[t1], t3 1211 bilt t3, JSPropertyNameIterator::m_cachedStructureInlineCapacity[t1], .opGetByPnameInlineProperty 1212 addi firstOutOfLineOffset, t3 1213 subi JSPropertyNameIterator::m_cachedStructureInlineCapacity[t1], t3 1214 .opGetByPnameInlineProperty: 1212 1215 loadPropertyAtVariableOffset(t3, t0, t0) 1213 1216 loadis 8[PB, PC, 8], t1
Note:
See TracChangeset
for help on using the changeset viewer.