Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3)

Side by Side Diff: test/cctest/test-api.cc

Issue 1115263004: [strong] Check arity of functions (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fix style nits Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 20992 matching lines...) Expand 10 before | Expand all | Expand 10 after
21003 21003
21004 { 21004 {
21005 v8::HandleScope handle_scope(isolate); 21005 v8::HandleScope handle_scope(isolate);
21006 21006
21007 // Should work 21007 // Should work
21008 v8::Local<v8::Object> obj = v8::Object::New(isolate); 21008 v8::Local<v8::Object> obj = v8::Object::New(isolate);
21009 21009
21010 USE(obj); 21010 USE(obj);
21011 } 21011 }
21012 } 21012 }
21013
21014
21015 TEST(StrongModeArityCallFromApi) {
21016 i::FLAG_strong_mode = true;
21017 LocalContext env;
21018 v8::Isolate* isolate = env->GetIsolate();
21019 v8::HandleScope scope(isolate);
21020 Local<Function> fun;
21021 {
21022 v8::TryCatch try_catch;
21023 fun = Local<Function>::Cast(CompileRun(
21024 "function f(x) { 'use strong'; }"
21025 "f"));
21026
21027 CHECK(!try_catch.HasCaught());
21028 }
21029
21030 {
21031 v8::TryCatch try_catch;
21032 fun->Call(v8::Undefined(isolate), 0, nullptr);
21033 CHECK(try_catch.HasCaught());
21034 }
21035
21036 {
21037 v8::TryCatch try_catch;
21038 v8::Handle<Value> args[] = {v8_num(42)};
21039 fun->Call(v8::Undefined(isolate), arraysize(args), args);
21040 CHECK(!try_catch.HasCaught());
21041 }
21042
21043 {
21044 v8::TryCatch try_catch;
21045 v8::Handle<Value> args[] = {v8_num(42), v8_num(555)};
21046 fun->Call(v8::Undefined(isolate), arraysize(args), args);
21047 CHECK(!try_catch.HasCaught());
21048 }
21049 }
21050
21051
21052 TEST(StrongModeArityCallFromApi2) {
21053 i::FLAG_strong_mode = true;
21054 LocalContext env;
21055 v8::Isolate* isolate = env->GetIsolate();
21056 v8::HandleScope scope(isolate);
21057 Local<Function> fun;
21058 {
21059 v8::TryCatch try_catch;
21060 fun = Local<Function>::Cast(CompileRun(
21061 "'use strong';"
21062 "function f(x) {}"
21063 "f"));
21064
21065 CHECK(!try_catch.HasCaught());
21066 }
21067
21068 {
21069 v8::TryCatch try_catch;
21070 fun->Call(v8::Undefined(isolate), 0, nullptr);
21071 CHECK(try_catch.HasCaught());
21072 }
21073
21074 {
21075 v8::TryCatch try_catch;
21076 v8::Handle<Value> args[] = {v8_num(42)};
21077 fun->Call(v8::Undefined(isolate), arraysize(args), args);
21078 CHECK(!try_catch.HasCaught());
21079 }
21080
21081 {
21082 v8::TryCatch try_catch;
21083 v8::Handle<Value> args[] = {v8_num(42), v8_num(555)};
21084 fun->Call(v8::Undefined(isolate), arraysize(args), args);
21085 CHECK(!try_catch.HasCaught());
21086 }
21087 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698