| 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 <limits> | 5 #include <limits> |
| 6 | 6 |
| 7 #include "src/compiler/access-builder.h" | 7 #include "src/compiler/access-builder.h" |
| 8 #include "src/compiler/control-builders.h" | 8 #include "src/compiler/control-builders.h" |
| 9 #include "src/compiler/generic-node-inl.h" | 9 #include "src/compiler/generic-node-inl.h" |
| 10 #include "src/compiler/graph-visualizer.h" | 10 #include "src/compiler/graph-visualizer.h" |
| 11 #include "src/compiler/node-properties-inl.h" | 11 #include "src/compiler/node-properties-inl.h" |
| 12 #include "src/compiler/pipeline.h" | 12 #include "src/compiler/pipeline.h" |
| 13 #include "src/compiler/representation-change.h" | 13 #include "src/compiler/representation-change.h" |
| 14 #include "src/compiler/simplified-lowering.h" | 14 #include "src/compiler/simplified-lowering.h" |
| 15 #include "src/compiler/simplified-node-factory.h" | |
| 16 #include "src/compiler/typer.h" | 15 #include "src/compiler/typer.h" |
| 17 #include "src/compiler/verifier.h" | 16 #include "src/compiler/verifier.h" |
| 18 #include "src/execution.h" | 17 #include "src/execution.h" |
| 19 #include "src/parser.h" | 18 #include "src/parser.h" |
| 20 #include "src/rewriter.h" | 19 #include "src/rewriter.h" |
| 21 #include "src/scopes.h" | 20 #include "src/scopes.h" |
| 22 #include "test/cctest/cctest.h" | 21 #include "test/cctest/cctest.h" |
| 23 #include "test/cctest/compiler/codegen-tester.h" | 22 #include "test/cctest/compiler/codegen-tester.h" |
| 24 #include "test/cctest/compiler/graph-builder-tester.h" | 23 #include "test/cctest/compiler/graph-builder-tester.h" |
| 25 #include "test/cctest/compiler/value-helper.h" | 24 #include "test/cctest/compiler/value-helper.h" |
| (...skipping 423 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 449 t.GenerateCode(); | 448 t.GenerateCode(); |
| 450 | 449 |
| 451 if (Pipeline::SupportedTarget()) { | 450 if (Pipeline::SupportedTarget()) { |
| 452 Object* result = t.Call(); | 451 Object* result = t.Call(); |
| 453 CHECK_EQ(t.isolate()->heap()->true_value(), result); | 452 CHECK_EQ(t.isolate()->heap()->true_value(), result); |
| 454 } | 453 } |
| 455 } | 454 } |
| 456 | 455 |
| 457 // Create and run code that copies the elements from {this} to {that}. | 456 // Create and run code that copies the elements from {this} to {that}. |
| 458 void RunCopyElements(AccessTester<E>* that) { | 457 void RunCopyElements(AccessTester<E>* that) { |
| 458 // TODO(titzer): Rewrite this test without StructuredGraphBuilder support. |
| 459 #if 0 |
| 459 SimplifiedLoweringTester<Object*> t; | 460 SimplifiedLoweringTester<Object*> t; |
| 460 | 461 |
| 461 Node* one = t.Int32Constant(1); | 462 Node* one = t.Int32Constant(1); |
| 462 Node* index = t.Int32Constant(0); | 463 Node* index = t.Int32Constant(0); |
| 463 Node* limit = t.Int32Constant(static_cast<int>(num_elements)); | 464 Node* limit = t.Int32Constant(static_cast<int>(num_elements)); |
| 464 t.environment()->Push(index); | 465 t.environment()->Push(index); |
| 465 Node* src = this->GetBaseNode(&t); | 466 Node* src = this->GetBaseNode(&t); |
| 466 Node* dst = that->GetBaseNode(&t); | 467 Node* dst = that->GetBaseNode(&t); |
| 467 { | 468 { |
| 468 LoopBuilder loop(&t); | 469 LoopBuilder loop(&t); |
| (...skipping 15 matching lines...) Expand all Loading... |
| 484 } | 485 } |
| 485 index = t.environment()->Pop(); | 486 index = t.environment()->Pop(); |
| 486 t.Return(t.jsgraph.TrueConstant()); | 487 t.Return(t.jsgraph.TrueConstant()); |
| 487 t.LowerAllNodes(); | 488 t.LowerAllNodes(); |
| 488 t.GenerateCode(); | 489 t.GenerateCode(); |
| 489 | 490 |
| 490 if (Pipeline::SupportedTarget()) { | 491 if (Pipeline::SupportedTarget()) { |
| 491 Object* result = t.Call(); | 492 Object* result = t.Call(); |
| 492 CHECK_EQ(t.isolate()->heap()->true_value(), result); | 493 CHECK_EQ(t.isolate()->heap()->true_value(), result); |
| 493 } | 494 } |
| 495 #endif |
| 494 } | 496 } |
| 495 | 497 |
| 496 E GetElement(int index) { | 498 E GetElement(int index) { |
| 497 BoundsCheck(index); | 499 BoundsCheck(index); |
| 498 if (tagged) { | 500 if (tagged) { |
| 499 E* raw = reinterpret_cast<E*>(tagged_array->GetDataStartAddress()); | 501 E* raw = reinterpret_cast<E*>(tagged_array->GetDataStartAddress()); |
| 500 return raw[index]; | 502 return raw[index]; |
| 501 } else { | 503 } else { |
| 502 return untagged_array[index]; | 504 return untagged_array[index]; |
| 503 } | 505 } |
| (...skipping 907 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1411 | 1413 |
| 1412 Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0, | 1414 Node* store = t.graph()->NewNode(t.simplified()->StoreField(access), t.p0, |
| 1413 t.p1, t.start, t.start); | 1415 t.p1, t.start, t.start); |
| 1414 t.Effect(store); | 1416 t.Effect(store); |
| 1415 t.Lower(); | 1417 t.Lower(); |
| 1416 | 1418 |
| 1417 CHECK_EQ(IrOpcode::kStore, store->opcode()); | 1419 CHECK_EQ(IrOpcode::kStore, store->opcode()); |
| 1418 CHECK_EQ(t.p0, store->InputAt(0)); | 1420 CHECK_EQ(t.p0, store->InputAt(0)); |
| 1419 CheckChangeOf(IrOpcode::kChangeTaggedToFloat64, t.p1, store->InputAt(2)); | 1421 CheckChangeOf(IrOpcode::kChangeTaggedToFloat64, t.p1, store->InputAt(2)); |
| 1420 } | 1422 } |
| OLD | NEW |