Chromium Code Reviews| Index: test/cctest/compiler/function-tester.h |
| diff --git a/test/cctest/compiler/function-tester.h b/test/cctest/compiler/function-tester.h |
| index 9911f1340d2643d2fcf34969505e027c1a929899..4f35b981e7fd974b91866aed387a3253ec52de67 100644 |
| --- a/test/cctest/compiler/function-tester.h |
| +++ b/test/cctest/compiler/function-tester.h |
| @@ -37,16 +37,30 @@ class FunctionTester : public InitializedHandleScope { |
| // TODO(turbofan): generalize FunctionTester to work with N arguments. Now, it |
|
Michael Starzinger
2015/12/01 18:06:53
I think your change pretty much addresses this TOD
danno
2015/12/02 07:00:19
Done.
|
| // can handle up to four. |
| - explicit FunctionTester(Graph* graph) |
| + explicit FunctionTester(Graph* graph, int param_count) |
|
Michael Starzinger
2015/12/01 18:06:53
nit: No longer needs to be marked "explicit".
danno
2015/12/02 07:00:19
Done.
|
| : isolate(main_isolate()), |
| - function(NewFunction("(function(a,b,c,d){})")), |
| + function(NewFunction(BuildFunction(param_count).c_str())), |
| flags_(0) { |
| CompileGraph(graph); |
| } |
| + explicit FunctionTester(const CallInterfaceDescriptor& descriptor, |
|
Michael Starzinger
2015/12/01 18:06:53
nit: Doesn't need to be marked "explicit".
danno
2015/12/02 07:00:19
Done.
|
| + Handle<Code> code) |
| + : isolate(main_isolate()), |
| + function( |
| + (FLAG_allow_natives_syntax = true, |
| + NewFunction(BuildFunctionFromDescriptor(descriptor).c_str()))) { |
| + Compile(function); |
| + function->ReplaceCode(*code); |
| + } |
| + |
| Isolate* isolate; |
| Handle<JSFunction> function; |
| + MaybeHandle<Object> Call() { |
| + return Execution::Call(isolate, function, undefined(), 0, nullptr); |
| + } |
| + |
| MaybeHandle<Object> Call(Handle<Object> a, Handle<Object> b) { |
| Handle<Object> args[] = {a, b}; |
| return Execution::Call(isolate, function, undefined(), 2, args); |
| @@ -180,10 +194,10 @@ class FunctionTester : public InitializedHandleScope { |
| return function; |
| } |
| - static Handle<JSFunction> ForMachineGraph(Graph* graph) { |
| + static Handle<JSFunction> ForMachineGraph(Graph* graph, int param_count) { |
| JSFunction* p = NULL; |
| { // because of the implicit handle scope of FunctionTester. |
| - FunctionTester f(graph); |
| + FunctionTester f(graph, param_count); |
| p = *f.function; |
| } |
| return Handle<JSFunction>(p); // allocated in outer handle scope. |
| @@ -192,6 +206,25 @@ class FunctionTester : public InitializedHandleScope { |
| private: |
| uint32_t flags_; |
| + std::string BuildFunction(int param_count) { |
| + std::string function_string = "(function("; |
| + if (param_count > 0) { |
| + char next = 'a'; |
| + function_string += next; |
| + while (param_count-- > 0) { |
| + function_string += ','; |
| + function_string += ++next; |
| + } |
| + } |
| + function_string += "){})"; |
| + return function_string; |
| + } |
| + |
| + std::string BuildFunctionFromDescriptor( |
| + const CallInterfaceDescriptor& descriptor) { |
| + return BuildFunction(descriptor.GetParameterCount()); |
| + } |
| + |
| // Compile the given machine graph instead of the source of the function |
| // and replace the JSFunction's code with the result. |
| Handle<JSFunction> CompileGraph(Graph* graph) { |