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

Unified Diff: test/cctest/interpreter/test-interpreter.cc

Issue 1321663003: [Interpreter] Add support for loading literals from the constant pool. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@int_const_pool_1
Patch Set: Review comments Created 5 years, 4 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/cctest/interpreter/test-interpreter.cc
diff --git a/test/cctest/interpreter/test-interpreter.cc b/test/cctest/interpreter/test-interpreter.cc
index 26deea642f68fa75188daab094b9b0063d76d671..397d7007724ffda32c2955c23536d9e39b98096f 100644
--- a/test/cctest/interpreter/test-interpreter.cc
+++ b/test/cctest/interpreter/test-interpreter.cc
@@ -101,11 +101,11 @@ using v8::internal::Token;
using namespace v8::internal::interpreter;
TEST(InterpreterReturn) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
Handle<Object> undefined_value =
handles.main_isolate()->factory()->undefined_value();
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(0);
builder.set_parameter_count(1);
builder.Return();
@@ -119,11 +119,11 @@ TEST(InterpreterReturn) {
TEST(InterpreterLoadUndefined) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
Handle<Object> undefined_value =
handles.main_isolate()->factory()->undefined_value();
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(0);
builder.set_parameter_count(1);
builder.LoadUndefined().Return();
@@ -137,10 +137,10 @@ TEST(InterpreterLoadUndefined) {
TEST(InterpreterLoadNull) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
Handle<Object> null_value = handles.main_isolate()->factory()->null_value();
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(0);
builder.set_parameter_count(1);
builder.LoadNull().Return();
@@ -154,11 +154,11 @@ TEST(InterpreterLoadNull) {
TEST(InterpreterLoadTheHole) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
Handle<Object> the_hole_value =
handles.main_isolate()->factory()->the_hole_value();
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(0);
builder.set_parameter_count(1);
builder.LoadTheHole().Return();
@@ -172,10 +172,10 @@ TEST(InterpreterLoadTheHole) {
TEST(InterpreterLoadTrue) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
Handle<Object> true_value = handles.main_isolate()->factory()->true_value();
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(0);
builder.set_parameter_count(1);
builder.LoadTrue().Return();
@@ -189,10 +189,10 @@ TEST(InterpreterLoadTrue) {
TEST(InterpreterLoadFalse) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
Handle<Object> false_value = handles.main_isolate()->factory()->false_value();
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(0);
builder.set_parameter_count(1);
builder.LoadFalse().Return();
@@ -206,9 +206,12 @@ TEST(InterpreterLoadFalse) {
TEST(InterpreterLoadLiteral) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
+ i::Factory* factory = handles.main_isolate()->factory();
+
+ // Small Smis.
for (int i = -128; i < 128; i++) {
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(0);
builder.set_parameter_count(1);
builder.LoadLiteral(Smi::FromInt(i)).Return();
@@ -219,14 +222,57 @@ TEST(InterpreterLoadLiteral) {
Handle<Object> return_val = callable().ToHandleChecked();
CHECK_EQ(Smi::cast(*return_val), Smi::FromInt(i));
}
+
+ // Large Smis.
+ {
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
+ builder.set_locals_count(0);
+ builder.set_parameter_count(1);
+ builder.LoadLiteral(Smi::FromInt(0x12345678)).Return();
+ Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray();
+
+ InterpreterTester tester(handles.main_isolate(), bytecode_array);
+ auto callable = tester.GetCallable<>();
+ Handle<Object> return_val = callable().ToHandleChecked();
+ CHECK_EQ(Smi::cast(*return_val), Smi::FromInt(0x12345678));
+ }
+
+ // Heap numbers.
+ {
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
+ builder.set_locals_count(0);
+ builder.set_parameter_count(1);
+ builder.LoadLiteral(factory->NewHeapNumber(-2.1e19)).Return();
+ Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray();
+
+ InterpreterTester tester(handles.main_isolate(), bytecode_array);
+ auto callable = tester.GetCallable<>();
+ Handle<Object> return_val = callable().ToHandleChecked();
+ CHECK_EQ(i::HeapNumber::cast(*return_val)->value(), -2.1e19);
+ }
+
+ // Strings.
+ {
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
+ builder.set_locals_count(0);
+ builder.set_parameter_count(1);
+ Handle<i::String> string = factory->NewStringFromAsciiChecked("String");
+ builder.LoadLiteral(string).Return();
+ Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray();
+
+ InterpreterTester tester(handles.main_isolate(), bytecode_array);
+ auto callable = tester.GetCallable<>();
+ Handle<Object> return_val = callable().ToHandleChecked();
+ CHECK(i::String::cast(*return_val)->Equals(*string));
+ }
}
TEST(InterpreterLoadStoreRegisters) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
Handle<Object> true_value = handles.main_isolate()->factory()->true_value();
for (int i = 0; i <= Register::kMaxRegisterIndex; i++) {
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(i + 1);
builder.set_parameter_count(1);
Register reg(i);
@@ -246,10 +292,10 @@ TEST(InterpreterLoadStoreRegisters) {
TEST(InterpreterAdd) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
// TODO(rmcilroy): Do add tests for heap numbers and strings once we support
// them.
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(1);
builder.set_parameter_count(1);
Register reg(0);
@@ -268,9 +314,9 @@ TEST(InterpreterAdd) {
TEST(InterpreterSub) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
// TODO(rmcilroy): Do add tests for heap numbers once we support them.
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(1);
builder.set_parameter_count(1);
Register reg(0);
@@ -289,9 +335,9 @@ TEST(InterpreterSub) {
TEST(InterpreterMul) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
// TODO(rmcilroy): Do add tests for heap numbers once we support them.
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(1);
builder.set_parameter_count(1);
Register reg(0);
@@ -310,9 +356,9 @@ TEST(InterpreterMul) {
TEST(InterpreterDiv) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
// TODO(rmcilroy): Do add tests for heap numbers once we support them.
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(1);
builder.set_parameter_count(1);
Register reg(0);
@@ -331,9 +377,9 @@ TEST(InterpreterDiv) {
TEST(InterpreterMod) {
- InitializedHandleScope handles;
+ HandleAndZoneScope handles;
// TODO(rmcilroy): Do add tests for heap numbers once we support them.
- BytecodeArrayBuilder builder(handles.main_isolate());
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(1);
builder.set_parameter_count(1);
Register reg(0);
@@ -352,8 +398,8 @@ TEST(InterpreterMod) {
TEST(InterpreterParameter1) {
- InitializedHandleScope handles;
- BytecodeArrayBuilder builder(handles.main_isolate());
+ HandleAndZoneScope handles;
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(1);
builder.set_parameter_count(1);
builder.LoadAccumulatorWithRegister(builder.Parameter(0)).Return();
@@ -375,8 +421,8 @@ TEST(InterpreterParameter1) {
TEST(InterpreterParameter8) {
- InitializedHandleScope handles;
- BytecodeArrayBuilder builder(handles.main_isolate());
+ HandleAndZoneScope handles;
+ BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone());
builder.set_locals_count(1);
builder.set_parameter_count(8);
builder.LoadAccumulatorWithRegister(builder.Parameter(0))
« no previous file with comments | « test/cctest/interpreter/test-bytecode-generator.cc ('k') | test/unittests/compiler/interpreter-assembler-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698