Changeset 208208 in webkit for trunk/Source/JavaScriptCore/dfg/DFGArgumentsUtilities.cpp
- Timestamp:
- Oct 31, 2016, 7:56:30 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/dfg/DFGArgumentsUtilities.cpp
r203006 r208208 65 65 graph, arguments, 66 66 arguments->op() == CreateDirectArguments || arguments->op() == CreateScopedArguments 67 || arguments->op() == CreateClonedArguments || arguments->op() == PhantomDirectArguments68 || arguments->op() == Phantom ClonedArguments);67 || arguments->op() == CreateClonedArguments || arguments->op() == CreateRest 68 || arguments->op() == PhantomDirectArguments || arguments->op() == PhantomClonedArguments || arguments->op() == PhantomCreateRest); 69 69 70 70 InlineCallFrame* inlineCallFrame = arguments->origin.semantic.inlineCallFrame; 71 72 unsigned numberOfArgumentsToSkip = 0; 73 if (arguments->op() == CreateRest || arguments->op() == PhantomCreateRest) 74 numberOfArgumentsToSkip = arguments->numberOfArgumentsToSkip(); 71 75 72 76 if (inlineCallFrame && !inlineCallFrame->isVarargs()) { 77 unsigned argumentsSize = inlineCallFrame->arguments.size() - 1; 78 if (argumentsSize >= numberOfArgumentsToSkip) 79 argumentsSize -= numberOfArgumentsToSkip; 80 else 81 argumentsSize = 0; 73 82 return insertionSet.insertConstant( 74 nodeIndex, origin, jsNumber( inlineCallFrame->arguments.size() - 1));83 nodeIndex, origin, jsNumber(argumentsSize)); 75 84 } 76 85 … … 85 94 OpInfo(graph.m_stackAccessData.add(argumentCountRegister, FlushedInt32))); 86 95 } 87 88 returninsertionSet.insertNode(96 97 Node* result = insertionSet.insertNode( 89 98 nodeIndex, SpecInt32Only, ArithSub, origin, OpInfo(Arith::Unchecked), 90 99 Edge(argumentCount, Int32Use), 91 100 insertionSet.insertConstantForUse( 92 nodeIndex, origin, jsNumber(1), Int32Use)); 101 nodeIndex, origin, jsNumber(1 + numberOfArgumentsToSkip), Int32Use)); 102 103 if (numberOfArgumentsToSkip) { 104 // The above subtraction may produce a negative number if this number is non-zero. We correct that here. 105 result = insertionSet.insertNode( 106 nodeIndex, SpecInt32Only, ArithMax, origin, 107 Edge(result, Int32Use), 108 insertionSet.insertConstantForUse(nodeIndex, origin, jsNumber(0), Int32Use)); 109 result->setResult(NodeResultInt32); 110 } 111 112 return result; 93 113 } 94 114
Note:
See TracChangeset
for help on using the changeset viewer.