Changeset 37730 in webkit for trunk/JavaScriptCore/VM/CodeGenerator.cpp
- Timestamp:
- Oct 20, 2008, 9:48:30 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/VM/CodeGenerator.cpp
r37712 r37730 196 196 CodeGenerator::CodeGenerator(ProgramNode* programNode, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, CodeBlock* codeBlock, VarStack& varStack, FunctionStack& functionStack) 197 197 : m_shouldEmitDebugHooks(!!debugger) 198 , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) 198 199 , m_scopeChain(&scopeChain) 199 200 , m_symbolTable(symbolTable) … … 274 275 CodeGenerator::CodeGenerator(FunctionBodyNode* functionBody, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, CodeBlock* codeBlock) 275 276 : m_shouldEmitDebugHooks(!!debugger) 277 , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) 276 278 , m_scopeChain(&scopeChain) 277 279 , m_symbolTable(symbolTable) … … 343 345 CodeGenerator::CodeGenerator(EvalNode* evalNode, const Debugger* debugger, const ScopeChain& scopeChain, SymbolTable* symbolTable, EvalCodeBlock* codeBlock) 344 346 : m_shouldEmitDebugHooks(!!debugger) 347 , m_shouldEmitProfileHooks(scopeChain.globalObject()->supportsProfiling()) 345 348 , m_scopeChain(&scopeChain) 346 349 , m_symbolTable(symbolTable) … … 1159 1162 callFrame.append(newTemporary()); 1160 1163 1164 if (m_shouldEmitProfileHooks) { 1165 emitOpcode(op_profile_will_call); 1166 instructions().append(func->index()); 1167 } 1168 1161 1169 emitExpressionInfo(divot, startOffset, endOffset); 1162 1170 m_codeBlock->structureIDInstructions.append(instructions().size()); … … 1168 1176 instructions().append(argv.size()); // argc 1169 1177 instructions().append(argv[0]->index() + argv.size() + RegisterFile::CallFrameHeaderSize); // registerOffset 1178 1179 if (m_shouldEmitProfileHooks) { 1180 emitOpcode(op_profile_did_call); 1181 instructions().append(func->index()); 1182 } 1183 1170 1184 return dst; 1171 1185 } … … 1193 1207 ASSERT(func->refCount()); 1194 1208 1195 // Load prototype.1196 emitExpressionInfo(divot, startOffset, endOffset);1197 1209 RefPtr<RegisterID> funcProto = newTemporary(); 1198 emitGetById(funcProto.get(), func, globalData()->propertyNames->prototype);1199 1210 1200 1211 // Generate code for arguments. … … 1206 1217 } 1207 1218 1219 if (m_shouldEmitProfileHooks) { 1220 emitOpcode(op_profile_will_call); 1221 instructions().append(func->index()); 1222 } 1223 1224 // Load prototype. 1225 emitExpressionInfo(divot, startOffset, endOffset); 1226 emitGetById(funcProto.get(), func, globalData()->propertyNames->prototype); 1227 1208 1228 // Reserve space for call frame. 1209 1229 Vector<RefPtr<RegisterID>, RegisterFile::CallFrameHeaderSize> callFrame; … … 1224 1244 instructions().append(dst->index()); 1225 1245 instructions().append(argv[0]->index()); 1246 1247 if (m_shouldEmitProfileHooks) { 1248 emitOpcode(op_profile_did_call); 1249 instructions().append(func->index()); 1250 } 1226 1251 1227 1252 return dst;
Note:
See TracChangeset
for help on using the changeset viewer.