Changeset 41089 in webkit for trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
- Timestamp:
- Feb 19, 2009, 2:51:40 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/jit/JITPropertyAccess.cpp
r40963 r41089 227 227 228 228 // emit a call only if storage realloc is needed 229 if (transitionWillNeedStorageRealloc(oldStructure, newStructure)) { 229 bool willNeedStorageRealloc = transitionWillNeedStorageRealloc(oldStructure, newStructure); 230 if (willNeedStorageRealloc) { 230 231 pop(X86::ebx); 231 232 #if PLATFORM(X86_64) … … 257 258 ret(); 258 259 259 Jump failureJump; 260 bool plantedFailureJump = false; 261 if (!failureCases.empty()) { 262 failureCases.link(this); 263 restoreArgumentReferenceForTrampoline(); 264 failureJump = jump(); 265 plantedFailureJump = true; 266 } 267 268 void* code = m_assembler.executableCopy(m_codeBlock->executablePool()); 269 PatchBuffer patchBuffer(code); 270 271 if (plantedFailureJump) 272 patchBuffer.linkTailRecursive(failureJump, Interpreter::cti_op_put_by_id_fail); 273 274 if (transitionWillNeedStorageRealloc(oldStructure, newStructure)) 260 ASSERT(!failureCases.empty()); 261 failureCases.link(this); 262 restoreArgumentReferenceForTrampoline(); 263 Call failureCall = tailRecursiveCall(); 264 265 void* code = m_assembler.executableCopy(m_codeBlock->executablePool()); 266 PatchBuffer patchBuffer(code); 267 268 patchBuffer.link(failureCall, Interpreter::cti_op_put_by_id_fail); 269 270 if (willNeedStorageRealloc) 275 271 patchBuffer.link(callTarget, resizePropertyStorage); 276 272 … … 352 348 ret(); 353 349 354 void* code = m_assembler.executableCopy(m_codeBlock->executablePool()); 355 PatchBuffer patchBuffer(code); 356 357 patchBuffer.linkTailRecursive(failureCases1, Interpreter::cti_op_get_by_id_self_fail); 358 patchBuffer.linkTailRecursive(failureCases2, Interpreter::cti_op_get_by_id_self_fail); 350 Call failureCases1Call = makeTailRecursiveCall(failureCases1); 351 Call failureCases2Call = makeTailRecursiveCall(failureCases2); 352 353 void* code = m_assembler.executableCopy(m_codeBlock->executablePool()); 354 PatchBuffer patchBuffer(code); 355 356 patchBuffer.link(failureCases1Call, Interpreter::cti_op_get_by_id_self_fail); 357 patchBuffer.link(failureCases2Call, Interpreter::cti_op_get_by_id_self_fail); 359 358 360 359 stubInfo->stubRoutine = patchBuffer.entry(); … … 684 683 ret(); 685 684 685 Call failureCases1Call = makeTailRecursiveCall(failureCases1); 686 Call failureCases2Call = makeTailRecursiveCall(failureCases2); 687 686 688 void* code = m_assembler.executableCopy(m_codeBlock->executablePool()); 687 689 PatchBuffer patchBuffer(code); 688 690 689 patchBuffer.link TailRecursive(failureCases1, Interpreter::cti_op_put_by_id_fail);690 patchBuffer.link TailRecursive(failureCases2, Interpreter::cti_op_put_by_id_fail);691 patchBuffer.link(failureCases1Call, Interpreter::cti_op_put_by_id_fail); 692 patchBuffer.link(failureCases2Call, Interpreter::cti_op_put_by_id_fail); 691 693 692 694 stubInfo->stubRoutine = patchBuffer.entry();
Note:
See TracChangeset
for help on using the changeset viewer.