Changeset 37831 in webkit for trunk/JavaScriptCore/VM/CodeBlock.cpp
- Timestamp:
- Oct 23, 2008, 3:29:54 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/VM/CodeBlock.cpp
r37804 r37831 276 276 } 277 277 278 if ( structureIDInstructions.size()) {278 if (globalResolveInstructions.size() || propertyAccessInstructions.size()) 279 279 printf("\nStructureIDs:\n"); 280 281 if (globalResolveInstructions.size()) { 280 282 size_t i = 0; 281 283 do { 282 printStructureIDs(&instructions[ structureIDInstructions[i].opcodeIndex]);284 printStructureIDs(&instructions[globalResolveInstructions[i]]); 283 285 ++i; 284 } while (i < structureIDInstructions.size()); 286 } while (i < globalResolveInstructions.size()); 287 } 288 if (propertyAccessInstructions.size()) { 289 size_t i = 0; 290 do { 291 printStructureIDs(&instructions[propertyAccessInstructions[i].opcodeIndex]); 292 ++i; 293 } while (i < propertyAccessInstructions.size()); 285 294 } 286 295 … … 942 951 CodeBlock::~CodeBlock() 943 952 { 944 size_t size = structureIDInstructions.size(); 945 for (size_t i = 0; i < size; ++i) { 946 derefStructureIDs(&instructions[structureIDInstructions[i].opcodeIndex]); 947 if (structureIDInstructions[i].stubRoutine) 948 WTF::fastFreeExecutable(structureIDInstructions[i].stubRoutine); 949 if (CallLinkInfo* callLinkInfo = structureIDInstructions[i].linkInfoPtr) { 953 for (size_t size = globalResolveInstructions.size(), i = 0; i < size; ++i) { 954 derefStructureIDs(&instructions[globalResolveInstructions[i]]); 955 } 956 957 for (size_t size = propertyAccessInstructions.size(), i = 0; i < size; ++i) { 958 derefStructureIDs(&instructions[propertyAccessInstructions[i].opcodeIndex]); 959 if (propertyAccessInstructions[i].stubRoutine) 960 WTF::fastFreeExecutable(propertyAccessInstructions[i].stubRoutine); 961 } 962 963 for (size_t size = callLinkInfos.size(), i = 0; i < size; ++i) { 964 CallLinkInfo* callLinkInfo = &callLinkInfos[i]; 965 if (callLinkInfo->isLinked()) 950 966 callLinkInfo->callee->removeCaller(callLinkInfo); 951 delete callLinkInfo;952 }953 967 } 954 968 … … 967 981 for (size_t i = 0; i < size; ++i) { 968 982 CallLinkInfo* currentCaller = linkedCallerList[i]; 969 CTI::unlinkCall(currentCaller->callerStructureStubInfo); 970 currentCaller->callerStructureStubInfo->linkInfoPtr = 0; 971 delete currentCaller; 983 CTI::unlinkCall(currentCaller); 984 currentCaller->setUnlinked(); 972 985 } 973 986 linkedCallerList.clear(); … … 1010 1023 1011 1024 // These instructions don't ref their StructureIDs. 1012 ASSERT(vPC[0].u.opcode == machine->getOpcode(op_get_by_id) || vPC[0].u.opcode == machine->getOpcode(op_put_by_id) || vPC[0].u.opcode == machine->getOpcode(op_get_by_id_generic) || vPC[0].u.opcode == machine->getOpcode(op_put_by_id_generic) || vPC[0].u.opcode == machine->getOpcode(op_get_array_length) || vPC[0].u.opcode == machine->getOpcode(op_get_string_length) 1013 || vPC[0].u.opcode == machine->getOpcode(op_call_eval) || vPC[0].u.opcode == machine->getOpcode(op_call) || vPC[0].u.opcode == machine->getOpcode(op_construct)); 1025 ASSERT(vPC[0].u.opcode == machine->getOpcode(op_get_by_id) || vPC[0].u.opcode == machine->getOpcode(op_put_by_id) || vPC[0].u.opcode == machine->getOpcode(op_get_by_id_generic) || vPC[0].u.opcode == machine->getOpcode(op_put_by_id_generic) || vPC[0].u.opcode == machine->getOpcode(op_get_array_length) || vPC[0].u.opcode == machine->getOpcode(op_get_string_length)); 1014 1026 } 1015 1027
Note:
See TracChangeset
for help on using the changeset viewer.