Changeset 162460 in webkit
- Timestamp:
- Jan 21, 2014 12:19:59 PM (10 years ago)
- Location:
- trunk/Source/JavaScriptCore
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r162434 r162460 1 2014-01-21 Mark Hahnenberg <mhahnenberg@apple.com> 2 3 Registers used in writeBarrierOnOperand can cause clobbering on some platforms 4 https://bugs.webkit.org/show_bug.cgi?id=127357 5 6 Reviewed by Filip Pizlo. 7 8 Some platforms use t0 and t1 for their first two arguments, so using those to load the 9 cell for the write barrier is a bad idea because it will get clobbered. 10 11 * llint/LowLevelInterpreter32_64.asm: 12 * llint/LowLevelInterpreter64.asm: 13 1 14 2014-01-21 Mark Rowe <mrowe@apple.com> 2 15 -
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
r161377 r162460 495 495 if GGC 496 496 loadisFromInstruction(cellOperand, t1) 497 loadConstantOrVariablePayload(t1, CellTag, t 0, .writeBarrierDone)498 checkMarkByte(t 0, t1, t2,497 loadConstantOrVariablePayload(t1, CellTag, t2, .writeBarrierDone) 498 checkMarkByte(t2, t1, t3, 499 499 macro(marked) 500 500 btbz marked, .writeBarrierDone … … 502 502 # We make two extra slots because cCall2 will poke. 503 503 subp 8, sp 504 cCall2(_llint_write_barrier_slow, cfr, t 0)504 cCall2(_llint_write_barrier_slow, cfr, t2) 505 505 addp 8, sp 506 506 pop PC, cfr … … 527 527 bineq t0, CellTag, .writeBarrierDone 528 528 529 loadp CodeBlock[cfr], t 0530 loadp CodeBlock::m_globalObject[t 0], t0531 checkMarkByte(t 0, t1, t2,529 loadp CodeBlock[cfr], t3 530 loadp CodeBlock::m_globalObject[t3], t3 531 checkMarkByte(t3, t1, t2, 532 532 macro(marked) 533 533 btbz marked, .writeBarrierDone … … 535 535 # We make two extra slots because cCall2 will poke. 536 536 subp 8, sp 537 cCall2(_llint_write_barrier_slow, cfr, t 0)537 cCall2(_llint_write_barrier_slow, cfr, t3) 538 538 addp 8, sp 539 539 pop PC, cfr -
trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
r161686 r162460 335 335 if GGC 336 336 loadisFromInstruction(cellOperand, t1) 337 loadConstantOrVariableCell(t1, t 0, .writeBarrierDone)338 checkMarkByte(t 0, t1, t2,337 loadConstantOrVariableCell(t1, t2, .writeBarrierDone) 338 checkMarkByte(t2, t1, t3, 339 339 macro(marked) 340 340 btbz marked, .writeBarrierDone 341 341 push PB, PC 342 cCall2(_llint_write_barrier_slow, cfr, t 0)342 cCall2(_llint_write_barrier_slow, cfr, t2) 343 343 pop PC, PB 344 344 end … … 365 365 btpz t0, .writeBarrierDone 366 366 367 loadp CodeBlock[cfr], t 0368 loadp CodeBlock::m_globalObject[t 0], t0369 checkMarkByte(t 0, t1, t2,367 loadp CodeBlock[cfr], t3 368 loadp CodeBlock::m_globalObject[t3], t3 369 checkMarkByte(t3, t1, t2, 370 370 macro(marked) 371 371 btbz marked, .writeBarrierDone 372 372 push PB, PC 373 cCall2(_llint_write_barrier_slow, cfr, t 0)373 cCall2(_llint_write_barrier_slow, cfr, t3) 374 374 pop PC, PB 375 375 end
Note: See TracChangeset
for help on using the changeset viewer.