| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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 #ifndef V8_CCTEST_COMPILER_FUNCTION_TESTER_H_ | 5 #ifndef V8_CCTEST_COMPILER_FUNCTION_TESTER_H_ |
| 6 #define V8_CCTEST_COMPILER_FUNCTION_TESTER_H_ | 6 #define V8_CCTEST_COMPILER_FUNCTION_TESTER_H_ |
| 7 | 7 |
| 8 #include "src/handles.h" | 8 #include "src/handles.h" |
| 9 #include "test/cctest/cctest.h" | 9 #include "test/cctest/cctest.h" |
| 10 | 10 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 36 MaybeHandle<Object> Call(Handle<Object> a, Handle<Object> b); | 36 MaybeHandle<Object> Call(Handle<Object> a, Handle<Object> b); |
| 37 MaybeHandle<Object> Call(Handle<Object> a, Handle<Object> b, | 37 MaybeHandle<Object> Call(Handle<Object> a, Handle<Object> b, |
| 38 Handle<Object> c); | 38 Handle<Object> c); |
| 39 MaybeHandle<Object> Call(Handle<Object> a, Handle<Object> b, Handle<Object> c, | 39 MaybeHandle<Object> Call(Handle<Object> a, Handle<Object> b, Handle<Object> c, |
| 40 Handle<Object> d); | 40 Handle<Object> d); |
| 41 | 41 |
| 42 void CheckThrows(Handle<Object> a, Handle<Object> b); | 42 void CheckThrows(Handle<Object> a, Handle<Object> b); |
| 43 v8::Local<v8::Message> CheckThrowsReturnMessage(Handle<Object> a, | 43 v8::Local<v8::Message> CheckThrowsReturnMessage(Handle<Object> a, |
| 44 Handle<Object> b); | 44 Handle<Object> b); |
| 45 void CheckCall(Handle<Object> expected, Handle<Object> a, Handle<Object> b, | 45 void CheckCall(Handle<Object> expected, Handle<Object> a, Handle<Object> b, |
| 46 Handle<Object> c, Handle<Object> d) { | 46 Handle<Object> c, Handle<Object> d); |
| 47 Handle<Object> result = Call(a, b, c, d).ToHandleChecked(); | |
| 48 CHECK(expected->SameValue(*result)); | |
| 49 } | |
| 50 | 47 |
| 51 void CheckCall(Handle<Object> expected, Handle<Object> a, Handle<Object> b, | 48 void CheckCall(Handle<Object> expected, Handle<Object> a, Handle<Object> b, |
| 52 Handle<Object> c) { | 49 Handle<Object> c) { |
| 53 return CheckCall(expected, a, b, c, undefined()); | 50 return CheckCall(expected, a, b, c, undefined()); |
| 54 } | 51 } |
| 55 | 52 |
| 56 void CheckCall(Handle<Object> expected, Handle<Object> a, Handle<Object> b) { | 53 void CheckCall(Handle<Object> expected, Handle<Object> a, Handle<Object> b) { |
| 57 return CheckCall(expected, a, b, undefined()); | 54 return CheckCall(expected, a, b, undefined()); |
| 58 } | 55 } |
| 59 | 56 |
| (...skipping 29 matching lines...) Expand all Loading... |
| 89 void CheckFalse(Handle<Object> a) { CheckCall(false_value(), a); } | 86 void CheckFalse(Handle<Object> a) { CheckCall(false_value(), a); } |
| 90 | 87 |
| 91 void CheckFalse(Handle<Object> a, Handle<Object> b) { | 88 void CheckFalse(Handle<Object> a, Handle<Object> b) { |
| 92 CheckCall(false_value(), a, b); | 89 CheckCall(false_value(), a, b); |
| 93 } | 90 } |
| 94 | 91 |
| 95 void CheckFalse(double a, double b) { | 92 void CheckFalse(double a, double b) { |
| 96 CheckCall(false_value(), Val(a), Val(b)); | 93 CheckCall(false_value(), Val(a), Val(b)); |
| 97 } | 94 } |
| 98 | 95 |
| 99 Handle<JSFunction> NewFunction(const char* source) { | 96 Handle<JSFunction> NewFunction(const char* source); |
| 100 return Handle<JSFunction>::cast(v8::Utils::OpenHandle( | 97 Handle<JSObject> NewObject(const char* source); |
| 101 *v8::Local<v8::Function>::Cast(CompileRun(source)))); | |
| 102 } | |
| 103 | |
| 104 Handle<JSObject> NewObject(const char* source) { | |
| 105 return Handle<JSObject>::cast(v8::Utils::OpenHandle( | |
| 106 *v8::Local<v8::Object>::Cast(CompileRun(source)))); | |
| 107 } | |
| 108 | 98 |
| 109 Handle<String> Val(const char* string); | 99 Handle<String> Val(const char* string); |
| 110 Handle<Object> Val(double value); | 100 Handle<Object> Val(double value); |
| 111 Handle<Object> infinity(); | 101 Handle<Object> infinity(); |
| 112 Handle<Object> minus_infinity(); | 102 Handle<Object> minus_infinity(); |
| 113 Handle<Object> nan(); | 103 Handle<Object> nan(); |
| 114 Handle<Object> undefined(); | 104 Handle<Object> undefined(); |
| 115 Handle<Object> null(); | 105 Handle<Object> null(); |
| 116 Handle<Object> true_value(); | 106 Handle<Object> true_value(); |
| 117 Handle<Object> false_value(); | 107 Handle<Object> false_value(); |
| 118 | 108 |
| 119 static Handle<JSFunction> ForMachineGraph(Graph* graph, int param_count) { | 109 static Handle<JSFunction> ForMachineGraph(Graph* graph, int param_count); |
| 120 JSFunction* p = NULL; | |
| 121 { // because of the implicit handle scope of FunctionTester. | |
| 122 FunctionTester f(graph, param_count); | |
| 123 p = *f.function; | |
| 124 } | |
| 125 return Handle<JSFunction>(p); // allocated in outer handle scope. | |
| 126 } | |
| 127 | 110 |
| 128 private: | 111 private: |
| 129 uint32_t flags_; | 112 uint32_t flags_; |
| 130 | 113 |
| 131 Handle<JSFunction> Compile(Handle<JSFunction> function); | 114 Handle<JSFunction> Compile(Handle<JSFunction> function); |
| 132 std::string BuildFunction(int param_count) { | 115 std::string BuildFunction(int param_count) { |
| 133 std::string function_string = "(function("; | 116 std::string function_string = "(function("; |
| 134 if (param_count > 0) { | 117 if (param_count > 0) { |
| 135 function_string += 'a'; | 118 function_string += 'a'; |
| 136 for (int i = 1; i < param_count; i++) { | 119 for (int i = 1; i < param_count; i++) { |
| 137 function_string += ','; | 120 function_string += ','; |
| 138 function_string += static_cast<char>('a' + i); | 121 function_string += static_cast<char>('a' + i); |
| 139 } | 122 } |
| 140 } | 123 } |
| 141 function_string += "){})"; | 124 function_string += "){})"; |
| 142 return function_string; | 125 return function_string; |
| 143 } | 126 } |
| 144 | 127 |
| 145 // Compile the given machine graph instead of the source of the function | 128 // Compile the given machine graph instead of the source of the function |
| 146 // and replace the JSFunction's code with the result. | 129 // and replace the JSFunction's code with the result. |
| 147 Handle<JSFunction> CompileGraph(Graph* graph); | 130 Handle<JSFunction> CompileGraph(Graph* graph); |
| 148 }; | 131 }; |
| 149 } // namespace compiler | 132 } // namespace compiler |
| 150 } // namespace internal | 133 } // namespace internal |
| 151 } // namespace v8 | 134 } // namespace v8 |
| 152 | 135 |
| 153 #endif // V8_CCTEST_COMPILER_FUNCTION_TESTER_H_ | 136 #endif // V8_CCTEST_COMPILER_FUNCTION_TESTER_H_ |
| OLD | NEW |