Changeset 39116 in webkit for trunk/JavaScriptCore/bytecode/CodeBlock.h
- Timestamp:
- Dec 8, 2008, 5:06:14 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/bytecode/CodeBlock.h
r39102 r39116 280 280 unsigned lastJumpTarget() const { return m_jumpTargets.last(); } 281 281 282 size_t numberOfExceptionHandlers() const { return m_ exceptionHandlers.size(); }283 void addExceptionHandler(const HandlerInfo& hanler) { returnm_exceptionHandlers.append(hanler); }284 HandlerInfo& exceptionHandler(int index) { returnm_exceptionHandlers[index]; }282 size_t numberOfExceptionHandlers() const { return m_rareData ? m_rareData->m_exceptionHandlers.size() : 0; } 283 void addExceptionHandler(const HandlerInfo& hanler) { createRareDataIfNecessary(); return m_rareData->m_exceptionHandlers.append(hanler); } 284 HandlerInfo& exceptionHandler(int index) { ASSERT(m_rareData); return m_rareData->m_exceptionHandlers[index]; } 285 285 286 286 void addExpressionInfo(const ExpressionRangeInfo& expressionInfo) { return m_expressionInfo.append(expressionInfo); } … … 304 304 Register& constantRegister(int index) { return m_constantRegisters[index]; } 305 305 306 unsigned addFunction(FuncDeclNode* n) { unsigned size = m_functions.size(); m_functions.append(n); return size; }307 FuncDeclNode* function(int index) const { return m_functions[index].get(); }308 309 306 unsigned addFunctionExpression(FuncExprNode* n) { unsigned size = m_functionExpressions.size(); m_functionExpressions.append(n); return size; } 310 307 FuncExprNode* functionExpression(int index) const { return m_functionExpressions[index].get(); } 311 308 312 unsigned addUnexpectedConstant(JSValue* v) { unsigned size = m_unexpectedConstants.size(); m_unexpectedConstants.append(v); return size; } 313 JSValue* unexpectedConstant(int index) const { return m_unexpectedConstants[index]; } 314 315 unsigned addRegExp(RegExp* r) { unsigned size = m_regexps.size(); m_regexps.append(r); return size; } 316 RegExp* regexp(int index) const { return m_regexps[index].get(); } 309 unsigned addFunction(FuncDeclNode* n) { createRareDataIfNecessary(); unsigned size = m_rareData->m_functions.size(); m_rareData->m_functions.append(n); return size; } 310 FuncDeclNode* function(int index) const { ASSERT(m_rareData); return m_rareData->m_functions[index].get(); } 311 312 unsigned addUnexpectedConstant(JSValue* v) { createRareDataIfNecessary(); unsigned size = m_rareData->m_unexpectedConstants.size(); m_rareData->m_unexpectedConstants.append(v); return size; } 313 JSValue* unexpectedConstant(int index) const { ASSERT(m_rareData); return m_rareData->m_unexpectedConstants[index]; } 314 315 unsigned addRegExp(RegExp* r) { createRareDataIfNecessary(); unsigned size = m_rareData->m_regexps.size(); m_rareData->m_regexps.append(r); return size; } 316 RegExp* regexp(int index) const { ASSERT(m_rareData); return m_rareData->m_regexps[index].get(); } 317 317 318 318 319 // Jump Tables 319 320 320 size_t numberOfImmediateSwitchJumpTables() const { return m_ immediateSwitchJumpTables.size(); }321 SimpleJumpTable& addImmediateSwitchJumpTable() { m_immediateSwitchJumpTables.append(SimpleJumpTable()); returnm_immediateSwitchJumpTables.last(); }322 SimpleJumpTable& immediateSwitchJumpTable(int tableIndex) { returnm_immediateSwitchJumpTables[tableIndex]; }323 324 size_t numberOfCharacterSwitchJumpTables() const { return m_ characterSwitchJumpTables.size(); }325 SimpleJumpTable& addCharacterSwitchJumpTable() { m_characterSwitchJumpTables.append(SimpleJumpTable()); returnm_characterSwitchJumpTables.last(); }326 SimpleJumpTable& characterSwitchJumpTable(int tableIndex) { returnm_characterSwitchJumpTables[tableIndex]; }327 328 size_t numberOfStringSwitchJumpTables() const { return m_ stringSwitchJumpTables.size(); }329 StringJumpTable& addStringSwitchJumpTable() { m_stringSwitchJumpTables.append(StringJumpTable()); returnm_stringSwitchJumpTables.last(); }330 StringJumpTable& stringSwitchJumpTable(int tableIndex) { returnm_stringSwitchJumpTables[tableIndex]; }321 size_t numberOfImmediateSwitchJumpTables() const { return m_rareData ? m_rareData->m_immediateSwitchJumpTables.size() : 0; } 322 SimpleJumpTable& addImmediateSwitchJumpTable() { createRareDataIfNecessary(); m_rareData->m_immediateSwitchJumpTables.append(SimpleJumpTable()); return m_rareData->m_immediateSwitchJumpTables.last(); } 323 SimpleJumpTable& immediateSwitchJumpTable(int tableIndex) { ASSERT(m_rareData); return m_rareData->m_immediateSwitchJumpTables[tableIndex]; } 324 325 size_t numberOfCharacterSwitchJumpTables() const { return m_rareData ? m_rareData->m_characterSwitchJumpTables.size() : 0; } 326 SimpleJumpTable& addCharacterSwitchJumpTable() { createRareDataIfNecessary(); m_rareData->m_characterSwitchJumpTables.append(SimpleJumpTable()); return m_rareData->m_characterSwitchJumpTables.last(); } 327 SimpleJumpTable& characterSwitchJumpTable(int tableIndex) { ASSERT(m_rareData); return m_rareData->m_characterSwitchJumpTables[tableIndex]; } 328 329 size_t numberOfStringSwitchJumpTables() const { return m_rareData ? m_rareData->m_stringSwitchJumpTables.size() : 0; } 330 StringJumpTable& addStringSwitchJumpTable() { createRareDataIfNecessary(); m_rareData->m_stringSwitchJumpTables.append(StringJumpTable()); return m_rareData->m_stringSwitchJumpTables.last(); } 331 StringJumpTable& stringSwitchJumpTable(int tableIndex) { ASSERT(m_rareData); return m_rareData->m_stringSwitchJumpTables[tableIndex]; } 331 332 332 333 333 334 SymbolTable& symbolTable() { return m_symbolTable; } 334 EvalCodeCache& evalCodeCache() { return m_evalCodeCache; } 335 336 EvalCodeCache& evalCodeCache() { createRareDataIfNecessary(); return m_rareData->m_evalCodeCache; } 335 337 336 338 void shrinkToFit(); … … 352 354 #endif 353 355 356 void createRareDataIfNecessary() 357 { 358 if (!m_rareData) 359 m_rareData.set(new RareData); 360 } 361 362 354 363 ScopeNode* m_ownerNode; 355 364 JSGlobalData* m_globalData; … … 379 388 Vector<unsigned> m_jumpTargets; 380 389 381 Vector<HandlerInfo> m_exceptionHandlers;382 390 Vector<ExpressionRangeInfo> m_expressionInfo; 383 391 Vector<LineInfo> m_lineInfo; … … 390 398 Vector<Identifier> m_identifiers; 391 399 Vector<Register> m_constantRegisters; 392 Vector<RefPtr<FuncDeclNode> > m_functions;393 400 Vector<RefPtr<FuncExprNode> > m_functionExpressions; 394 Vector<JSValue*> m_unexpectedConstants;395 Vector<RefPtr<RegExp> > m_regexps;396 397 // Jump Tables398 Vector<SimpleJumpTable> m_immediateSwitchJumpTables;399 Vector<SimpleJumpTable> m_characterSwitchJumpTables;400 Vector<StringJumpTable> m_stringSwitchJumpTables;401 401 402 402 SymbolTable m_symbolTable; 403 403 404 EvalCodeCache m_evalCodeCache; 404 struct RareData { 405 Vector<HandlerInfo> m_exceptionHandlers; 406 407 // Rare Constants 408 Vector<RefPtr<FuncDeclNode> > m_functions; 409 Vector<JSValue*> m_unexpectedConstants; 410 Vector<RefPtr<RegExp> > m_regexps; 411 412 // Jump Tables 413 Vector<SimpleJumpTable> m_immediateSwitchJumpTables; 414 Vector<SimpleJumpTable> m_characterSwitchJumpTables; 415 Vector<StringJumpTable> m_stringSwitchJumpTables; 416 417 EvalCodeCache m_evalCodeCache; 418 }; 419 420 OwnPtr<RareData> m_rareData; 405 421 }; 406 422
Note:
See TracChangeset
for help on using the changeset viewer.