Changeset 39123 in webkit for trunk/JavaScriptCore/interpreter/Interpreter.cpp
- Timestamp:
- Dec 8, 2008, 9:27:10 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/interpreter/Interpreter.cpp
r39083 r39123 4082 4082 } 4083 4083 4084 // In the interpreter the last structure is trapped here; in CTI we use the4085 // *_second method to achieve a similar (but not quite the same) effect.4086 4087 unsigned vPCIndex = codeBlock->jitReturnAddressVPCMap().get(returnAddress);4088 Instruction* vPC = codeBlock->instructions().begin() + vPCIndex;4089 4090 // Cache hit: Specialize instruction and ref Structures.4091 4092 4084 // If baseCell != base, then baseCell must be a proxy for another object. 4093 4085 if (baseCell != slot.base()) { … … 4095 4087 return; 4096 4088 } 4089 4090 StructureStubInfo* stubInfo = &codeBlock->getStubInfo(returnAddress); 4091 Instruction* vPC = codeBlock->instructions().begin() + stubInfo->bytecodeIndex; 4092 4093 // Cache hit: Specialize instruction and ref Structures. 4097 4094 4098 4095 // Structure transition, cache transition info … … 4113 4110 vPC[7] = slot.cachedOffset(); 4114 4111 codeBlock->refStructures(vPC); 4115 JIT::compilePutByIdTransition(callFrame->scopeChain()->globalData, codeBlock, st ructure->previousID(), structure, slot.cachedOffset(), chain, returnAddress);4112 JIT::compilePutByIdTransition(callFrame->scopeChain()->globalData, codeBlock, stubInfo, structure->previousID(), structure, slot.cachedOffset(), chain, returnAddress); 4116 4113 return; 4117 4114 } … … 4124 4121 #if USE(CTI_REPATCH_PIC) 4125 4122 UNUSED_PARAM(callFrame); 4126 JIT::patchPutByIdReplace( codeBlock, structure, slot.cachedOffset(), returnAddress);4123 JIT::patchPutByIdReplace(stubInfo, structure, slot.cachedOffset(), returnAddress); 4127 4124 #else 4128 JIT::compilePutByIdReplace(callFrame->scopeChain()->globalData, callFrame, codeBlock, st ructure, slot.cachedOffset(), returnAddress);4125 JIT::compilePutByIdReplace(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, slot.cachedOffset(), returnAddress); 4129 4126 #endif 4130 4127 } … … 4173 4170 // *_second method to achieve a similar (but not quite the same) effect. 4174 4171 4175 unsigned vPCIndex = codeBlock->jitReturnAddressVPCMap().get(returnAddress);4176 Instruction* vPC = codeBlock->instructions().begin() + vPCIndex;4172 StructureStubInfo* stubInfo = &codeBlock->getStubInfo(returnAddress); 4173 Instruction* vPC = codeBlock->instructions().begin() + stubInfo->bytecodeIndex; 4177 4174 4178 4175 // Cache hit: Specialize instruction and ref Structures. … … 4186 4183 4187 4184 #if USE(CTI_REPATCH_PIC) 4188 JIT::patchGetByIdSelf( codeBlock, structure, slot.cachedOffset(), returnAddress);4185 JIT::patchGetByIdSelf(stubInfo, structure, slot.cachedOffset(), returnAddress); 4189 4186 #else 4190 JIT::compileGetByIdSelf(callFrame->scopeChain()->globalData, callFrame, codeBlock, st ructure, slot.cachedOffset(), returnAddress);4187 JIT::compileGetByIdSelf(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, slot.cachedOffset(), returnAddress); 4191 4188 #endif 4192 4189 return; … … 4212 4209 codeBlock->refStructures(vPC); 4213 4210 4214 JIT::compileGetByIdProto(callFrame->scopeChain()->globalData, callFrame, codeBlock, st ructure, slotBaseObject->structure(), slot.cachedOffset(), returnAddress);4211 JIT::compileGetByIdProto(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, slotBaseObject->structure(), slot.cachedOffset(), returnAddress); 4215 4212 return; 4216 4213 } … … 4234 4231 codeBlock->refStructures(vPC); 4235 4232 4236 JIT::compileGetByIdChain(callFrame->scopeChain()->globalData, callFrame, codeBlock, st ructure, chain, count, slot.cachedOffset(), returnAddress);4233 JIT::compileGetByIdChain(callFrame->scopeChain()->globalData, callFrame, codeBlock, stubInfo, structure, chain, count, slot.cachedOffset(), returnAddress); 4237 4234 } 4238 4235 … … 4580 4577 4581 4578 CodeBlock* codeBlock = callFrame->codeBlock(); 4582 unsigned vPCIndex = codeBlock->jitReturnAddressVPCMap().get(CTI_RETURN_ADDRESS);4583 Instruction* vPC = codeBlock->instructions().begin() + vPCIndex;4579 StructureStubInfo* stubInfo = &codeBlock->getStubInfo(CTI_RETURN_ADDRESS); 4580 Instruction* vPC = codeBlock->instructions().begin() + stubInfo->bytecodeIndex; 4584 4581 4585 4582 ASSERT(slot.slotBase()->isObject()); 4586 4587 StructureStubInfo* stubInfo = &codeBlock->getStubInfo(CTI_RETURN_ADDRESS);4588 4583 4589 4584 PolymorphicAccessStructureList* polymorphicStructureList; … … 4664 4659 Structure* structure = asCell(baseValue)->structure(); 4665 4660 CodeBlock* codeBlock = callFrame->codeBlock(); 4666 Instruction* vPC = codeBlock->instructions().begin() + codeBlock->jitReturnAddressVPCMap().get(CTI_RETURN_ADDRESS); 4661 StructureStubInfo* stubInfo = &codeBlock->getStubInfo(CTI_RETURN_ADDRESS); 4662 Instruction* vPC = codeBlock->instructions().begin() + stubInfo->bytecodeIndex; 4667 4663 4668 4664 ASSERT(slot.slotBase()->isObject()); … … 4680 4676 } 4681 4677 4682 StructureStubInfo* stubInfo = &codeBlock->getStubInfo(CTI_RETURN_ADDRESS);4683 4678 int listIndex; 4684 4679 PolymorphicAccessStructureList* prototypeStructureList = getPolymorphicAccessStructureListSlot(ARG_globalData->interpreter, stubInfo, vPC, listIndex); … … 4694 4689 ASSERT(chain); 4695 4690 4696 StructureStubInfo* stubInfo = &codeBlock->getStubInfo(CTI_RETURN_ADDRESS);4697 4691 int listIndex; 4698 4692 PolymorphicAccessStructureList* prototypeStructureList = getPolymorphicAccessStructureListSlot(ARG_globalData->interpreter, stubInfo, vPC, listIndex);
Note:
See TracChangeset
for help on using the changeset viewer.