| 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 <iostream> |    5 #include <iostream> | 
|    6  |    6  | 
|    7 #include "src/compiler/bytecode-graph-builder.h" |    7 #include "src/compiler/bytecode-graph-builder.h" | 
|    8 #include "src/compiler/common-operator.h" |    8 #include "src/compiler/common-operator.h" | 
|    9 #include "src/compiler/graph-visualizer.h" |    9 #include "src/compiler/graph-visualizer.h" | 
|   10 #include "src/compiler/instruction.h" |   10 #include "src/compiler/instruction.h" | 
| (...skipping 467 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  478   Matcher<Node*> feedback_vector_matcher = IsFeedbackVector(start, start); |  478   Matcher<Node*> feedback_vector_matcher = IsFeedbackVector(start, start); | 
|  479   Matcher<Node*> preceeding_load = IsJSLoadNamed( |  479   Matcher<Node*> preceeding_load = IsJSLoadNamed( | 
|  480       GraphGeneratorHelper::GetName(isolate(), "val_prev"), _, _, _, _); |  480       GraphGeneratorHelper::GetName(isolate(), "val_prev"), _, _, _, _); | 
|  481   Matcher<Node*> load_named_matcher_wide = |  481   Matcher<Node*> load_named_matcher_wide = | 
|  482       IsJSLoadNamed(name, IsParameter(1), feedback_vector_matcher, |  482       IsJSLoadNamed(name, IsParameter(1), feedback_vector_matcher, | 
|  483                     preceeding_load, IsIfSuccess(_)); |  483                     preceeding_load, IsIfSuccess(_)); | 
|  484  |  484  | 
|  485   EXPECT_THAT(ret, IsReturn(load_named_matcher_wide, _, _)); |  485   EXPECT_THAT(ret, IsReturn(load_named_matcher_wide, _, _)); | 
|  486 } |  486 } | 
|  487  |  487  | 
 |  488  | 
 |  489 TEST_F(BytecodeGraphBuilderTest, CallProperty0) { | 
 |  490   const char* code_snippet = | 
 |  491       "function f(p1) {return p1.func();}; f({func(){}});"; | 
 |  492   GraphGeneratorHelper helper(isolate(), zone(), code_snippet); | 
 |  493   Graph* graph = helper.GetCompletedGraph(); | 
 |  494  | 
 |  495   Node* ret = graph->end()->InputAt(0); | 
 |  496   Node* start = graph->start(); | 
 |  497  | 
 |  498   Handle<Name> name = GraphGeneratorHelper::GetName(isolate(), "func"); | 
 |  499   Matcher<Node*> feedback_vector_matcher = IsFeedbackVector(start, start); | 
 |  500   Matcher<Node*> load_named_matcher = IsJSLoadNamed( | 
 |  501       name, IsParameter(1), feedback_vector_matcher, start, start); | 
 |  502   std::vector<Matcher<Node*>> call_inputs; | 
 |  503   call_inputs.push_back(load_named_matcher); | 
 |  504   call_inputs.push_back(IsParameter(1)); | 
 |  505   Matcher<Node*> call_matcher = | 
 |  506       IsJSCallFunction(call_inputs, load_named_matcher, IsIfSuccess(_)); | 
 |  507  | 
 |  508   EXPECT_THAT(ret, IsReturn(call_matcher, _, _)); | 
 |  509 } | 
 |  510  | 
 |  511  | 
 |  512 TEST_F(BytecodeGraphBuilderTest, CallProperty2) { | 
 |  513   const char* code_snippet = | 
 |  514       "function f(p1, p2, p3) {return p1.func(p2, p3);}; f({func(a){}}, 1, 2);"; | 
 |  515   GraphGeneratorHelper helper(isolate(), zone(), code_snippet); | 
 |  516   Graph* graph = helper.GetCompletedGraph(); | 
 |  517  | 
 |  518   Node* ret = graph->end()->InputAt(0); | 
 |  519   Node* start = graph->start(); | 
 |  520  | 
 |  521   Handle<Name> name = GraphGeneratorHelper::GetName(isolate(), "func"); | 
 |  522   Matcher<Node*> feedback_vector_matcher = IsFeedbackVector(start, start); | 
 |  523   Matcher<Node*> load_named_matcher = IsJSLoadNamed( | 
 |  524       name, IsParameter(1), feedback_vector_matcher, start, start); | 
 |  525   std::vector<Matcher<Node*>> call_inputs; | 
 |  526   call_inputs.push_back(load_named_matcher); | 
 |  527   call_inputs.push_back(IsParameter(1)); | 
 |  528   call_inputs.push_back(IsParameter(2)); | 
 |  529   call_inputs.push_back(IsParameter(3)); | 
 |  530   Matcher<Node*> call_matcher = | 
 |  531       IsJSCallFunction(call_inputs, load_named_matcher, IsIfSuccess(_)); | 
 |  532  | 
 |  533   EXPECT_THAT(ret, IsReturn(call_matcher, _, _)); | 
 |  534 } | 
 |  535  | 
|  488 }  // namespace compiler |  536 }  // namespace compiler | 
|  489 }  // namespace internal |  537 }  // namespace internal | 
|  490 }  // namespace v8 |  538 }  // namespace v8 | 
| OLD | NEW |