Changeset 226940 in webkit for trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
- Timestamp:
- Jan 13, 2018, 10:11:55 PM (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
r226556 r226940 46 46 loadp CodeBlock[cfr], PB 47 47 loadp CodeBlock::m_instructions[PB], PB 48 unpoison( CodeBlockPoison, PB)48 unpoison(_g_CodeBlockPoison, PB, t1) 49 49 loadisFromInstruction(1, t1) 50 50 storeq r0, [cfr, t1, 8] … … 481 481 end 482 482 483 macro structureIDToStructureWithScratch(structureIDThenStructure, scratch )483 macro structureIDToStructureWithScratch(structureIDThenStructure, scratch, scratch2) 484 484 loadp CodeBlock[cfr], scratch 485 485 loadp CodeBlock::m_poisonedVM[scratch], scratch 486 unpoison( CodeBlockPoison, scratch)486 unpoison(_g_CodeBlockPoison, scratch, scratch2) 487 487 loadp VM::heap + Heap::m_structureIDTable + StructureIDTable::m_table[scratch], scratch 488 488 loadp [scratch, structureIDThenStructure, 8], structureIDThenStructure 489 489 end 490 490 491 macro loadStructureWithScratch(cell, structure, scratch )491 macro loadStructureWithScratch(cell, structure, scratch, scratch2) 492 492 loadi JSCell::m_structureID[cell], structure 493 structureIDToStructureWithScratch(structure, scratch) 494 end 495 496 macro loadStructureAndClobberFirstArg(cell, structure) 497 loadi JSCell::m_structureID[cell], structure 498 loadp CodeBlock[cfr], cell 499 loadp CodeBlock::m_poisonedVM[cell], cell 500 unpoison(CodeBlockPoison, cell) 501 loadp VM::heap + Heap::m_structureIDTable + StructureIDTable::m_table[cell], cell 502 loadp [cell, structure, 8], structure 493 structureIDToStructureWithScratch(structure, scratch, scratch2) 503 494 end 504 495 … … 563 554 loadp CodeBlock[cfr], t1 564 555 loadp CodeBlock::m_instructions[t1], PB 565 unpoison( CodeBlockPoison, PB)556 unpoison(_g_CodeBlockPoison, PB, t2) 566 557 move 0, PC 567 558 jmp doneLabel … … 642 633 btqnz t0, tagMask, .opToThisSlow 643 634 bbneq JSCell::m_type[t0], FinalObjectType, .opToThisSlow 644 loadStructureWithScratch(t0, t1, t2 )635 loadStructureWithScratch(t0, t1, t2, t3) 645 636 loadpFromInstruction(2, t2) 646 637 bpneq t1, t2, .opToThisSlow … … 725 716 jmp .done 726 717 .masqueradesAsUndefined: 727 loadStructureWithScratch(t0, t2, t1 )718 loadStructureWithScratch(t0, t2, t1, t3) 728 719 loadp CodeBlock[cfr], t0 729 720 loadp CodeBlock::m_globalObject[t0], t0 … … 1164 1155 dispatch(constexpr op_is_undefined_length) 1165 1156 .masqueradesAsUndefined: 1166 loadStructureWithScratch(t0, t3, t1 )1157 loadStructureWithScratch(t0, t3, t1, t5) 1167 1158 loadp CodeBlock[cfr], t1 1168 1159 loadp CodeBlock::m_globalObject[t1], t1 … … 1434 1425 assert(macro (ok) btpnz t3, ok end) 1435 1426 1436 structureIDToStructureWithScratch(t2, t1 )1427 structureIDToStructureWithScratch(t2, t1, t5) 1437 1428 loadq Structure::m_prototype[t2], t2 1438 1429 bqeq t2, ValueNull, .opPutByIdTransitionChainDone … … 1741 1732 loadq [cfr, t0, 8], t0 1742 1733 btqnz t0, tagMask, .immediate 1743 loadStructureWithScratch(t0, t2, t1 )1734 loadStructureWithScratch(t0, t2, t1, t3) 1744 1735 cellHandler(t2, JSCell::m_flags[t0], .target) 1745 1736 dispatch(3) … … 1955 1946 move t3, sp 1956 1947 if POISON 1957 loadp _g_ jitCodePoison, t21948 loadp _g_JITCodePoison, t2 1958 1949 xorp LLIntCallLinkInfo::machineCodeTarget[t1], t2 1959 1950 prepareCall(t2, t1, t3, t4) … … 2008 1999 loadp CodeBlock[cfr], PB 2009 2000 loadp CodeBlock::m_instructions[PB], PB 2010 unpoison( CodeBlockPoison, PB)2001 unpoison(_g_CodeBlockPoison, PB, t2) 2011 2002 loadp VM::targetInterpreterPCForThrow[t3], PC 2012 2003 subp PB, PC … … 2085 2076 checkStackPointerAlignment(t3, 0xdead0001) 2086 2077 if C_LOOP 2087 loadp _g_ nativeCodePoison, t22078 loadp _g_NativeCodePoison, t2 2088 2079 xorp executableOffsetToFunction[t1], t2 2089 2080 cloopCallNative t2 … … 2094 2085 addp 32, sp 2095 2086 else 2096 loadp _g_ nativeCodePoison, t22087 loadp _g_NativeCodePoison, t2 2097 2088 xorp executableOffsetToFunction[t1], t2 2098 2089 call t2 … … 2128 2119 checkStackPointerAlignment(t3, 0xdead0001) 2129 2120 if C_LOOP 2130 loadp _g_ nativeCodePoison, t22121 loadp _g_NativeCodePoison, t2 2131 2122 xorp offsetOfFunction[t1], t2 2132 2123 cloopCallNative t2 … … 2137 2128 addp 32, sp 2138 2129 else 2139 loadp _g_ nativeCodePoison, t22130 loadp _g_NativeCodePoison, t2 2140 2131 xorp offsetOfFunction[t1], t2 2141 2132 call t2 … … 2248 2239 loadisFromInstruction(operand, t0) 2249 2240 loadq [cfr, t0, 8], t0 2250 loadStructureWithScratch(t0, t2, t1 )2241 loadStructureWithScratch(t0, t2, t1, t3) 2251 2242 loadpFromInstruction(5, t1) 2252 2243 bpneq t2, t1, slowPath … … 2501 2492 loadp CodeBlock[cfr], t1 2502 2493 loadp CodeBlock::m_poisonedVM[t1], t1 2503 unpoison( CodeBlockPoison, t1)2494 unpoison(_g_CodeBlockPoison, t1, t3) 2504 2495 # t1 is holding the pointer to the typeProfilerLog. 2505 2496 loadp VM::m_typeProfilerLog[t1], t1
Note:
See TracChangeset
for help on using the changeset viewer.