| Index: test/cctest/test-compiler.cc
|
| diff --git a/test/cctest/test-compiler.cc b/test/cctest/test-compiler.cc
|
| index bce3fb239497ec5f95d5f75820413d74ea5567c3..b7073e748949cf22f3ae8df59a31c4177775cbed 100644
|
| --- a/test/cctest/test-compiler.cc
|
| +++ b/test/cctest/test-compiler.cc
|
| @@ -406,150 +406,6 @@ TEST(OptimizedCodeSharing1) {
|
| }
|
| }
|
|
|
| -// Test that optimized code for different closures is actually shared.
|
| -TEST(OptimizedCodeSharing2) {
|
| - if (FLAG_stress_compaction) return;
|
| - FLAG_allow_natives_syntax = true;
|
| - FLAG_native_context_specialization = false;
|
| - FLAG_turbo_cache_shared_code = true;
|
| - const char* flag = "--turbo-filter=*";
|
| - FlagList::SetFlagsFromString(flag, StrLength(flag));
|
| - CcTest::InitializeVM();
|
| - v8::HandleScope scope(CcTest::isolate());
|
| - v8::Local<v8::Script> script = v8_compile(
|
| - "function MakeClosure() {"
|
| - " return function() { return x; };"
|
| - "}");
|
| - Handle<Code> reference_code;
|
| - {
|
| - LocalContext env;
|
| - env->Global()
|
| - ->Set(env.local(), v8_str("x"), v8::Integer::New(CcTest::isolate(), 23))
|
| - .FromJust();
|
| - script->GetUnboundScript()
|
| - ->BindToCurrentContext()
|
| - ->Run(env.local())
|
| - .ToLocalChecked();
|
| - CompileRun(
|
| - "var closure0 = MakeClosure();"
|
| - "%DebugPrint(closure0());"
|
| - "%OptimizeFunctionOnNextCall(closure0);"
|
| - "%DebugPrint(closure0());");
|
| - Handle<JSFunction> fun0 = Handle<JSFunction>::cast(
|
| - v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast(
|
| - env->Global()
|
| - ->Get(env.local(), v8_str("closure0"))
|
| - .ToLocalChecked())));
|
| - CHECK(fun0->IsOptimized() || !CcTest::i_isolate()->use_crankshaft());
|
| - reference_code = handle(fun0->code());
|
| - }
|
| - for (int i = 0; i < 3; i++) {
|
| - LocalContext env;
|
| - env->Global()
|
| - ->Set(env.local(), v8_str("x"), v8::Integer::New(CcTest::isolate(), i))
|
| - .FromJust();
|
| - script->GetUnboundScript()
|
| - ->BindToCurrentContext()
|
| - ->Run(env.local())
|
| - .ToLocalChecked();
|
| - CompileRun(
|
| - "var closure0 = MakeClosure();"
|
| - "%DebugPrint(closure0());"
|
| - "%OptimizeFunctionOnNextCall(closure0);"
|
| - "%DebugPrint(closure0());"
|
| - "var closure1 = MakeClosure(); closure1();"
|
| - "var closure2 = MakeClosure(); closure2();");
|
| - Handle<JSFunction> fun1 = Handle<JSFunction>::cast(
|
| - v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast(
|
| - env->Global()
|
| - ->Get(env.local(), v8_str("closure1"))
|
| - .ToLocalChecked())));
|
| - Handle<JSFunction> fun2 = Handle<JSFunction>::cast(
|
| - v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast(
|
| - env->Global()
|
| - ->Get(env.local(), v8_str("closure2"))
|
| - .ToLocalChecked())));
|
| - CHECK(fun1->IsOptimized() || !CcTest::i_isolate()->use_crankshaft());
|
| - CHECK(fun2->IsOptimized() || !CcTest::i_isolate()->use_crankshaft());
|
| - CHECK_EQ(*reference_code, fun1->code());
|
| - CHECK_EQ(*reference_code, fun2->code());
|
| - }
|
| -}
|
| -
|
| -// Test that optimized code for different closures is actually shared.
|
| -TEST(OptimizedCodeSharing3) {
|
| - if (FLAG_stress_compaction) return;
|
| - FLAG_allow_natives_syntax = true;
|
| - FLAG_native_context_specialization = false;
|
| - FLAG_turbo_cache_shared_code = true;
|
| - const char* flag = "--turbo-filter=*";
|
| - FlagList::SetFlagsFromString(flag, StrLength(flag));
|
| - CcTest::InitializeVM();
|
| - v8::HandleScope scope(CcTest::isolate());
|
| - v8::Local<v8::Script> script = v8_compile(
|
| - "function MakeClosure() {"
|
| - " return function() { return x; };"
|
| - "}");
|
| - Handle<Code> reference_code;
|
| - {
|
| - LocalContext env;
|
| - env->Global()
|
| - ->Set(env.local(), v8_str("x"), v8::Integer::New(CcTest::isolate(), 23))
|
| - .FromJust();
|
| - script->GetUnboundScript()
|
| - ->BindToCurrentContext()
|
| - ->Run(env.local())
|
| - .ToLocalChecked();
|
| - CompileRun(
|
| - "var closure0 = MakeClosure();"
|
| - "%DebugPrint(closure0());"
|
| - "%OptimizeFunctionOnNextCall(closure0);"
|
| - "%DebugPrint(closure0());");
|
| - Handle<JSFunction> fun0 = Handle<JSFunction>::cast(
|
| - v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast(
|
| - env->Global()
|
| - ->Get(env.local(), v8_str("closure0"))
|
| - .ToLocalChecked())));
|
| - CHECK(fun0->IsOptimized() || !CcTest::i_isolate()->use_crankshaft());
|
| - reference_code = handle(fun0->code());
|
| - // Evict only the context-dependent entry from the optimized code map. This
|
| - // leaves it in a state where only the context-independent entry exists.
|
| - fun0->shared()->TrimOptimizedCodeMap(SharedFunctionInfo::kEntryLength);
|
| - }
|
| - for (int i = 0; i < 3; i++) {
|
| - LocalContext env;
|
| - env->Global()
|
| - ->Set(env.local(), v8_str("x"), v8::Integer::New(CcTest::isolate(), i))
|
| - .FromJust();
|
| - script->GetUnboundScript()
|
| - ->BindToCurrentContext()
|
| - ->Run(env.local())
|
| - .ToLocalChecked();
|
| - CompileRun(
|
| - "var closure0 = MakeClosure();"
|
| - "%DebugPrint(closure0());"
|
| - "%OptimizeFunctionOnNextCall(closure0);"
|
| - "%DebugPrint(closure0());"
|
| - "var closure1 = MakeClosure(); closure1();"
|
| - "var closure2 = MakeClosure(); closure2();");
|
| - Handle<JSFunction> fun1 = Handle<JSFunction>::cast(
|
| - v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast(
|
| - env->Global()
|
| - ->Get(env.local(), v8_str("closure1"))
|
| - .ToLocalChecked())));
|
| - Handle<JSFunction> fun2 = Handle<JSFunction>::cast(
|
| - v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast(
|
| - env->Global()
|
| - ->Get(env.local(), v8_str("closure2"))
|
| - .ToLocalChecked())));
|
| - CHECK(fun1->IsOptimized() || !CcTest::i_isolate()->use_crankshaft());
|
| - CHECK(fun2->IsOptimized() || !CcTest::i_isolate()->use_crankshaft());
|
| - CHECK_EQ(*reference_code, fun1->code());
|
| - CHECK_EQ(*reference_code, fun2->code());
|
| - }
|
| -}
|
| -
|
| -
|
| TEST(CompileFunctionInContext) {
|
| CcTest::InitializeVM();
|
| v8::HandleScope scope(CcTest::isolate());
|
|
|