Changeset 33371
- Timestamp:
- 05/12/08 23:06:47 (6 months ago)
- Location:
- branches/squirrelfish
- Files:
-
- 3 added
- 5 modified
-
JavaScriptCore/ChangeLog (modified) (1 diff)
-
JavaScriptCore/VM/Machine.cpp (modified) (1 diff)
-
JavaScriptCore/VM/RegisterFileStack.cpp (modified) (2 diffs)
-
JavaScriptCore/VM/RegisterFileStack.h (modified) (3 diffs)
-
LayoutTests/ChangeLog (modified) (1 diff)
-
LayoutTests/fast/js/implicit-call-with-global-reentry-expected.txt (added)
-
LayoutTests/fast/js/implicit-call-with-global-reentry.html (added)
-
LayoutTests/fast/js/resources/implicit-call-with-global-reentry.js (added)
Legend:
- Unmodified
- Added
- Removed
-
branches/squirrelfish/JavaScriptCore/ChangeLog
r33370 r33371 1 2008-05-12 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Geoff. 4 5 Bug 18934: SQUIRRELFISH: ASSERT @ nytimes.com due to RegisterFile being clobbered 6 <https://bugs.webkit.org/show_bug.cgi?id=18934> 7 8 Unfortunately we cannot create new statically optimised globals if there are any 9 tainted RegisterFiles on the RegisterFileStack. To handle this we re-introduce 10 (in a slightly cleaner form) the inImplicitCall concept to the RegisterFileStack. 11 12 * VM/Machine.cpp: 13 (KJS::Machine::execute): 14 * VM/RegisterFileStack.cpp: 15 (KJS::RegisterFileStack::pushFunctionRegisterFile): 16 * VM/RegisterFileStack.h: 17 1 18 2008-05-12 Geoffrey Garen <ggaren@apple.com> 2 19 -
branches/squirrelfish/JavaScriptCore/VM/Machine.cpp
r33370 r33371 580 580 581 581 RegisterFile* registerFile = registerFileStack->pushGlobalRegisterFile(); 582 CodeBlock* codeBlock = &programNode->code(scopeChain, registerFileStack->current()->isGlobal());582 CodeBlock* codeBlock = &programNode->code(scopeChain, !registerFileStack->inImplicitCall()); 583 583 registerFile->addGlobalSlots(codeBlock->numVars); 584 584 -
branches/squirrelfish/JavaScriptCore/VM/RegisterFileStack.cpp
r33327 r33371 87 87 RegisterFile* RegisterFileStack::pushFunctionRegisterFile() 88 88 { 89 m_functionStackDepth++; 89 90 return allocateRegisterFile(current()->maxSize() - current()->size()); 90 91 } … … 92 93 void RegisterFileStack::popFunctionRegisterFile() 93 94 { 95 m_functionStackDepth--; 94 96 delete m_stack.last(); 95 97 m_stack.removeLast(); -
branches/squirrelfish/JavaScriptCore/VM/RegisterFileStack.h
r33327 r33371 39 39 RegisterFileStack() 40 40 : m_globalBase(0) 41 , m_functionStackDepth(0) 41 42 { 42 43 allocateRegisterFile(RegisterFile::DefaultRegisterFileSize, this); … … 69 70 } 70 71 72 bool inImplicitCall() { return m_functionStackDepth > 0; } 71 73 private: 72 74 typedef Vector<RegisterFile*, 4> Stack; … … 89 91 Stack m_stack; 90 92 Register* m_globalBase; 93 int m_functionStackDepth; 91 94 }; 92 95 -
branches/squirrelfish/LayoutTests/ChangeLog
r33370 r33371 1 2008-05-12 Oliver Hunt <oliver@apple.com> 2 3 Reviewed by Geoff. 4 5 Bug 18934: SQUIRRELFISH: ASSERT @ nytimes.com due to RegisterFile being clobbered 6 <https://bugs.webkit.org/show_bug.cgi?id=18934> 7 8 Add testcases to cover global reentry from an implicit call. 9 10 * fast/js/implicit-call-with-global-reentry-expected.txt: Added. 11 * fast/js/implicit-call-with-global-reentry.html: Added. 12 * fast/js/resources/implicit-call-with-global-reentry.js: Added. 13 1 14 2008-05-12 Geoffrey Garen <ggaren@apple.com> 2 15