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

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

Issue 1572283002: [Interpreter] Add wide context slot load / store operations. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Address review comments. Created 4 years, 11 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
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 1926 matching lines...) Expand 10 before | Expand all | Expand 10 after
1937 1937
1938 Handle<Object> return_val = callable().ToHandleChecked(); 1938 Handle<Object> return_val = callable().ToHandleChecked();
1939 CHECK_EQ(Smi::cast(*return_val), Smi::FromInt(15)); 1939 CHECK_EQ(Smi::cast(*return_val), Smi::FromInt(15));
1940 } 1940 }
1941 1941
1942 1942
1943 TEST(InterpreterContextVariables) { 1943 TEST(InterpreterContextVariables) {
1944 HandleAndZoneScope handles; 1944 HandleAndZoneScope handles;
1945 i::Isolate* isolate = handles.main_isolate(); 1945 i::Isolate* isolate = handles.main_isolate();
1946 1946
1947 std::pair<const char*, Handle<Object>> context_vars[] = { 1947 std::ostringstream unique_vars;
1948 for (int i = 0; i < 250; i++) {
1949 unique_vars << "var a" << i << " = 0;";
1950 }
1951 std::pair<std::string, Handle<Object>> context_vars[] = {
1948 std::make_pair("var a; (function() { a = 1; })(); return a;", 1952 std::make_pair("var a; (function() { a = 1; })(); return a;",
1949 handle(Smi::FromInt(1), isolate)), 1953 handle(Smi::FromInt(1), isolate)),
1950 std::make_pair("var a = 10; (function() { a; })(); return a;", 1954 std::make_pair("var a = 10; (function() { a; })(); return a;",
1951 handle(Smi::FromInt(10), isolate)), 1955 handle(Smi::FromInt(10), isolate)),
1952 std::make_pair("var a = 20; var b = 30;\n" 1956 std::make_pair("var a = 20; var b = 30;\n"
1953 "return (function() { return a + b; })();", 1957 "return (function() { return a + b; })();",
1954 handle(Smi::FromInt(50), isolate)), 1958 handle(Smi::FromInt(50), isolate)),
1955 std::make_pair("'use strict'; let a = 1;\n" 1959 std::make_pair("'use strict'; let a = 1;\n"
1956 "{ let b = 2; return (function() { return a + b; })(); }", 1960 "{ let b = 2; return (function() { return a + b; })(); }",
1957 handle(Smi::FromInt(3), isolate)), 1961 handle(Smi::FromInt(3), isolate)),
1958 std::make_pair("'use strict'; let a = 10;\n" 1962 std::make_pair("'use strict'; let a = 10;\n"
1959 "{ let b = 20; var c = function() { [a, b] };\n" 1963 "{ let b = 20; var c = function() { [a, b] };\n"
1960 " return a + b; }", 1964 " return a + b; }",
1961 handle(Smi::FromInt(30), isolate)), 1965 handle(Smi::FromInt(30), isolate)),
1966 std::make_pair("'use strict';" + unique_vars.str() +
1967 "eval(); var b = 100; return b;",
1968 handle(Smi::FromInt(100), isolate)),
1962 }; 1969 };
1963 1970
1964 for (size_t i = 0; i < arraysize(context_vars); i++) { 1971 for (size_t i = 0; i < arraysize(context_vars); i++) {
1965 std::string source(InterpreterTester::SourceForBody(context_vars[i].first)); 1972 std::string source(
1973 InterpreterTester::SourceForBody(context_vars[i].first.c_str()));
1966 InterpreterTester tester(handles.main_isolate(), source.c_str()); 1974 InterpreterTester tester(handles.main_isolate(), source.c_str());
1967 auto callable = tester.GetCallable<>(); 1975 auto callable = tester.GetCallable<>();
1968 1976
1969 Handle<i::Object> return_value = callable().ToHandleChecked(); 1977 Handle<i::Object> return_value = callable().ToHandleChecked();
1970 CHECK(return_value->SameValue(*context_vars[i].second)); 1978 CHECK(return_value->SameValue(*context_vars[i].second));
1971 } 1979 }
1972 } 1980 }
1973 1981
1974 1982
1975 TEST(InterpreterContextParameters) { 1983 TEST(InterpreterContextParameters) {
(...skipping 1534 matching lines...) Expand 10 before | Expand all | Expand 10 after
3510 auto callable = tester.GetCallable<>(); 3518 auto callable = tester.GetCallable<>();
3511 3519
3512 Handle<i::Object> return_value = callable().ToHandleChecked(); 3520 Handle<i::Object> return_value = callable().ToHandleChecked();
3513 CHECK(return_value->SameValue(*eval_global[i].second)); 3521 CHECK(return_value->SameValue(*eval_global[i].second));
3514 } 3522 }
3515 } 3523 }
3516 3524
3517 } // namespace interpreter 3525 } // namespace interpreter
3518 } // namespace internal 3526 } // namespace internal
3519 } // namespace v8 3527 } // namespace v8
OLDNEW
« no previous file with comments | « test/cctest/interpreter/test-bytecode-generator.cc ('k') | test/unittests/interpreter/bytecode-array-builder-unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698