Index: test/cctest/test-compiler.cc |
diff --git a/test/cctest/test-compiler.cc b/test/cctest/test-compiler.cc |
index 91e69fe7f31e6f07eea47fa4213432e2778751a4..db2ccb29af6e12938913b30c24d7a6b1ff1aef37 100644 |
--- a/test/cctest/test-compiler.cc |
+++ b/test/cctest/test-compiler.cc |
@@ -306,7 +306,7 @@ |
// We shouldn't have deoptimization support. We want to recompile and |
// verify that our feedback vector preserves information. |
CHECK(!f->shared()->has_deoptimization_support()); |
- Handle<TypeFeedbackVector> feedback_vector(f->feedback_vector()); |
+ Handle<TypeFeedbackVector> feedback_vector(f->shared()->feedback_vector()); |
// Verify that we gathered feedback. |
CHECK(!feedback_vector->is_empty()); |
@@ -321,7 +321,7 @@ |
// of the full code. |
CHECK(f->IsOptimized()); |
CHECK(f->shared()->has_deoptimization_support()); |
- object = f->feedback_vector()->Get(slot_for_a); |
+ object = f->shared()->feedback_vector()->Get(slot_for_a); |
CHECK(object->IsWeakCell() && |
WeakCell::cast(object)->value()->IsJSFunction()); |
} |
@@ -352,16 +352,18 @@ |
// Not compiled, and so no feedback vector allocated yet. |
CHECK(!f->shared()->is_compiled()); |
- CHECK(f->feedback_vector()->is_empty()); |
+ CHECK(f->shared()->feedback_vector()->is_empty()); |
CompileRun("morphing_call();"); |
// Now a feedback vector is allocated. |
CHECK(f->shared()->is_compiled()); |
- CHECK(!f->feedback_vector()->is_empty()); |
-} |
- |
-// Test that optimized code for different closures is actually shared. |
+ CHECK(!f->shared()->feedback_vector()->is_empty()); |
+} |
+ |
+ |
+// Test that optimized code for different closures is actually shared |
+// immediately by the FastNewClosureStub when run in the same context. |
TEST(OptimizedCodeSharing1) { |
FLAG_stress_compaction = false; |
FLAG_allow_natives_syntax = true; |
@@ -380,8 +382,8 @@ |
"%DebugPrint(closure0());" |
"%OptimizeFunctionOnNextCall(closure0);" |
"%DebugPrint(closure0());" |
- "var closure1 = MakeClosure(); closure1();" |
- "var closure2 = MakeClosure(); closure2();"); |
+ "var closure1 = MakeClosure();" |
+ "var closure2 = MakeClosure();"); |
Handle<JSFunction> fun1 = Handle<JSFunction>::cast( |
v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
env->Global() |
@@ -398,7 +400,9 @@ |
} |
} |
-// Test that optimized code for different closures is actually shared. |
+ |
+// Test that optimized code for different closures is actually shared |
+// immediately by the FastNewClosureStub when run different contexts. |
TEST(OptimizedCodeSharing2) { |
if (FLAG_stress_compaction) return; |
FLAG_allow_natives_syntax = true; |
@@ -449,8 +453,8 @@ |
"%DebugPrint(closure0());" |
"%OptimizeFunctionOnNextCall(closure0);" |
"%DebugPrint(closure0());" |
- "var closure1 = MakeClosure(); closure1();" |
- "var closure2 = MakeClosure(); closure2();"); |
+ "var closure1 = MakeClosure();" |
+ "var closure2 = MakeClosure();"); |
Handle<JSFunction> fun1 = Handle<JSFunction>::cast( |
v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
env->Global() |
@@ -468,7 +472,9 @@ |
} |
} |
-// Test that optimized code for different closures is actually shared. |
+ |
+// Test that optimized code for different closures is actually shared |
+// immediately by the FastNewClosureStub without context-dependent entries. |
TEST(OptimizedCodeSharing3) { |
if (FLAG_stress_compaction) return; |
FLAG_allow_natives_syntax = true; |
@@ -522,8 +528,8 @@ |
"%DebugPrint(closure0());" |
"%OptimizeFunctionOnNextCall(closure0);" |
"%DebugPrint(closure0());" |
- "var closure1 = MakeClosure(); closure1();" |
- "var closure2 = MakeClosure(); closure2();"); |
+ "var closure1 = MakeClosure();" |
+ "var closure2 = MakeClosure();"); |
Handle<JSFunction> fun1 = Handle<JSFunction>::cast( |
v8::Utils::OpenHandle(*v8::Local<v8::Function>::Cast( |
env->Global() |