Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Unified Diff: test/unittests/interpreter/bytecode-array-builder-unittest.cc

Issue 1403943004: [Interpreter] Add support for local context loads and stores. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@int_contextchain
Patch Set: Add back outer_ &&] Created 5 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: test/unittests/interpreter/bytecode-array-builder-unittest.cc
diff --git a/test/unittests/interpreter/bytecode-array-builder-unittest.cc b/test/unittests/interpreter/bytecode-array-builder-unittest.cc
index 16dd47d1d14472edd4056751fb0a178fd703ba98..72224091519c2c97cb18dc87b7b7ddf37d13d740 100644
--- a/test/unittests/interpreter/bytecode-array-builder-unittest.cc
+++ b/test/unittests/interpreter/bytecode-array-builder-unittest.cc
@@ -23,8 +23,11 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_locals_count(1);
+ builder.set_context_count(1);
builder.set_parameter_count(0);
CHECK_EQ(builder.locals_count(), 1);
+ CHECK_EQ(builder.context_count(), 1);
+ CHECK_EQ(builder.fixed_register_count(), 2);
// Emit constant loads.
builder.LoadLiteral(Smi::FromInt(0))
@@ -48,6 +51,7 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
builder.PushContext(reg);
builder.PopContext(reg);
builder.LoadContextSlot(reg, 1);
+ builder.StoreContextSlot(reg, 1);
// Emit load / store property operations.
builder.LoadNamedProperty(reg, 0, LanguageMode::SLOPPY)
@@ -130,7 +134,8 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
// Generate BytecodeArray.
Handle<BytecodeArray> the_array = builder.ToBytecodeArray();
- CHECK_EQ(the_array->frame_size(), builder.locals_count() * kPointerSize);
+ CHECK_EQ(the_array->frame_size(),
+ builder.fixed_register_count() * kPointerSize);
// Build scorecard of bytecodes encountered in the BytecodeArray.
std::vector<int> scorecard(Bytecodes::ToByte(Bytecode::kLast) + 1);
@@ -157,20 +162,23 @@ TEST_F(BytecodeArrayBuilderTest, AllBytecodesGenerated) {
TEST_F(BytecodeArrayBuilderTest, FrameSizesLookGood) {
for (int locals = 0; locals < 5; locals++) {
- for (int temps = 0; temps < 3; temps++) {
- BytecodeArrayBuilder builder(isolate(), zone());
- builder.set_parameter_count(0);
- builder.set_locals_count(locals);
- builder.Return();
-
- TemporaryRegisterScope temporaries(&builder);
- for (int i = 0; i < temps; i++) {
- temporaries.NewRegister();
+ for (int contexts = 0; contexts < 4; contexts++) {
+ for (int temps = 0; temps < 3; temps++) {
+ BytecodeArrayBuilder builder(isolate(), zone());
+ builder.set_parameter_count(0);
+ builder.set_locals_count(locals);
+ builder.set_context_count(contexts);
+ builder.Return();
+
+ TemporaryRegisterScope temporaries(&builder);
+ for (int i = 0; i < temps; i++) {
+ temporaries.NewRegister();
+ }
+
+ Handle<BytecodeArray> the_array = builder.ToBytecodeArray();
+ int total_registers = locals + contexts + temps;
+ CHECK_EQ(the_array->frame_size(), total_registers * kPointerSize);
}
-
- Handle<BytecodeArray> the_array = builder.ToBytecodeArray();
- int total_registers = locals + temps;
- CHECK_EQ(the_array->frame_size(), total_registers * kPointerSize);
}
}
}
@@ -180,6 +188,7 @@ TEST_F(BytecodeArrayBuilderTest, TemporariesRecycled) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_parameter_count(0);
builder.set_locals_count(0);
+ builder.set_context_count(0);
builder.Return();
int first;
@@ -220,6 +229,7 @@ TEST_F(BytecodeArrayBuilderTest, Parameters) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_parameter_count(10);
builder.set_locals_count(0);
+ builder.set_context_count(0);
Register param0(builder.Parameter(0));
Register param9(builder.Parameter(9));
@@ -231,6 +241,7 @@ TEST_F(BytecodeArrayBuilderTest, Constants) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_parameter_count(0);
builder.set_locals_count(0);
+ builder.set_context_count(0);
Factory* factory = isolate()->factory();
Handle<HeapObject> heap_num_1 = factory->NewHeapNumber(3.14);
@@ -256,6 +267,7 @@ TEST_F(BytecodeArrayBuilderTest, ForwardJumps) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_parameter_count(0);
builder.set_locals_count(0);
+ builder.set_context_count(0);
BytecodeLabel far0, far1, far2;
BytecodeLabel near0, near1, near2;
@@ -324,6 +336,7 @@ TEST_F(BytecodeArrayBuilderTest, BackwardJumps) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_parameter_count(0);
builder.set_locals_count(0);
+ builder.set_context_count(0);
BytecodeLabel label0, label1, label2;
builder.Bind(&label0)
@@ -375,6 +388,7 @@ TEST_F(BytecodeArrayBuilderTest, LabelReuse) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_parameter_count(0);
builder.set_locals_count(0);
+ builder.set_context_count(0);
// Labels can only have 1 forward reference, but
// can be referred to mulitple times once bound.
@@ -405,6 +419,7 @@ TEST_F(BytecodeArrayBuilderTest, LabelAddressReuse) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_parameter_count(0);
builder.set_locals_count(0);
+ builder.set_context_count(0);
for (int i = 0; i < kRepeats; i++) {
BytecodeLabel label;
@@ -436,6 +451,7 @@ TEST_F(BytecodeArrayBuilderTest, ToBoolean) {
BytecodeArrayBuilder builder(isolate(), zone());
builder.set_parameter_count(0);
builder.set_locals_count(0);
+ builder.set_context_count(0);
// Check ToBoolean emitted at start of block.
builder.EnterBlock().CastAccumulatorToBoolean();

Powered by Google App Engine
This is Rietveld 408576698