| 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 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 #include "test/cctest/cctest.h" | 6 #include "test/cctest/cctest.h" |
| 7 | 7 |
| 8 #include "src/compiler/code-generator.h" | 8 #include "src/compiler/code-generator.h" |
| 9 #include "src/compiler/common-operator.h" | 9 #include "src/compiler/common-operator.h" |
| 10 #include "src/compiler/graph.h" | 10 #include "src/compiler/graph.h" |
| (...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 65 } | 65 } |
| 66 result_code = Pipeline::GenerateCodeForTesting(&info, graph, schedule); | 66 result_code = Pipeline::GenerateCodeForTesting(&info, graph, schedule); |
| 67 #ifdef OBJECT_PRINT | 67 #ifdef OBJECT_PRINT |
| 68 if (FLAG_print_opt_code || FLAG_trace_turbo) { | 68 if (FLAG_print_opt_code || FLAG_trace_turbo) { |
| 69 result_code->Print(); | 69 result_code->Print(); |
| 70 } | 70 } |
| 71 #endif | 71 #endif |
| 72 } | 72 } |
| 73 | 73 |
| 74 Zone* zone() { return scope_->main_zone(); } | 74 Zone* zone() { return scope_->main_zone(); } |
| 75 Isolate* isolate() { return scope_->main_isolate(); } |
| 75 | 76 |
| 76 HandleAndZoneScope* scope_; | 77 HandleAndZoneScope* scope_; |
| 77 Handle<JSFunction> function; | 78 Handle<JSFunction> function; |
| 78 CompilationInfo info; | 79 CompilationInfo info; |
| 79 BailoutId bailout_id; | 80 BailoutId bailout_id; |
| 80 Handle<Code> result_code; | 81 Handle<Code> result_code; |
| 81 TestInstrSeq* code; | 82 TestInstrSeq* code; |
| 82 Graph* graph; | 83 Graph* graph; |
| 83 }; | 84 }; |
| 84 | 85 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 95 | 96 |
| 96 Schedule* BuildGraphAndSchedule(Graph* graph) { | 97 Schedule* BuildGraphAndSchedule(Graph* graph) { |
| 97 CommonOperatorBuilder common(zone()); | 98 CommonOperatorBuilder common(zone()); |
| 98 | 99 |
| 99 // Manually construct a schedule for the function below: | 100 // Manually construct a schedule for the function below: |
| 100 // function foo() { | 101 // function foo() { |
| 101 // deopt(); | 102 // deopt(); |
| 102 // } | 103 // } |
| 103 | 104 |
| 104 CSignature1<Object*, Object*> sig; | 105 CSignature1<Object*, Object*> sig; |
| 105 RawMachineAssembler m(graph, &sig); | 106 RawMachineAssembler m(isolate(), graph, &sig); |
| 106 | 107 |
| 107 Handle<JSFunction> deopt_function = | 108 Handle<JSFunction> deopt_function = |
| 108 NewFunction("function deopt() { %DeoptimizeFunction(foo); }; deopt"); | 109 NewFunction("function deopt() { %DeoptimizeFunction(foo); }; deopt"); |
| 109 Unique<JSFunction> deopt_fun_constant = | 110 Unique<JSFunction> deopt_fun_constant = |
| 110 Unique<JSFunction>::CreateUninitialized(deopt_function); | 111 Unique<JSFunction>::CreateUninitialized(deopt_function); |
| 111 Node* deopt_fun_node = m.NewNode(common.HeapConstant(deopt_fun_constant)); | 112 Node* deopt_fun_node = m.NewNode(common.HeapConstant(deopt_fun_constant)); |
| 112 | 113 |
| 113 Handle<Context> caller_context(function->context(), CcTest::i_isolate()); | 114 Handle<Context> caller_context(function->context(), CcTest::i_isolate()); |
| 114 Unique<Context> caller_context_constant = | 115 Unique<Context> caller_context_constant = |
| 115 Unique<Context>::CreateUninitialized(caller_context); | 116 Unique<Context>::CreateUninitialized(caller_context); |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 | 214 |
| 214 Schedule* BuildGraphAndSchedule(Graph* graph) { | 215 Schedule* BuildGraphAndSchedule(Graph* graph) { |
| 215 CommonOperatorBuilder common(zone()); | 216 CommonOperatorBuilder common(zone()); |
| 216 | 217 |
| 217 // Manually construct a schedule for the function below: | 218 // Manually construct a schedule for the function below: |
| 218 // function foo() { | 219 // function foo() { |
| 219 // %DeoptimizeFunction(foo); | 220 // %DeoptimizeFunction(foo); |
| 220 // } | 221 // } |
| 221 | 222 |
| 222 CSignature1<Object*, Object*> sig; | 223 CSignature1<Object*, Object*> sig; |
| 223 RawMachineAssembler m(graph, &sig); | 224 RawMachineAssembler m(isolate(), graph, &sig); |
| 224 | 225 |
| 225 Unique<HeapObject> this_fun_constant = | 226 Unique<HeapObject> this_fun_constant = |
| 226 Unique<HeapObject>::CreateUninitialized(function); | 227 Unique<HeapObject>::CreateUninitialized(function); |
| 227 Node* this_fun_node = m.NewNode(common.HeapConstant(this_fun_constant)); | 228 Node* this_fun_node = m.NewNode(common.HeapConstant(this_fun_constant)); |
| 228 | 229 |
| 229 Handle<Context> context(function->context(), CcTest::i_isolate()); | 230 Handle<Context> context(function->context(), CcTest::i_isolate()); |
| 230 Unique<HeapObject> context_constant = | 231 Unique<HeapObject> context_constant = |
| 231 Unique<HeapObject>::CreateUninitialized(context); | 232 Unique<HeapObject>::CreateUninitialized(context); |
| 232 Node* context_node = m.NewNode(common.HeapConstant(context_constant)); | 233 Node* context_node = m.NewNode(common.HeapConstant(context_constant)); |
| 233 | 234 |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 Handle<Object> result; | 284 Handle<Object> result; |
| 284 bool has_pending_exception = | 285 bool has_pending_exception = |
| 285 !Execution::Call(isolate, t.function, | 286 !Execution::Call(isolate, t.function, |
| 286 isolate->factory()->undefined_value(), 0, NULL, | 287 isolate->factory()->undefined_value(), 0, NULL, |
| 287 false).ToHandle(&result); | 288 false).ToHandle(&result); |
| 288 CHECK(!has_pending_exception); | 289 CHECK(!has_pending_exception); |
| 289 CHECK(result->SameValue(Smi::FromInt(42))); | 290 CHECK(result->SameValue(Smi::FromInt(42))); |
| 290 } | 291 } |
| 291 | 292 |
| 292 #endif | 293 #endif |
| OLD | NEW |