| Index: test/cctest/test-api.cc | 
| diff --git a/test/cctest/test-api.cc b/test/cctest/test-api.cc | 
| index f54428875c88bd95185d87015ce01a36da22c60f..48d9bbf2f85311274745603ffcc18ea48f3ae404 100644 | 
| --- a/test/cctest/test-api.cc | 
| +++ b/test/cctest/test-api.cc | 
| @@ -21010,3 +21010,78 @@ TEST(SealHandleScopeNested) { | 
| USE(obj); | 
| } | 
| } | 
| + | 
| + | 
| +TEST(StrongModeArityCallFromApi) { | 
| +  i::FLAG_strong_mode = true; | 
| +  LocalContext env; | 
| +  v8::Isolate* isolate = env->GetIsolate(); | 
| +  v8::HandleScope scope(isolate); | 
| +  Local<Function> fun; | 
| +  { | 
| +    v8::TryCatch try_catch; | 
| +    fun = Local<Function>::Cast(CompileRun( | 
| +        "function f(x) { 'use strong'; }" | 
| +        "f")); | 
| + | 
| +    CHECK(!try_catch.HasCaught()); | 
| +  } | 
| + | 
| +  { | 
| +    v8::TryCatch try_catch; | 
| +    fun->Call(v8::Undefined(isolate), 0, nullptr); | 
| +    CHECK(try_catch.HasCaught()); | 
| +  } | 
| + | 
| +  { | 
| +    v8::TryCatch try_catch; | 
| +    v8::Handle<Value> args[] = {v8_num(42)}; | 
| +    fun->Call(v8::Undefined(isolate), arraysize(args), args); | 
| +    CHECK(!try_catch.HasCaught()); | 
| +  } | 
| + | 
| +  { | 
| +    v8::TryCatch try_catch; | 
| +    v8::Handle<Value> args[] = {v8_num(42), v8_num(555)}; | 
| +    fun->Call(v8::Undefined(isolate), arraysize(args), args); | 
| +    CHECK(!try_catch.HasCaught()); | 
| +  } | 
| +} | 
| + | 
| + | 
| +TEST(StrongModeArityCallFromApi2) { | 
| +  i::FLAG_strong_mode = true; | 
| +  LocalContext env; | 
| +  v8::Isolate* isolate = env->GetIsolate(); | 
| +  v8::HandleScope scope(isolate); | 
| +  Local<Function> fun; | 
| +  { | 
| +    v8::TryCatch try_catch; | 
| +    fun = Local<Function>::Cast(CompileRun( | 
| +        "'use strong';" | 
| +        "function f(x) {}" | 
| +        "f")); | 
| + | 
| +    CHECK(!try_catch.HasCaught()); | 
| +  } | 
| + | 
| +  { | 
| +    v8::TryCatch try_catch; | 
| +    fun->Call(v8::Undefined(isolate), 0, nullptr); | 
| +    CHECK(try_catch.HasCaught()); | 
| +  } | 
| + | 
| +  { | 
| +    v8::TryCatch try_catch; | 
| +    v8::Handle<Value> args[] = {v8_num(42)}; | 
| +    fun->Call(v8::Undefined(isolate), arraysize(args), args); | 
| +    CHECK(!try_catch.HasCaught()); | 
| +  } | 
| + | 
| +  { | 
| +    v8::TryCatch try_catch; | 
| +    v8::Handle<Value> args[] = {v8_num(42), v8_num(555)}; | 
| +    fun->Call(v8::Undefined(isolate), arraysize(args), args); | 
| +    CHECK(!try_catch.HasCaught()); | 
| +  } | 
| +} | 
|  |