| OLD | NEW |
| 1 /* | 1 /* |
| 2 * Copyright (C) 2009 Google Inc. All rights reserved. | 2 * Copyright (C) 2009 Google Inc. All rights reserved. |
| 3 * Copyright (C) 2012 Ericsson AB. All rights reserved. | 3 * Copyright (C) 2012 Ericsson AB. All rights reserved. |
| 4 * | 4 * |
| 5 * Redistribution and use in source and binary forms, with or without | 5 * Redistribution and use in source and binary forms, with or without |
| 6 * modification, are permitted provided that the following conditions are | 6 * modification, are permitted provided that the following conditions are |
| 7 * met: | 7 * met: |
| 8 * | 8 * |
| 9 * * Redistributions of source code must retain the above copyright | 9 * * Redistributions of source code must retain the above copyright |
| 10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 if (UNLIKELY(!impl)) { | 220 if (UNLIKELY(!impl)) { |
| 221 v8SetReturnValueNull(callbackInfo); | 221 v8SetReturnValueNull(callbackInfo); |
| 222 return; | 222 return; |
| 223 } | 223 } |
| 224 if (DOMDataStore::setReturnValueForMainWorldNonTemplate(callbackInfo.GetRetu
rnValue(), impl)) | 224 if (DOMDataStore::setReturnValueForMainWorldNonTemplate(callbackInfo.GetRetu
rnValue(), impl)) |
| 225 return; | 225 return; |
| 226 v8::Handle<v8::Object> wrapper = impl->wrap(callbackInfo.Holder(), callbackI
nfo.GetIsolate()); | 226 v8::Handle<v8::Object> wrapper = impl->wrap(callbackInfo.Holder(), callbackI
nfo.GetIsolate()); |
| 227 v8SetReturnValue(callbackInfo, wrapper); | 227 v8SetReturnValue(callbackInfo, wrapper); |
| 228 } | 228 } |
| 229 | 229 |
| 230 template<typename CallbackInfo> |
| 231 inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, Node*
impl) |
| 232 { |
| 233 // Since EventTarget has [Custom=ToV8] and V8EventTarget.h defines its own |
| 234 // v8SetReturnValue family, which are slow, we need to override them with |
| 235 // optimized versions for Node and its subclasses. Without this overload, |
| 236 // v8SetReturnValueForMainWorld for Node would be very slow. |
| 237 // |
| 238 // class hierarchy: |
| 239 // ScriptWrappable <-- EventTarget <--+-- Node <-- ... |
| 240 // +-- Window |
| 241 // overloads: |
| 242 // v8SetReturnValueForMainWorld(ScriptWrappable*) |
| 243 // Optimized and very fast. |
| 244 // v8SetReturnValueForMainWorld(EventTarget*) |
| 245 // Uses custom toV8 function and slow. |
| 246 // v8SetReturnValueForMainWorld(Node*) |
| 247 // Optimized and very fast. |
| 248 // v8SetReturnValueForMainWorld(Window*) |
| 249 // Uses custom toV8 function and slow. |
| 250 v8SetReturnValueForMainWorld(callbackInfo, ScriptWrappable::fromNode(impl)); |
| 251 } |
| 252 |
| 230 template<typename CallbackInfo, typename T> | 253 template<typename CallbackInfo, typename T> |
| 231 inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, PassR
efPtr<T> impl) | 254 inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, PassR
efPtr<T> impl) |
| 232 { | 255 { |
| 233 v8SetReturnValueForMainWorld(callbackInfo, impl.get()); | 256 v8SetReturnValueForMainWorld(callbackInfo, impl.get()); |
| 234 } | 257 } |
| 235 | 258 |
| 236 template<typename CallbackInfo, typename T> | 259 template<typename CallbackInfo, typename T> |
| 237 inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, RawPt
r<T> impl) | 260 inline void v8SetReturnValueForMainWorld(const CallbackInfo& callbackInfo, RawPt
r<T> impl) |
| 238 { | 261 { |
| 239 v8SetReturnValueForMainWorld(callbackInfo, impl.get()); | 262 v8SetReturnValueForMainWorld(callbackInfo, impl.get()); |
| (...skipping 970 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1210 v8::Local<v8::Value> v8IteratorResult(ScriptState* scriptState, const T& value) | 1233 v8::Local<v8::Value> v8IteratorResult(ScriptState* scriptState, const T& value) |
| 1211 { | 1234 { |
| 1212 return v8IteratorResult(scriptState->isolate(), V8ValueTraits<T>::toV8Value(
value, scriptState->context()->Global(), scriptState->isolate())); | 1235 return v8IteratorResult(scriptState->isolate(), V8ValueTraits<T>::toV8Value(
value, scriptState->context()->Global(), scriptState->isolate())); |
| 1213 } | 1236 } |
| 1214 | 1237 |
| 1215 typedef void (*InstallTemplateFunction)(v8::Handle<v8::FunctionTemplate>, v8::Is
olate*); | 1238 typedef void (*InstallTemplateFunction)(v8::Handle<v8::FunctionTemplate>, v8::Is
olate*); |
| 1216 | 1239 |
| 1217 } // namespace blink | 1240 } // namespace blink |
| 1218 | 1241 |
| 1219 #endif // V8Binding_h | 1242 #endif // V8Binding_h |
| OLD | NEW |