| Index: test/cctest/test-api.cc
|
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc
|
| index 1af7d7badf34a2ac32178f249691355061f24f11..0ddf5ba7651470ae1cb6ec6ed9fd0fa04f6b2ba1 100644
|
| --- a/test/cctest/test-api.cc
|
| +++ b/test/cctest/test-api.cc
|
| @@ -1924,7 +1924,7 @@ void AddAccessor(Handle<FunctionTemplate> templ,
|
| Handle<String> name,
|
| v8::AccessorGetterCallback getter,
|
| v8::AccessorSetterCallback setter) {
|
| - templ->InstanceTemplate()->SetAccessor(name, getter, setter);
|
| + templ->PrototypeTemplate()->SetAccessor(name, getter, setter);
|
| }
|
|
|
| void AddInterceptor(Handle<FunctionTemplate> templ,
|
| @@ -1937,7 +1937,6 @@ void AddInterceptor(Handle<FunctionTemplate> templ,
|
| THREADED_TEST(EmptyInterceptorDoesNotShadowAccessors) {
|
| v8::HandleScope scope(CcTest::isolate());
|
| Handle<FunctionTemplate> parent = FunctionTemplate::New(CcTest::isolate());
|
| - parent->SetHiddenPrototype(true);
|
| Handle<FunctionTemplate> child = FunctionTemplate::New(CcTest::isolate());
|
| child->Inherit(parent);
|
| AddAccessor(parent, v8_str("age"),
|
| @@ -1947,7 +1946,7 @@ THREADED_TEST(EmptyInterceptorDoesNotShadowAccessors) {
|
| env->Global()->Set(v8_str("Child"), child->GetFunction());
|
| CompileRun("var child = new Child;"
|
| "child.age = 10;");
|
| - ExpectBoolean("child.hasOwnProperty('age')", true);
|
| + ExpectBoolean("child.hasOwnProperty('age')", false);
|
| ExpectInt32("child.age", 10);
|
| ExpectInt32("child.accessor_age", 10);
|
| }
|
| @@ -9986,13 +9985,10 @@ THREADED_TEST(ShadowObject) {
|
| LocalContext context(NULL, global_template);
|
|
|
| Local<v8::FunctionTemplate> t = v8::FunctionTemplate::New(isolate);
|
| - t->SetHiddenPrototype(true);
|
| - Local<v8::FunctionTemplate> pt = v8::FunctionTemplate::New(isolate);
|
| - t->Inherit(pt);
|
| - Local<ObjectTemplate> proto = pt->PrototypeTemplate();
|
| + t->InstanceTemplate()->SetNamedPropertyHandler(ShadowNamedGet);
|
| + t->InstanceTemplate()->SetIndexedPropertyHandler(ShadowIndexedGet);
|
| + Local<ObjectTemplate> proto = t->PrototypeTemplate();
|
| Local<ObjectTemplate> instance = t->InstanceTemplate();
|
| - instance->SetNamedPropertyHandler(ShadowNamedGet);
|
| - instance->SetIndexedPropertyHandler(ShadowIndexedGet);
|
|
|
| proto->Set(v8_str("f"),
|
| v8::FunctionTemplate::New(isolate,
|
| @@ -18539,12 +18535,11 @@ void FooSetInterceptor(Local<String> name,
|
| TEST(SetterOnConstructorPrototype) {
|
| v8::Isolate* isolate = CcTest::isolate();
|
| v8::HandleScope scope(isolate);
|
| - Local<FunctionTemplate> templ = FunctionTemplate::New(isolate);
|
| - templ->SetHiddenPrototype(true);
|
| - templ->InstanceTemplate()->SetAccessor(v8_str("x"), GetterWhichReturns42,
|
| - SetterWhichSetsYOnThisTo23);
|
| + Local<ObjectTemplate> templ = ObjectTemplate::New(isolate);
|
| + templ->SetAccessor(v8_str("x"), GetterWhichReturns42,
|
| + SetterWhichSetsYOnThisTo23);
|
| LocalContext context;
|
| - context->Global()->Set(v8_str("P"), templ->InstanceTemplate()->NewInstance());
|
| + context->Global()->Set(v8_str("P"), templ->NewInstance());
|
| CompileRun("function C1() {"
|
| " this.x = 23;"
|
| "};"
|
| @@ -18566,7 +18561,8 @@ TEST(SetterOnConstructorPrototype) {
|
| script = v8_compile("new C2();");
|
| for (int i = 0; i < 10; i++) {
|
| v8::Handle<v8::Object> c2 = v8::Handle<v8::Object>::Cast(script->Run());
|
| - CHECK_EQ(23, c2->Get(v8_str("x"))->Int32Value());
|
| + CHECK_EQ(42, c2->Get(v8_str("x"))->Int32Value());
|
| + CHECK_EQ(23, c2->Get(v8_str("y"))->Int32Value());
|
| }
|
| }
|
|
|
| @@ -18652,11 +18648,10 @@ TEST(Regress618) {
|
| }
|
|
|
| // Use an API object with accessors as prototype.
|
| - Local<FunctionTemplate> templ = FunctionTemplate::New(isolate);
|
| - templ->SetHiddenPrototype(true);
|
| - templ->InstanceTemplate()->SetAccessor(v8_str("x"), GetterWhichReturns42,
|
| - SetterWhichSetsYOnThisTo23);
|
| - context->Global()->Set(v8_str("P"), templ->InstanceTemplate()->NewInstance());
|
| + Local<ObjectTemplate> templ = ObjectTemplate::New(isolate);
|
| + templ->SetAccessor(v8_str("x"), GetterWhichReturns42,
|
| + SetterWhichSetsYOnThisTo23);
|
| + context->Global()->Set(v8_str("P"), templ->NewInstance());
|
|
|
| // This compile will get the code from the compilation cache.
|
| CompileRun(source);
|
| @@ -21071,15 +21066,14 @@ static void InstanceCheckedSetter(Local<String> name,
|
|
|
|
|
| static void CheckInstanceCheckedResult(int getters, int setters,
|
| - bool expects_callbacks, bool is_setter,
|
| + bool expects_callbacks,
|
| TryCatch* try_catch) {
|
| if (expects_callbacks) {
|
| CHECK(!try_catch->HasCaught());
|
| CHECK_EQ(getters, instance_checked_getter_count);
|
| CHECK_EQ(setters, instance_checked_setter_count);
|
| } else {
|
| - CHECK((is_setter && !try_catch->HasCaught()) ||
|
| - (!is_setter && try_catch->HasCaught()));
|
| + CHECK(try_catch->HasCaught());
|
| CHECK_EQ(0, instance_checked_getter_count);
|
| CHECK_EQ(0, instance_checked_setter_count);
|
| }
|
| @@ -21094,38 +21088,33 @@ static void CheckInstanceCheckedAccessors(bool expects_callbacks) {
|
|
|
| // Test path through generic runtime code.
|
| CompileRun("obj.foo");
|
| - CheckInstanceCheckedResult(1, 0, expects_callbacks, false, &try_catch);
|
| + CheckInstanceCheckedResult(1, 0, expects_callbacks, &try_catch);
|
| CompileRun("obj.foo = 23");
|
| - CheckInstanceCheckedResult(1, 1, expects_callbacks, true, &try_catch);
|
| - if (!expects_callbacks) CompileRun("delete obj.foo");
|
| + CheckInstanceCheckedResult(1, 1, expects_callbacks, &try_catch);
|
|
|
| // Test path through generated LoadIC and StoredIC.
|
| CompileRun("function test_get(o) { o.foo; }"
|
| "test_get(obj);");
|
| - CheckInstanceCheckedResult(2, 1, expects_callbacks, false, &try_catch);
|
| + CheckInstanceCheckedResult(2, 1, expects_callbacks, &try_catch);
|
| CompileRun("test_get(obj);");
|
| - CheckInstanceCheckedResult(3, 1, expects_callbacks, false, &try_catch);
|
| + CheckInstanceCheckedResult(3, 1, expects_callbacks, &try_catch);
|
| CompileRun("test_get(obj);");
|
| - CheckInstanceCheckedResult(4, 1, expects_callbacks, false, &try_catch);
|
| + CheckInstanceCheckedResult(4, 1, expects_callbacks, &try_catch);
|
| CompileRun("function test_set(o) { o.foo = 23; }"
|
| "test_set(obj);");
|
| - CheckInstanceCheckedResult(4, 2, expects_callbacks, true, &try_catch);
|
| - if (!expects_callbacks) CompileRun("delete obj.foo");
|
| + CheckInstanceCheckedResult(4, 2, expects_callbacks, &try_catch);
|
| CompileRun("test_set(obj);");
|
| - CheckInstanceCheckedResult(4, 3, expects_callbacks, true, &try_catch);
|
| - if (!expects_callbacks) CompileRun("delete obj.foo");
|
| + CheckInstanceCheckedResult(4, 3, expects_callbacks, &try_catch);
|
| CompileRun("test_set(obj);");
|
| - CheckInstanceCheckedResult(4, 4, expects_callbacks, true, &try_catch);
|
| - if (!expects_callbacks) CompileRun("delete obj.foo");
|
| + CheckInstanceCheckedResult(4, 4, expects_callbacks, &try_catch);
|
|
|
| // Test path through optimized code.
|
| CompileRun("%OptimizeFunctionOnNextCall(test_get);"
|
| "test_get(obj);");
|
| - CheckInstanceCheckedResult(5, 4, expects_callbacks, false, &try_catch);
|
| + CheckInstanceCheckedResult(5, 4, expects_callbacks, &try_catch);
|
| CompileRun("%OptimizeFunctionOnNextCall(test_set);"
|
| "test_set(obj);");
|
| - if (!expects_callbacks) CompileRun("delete obj.foo");
|
| - CheckInstanceCheckedResult(5, 5, expects_callbacks, true, &try_catch);
|
| + CheckInstanceCheckedResult(5, 5, expects_callbacks, &try_catch);
|
|
|
| // Cleanup so that closures start out fresh in next check.
|
| CompileRun("%DeoptimizeFunction(test_get);"
|
| @@ -21197,16 +21186,12 @@ THREADED_TEST(InstanceCheckOnPrototypeAccessor) {
|
| LocalContext context;
|
| v8::HandleScope scope(context->GetIsolate());
|
|
|
| - Local<FunctionTemplate> proto_templ =
|
| - FunctionTemplate::New(context->GetIsolate());
|
| - proto_templ->SetHiddenPrototype(true);
|
| - Local<ObjectTemplate> proto = proto_templ->InstanceTemplate();
|
| - proto->SetAccessor(
|
| - v8_str("foo"), InstanceCheckedGetter, InstanceCheckedSetter,
|
| - Handle<Value>(), v8::DEFAULT, v8::None,
|
| - v8::AccessorSignature::New(context->GetIsolate(), proto_templ));
|
| Local<FunctionTemplate> templ = FunctionTemplate::New(context->GetIsolate());
|
| - templ->Inherit(proto_templ);
|
| + Local<ObjectTemplate> proto = templ->PrototypeTemplate();
|
| + proto->SetAccessor(v8_str("foo"), InstanceCheckedGetter,
|
| + InstanceCheckedSetter, Handle<Value>(), v8::DEFAULT,
|
| + v8::None,
|
| + v8::AccessorSignature::New(context->GetIsolate(), templ));
|
| context->Global()->Set(v8_str("f"), templ->GetFunction());
|
|
|
| printf("Testing positive ...\n");
|
|
|