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 1056 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1067 void FastReturnValueCallback<void>( | 1067 void FastReturnValueCallback<void>( |
1068 const v8::FunctionCallbackInfo<v8::Value>& info) { | 1068 const v8::FunctionCallbackInfo<v8::Value>& info) { |
1069 CheckReturnValue(info); | 1069 CheckReturnValue(info); |
1070 if (fast_return_value_void_is_null) { | 1070 if (fast_return_value_void_is_null) { |
1071 info.GetReturnValue().SetNull(); | 1071 info.GetReturnValue().SetNull(); |
1072 } else { | 1072 } else { |
1073 info.GetReturnValue().SetUndefined(); | 1073 info.GetReturnValue().SetUndefined(); |
1074 } | 1074 } |
1075 } | 1075 } |
1076 | 1076 |
| 1077 template<> |
| 1078 void FastReturnValueCallback<Object>( |
| 1079 const v8::FunctionCallbackInfo<v8::Value>& info) { |
| 1080 info.GetReturnValue().Set(Object::New()); |
| 1081 } |
| 1082 |
1077 template<typename T> | 1083 template<typename T> |
1078 Handle<Value> TestFastReturnValues() { | 1084 Handle<Value> TestFastReturnValues() { |
1079 LocalContext env; | 1085 LocalContext env; |
1080 v8::HandleScope scope(env->GetIsolate()); | 1086 v8::HandleScope scope(env->GetIsolate()); |
1081 v8::Handle<v8::ObjectTemplate> object_template = v8::ObjectTemplate::New(); | 1087 v8::Handle<v8::ObjectTemplate> object_template = v8::ObjectTemplate::New(); |
1082 v8::FunctionCallback callback = &FastReturnValueCallback<T>; | 1088 v8::FunctionCallback callback = &FastReturnValueCallback<T>; |
1083 object_template->Set("callback", v8::FunctionTemplate::New(callback)); | 1089 object_template->Set("callback", v8::FunctionTemplate::New(callback)); |
1084 v8::Local<v8::Object> object = object_template->NewInstance(); | 1090 v8::Local<v8::Object> object = object_template->NewInstance(); |
1085 (*env)->Global()->Set(v8_str("callback_object"), object); | 1091 (*env)->Global()->Set(v8_str("callback_object"), object); |
1086 return scope.Close(CompileRun("callback_object.callback()")); | 1092 return scope.Close(CompileRun("callback_object.callback()")); |
(...skipping 24 matching lines...) Expand all Loading... |
1111 // check oddballs | 1117 // check oddballs |
1112 for (int i = 0; i < 2; i++) { | 1118 for (int i = 0; i < 2; i++) { |
1113 fast_return_value_void_is_null = i == 0; | 1119 fast_return_value_void_is_null = i == 0; |
1114 value = TestFastReturnValues<void>(); | 1120 value = TestFastReturnValues<void>(); |
1115 if (fast_return_value_void_is_null) { | 1121 if (fast_return_value_void_is_null) { |
1116 CHECK(value->IsNull()); | 1122 CHECK(value->IsNull()); |
1117 } else { | 1123 } else { |
1118 CHECK(value->IsUndefined()); | 1124 CHECK(value->IsUndefined()); |
1119 } | 1125 } |
1120 } | 1126 } |
| 1127 value = TestFastReturnValues<Object>(); |
| 1128 CHECK(value->IsObject()); |
1121 } | 1129 } |
1122 | 1130 |
1123 | 1131 |
1124 THREADED_TEST(FunctionTemplateSetLength) { | 1132 THREADED_TEST(FunctionTemplateSetLength) { |
1125 LocalContext env; | 1133 LocalContext env; |
1126 v8::HandleScope scope(env->GetIsolate()); | 1134 v8::HandleScope scope(env->GetIsolate()); |
1127 { | 1135 { |
1128 Local<v8::FunctionTemplate> fun_templ = v8::FunctionTemplate::New( | 1136 Local<v8::FunctionTemplate> fun_templ = v8::FunctionTemplate::New( |
1129 handle_call, Handle<v8::Value>(), Handle<v8::Signature>(), 23); | 1137 handle_call, Handle<v8::Value>(), Handle<v8::Signature>(), 23); |
1130 Local<Function> fun = fun_templ->GetFunction(); | 1138 Local<Function> fun = fun_templ->GetFunction(); |
(...skipping 18189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
19320 i::Semaphore* sem_; | 19328 i::Semaphore* sem_; |
19321 volatile int sem_value_; | 19329 volatile int sem_value_; |
19322 }; | 19330 }; |
19323 | 19331 |
19324 | 19332 |
19325 THREADED_TEST(SemaphoreInterruption) { | 19333 THREADED_TEST(SemaphoreInterruption) { |
19326 ThreadInterruptTest().RunTest(); | 19334 ThreadInterruptTest().RunTest(); |
19327 } | 19335 } |
19328 | 19336 |
19329 #endif // WIN32 | 19337 #endif // WIN32 |
OLD | NEW |