| Index: test/cctest/test-api.cc | 
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc | 
| index 9769fb79ab5a04410343a424cbfc64095054c639..2d5e0bee55024ea278ed9b2527e38a081290206d 100644 | 
| --- a/test/cctest/test-api.cc | 
| +++ b/test/cctest/test-api.cc | 
| @@ -6969,53 +6969,34 @@ THREADED_TEST(SetPrototype) { | 
| } | 
|  | 
|  | 
| -THREADED_TEST(SetPrototypeProperties) { | 
| +THREADED_TEST(FunctionReadOnlyPrototype) { | 
| v8::HandleScope handle_scope; | 
| LocalContext context; | 
|  | 
| Local<v8::FunctionTemplate> t1 = v8::FunctionTemplate::New(); | 
| -  t1->SetPrototypeAttributes(v8::DontDelete); | 
| +  t1->PrototypeTemplate()->Set(v8_str("x"), v8::Integer::New(42)); | 
| +  t1->ReadOnlyPrototype(); | 
| context->Global()->Set(v8_str("func1"), t1->GetFunction()); | 
| +  // Configured value of ReadOnly flag. | 
| CHECK(CompileRun( | 
| "(function() {" | 
| "  descriptor = Object.getOwnPropertyDescriptor(func1, 'prototype');" | 
| -      "  return (descriptor['writable'] == true) &&" | 
| -      "         (descriptor['enumerable'] == true) &&" | 
| -      "         (descriptor['configurable'] == false);" | 
| +      "  return (descriptor['writable'] == false);" | 
| "})()")->BooleanValue()); | 
| +  CHECK_EQ(42, CompileRun("func1.prototype.x")->Int32Value()); | 
| +  CHECK_EQ(42, | 
| +           CompileRun("func1.prototype = {}; func1.prototype.x")->Int32Value()); | 
|  | 
| Local<v8::FunctionTemplate> t2 = v8::FunctionTemplate::New(); | 
| -  t2->SetPrototypeAttributes(v8::DontEnum); | 
| +  t2->PrototypeTemplate()->Set(v8_str("x"), v8::Integer::New(42)); | 
| context->Global()->Set(v8_str("func2"), t2->GetFunction()); | 
| +  // Default value of ReadOnly flag. | 
| CHECK(CompileRun( | 
| "(function() {" | 
| "  descriptor = Object.getOwnPropertyDescriptor(func2, 'prototype');" | 
| -      "  return (descriptor['writable'] == true) &&" | 
| -      "         (descriptor['enumerable'] == false) &&" | 
| -      "         (descriptor['configurable'] == true);" | 
| -      "})()")->BooleanValue()); | 
| - | 
| -  Local<v8::FunctionTemplate> t3 = v8::FunctionTemplate::New(); | 
| -  t3->SetPrototypeAttributes(v8::ReadOnly); | 
| -  context->Global()->Set(v8_str("func3"), t3->GetFunction()); | 
| -  CHECK(CompileRun( | 
| -      "(function() {" | 
| -      "  descriptor = Object.getOwnPropertyDescriptor(func3, 'prototype');" | 
| -      "  return (descriptor['writable'] == false) &&" | 
| -      "         (descriptor['enumerable'] == true) &&" | 
| -      "         (descriptor['configurable'] == true);" | 
| -      "})()")->BooleanValue()); | 
| - | 
| -  Local<v8::FunctionTemplate> t4 = v8::FunctionTemplate::New(); | 
| -  t4->SetPrototypeAttributes(v8::ReadOnly | v8::DontEnum | v8::DontDelete); | 
| -  context->Global()->Set(v8_str("func4"), t4->GetFunction()); | 
| -  CHECK(CompileRun( | 
| -      "(function() {" | 
| -      "  descriptor = Object.getOwnPropertyDescriptor(func4, 'prototype');" | 
| -      "  return (descriptor['writable'] == false) &&" | 
| -      "         (descriptor['enumerable'] == false) &&" | 
| -      "         (descriptor['configurable'] == false);" | 
| +      "  return (descriptor['writable'] == true);" | 
| "})()")->BooleanValue()); | 
| +  CHECK_EQ(42, CompileRun("func2.prototype.x")->Int32Value()); | 
| } | 
|  | 
|  | 
|  |