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

Side by Side Diff: test/cctest/interpreter/test-interpreter.cc

Issue 1659023002: [interpreter] Unify meaning of register count operands. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase Created 4 years, 10 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 unified diff | Download patch
« no previous file with comments | « test/cctest/interpreter/test-bytecode-generator.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2015 the V8 project authors. All rights reserved. 1 // Copyright 2015 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 6
7 #include "src/execution.h" 7 #include "src/execution.h"
8 #include "src/handles.h" 8 #include "src/handles.h"
9 #include "src/interpreter/bytecode-array-builder.h" 9 #include "src/interpreter/bytecode-array-builder.h"
10 #include "src/interpreter/interpreter.h" 10 #include "src/interpreter/interpreter.h"
(...skipping 923 matching lines...) Expand 10 before | Expand all | Expand 10 after
934 934
935 Handle<i::String> name = factory->NewStringFromAsciiChecked("func"); 935 Handle<i::String> name = factory->NewStringFromAsciiChecked("func");
936 name = factory->string_table()->LookupString(isolate, name); 936 name = factory->string_table()->LookupString(isolate, name);
937 937
938 // Check with no args. 938 // Check with no args.
939 { 939 {
940 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone(), 1, 940 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone(), 1,
941 0, 1); 941 0, 1);
942 builder.LoadNamedProperty(builder.Parameter(0), name, slot_index, i::SLOPPY) 942 builder.LoadNamedProperty(builder.Parameter(0), name, slot_index, i::SLOPPY)
943 .StoreAccumulatorInRegister(Register(0)) 943 .StoreAccumulatorInRegister(Register(0))
944 .Call(Register(0), builder.Parameter(0), 0, 0) 944 .Call(Register(0), builder.Parameter(0), 1, 0)
945 .Return(); 945 .Return();
946 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); 946 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray();
947 947
948 InterpreterTester tester(handles.main_isolate(), bytecode_array, vector); 948 InterpreterTester tester(handles.main_isolate(), bytecode_array, vector);
949 auto callable = tester.GetCallable<Handle<Object>>(); 949 auto callable = tester.GetCallable<Handle<Object>>();
950 950
951 Handle<Object> object = InterpreterTester::NewObject( 951 Handle<Object> object = InterpreterTester::NewObject(
952 "new (function Obj() { this.func = function() { return 0x265; }})()"); 952 "new (function Obj() { this.func = function() { return 0x265; }})()");
953 Handle<Object> return_val = callable(object).ToHandleChecked(); 953 Handle<Object> return_val = callable(object).ToHandleChecked();
954 CHECK_EQ(Smi::cast(*return_val), Smi::FromInt(0x265)); 954 CHECK_EQ(Smi::cast(*return_val), Smi::FromInt(0x265));
955 } 955 }
956 956
957 // Check that receiver is passed properly. 957 // Check that receiver is passed properly.
958 { 958 {
959 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone(), 1, 959 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone(), 1,
960 0, 1); 960 0, 1);
961 builder.LoadNamedProperty(builder.Parameter(0), name, slot_index, i::SLOPPY) 961 builder.LoadNamedProperty(builder.Parameter(0), name, slot_index, i::SLOPPY)
962 .StoreAccumulatorInRegister(Register(0)) 962 .StoreAccumulatorInRegister(Register(0))
963 .Call(Register(0), builder.Parameter(0), 0, 0) 963 .Call(Register(0), builder.Parameter(0), 1, 0)
964 .Return(); 964 .Return();
965 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); 965 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray();
966 966
967 InterpreterTester tester(handles.main_isolate(), bytecode_array, vector); 967 InterpreterTester tester(handles.main_isolate(), bytecode_array, vector);
968 auto callable = tester.GetCallable<Handle<Object>>(); 968 auto callable = tester.GetCallable<Handle<Object>>();
969 969
970 Handle<Object> object = InterpreterTester::NewObject( 970 Handle<Object> object = InterpreterTester::NewObject(
971 "new (function Obj() {" 971 "new (function Obj() {"
972 " this.val = 1234;" 972 " this.val = 1234;"
973 " this.func = function() { return this.val; };" 973 " this.func = function() { return this.val; };"
974 "})()"); 974 "})()");
975 Handle<Object> return_val = callable(object).ToHandleChecked(); 975 Handle<Object> return_val = callable(object).ToHandleChecked();
976 CHECK_EQ(Smi::cast(*return_val), Smi::FromInt(1234)); 976 CHECK_EQ(Smi::cast(*return_val), Smi::FromInt(1234));
977 } 977 }
978 978
979 // Check with two parameters (+ receiver). 979 // Check with two parameters (+ receiver).
980 { 980 {
981 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone(), 1, 981 BytecodeArrayBuilder builder(handles.main_isolate(), handles.main_zone(), 1,
982 0, 4); 982 0, 4);
983 builder.LoadNamedProperty(builder.Parameter(0), name, slot_index, i::SLOPPY) 983 builder.LoadNamedProperty(builder.Parameter(0), name, slot_index, i::SLOPPY)
984 .StoreAccumulatorInRegister(Register(0)) 984 .StoreAccumulatorInRegister(Register(0))
985 .LoadAccumulatorWithRegister(builder.Parameter(0)) 985 .LoadAccumulatorWithRegister(builder.Parameter(0))
986 .StoreAccumulatorInRegister(Register(1)) 986 .StoreAccumulatorInRegister(Register(1))
987 .LoadLiteral(Smi::FromInt(51)) 987 .LoadLiteral(Smi::FromInt(51))
988 .StoreAccumulatorInRegister(Register(2)) 988 .StoreAccumulatorInRegister(Register(2))
989 .LoadLiteral(Smi::FromInt(11)) 989 .LoadLiteral(Smi::FromInt(11))
990 .StoreAccumulatorInRegister(Register(3)) 990 .StoreAccumulatorInRegister(Register(3))
991 .Call(Register(0), Register(1), 2, 0) 991 .Call(Register(0), Register(1), 3, 0)
992 .Return(); 992 .Return();
993 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); 993 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray();
994 994
995 InterpreterTester tester(handles.main_isolate(), bytecode_array, vector); 995 InterpreterTester tester(handles.main_isolate(), bytecode_array, vector);
996 auto callable = tester.GetCallable<Handle<Object>>(); 996 auto callable = tester.GetCallable<Handle<Object>>();
997 997
998 Handle<Object> object = InterpreterTester::NewObject( 998 Handle<Object> object = InterpreterTester::NewObject(
999 "new (function Obj() { " 999 "new (function Obj() { "
1000 " this.func = function(a, b) { return a - b; }" 1000 " this.func = function(a, b) { return a - b; }"
1001 "})()"); 1001 "})()");
(...skipping 22 matching lines...) Expand all
1024 .LoadLiteral(factory->NewStringFromAsciiChecked("f")) 1024 .LoadLiteral(factory->NewStringFromAsciiChecked("f"))
1025 .StoreAccumulatorInRegister(Register(7)) 1025 .StoreAccumulatorInRegister(Register(7))
1026 .LoadLiteral(factory->NewStringFromAsciiChecked("g")) 1026 .LoadLiteral(factory->NewStringFromAsciiChecked("g"))
1027 .StoreAccumulatorInRegister(Register(8)) 1027 .StoreAccumulatorInRegister(Register(8))
1028 .LoadLiteral(factory->NewStringFromAsciiChecked("h")) 1028 .LoadLiteral(factory->NewStringFromAsciiChecked("h"))
1029 .StoreAccumulatorInRegister(Register(9)) 1029 .StoreAccumulatorInRegister(Register(9))
1030 .LoadLiteral(factory->NewStringFromAsciiChecked("i")) 1030 .LoadLiteral(factory->NewStringFromAsciiChecked("i"))
1031 .StoreAccumulatorInRegister(Register(10)) 1031 .StoreAccumulatorInRegister(Register(10))
1032 .LoadLiteral(factory->NewStringFromAsciiChecked("j")) 1032 .LoadLiteral(factory->NewStringFromAsciiChecked("j"))
1033 .StoreAccumulatorInRegister(Register(11)) 1033 .StoreAccumulatorInRegister(Register(11))
1034 .Call(Register(0), Register(1), 10, 0) 1034 .Call(Register(0), Register(1), 11, 0)
1035 .Return(); 1035 .Return();
1036 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray(); 1036 Handle<BytecodeArray> bytecode_array = builder.ToBytecodeArray();
1037 1037
1038 InterpreterTester tester(handles.main_isolate(), bytecode_array, vector); 1038 InterpreterTester tester(handles.main_isolate(), bytecode_array, vector);
1039 auto callable = tester.GetCallable<Handle<Object>>(); 1039 auto callable = tester.GetCallable<Handle<Object>>();
1040 1040
1041 Handle<Object> object = InterpreterTester::NewObject( 1041 Handle<Object> object = InterpreterTester::NewObject(
1042 "new (function Obj() { " 1042 "new (function Obj() { "
1043 " this.prefix = \"prefix_\";" 1043 " this.prefix = \"prefix_\";"
1044 " this.func = function(a, b, c, d, e, f, g, h, i, j) {" 1044 " this.func = function(a, b, c, d, e, f, g, h, i, j) {"
(...skipping 2734 matching lines...) Expand 10 before | Expand all | Expand 10 after
3779 auto callable = tester.GetCallable<>(); 3779 auto callable = tester.GetCallable<>();
3780 3780
3781 Handle<i::Object> return_value = callable().ToHandleChecked(); 3781 Handle<i::Object> return_value = callable().ToHandleChecked();
3782 CHECK(return_value->SameValue(*with_stmt[i].second)); 3782 CHECK(return_value->SameValue(*with_stmt[i].second));
3783 } 3783 }
3784 } 3784 }
3785 3785
3786 } // namespace interpreter 3786 } // namespace interpreter
3787 } // namespace internal 3787 } // namespace internal
3788 } // namespace v8 3788 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/interpreter/test-bytecode-generator.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698