| Index: test/cctest/test-api.cc | 
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc | 
| index 38ca9f59adf0c5480578368f89c406b486282244..d5e838ebe09618a6dbc3dcdd567d5d0136482cc2 100644 | 
| --- a/test/cctest/test-api.cc | 
| +++ b/test/cctest/test-api.cc | 
| @@ -17504,6 +17504,70 @@ THREADED_TEST(FunctionGetInferredName) { | 
| } | 
|  | 
|  | 
| +THREADED_TEST(FunctionGetDisplayName) { | 
| +  LocalContext env; | 
| +  v8::HandleScope scope(env->GetIsolate()); | 
| +  const char* code = "var error = false;" | 
| +                     "function a() { this.x = 1; };" | 
| +                     "a.displayName = 'display_a';" | 
| +                     "var b = (function() {" | 
| +                     "  var f = function() { this.x = 2; };" | 
| +                     "  f.displayName = 'display_b';" | 
| +                     "  return f;" | 
| +                     "})();" | 
| +                     "var c = function() {};" | 
| +                     "c.__defineGetter__('displayName', function() {" | 
| +                     "  error = true;" | 
| +                     "  throw new Error();" | 
| +                     "});" | 
| +                     "function d() {};" | 
| +                     "d.__defineGetter__('displayName', function() {" | 
| +                     "  error = true;" | 
| +                     "  return 'wrong_display_name';" | 
| +                     "});" | 
| +                     "function e() {};" | 
| +                     "e.displayName = 'wrong_display_name';" | 
| +                     "e.__defineSetter__('displayName', function() {" | 
| +                     "  error = true;" | 
| +                     "  throw new Error();" | 
| +                     "});" | 
| +                     "function f() {};" | 
| +                     "f.displayName = { 'foo': 6, toString: function() {" | 
| +                     "  error = true;" | 
| +                     "  return 'wrong_display_name';" | 
| +                     "}};" | 
| +                     "var g = function() {" | 
| +                     "  arguments.callee.displayName = 'set_in_runtime';" | 
| +                     "}; g();" | 
| +                     ; | 
| +  v8::ScriptOrigin origin = v8::ScriptOrigin(v8::String::New("test")); | 
| +  v8::Script::Compile(v8::String::New(code), &origin)->Run(); | 
| +  v8::Local<v8::Value> error = env->Global()->Get(v8::String::New("error")); | 
| +  v8::Local<v8::Function> a = v8::Local<v8::Function>::Cast( | 
| +      env->Global()->Get(v8::String::New("a"))); | 
| +  v8::Local<v8::Function> b = v8::Local<v8::Function>::Cast( | 
| +      env->Global()->Get(v8::String::New("b"))); | 
| +  v8::Local<v8::Function> c = v8::Local<v8::Function>::Cast( | 
| +      env->Global()->Get(v8::String::New("c"))); | 
| +  v8::Local<v8::Function> d = v8::Local<v8::Function>::Cast( | 
| +      env->Global()->Get(v8::String::New("d"))); | 
| +  v8::Local<v8::Function> e = v8::Local<v8::Function>::Cast( | 
| +      env->Global()->Get(v8::String::New("e"))); | 
| +  v8::Local<v8::Function> f = v8::Local<v8::Function>::Cast( | 
| +      env->Global()->Get(v8::String::New("f"))); | 
| +  v8::Local<v8::Function> g = v8::Local<v8::Function>::Cast( | 
| +      env->Global()->Get(v8::String::New("g"))); | 
| +  CHECK_EQ(false, error->BooleanValue()); | 
| +  CHECK_EQ("display_a", *v8::String::Utf8Value(a->GetDisplayName())); | 
| +  CHECK_EQ("display_b", *v8::String::Utf8Value(b->GetDisplayName())); | 
| +  CHECK(c->GetDisplayName()->IsUndefined()); | 
| +  CHECK(d->GetDisplayName()->IsUndefined()); | 
| +  CHECK(e->GetDisplayName()->IsUndefined()); | 
| +  CHECK(f->GetDisplayName()->IsUndefined()); | 
| +  CHECK_EQ("set_in_runtime", *v8::String::Utf8Value(g->GetDisplayName())); | 
| +} | 
| + | 
| + | 
| THREADED_TEST(ScriptLineNumber) { | 
| LocalContext env; | 
| v8::HandleScope scope(env->GetIsolate()); | 
|  |