Changeset 60512 in webkit for trunk/JavaScriptCore/bytecompiler/BytecodeGenerator.h
- Timestamp:
- Jun 1, 2010, 4:13:23 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/bytecompiler/BytecodeGenerator.h
r60117 r60512 52 52 class ScopeNode; 53 53 54 class CallArguments { 55 public: 56 CallArguments(BytecodeGenerator& generator, ArgumentsNode* argumentsNode); 57 58 RegisterID* thisRegister() { return m_argv[0].get(); } 59 RegisterID* argumentRegister(unsigned i) { return m_argv[i + 1].get(); } 60 unsigned callFrame() { return thisRegister()->index() + count() + RegisterFile::CallFrameHeaderSize; } 61 unsigned count() { return m_argv.size(); } 62 RegisterID* profileHookRegister() { return m_profileHookRegister.get(); } 63 ArgumentsNode* argumentsNode() { return m_argumentsNode; } 64 65 private: 66 RefPtr<RegisterID> m_profileHookRegister; 67 ArgumentsNode* m_argumentsNode; 68 Vector<RefPtr<RegisterID>, 16> m_argv; 69 }; 70 54 71 struct FinallyContext { 55 72 Label* finallyAddr; … … 320 337 RegisterID* emitPutSetter(RegisterID* base, const Identifier& property, RegisterID* value); 321 338 322 RegisterID* emitCall(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);323 RegisterID* emitCallEval(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);339 RegisterID* emitCall(RegisterID* dst, RegisterID* func, CallArguments&, unsigned divot, unsigned startOffset, unsigned endOffset); 340 RegisterID* emitCallEval(RegisterID* dst, RegisterID* func, CallArguments&, unsigned divot, unsigned startOffset, unsigned endOffset); 324 341 RegisterID* emitCallVarargs(RegisterID* dst, RegisterID* func, RegisterID* thisRegister, RegisterID* argCount, unsigned divot, unsigned startOffset, unsigned endOffset); 325 342 RegisterID* emitLoadVarargs(RegisterID* argCountDst, RegisterID* args); … … 328 345 RegisterID* emitEnd(RegisterID* src) { return emitUnaryNoDstOp(op_end, src); } 329 346 330 RegisterID* emitConstruct(RegisterID* dst, RegisterID* func, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);347 RegisterID* emitConstruct(RegisterID* dst, RegisterID* func, CallArguments&, unsigned divot, unsigned startOffset, unsigned endOffset); 331 348 RegisterID* emitStrcat(RegisterID* dst, RegisterID* src, int count); 332 349 void emitToPrimitive(RegisterID* dst, RegisterID* src); … … 386 403 m_codeBlockBeingRegeneratedFrom = originalCodeBlock; 387 404 } 405 406 bool shouldEmitProfileHooks() { return m_shouldEmitProfileHooks; } 388 407 389 408 private: … … 411 430 typedef HashMap<UString::Rep*, JSString*, IdentifierRepHash> IdentifierStringMap; 412 431 413 RegisterID* emitCall(OpcodeID, RegisterID* dst, RegisterID* func, RegisterID* thisRegister, ArgumentsNode*, unsigned divot, unsigned startOffset, unsigned endOffset);432 RegisterID* emitCall(OpcodeID, RegisterID* dst, RegisterID* func, CallArguments&, unsigned divot, unsigned startOffset, unsigned endOffset); 414 433 415 434 RegisterID* newRegister(); … … 443 462 bool addGlobalVar(const Identifier&, bool isConstant, RegisterID*&); 444 463 445 RegisterID* addParameter(const Identifier&);464 void addParameter(const Identifier&, int parameterIndex); 446 465 447 466 void preserveLastVar(); … … 516 535 517 536 int m_nextGlobalIndex; 518 int m_nextParameterIndex;519 537 int m_firstConstantIndex; 520 538 int m_nextConstantOffset;
Note:
See TracChangeset
for help on using the changeset viewer.