summaryrefslogtreecommitdiff
path: root/deps/v8/test/cctest/compiler/test-js-context-specialization.cc
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/cctest/compiler/test-js-context-specialization.cc')
-rw-r--r--deps/v8/test/cctest/compiler/test-js-context-specialization.cc50
1 files changed, 29 insertions, 21 deletions
diff --git a/deps/v8/test/cctest/compiler/test-js-context-specialization.cc b/deps/v8/test/cctest/compiler/test-js-context-specialization.cc
index 8006ca43f2..aa26d48c2e 100644
--- a/deps/v8/test/cctest/compiler/test-js-context-specialization.cc
+++ b/deps/v8/test/cctest/compiler/test-js-context-specialization.cc
@@ -39,6 +39,7 @@ class ContextSpecializationTester : public HandleAndZoneScope {
MaybeHandle<JSFunction>()) {}
JSContextSpecialization* spec() { return &spec_; }
+ Isolate* isolate() { return main_isolate(); }
Factory* factory() { return main_isolate()->factory(); }
CommonOperatorBuilder* common() { return &common_; }
JSOperatorBuilder* javascript() { return &javascript_; }
@@ -111,7 +112,16 @@ void ContextSpecializationTester::CheckContextInputAndDepthChanges(
CHECK_EQ(new_access.immutable(), access.immutable());
}
-static const int slot_index = Context::PREVIOUS_INDEX;
+namespace {
+Handle<Context> NewContextForTesting(Isolate* isolate,
+ Handle<Context> previous) {
+ Handle<ScopeInfo> scope_info = ScopeInfo::CreateForWithScope(isolate, {});
+ Handle<JSObject> extension = isolate->factory()->NewJSObjectWithNullProto();
+ return isolate->factory()->NewWithContext(previous, scope_info, extension);
+}
+} // namespace
+
+static const int slot_index = 5;
TEST(ReduceJSLoadContext0) {
ContextSpecializationTester t(Nothing<OuterContext>());
@@ -121,12 +131,10 @@ TEST(ReduceJSLoadContext0) {
// Make a context and initialize it a bit for this test.
Handle<Context> native = t.factory()->NewNativeContext();
- Handle<Context> subcontext1 = t.factory()->NewNativeContext();
- Handle<Context> subcontext2 = t.factory()->NewNativeContext();
- subcontext2->set_previous(*subcontext1);
- subcontext1->set_previous(*native);
+ Handle<Context> subcontext1 = NewContextForTesting(t.isolate(), native);
+ Handle<Context> subcontext2 = NewContextForTesting(t.isolate(), subcontext1);
Handle<Object> expected = t.factory()->InternalizeUtf8String("gboy!");
- const int slot = Context::PREVIOUS_INDEX;
+ const int slot = 5;
native->set(slot, *expected);
Node* const_context = t.jsgraph()->Constant(ObjectRef(t.broker(), native));
@@ -271,8 +279,8 @@ TEST(ReduceJSLoadContext2) {
Handle<HeapObject> slot_value1 = t.factory()->InternalizeUtf8String("1");
Handle<Context> context_object0 = t.factory()->NewNativeContext();
- Handle<Context> context_object1 = t.factory()->NewNativeContext();
- context_object1->set_previous(*context_object0);
+ Handle<Context> context_object1 =
+ NewContextForTesting(t.isolate(), context_object0);
context_object0->set(Context::EXTENSION_INDEX, *slot_value0);
context_object1->set(Context::EXTENSION_INDEX, *slot_value1);
@@ -342,14 +350,15 @@ TEST(ReduceJSLoadContext3) {
// expectations are the same as in ReduceJSLoadContext2.
HandleAndZoneScope handle_zone_scope;
- auto factory = handle_zone_scope.main_isolate()->factory();
+ auto isolate = handle_zone_scope.main_isolate();
+ auto factory = isolate->factory();
Handle<HeapObject> slot_value0 = factory->InternalizeUtf8String("0");
Handle<HeapObject> slot_value1 = factory->InternalizeUtf8String("1");
Handle<Context> context_object0 = factory->NewNativeContext();
- Handle<Context> context_object1 = factory->NewNativeContext();
- context_object1->set_previous(*context_object0);
+ Handle<Context> context_object1 =
+ NewContextForTesting(isolate, context_object0);
context_object0->set(Context::EXTENSION_INDEX, *slot_value0);
context_object1->set(Context::EXTENSION_INDEX, *slot_value1);
@@ -427,12 +436,10 @@ TEST(ReduceJSStoreContext0) {
// Make a context and initialize it a bit for this test.
Handle<Context> native = t.factory()->NewNativeContext();
- Handle<Context> subcontext1 = t.factory()->NewNativeContext();
- Handle<Context> subcontext2 = t.factory()->NewNativeContext();
- subcontext2->set_previous(*subcontext1);
- subcontext1->set_previous(*native);
+ Handle<Context> subcontext1 = NewContextForTesting(t.isolate(), native);
+ Handle<Context> subcontext2 = NewContextForTesting(t.isolate(), subcontext1);
Handle<Object> expected = t.factory()->InternalizeUtf8String("gboy!");
- const int slot = Context::PREVIOUS_INDEX;
+ const int slot = 5;
native->set(slot, *expected);
Node* const_context = t.jsgraph()->Constant(ObjectRef(t.broker(), native));
@@ -542,8 +549,8 @@ TEST(ReduceJSStoreContext2) {
Handle<HeapObject> slot_value1 = t.factory()->InternalizeUtf8String("1");
Handle<Context> context_object0 = t.factory()->NewNativeContext();
- Handle<Context> context_object1 = t.factory()->NewNativeContext();
- context_object1->set_previous(*context_object0);
+ Handle<Context> context_object1 =
+ NewContextForTesting(t.isolate(), context_object0);
context_object0->set(Context::EXTENSION_INDEX, *slot_value0);
context_object1->set(Context::EXTENSION_INDEX, *slot_value1);
@@ -585,14 +592,15 @@ TEST(ReduceJSStoreContext2) {
TEST(ReduceJSStoreContext3) {
HandleAndZoneScope handle_zone_scope;
- auto factory = handle_zone_scope.main_isolate()->factory();
+ auto isolate = handle_zone_scope.main_isolate();
+ auto factory = isolate->factory();
Handle<HeapObject> slot_value0 = factory->InternalizeUtf8String("0");
Handle<HeapObject> slot_value1 = factory->InternalizeUtf8String("1");
Handle<Context> context_object0 = factory->NewNativeContext();
- Handle<Context> context_object1 = factory->NewNativeContext();
- context_object1->set_previous(*context_object0);
+ Handle<Context> context_object1 =
+ NewContextForTesting(isolate, context_object0);
context_object0->set(Context::EXTENSION_INDEX, *slot_value0);
context_object1->set(Context::EXTENSION_INDEX, *slot_value1);