Changeset 236495 in webkit
- Timestamp:
- Sep 25, 2018, 8:14:09 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 1 added
- 4 edited
-
JSTests/ChangeLog (modified) (1 diff)
-
JSTests/stress/use-baseline-codeblock-materialize-osr-exit.js (added)
-
Source/JavaScriptCore/ChangeLog (modified) (1 diff)
-
Source/JavaScriptCore/bytecode/InlineCallFrame.h (modified) (1 diff)
-
Source/JavaScriptCore/ftl/FTLOperations.cpp (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/JSTests/ChangeLog
r236437 r236495 1 2018-09-25 Saam Barati <sbarati@apple.com> 2 3 Calls to baselineCodeBlockForOriginAndBaselineCodeBlock in operationMaterializeObjectInOSR should actually pass in the baseline CodeBlock 4 https://bugs.webkit.org/show_bug.cgi?id=189940 5 <rdar://problem/43640987> 6 7 Reviewed by Mark Lam. 8 9 * stress/use-baseline-codeblock-materialize-osr-exit.js: Added. 10 1 11 2018-09-24 Saam Barati <sbarati@apple.com> 2 12 -
trunk/Source/JavaScriptCore/ChangeLog
r236469 r236495 1 2018-09-25 Saam Barati <sbarati@apple.com> 2 3 Calls to baselineCodeBlockForOriginAndBaselineCodeBlock in operationMaterializeObjectInOSR should actually pass in the baseline CodeBlock 4 https://bugs.webkit.org/show_bug.cgi?id=189940 5 <rdar://problem/43640987> 6 7 Reviewed by Mark Lam. 8 9 We were calling baselineCodeBlockForOriginAndBaselineCodeBlock with the FTL 10 CodeBlock. There is nothing semantically wrong with doing that (except for 11 poor naming), however, the poor naming here led us to make a real semantic 12 mistake. We wanted the baseline CodeBlock's constant pool, but we were 13 accessing the FTL CodeBlock's constant pool accidentally. We need to 14 access the baseline CodeBlock's constant pool when we update the NewArrayBuffer 15 constant value. 16 17 * bytecode/InlineCallFrame.h: 18 (JSC::baselineCodeBlockForOriginAndBaselineCodeBlock): 19 * ftl/FTLOperations.cpp: 20 (JSC::FTL::operationMaterializeObjectInOSR): 21 1 22 2018-09-25 Joseph Pecoraro <pecoraro@apple.com> 2 23 -
trunk/Source/JavaScriptCore/bytecode/InlineCallFrame.h
r226811 r236495 241 241 inline CodeBlock* baselineCodeBlockForOriginAndBaselineCodeBlock(const CodeOrigin& codeOrigin, CodeBlock* baselineCodeBlock) 242 242 { 243 ASSERT(baselineCodeBlock->jitType() == JITCode::BaselineJIT); 243 244 if (codeOrigin.inlineCallFrame) 244 245 return baselineCodeBlockForInlineCallFrame(codeOrigin.inlineCallFrame); -
trunk/Source/JavaScriptCore/ftl/FTLOperations.cpp
r232904 r236495 226 226 227 227 CodeBlock* codeBlock = baselineCodeBlockForOriginAndBaselineCodeBlock( 228 materialization->origin(), exec->codeBlock() );228 materialization->origin(), exec->codeBlock()->baselineAlternative()); 229 229 Structure* structure = codeBlock->globalObject()->activationStructure(); 230 230 … … 287 287 case PhantomCreateRest: { 288 288 CodeBlock* codeBlock = baselineCodeBlockForOriginAndBaselineCodeBlock( 289 materialization->origin(), exec->codeBlock() );289 materialization->origin(), exec->codeBlock()->baselineAlternative()); 290 290 291 291 unsigned numberOfArgumentsToSkip = codeBlock->numberOfArgumentsToSkip(); … … 331 331 332 332 CodeBlock* codeBlock = baselineCodeBlockForOriginAndBaselineCodeBlock( 333 materialization->origin(), exec->codeBlock() );333 materialization->origin(), exec->codeBlock()->baselineAlternative()); 334 334 335 335 // We have an inline frame and we have all of the data we need to recreate it. … … 474 474 // For now, we use array allocation profile in the actual CodeBlock. It is OK since current NewArrayBuffer 475 475 // and PhantomNewArrayBuffer are always bound to a specific op_new_array_buffer. 476 CodeBlock* codeBlock = baselineCodeBlockForOriginAndBaselineCodeBlock(materialization->origin(), exec->codeBlock() );476 CodeBlock* codeBlock = baselineCodeBlockForOriginAndBaselineCodeBlock(materialization->origin(), exec->codeBlock()->baselineAlternative()); 477 477 Instruction* currentInstruction = &codeBlock->instructions()[materialization->origin().bytecodeIndex]; 478 478 RELEASE_ASSERT(Interpreter::getOpcodeID(currentInstruction[0].u.opcode) == op_new_array_buffer); … … 507 507 case PhantomNewArrayWithSpread: { 508 508 CodeBlock* codeBlock = baselineCodeBlockForOriginAndBaselineCodeBlock( 509 materialization->origin(), exec->codeBlock() );509 materialization->origin(), exec->codeBlock()->baselineAlternative()); 510 510 JSGlobalObject* globalObject = codeBlock->globalObject(); 511 511 Structure* structure = globalObject->arrayStructureForIndexingTypeDuringAllocation(ArrayWithContiguous); … … 586 586 } 587 587 RELEASE_ASSERT(regExp); 588 CodeBlock* codeBlock = baselineCodeBlockForOriginAndBaselineCodeBlock(materialization->origin(), exec->codeBlock() );588 CodeBlock* codeBlock = baselineCodeBlockForOriginAndBaselineCodeBlock(materialization->origin(), exec->codeBlock()->baselineAlternative()); 589 589 Structure* structure = codeBlock->globalObject()->regExpStructure(); 590 590 return RegExpObject::create(vm, structure, regExp);
Note:
See TracChangeset
for help on using the changeset viewer.