| OLD | NEW | 
|---|
| 1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 the V8 project authors. All rights reserved. | 
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be | 
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. | 
| 4 | 4 | 
| 5 #include "src/v8.h" | 5 #include "src/v8.h" | 
| 6 | 6 | 
| 7 #include "src/compiler.h" | 7 #include "src/compiler.h" | 
| 8 #include "src/interpreter/bytecode-array-iterator.h" | 8 #include "src/interpreter/bytecode-array-iterator.h" | 
| 9 #include "src/interpreter/bytecode-generator.h" | 9 #include "src/interpreter/bytecode-generator.h" | 
| 10 #include "src/interpreter/interpreter.h" | 10 #include "src/interpreter/interpreter.h" | 
| (...skipping 5984 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 5995   }; | 5995   }; | 
| 5996   // clang-format on | 5996   // clang-format on | 
| 5997 | 5997 | 
| 5998   for (size_t i = 0; i < arraysize(snippets); i++) { | 5998   for (size_t i = 0; i < arraysize(snippets); i++) { | 
| 5999     Handle<BytecodeArray> bytecode_array = | 5999     Handle<BytecodeArray> bytecode_array = | 
| 6000         helper.MakeBytecodeForFunction(snippets[i].code_snippet); | 6000         helper.MakeBytecodeForFunction(snippets[i].code_snippet); | 
| 6001     CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 6001     CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 
| 6002   } | 6002   } | 
| 6003 } | 6003 } | 
| 6004 | 6004 | 
| 6005 TEST(CreateRestArguments) { | 6005 TEST(CreateRestParameter) { | 
| 6006   InitializedHandleScope handle_scope; | 6006   InitializedHandleScope handle_scope; | 
| 6007   BytecodeGeneratorHelper helper; | 6007   BytecodeGeneratorHelper helper; | 
| 6008   Zone zone; | 6008   Zone zone; | 
| 6009 | 6009 | 
| 6010   FeedbackVectorSpec feedback_spec(&zone); | 6010   FeedbackVectorSpec feedback_spec(&zone); | 
| 6011   FeedbackVectorSlot slot = feedback_spec.AddKeyedLoadICSlot(); | 6011   FeedbackVectorSlot slot = feedback_spec.AddKeyedLoadICSlot(); | 
| 6012   FeedbackVectorSlot slot1 = feedback_spec.AddKeyedLoadICSlot(); | 6012   FeedbackVectorSlot slot1 = feedback_spec.AddKeyedLoadICSlot(); | 
| 6013 | 6013 | 
| 6014   Handle<i::TypeFeedbackVector> vector = | 6014   Handle<i::TypeFeedbackVector> vector = | 
| 6015       i::NewTypeFeedbackVector(helper.isolate(), &feedback_spec); | 6015       i::NewTypeFeedbackVector(helper.isolate(), &feedback_spec); | 
| 6016 | 6016 | 
| 6017   // clang-format off | 6017   // clang-format off | 
| 6018   ExpectedSnippet<int> snippets[] = { | 6018   ExpectedSnippet<int> snippets[] = { | 
| 6019       {"function f(...restArgs) { return restArgs; }", | 6019       {"function f(...restArgs) { return restArgs; }", | 
| 6020        1 * kPointerSize, | 6020        1 * kPointerSize, | 
| 6021        2, | 6021        1, | 
| 6022        8, | 6022        7, | 
| 6023        { | 6023        { | 
| 6024            B(CreateRestArguments), U8(0),  // | 6024            B(CreateRestParameter),         // | 
| 6025            B(Star), R(0),                  // | 6025            B(Star), R(0),                  // | 
| 6026            B(StackCheck),                  // | 6026            B(StackCheck),                  // | 
| 6027            B(Ldar), R(0),                  // | 6027            B(Ldar), R(0),                  // | 
| 6028            B(Return),                      // | 6028            B(Return),                      // | 
| 6029        }, | 6029        }, | 
| 6030        1, | 6030        0, | 
| 6031        {0}}, | 6031        {}}, | 
| 6032       {"function f(a, ...restArgs) { return restArgs; }", | 6032       {"function f(a, ...restArgs) { return restArgs; }", | 
| 6033        2 * kPointerSize, | 6033        2 * kPointerSize, | 
| 6034        3, | 6034        2, | 
| 6035        15, | 6035        14, | 
| 6036        { | 6036        { | 
| 6037            B(CreateRestArguments), U8(0),  // | 6037            B(CreateRestParameter),         // | 
| 6038            B(Star), R(0),                  // | 6038            B(Star), R(0),                  // | 
| 6039            B(LdaTheHole),                  // | 6039            B(LdaTheHole),                  // | 
| 6040            B(Star), R(1),                  // | 6040            B(Star), R(1),                  // | 
| 6041            B(StackCheck),                  // | 6041            B(StackCheck),                  // | 
| 6042            B(Ldar), A(1, 3),               // | 6042            B(Ldar), A(1, 2),               // | 
| 6043            B(Star), R(1),                  // | 6043            B(Star), R(1),                  // | 
| 6044            B(Ldar), R(0),                  // | 6044            B(Ldar), R(0),                  // | 
| 6045            B(Return),                      // | 6045            B(Return),                      // | 
| 6046        }, | 6046        }, | 
| 6047        1, | 6047        0, | 
| 6048        {1}}, | 6048        {}}, | 
| 6049       {"function f(a, ...restArgs) { return restArgs[0]; }", | 6049       {"function f(a, ...restArgs) { return restArgs[0]; }", | 
| 6050        3 * kPointerSize, | 6050        3 * kPointerSize, | 
| 6051        3, | 6051        2, | 
| 6052        21, | 6052        20, | 
| 6053        { | 6053        { | 
| 6054            B(CreateRestArguments), U8(0),                           // | 6054            B(CreateRestParameter),                                  // | 
| 6055            B(Star), R(0),                                           // | 6055            B(Star), R(0),                                           // | 
| 6056            B(LdaTheHole),                                           // | 6056            B(LdaTheHole),                                           // | 
| 6057            B(Star), R(1),                                           // | 6057            B(Star), R(1),                                           // | 
| 6058            B(StackCheck),                                           // | 6058            B(StackCheck),                                           // | 
| 6059            B(Ldar), A(1, 3),                                        // | 6059            B(Ldar), A(1, 2),                                        // | 
| 6060            B(Star), R(1),                                           // | 6060            B(Star), R(1),                                           // | 
| 6061            B(Ldar), R(0),                                           // | 6061            B(Ldar), R(0),                                           // | 
| 6062            B(Star), R(2),                                           // | 6062            B(Star), R(2),                                           // | 
| 6063            B(LdaZero),                                              // | 6063            B(LdaZero),                                              // | 
| 6064            B(KeyedLoadICSloppy), R(2), U8(vector->GetIndex(slot)),  // | 6064            B(KeyedLoadICSloppy), R(2), U8(vector->GetIndex(slot)),  // | 
| 6065            B(Return),                                               // | 6065            B(Return),                                               // | 
| 6066        }, | 6066        }, | 
| 6067        1, | 6067        0, | 
| 6068        {1}}, | 6068        {}}, | 
| 6069       {"function f(a, ...restArgs) { return restArgs[0] + arguments[0]; }", | 6069       {"function f(a, ...restArgs) { return restArgs[0] + arguments[0]; }", | 
| 6070        5 * kPointerSize, | 6070        5 * kPointerSize, | 
| 6071        3, | 6071        2, | 
| 6072        36, | 6072        35, | 
| 6073        { | 6073        { | 
| 6074            B(CreateUnmappedArguments),                               // | 6074            B(CreateUnmappedArguments),                               // | 
| 6075            B(Star), R(0),                                            // | 6075            B(Star), R(0),                                            // | 
| 6076            B(CreateRestArguments), U8(0),                            // | 6076            B(CreateRestParameter),                                   // | 
| 6077            B(Star), R(1),                                            // | 6077            B(Star), R(1),                                            // | 
| 6078            B(LdaTheHole),                                            // | 6078            B(LdaTheHole),                                            // | 
| 6079            B(Star), R(2),                                            // | 6079            B(Star), R(2),                                            // | 
| 6080            B(StackCheck),                                            // | 6080            B(StackCheck),                                            // | 
| 6081            B(Ldar), A(1, 3),                                         // | 6081            B(Ldar), A(1, 2),                                         // | 
| 6082            B(Star), R(2),                                            // | 6082            B(Star), R(2),                                            // | 
| 6083            B(Ldar), R(1),                                            // | 6083            B(Ldar), R(1),                                            // | 
| 6084            B(Star), R(3),                                            // | 6084            B(Star), R(3),                                            // | 
| 6085            B(LdaZero),                                               // | 6085            B(LdaZero),                                               // | 
| 6086            B(KeyedLoadICSloppy), R(3), U8(vector->GetIndex(slot)),   // | 6086            B(KeyedLoadICSloppy), R(3), U8(vector->GetIndex(slot)),   // | 
| 6087            B(Star), R(4),                                            // | 6087            B(Star), R(4),                                            // | 
| 6088            B(Ldar), R(0),                                            // | 6088            B(Ldar), R(0),                                            // | 
| 6089            B(Star), R(3),                                            // | 6089            B(Star), R(3),                                            // | 
| 6090            B(LdaZero),                                               // | 6090            B(LdaZero),                                               // | 
| 6091            B(KeyedLoadICSloppy), R(3), U8(vector->GetIndex(slot1)),  // | 6091            B(KeyedLoadICSloppy), R(3), U8(vector->GetIndex(slot1)),  // | 
| 6092            B(Add), R(4),                                             // | 6092            B(Add), R(4),                                             // | 
| 6093            B(Return),                                                // | 6093            B(Return),                                                // | 
| 6094        }, | 6094        }, | 
| 6095        1, | 6095        0, | 
| 6096        {1}}, | 6096        {}}, | 
| 6097   }; | 6097   }; | 
| 6098   // clang-format on | 6098   // clang-format on | 
| 6099 | 6099 | 
| 6100   for (size_t i = 0; i < arraysize(snippets); i++) { | 6100   for (size_t i = 0; i < arraysize(snippets); i++) { | 
| 6101     Handle<BytecodeArray> bytecode_array = | 6101     Handle<BytecodeArray> bytecode_array = | 
| 6102         helper.MakeBytecodeForFunction(snippets[i].code_snippet); | 6102         helper.MakeBytecodeForFunction(snippets[i].code_snippet); | 
| 6103     CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 6103     CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 
| 6104   } | 6104   } | 
| 6105 } | 6105 } | 
| 6106 | 6106 | 
| (...skipping 2485 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
| 8592   for (size_t i = 0; i < arraysize(snippets); i++) { | 8592   for (size_t i = 0; i < arraysize(snippets); i++) { | 
| 8593     Handle<BytecodeArray> bytecode_array = | 8593     Handle<BytecodeArray> bytecode_array = | 
| 8594         helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 8594         helper.MakeBytecodeForFunctionBody(snippets[i].code_snippet); | 
| 8595     CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 8595     CheckBytecodeArrayEqual(snippets[i], bytecode_array); | 
| 8596   } | 8596   } | 
| 8597 } | 8597 } | 
| 8598 | 8598 | 
| 8599 }  // namespace interpreter | 8599 }  // namespace interpreter | 
| 8600 }  // namespace internal | 8600 }  // namespace internal | 
| 8601 }  // namespace v8 | 8601 }  // namespace v8 | 
| OLD | NEW | 
|---|