OLD | NEW |
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 1177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1188 void FastReturnValueCallback<Object>( | 1188 void FastReturnValueCallback<Object>( |
1189 const v8::FunctionCallbackInfo<v8::Value>& info) { | 1189 const v8::FunctionCallbackInfo<v8::Value>& info) { |
1190 v8::Handle<v8::Object> object; | 1190 v8::Handle<v8::Object> object; |
1191 if (!fast_return_value_object_is_empty) object = Object::New(); | 1191 if (!fast_return_value_object_is_empty) object = Object::New(); |
1192 info.GetReturnValue().Set(object); | 1192 info.GetReturnValue().Set(object); |
1193 } | 1193 } |
1194 | 1194 |
1195 template<typename T> | 1195 template<typename T> |
1196 Handle<Value> TestFastReturnValues() { | 1196 Handle<Value> TestFastReturnValues() { |
1197 LocalContext env; | 1197 LocalContext env; |
1198 v8::HandleScope scope(env->GetIsolate()); | 1198 v8::EscapableHandleScope scope(env->GetIsolate()); |
1199 v8::Handle<v8::ObjectTemplate> object_template = v8::ObjectTemplate::New(); | 1199 v8::Handle<v8::ObjectTemplate> object_template = v8::ObjectTemplate::New(); |
1200 v8::FunctionCallback callback = &FastReturnValueCallback<T>; | 1200 v8::FunctionCallback callback = &FastReturnValueCallback<T>; |
1201 object_template->Set(env->GetIsolate(), "callback", | 1201 object_template->Set(env->GetIsolate(), "callback", |
1202 v8::FunctionTemplate::New(callback)); | 1202 v8::FunctionTemplate::New(callback)); |
1203 v8::Local<v8::Object> object = object_template->NewInstance(); | 1203 v8::Local<v8::Object> object = object_template->NewInstance(); |
1204 (*env)->Global()->Set(v8_str("callback_object"), object); | 1204 (*env)->Global()->Set(v8_str("callback_object"), object); |
1205 return scope.Close(CompileRun("callback_object.callback()")); | 1205 return scope.Escape(CompileRun("callback_object.callback()")); |
1206 } | 1206 } |
1207 | 1207 |
1208 | 1208 |
1209 THREADED_PROFILED_TEST(FastReturnValues) { | 1209 THREADED_PROFILED_TEST(FastReturnValues) { |
1210 LocalContext env; | 1210 LocalContext env; |
1211 v8::HandleScope scope(CcTest::isolate()); | 1211 v8::HandleScope scope(CcTest::isolate()); |
1212 v8::Handle<v8::Value> value; | 1212 v8::Handle<v8::Value> value; |
1213 // check int32_t and uint32_t | 1213 // check int32_t and uint32_t |
1214 int32_t int_values[] = { | 1214 int32_t int_values[] = { |
1215 0, 234, -723, | 1215 0, 234, -723, |
(...skipping 2965 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4181 CHECK_EQ(2, arr->Get(1)->Int32Value()); | 4181 CHECK_EQ(2, arr->Get(1)->Int32Value()); |
4182 CHECK_EQ(3, arr->Get(2)->Int32Value()); | 4182 CHECK_EQ(3, arr->Get(2)->Int32Value()); |
4183 array = v8::Array::New(context->GetIsolate(), 27); | 4183 array = v8::Array::New(context->GetIsolate(), 27); |
4184 CHECK_EQ(27, array->Length()); | 4184 CHECK_EQ(27, array->Length()); |
4185 array = v8::Array::New(context->GetIsolate(), -27); | 4185 array = v8::Array::New(context->GetIsolate(), -27); |
4186 CHECK_EQ(0, array->Length()); | 4186 CHECK_EQ(0, array->Length()); |
4187 } | 4187 } |
4188 | 4188 |
4189 | 4189 |
4190 void HandleF(const v8::FunctionCallbackInfo<v8::Value>& args) { | 4190 void HandleF(const v8::FunctionCallbackInfo<v8::Value>& args) { |
4191 v8::HandleScope scope(args.GetIsolate()); | 4191 v8::EscapableHandleScope scope(args.GetIsolate()); |
4192 ApiTestFuzzer::Fuzz(); | 4192 ApiTestFuzzer::Fuzz(); |
4193 Local<v8::Array> result = v8::Array::New(args.GetIsolate(), args.Length()); | 4193 Local<v8::Array> result = v8::Array::New(args.GetIsolate(), args.Length()); |
4194 for (int i = 0; i < args.Length(); i++) | 4194 for (int i = 0; i < args.Length(); i++) |
4195 result->Set(i, args[i]); | 4195 result->Set(i, args[i]); |
4196 args.GetReturnValue().Set(scope.Close(result)); | 4196 args.GetReturnValue().Set(scope.Escape(result)); |
4197 } | 4197 } |
4198 | 4198 |
4199 | 4199 |
4200 THREADED_TEST(Vector) { | 4200 THREADED_TEST(Vector) { |
4201 v8::HandleScope scope(CcTest::isolate()); | 4201 v8::HandleScope scope(CcTest::isolate()); |
4202 Local<ObjectTemplate> global = ObjectTemplate::New(); | 4202 Local<ObjectTemplate> global = ObjectTemplate::New(); |
4203 global->Set(v8_str("f"), v8::FunctionTemplate::New(HandleF)); | 4203 global->Set(v8_str("f"), v8::FunctionTemplate::New(HandleF)); |
4204 LocalContext context(0, global); | 4204 LocalContext context(0, global); |
4205 | 4205 |
4206 const char* fun = "f()"; | 4206 const char* fun = "f()"; |
(...skipping 9022 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13229 } | 13229 } |
13230 { v8::HandleScope scope(CcTest::isolate()); | 13230 { v8::HandleScope scope(CcTest::isolate()); |
13231 LocalContext context; | 13231 LocalContext context; |
13232 CompileRun(source); | 13232 CompileRun(source); |
13233 } | 13233 } |
13234 } | 13234 } |
13235 } | 13235 } |
13236 | 13236 |
13237 | 13237 |
13238 static v8::Handle<Value> NestedScope(v8::Local<Context> env) { | 13238 static v8::Handle<Value> NestedScope(v8::Local<Context> env) { |
13239 v8::HandleScope inner(env->GetIsolate()); | 13239 v8::EscapableHandleScope inner(env->GetIsolate()); |
13240 env->Enter(); | 13240 env->Enter(); |
13241 v8::Handle<Value> three = v8_num(3); | 13241 v8::Local<Value> three = v8_num(3); |
13242 v8::Handle<Value> value = inner.Close(three); | 13242 v8::Local<Value> value = inner.Escape(three); |
13243 env->Exit(); | 13243 env->Exit(); |
13244 return value; | 13244 return value; |
13245 } | 13245 } |
13246 | 13246 |
13247 | 13247 |
13248 THREADED_TEST(NestedHandleScopeAndContexts) { | 13248 THREADED_TEST(NestedHandleScopeAndContexts) { |
13249 v8::Isolate* isolate = CcTest::isolate(); | 13249 v8::Isolate* isolate = CcTest::isolate(); |
13250 v8::HandleScope outer(isolate); | 13250 v8::HandleScope outer(isolate); |
13251 v8::Local<Context> env = Context::New(isolate); | 13251 v8::Local<Context> env = Context::New(isolate); |
13252 env->Enter(); | 13252 env->Enter(); |
(...skipping 605 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
13858 | 13858 |
13859 // Regression test for issue 54, object templates with internal fields | 13859 // Regression test for issue 54, object templates with internal fields |
13860 // but no accessors or interceptors did not get their internal field | 13860 // but no accessors or interceptors did not get their internal field |
13861 // count set on instances. | 13861 // count set on instances. |
13862 THREADED_TEST(Regress54) { | 13862 THREADED_TEST(Regress54) { |
13863 LocalContext context; | 13863 LocalContext context; |
13864 v8::Isolate* isolate = context->GetIsolate(); | 13864 v8::Isolate* isolate = context->GetIsolate(); |
13865 v8::HandleScope outer(isolate); | 13865 v8::HandleScope outer(isolate); |
13866 static v8::Persistent<v8::ObjectTemplate> templ; | 13866 static v8::Persistent<v8::ObjectTemplate> templ; |
13867 if (templ.IsEmpty()) { | 13867 if (templ.IsEmpty()) { |
13868 v8::HandleScope inner(isolate); | 13868 v8::EscapableHandleScope inner(isolate); |
13869 v8::Handle<v8::ObjectTemplate> local = v8::ObjectTemplate::New(); | 13869 v8::Local<v8::ObjectTemplate> local = v8::ObjectTemplate::New(); |
13870 local->SetInternalFieldCount(1); | 13870 local->SetInternalFieldCount(1); |
13871 templ.Reset(isolate, inner.Close(local)); | 13871 templ.Reset(isolate, inner.Escape(local)); |
13872 } | 13872 } |
13873 v8::Handle<v8::Object> result = | 13873 v8::Handle<v8::Object> result = |
13874 v8::Local<v8::ObjectTemplate>::New(isolate, templ)->NewInstance(); | 13874 v8::Local<v8::ObjectTemplate>::New(isolate, templ)->NewInstance(); |
13875 CHECK_EQ(1, result->InternalFieldCount()); | 13875 CHECK_EQ(1, result->InternalFieldCount()); |
13876 } | 13876 } |
13877 | 13877 |
13878 | 13878 |
13879 // If part of the threaded tests, this test makes ThreadingTest fail | 13879 // If part of the threaded tests, this test makes ThreadingTest fail |
13880 // on mac. | 13880 // on mac. |
13881 TEST(CatchStackOverflow) { | 13881 TEST(CatchStackOverflow) { |
(...skipping 6990 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
20872 } | 20872 } |
20873 for (int i = 0; i < runs; i++) { | 20873 for (int i = 0; i < runs; i++) { |
20874 Local<String> expected; | 20874 Local<String> expected; |
20875 if (i != 0) { | 20875 if (i != 0) { |
20876 CHECK_EQ(v8_str("escape value"), values[i]); | 20876 CHECK_EQ(v8_str("escape value"), values[i]); |
20877 } else { | 20877 } else { |
20878 CHECK(values[i].IsEmpty()); | 20878 CHECK(values[i].IsEmpty()); |
20879 } | 20879 } |
20880 } | 20880 } |
20881 } | 20881 } |
OLD | NEW |