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

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

Issue 1811553003: [Interpreter] Make ignition compiler eagerly. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix tests Created 4 years, 9 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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 14499 matching lines...) Expand 10 before | Expand all | Expand 10 after
14510 14510
14511 static i::HashMap* code_map = NULL; 14511 static i::HashMap* code_map = NULL;
14512 static i::HashMap* jitcode_line_info = NULL; 14512 static i::HashMap* jitcode_line_info = NULL;
14513 static int saw_bar = 0; 14513 static int saw_bar = 0;
14514 static int move_events = 0; 14514 static int move_events = 0;
14515 14515
14516 14516
14517 static bool FunctionNameIs(const char* expected, 14517 static bool FunctionNameIs(const char* expected,
14518 const v8::JitCodeEvent* event) { 14518 const v8::JitCodeEvent* event) {
14519 // Log lines for functions are of the general form: 14519 // Log lines for functions are of the general form:
14520 // "LazyCompile:<type><function_name>", where the type is one of 14520 // "LazyCompile:<type><function_name>" or Function:<type><function_name>,
14521 // "*", "~" or "". 14521 // where the type is one of "*", "~" or "".
14522 static const char kPreamble[] = "LazyCompile:"; 14522 static const char* kPreamble;
14523 static size_t kPreambleLen = sizeof(kPreamble) - 1; 14523 if (!i::FLAG_lazy || i::FLAG_ignition) {
14524 kPreamble = "Function:";
14525 } else {
14526 kPreamble = "LazyCompile:";
14527 }
14528 static size_t kPreambleLen = strlen(kPreamble);
14524 14529
14525 if (event->name.len < sizeof(kPreamble) - 1 || 14530 if (event->name.len < kPreambleLen ||
14526 strncmp(kPreamble, event->name.str, kPreambleLen) != 0) { 14531 strncmp(kPreamble, event->name.str, kPreambleLen) != 0) {
14527 return false; 14532 return false;
14528 } 14533 }
14529 14534
14530 const char* tail = event->name.str + kPreambleLen; 14535 const char* tail = event->name.str + kPreambleLen;
14531 size_t tail_len = event->name.len - kPreambleLen; 14536 size_t tail_len = event->name.len - kPreambleLen;
14532 size_t expected_len = strlen(expected); 14537 size_t expected_len = strlen(expected);
14533 if (tail_len > 1 && (*tail == '*' || *tail == '~')) { 14538 if (tail_len > 1 && (*tail == '*' || *tail == '~')) {
14534 --tail_len; 14539 --tail_len;
14535 ++tail; 14540 ++tail;
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after
14683 move_events = 0; 14688 move_events = 0;
14684 14689
14685 isolate->SetJitCodeEventHandler(v8::kJitCodeEventDefault, event_handler); 14690 isolate->SetJitCodeEventHandler(v8::kJitCodeEventDefault, event_handler);
14686 14691
14687 // Generate new code objects sparsely distributed across several 14692 // Generate new code objects sparsely distributed across several
14688 // different fragmented code-space pages. 14693 // different fragmented code-space pages.
14689 const int kIterations = 10; 14694 const int kIterations = 10;
14690 for (int i = 0; i < kIterations; ++i) { 14695 for (int i = 0; i < kIterations; ++i) {
14691 LocalContext env(isolate); 14696 LocalContext env(isolate);
14692 i::AlwaysAllocateScope always_allocate(i_isolate); 14697 i::AlwaysAllocateScope always_allocate(i_isolate);
14693 SimulateFullSpace(heap->code_space()); 14698 SimulateFullSpace(i::FLAG_ignition ? heap->old_space()
14699 : heap->code_space());
14694 CompileRun(script); 14700 CompileRun(script);
14695 14701
14696 // Keep a strong reference to the code object in the handle scope. 14702 // Keep a strong reference to the code object in the handle scope.
14697 i::Handle<i::Code> bar_code( 14703 i::Handle<i::Code> bar_code(
14698 i::Handle<i::JSFunction>::cast( 14704 i::Handle<i::JSFunction>::cast(
14699 v8::Utils::OpenHandle(*env->Global() 14705 v8::Utils::OpenHandle(*env->Global()
14700 ->Get(env.local(), v8_str("bar")) 14706 ->Get(env.local(), v8_str("bar"))
14701 .ToLocalChecked())) 14707 .ToLocalChecked()))
14702 ->code()); 14708 ->code());
14703 i::Handle<i::Code> foo_code( 14709 i::Handle<i::Code> foo_code(
(...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after
15124 ->Set(context.local(), v8_str("obj_2"), instance_2) 15130 ->Set(context.local(), v8_str("obj_2"), instance_2)
15125 .FromJust()); 15131 .FromJust());
15126 15132
15127 Local<Value> value_2 = CompileRun("obj_2.a"); 15133 Local<Value> value_2 = CompileRun("obj_2.a");
15128 CHECK(value_2.IsEmpty()); 15134 CHECK(value_2.IsEmpty());
15129 } 15135 }
15130 15136
15131 15137
15132 // Tests that ScriptData can be serialized and deserialized. 15138 // Tests that ScriptData can be serialized and deserialized.
15133 TEST(PreCompileSerialization) { 15139 TEST(PreCompileSerialization) {
15140 // Producing cached parser data while parsing eagerly is not supported.
15141 if (!i::FLAG_lazy || i::FLAG_ignition) return;
15142
15134 v8::V8::Initialize(); 15143 v8::V8::Initialize();
15135 LocalContext env; 15144 LocalContext env;
15136 v8::Isolate* isolate = env->GetIsolate(); 15145 v8::Isolate* isolate = env->GetIsolate();
15137 HandleScope handle_scope(isolate); 15146 HandleScope handle_scope(isolate);
15138 15147
15139 i::FLAG_min_preparse_length = 0; 15148 i::FLAG_min_preparse_length = 0;
15140 const char* script = "function foo(a) { return a+1; }"; 15149 const char* script = "function foo(a) { return a+1; }";
15141 v8::ScriptCompiler::Source source(v8_str(script)); 15150 v8::ScriptCompiler::Source source(v8_str(script));
15142 v8::ScriptCompiler::Compile(env.local(), &source, 15151 v8::ScriptCompiler::Compile(env.local(), &source,
15143 v8::ScriptCompiler::kProduceParserCache) 15152 v8::ScriptCompiler::kProduceParserCache)
(...skipping 8911 matching lines...) Expand 10 before | Expand all | Expand 10 after
24055 CHECK_EQ( 24064 CHECK_EQ(
24056 42, 24065 42,
24057 script->Run(context).ToLocalChecked()->Int32Value(context).FromJust()); 24066 script->Run(context).ToLocalChecked()->Int32Value(context).FromJust());
24058 } 24067 }
24059 24068
24060 24069
24061 TEST(InvalidCacheData) { 24070 TEST(InvalidCacheData) {
24062 v8::V8::Initialize(); 24071 v8::V8::Initialize();
24063 v8::HandleScope scope(CcTest::isolate()); 24072 v8::HandleScope scope(CcTest::isolate());
24064 LocalContext context; 24073 LocalContext context;
24065 TestInvalidCacheData(v8::ScriptCompiler::kConsumeParserCache); 24074 if (i::FLAG_lazy && !i::FLAG_ignition) {
24075 // Cached parser data is not consumed while parsing eagerly.
24076 TestInvalidCacheData(v8::ScriptCompiler::kConsumeParserCache);
24077 }
24066 TestInvalidCacheData(v8::ScriptCompiler::kConsumeCodeCache); 24078 TestInvalidCacheData(v8::ScriptCompiler::kConsumeCodeCache);
24067 } 24079 }
24068 24080
24069 24081
24070 TEST(ParserCacheRejectedGracefully) { 24082 TEST(ParserCacheRejectedGracefully) {
24083 // Producing cached parser data while parsing eagerly is not supported.
24084 if (!i::FLAG_lazy || i::FLAG_ignition) return;
24085
24071 i::FLAG_min_preparse_length = 0; 24086 i::FLAG_min_preparse_length = 0;
24072 v8::V8::Initialize(); 24087 v8::V8::Initialize();
24073 v8::HandleScope scope(CcTest::isolate()); 24088 v8::HandleScope scope(CcTest::isolate());
24074 LocalContext context; 24089 LocalContext context;
24075 // Produce valid cached data. 24090 // Produce valid cached data.
24076 v8::ScriptOrigin origin(v8_str("origin")); 24091 v8::ScriptOrigin origin(v8_str("origin"));
24077 v8::Local<v8::String> source_str = v8_str("function foo() {}"); 24092 v8::Local<v8::String> source_str = v8_str("function foo() {}");
24078 v8::ScriptCompiler::Source source(source_str, origin); 24093 v8::ScriptCompiler::Source source(source_str, origin);
24079 v8::Local<v8::Script> script = 24094 v8::Local<v8::Script> script =
24080 v8::ScriptCompiler::Compile(context.local(), &source, 24095 v8::ScriptCompiler::Compile(context.local(), &source,
(...skipping 807 matching lines...) Expand 10 before | Expand all | Expand 10 after
24888 .FromJust()); 24903 .FromJust());
24889 } 24904 }
24890 24905
24891 // Case 2: Js source file. 24906 // Case 2: Js source file.
24892 { 24907 {
24893 v8::MaybeLocal<v8::Script> script = 24908 v8::MaybeLocal<v8::Script> script =
24894 v8::Script::Compile(context.local(), v8_str(source), &source_script); 24909 v8::Script::Compile(context.local(), v8_str(source), &source_script);
24895 CHECK(script.IsEmpty()); 24910 CHECK(script.IsEmpty());
24896 } 24911 }
24897 } 24912 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698