OLD | NEW |
---|---|
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "api.h" | 5 #include "api.h" |
6 | 6 |
7 #include <string.h> // For memcpy, strlen. | 7 #include <string.h> // For memcpy, strlen. |
8 #ifdef V8_USE_ADDRESS_SANITIZER | 8 #ifdef V8_USE_ADDRESS_SANITIZER |
9 #include <sanitizer/asan_interface.h> | 9 #include <sanitizer/asan_interface.h> |
10 #endif // V8_USE_ADDRESS_SANITIZER | 10 #endif // V8_USE_ADDRESS_SANITIZER |
(...skipping 6646 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6657 reinterpret_cast<i::Isolate*>(this)->RunMicrotasks(); | 6657 reinterpret_cast<i::Isolate*>(this)->RunMicrotasks(); |
6658 } | 6658 } |
6659 | 6659 |
6660 | 6660 |
6661 void Isolate::EnqueueMicrotask(Handle<Function> microtask) { | 6661 void Isolate::EnqueueMicrotask(Handle<Function> microtask) { |
6662 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); | 6662 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
6663 isolate->EnqueueMicrotask(Utils::OpenHandle(*microtask)); | 6663 isolate->EnqueueMicrotask(Utils::OpenHandle(*microtask)); |
6664 } | 6664 } |
6665 | 6665 |
6666 | 6666 |
6667 void Isolate::EnqueueMicrotask(MicrotaskCallback microtask, void* data) { | |
6668 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); | |
6669 i::HandleScope scope(isolate); | |
6670 i::Handle<i::CallHandlerInfo> callback_info = | |
dcarney
2014/06/02 07:22:10
if you're going to reuse the CallHandlerInfo struc
adamk
2014/06/02 16:41:50
I'm guessing this might be the source of my try jo
| |
6671 i::Handle<i::CallHandlerInfo>::cast( | |
6672 isolate->factory()->NewStruct(i::CALL_HANDLER_INFO_TYPE)); | |
6673 SET_FIELD_WRAPPED(callback_info, set_callback, microtask); | |
6674 SET_FIELD_WRAPPED(callback_info, set_data, data); | |
6675 isolate->EnqueueMicrotask(callback_info); | |
6676 } | |
6677 | |
6678 | |
6667 void Isolate::SetAutorunMicrotasks(bool autorun) { | 6679 void Isolate::SetAutorunMicrotasks(bool autorun) { |
6668 reinterpret_cast<i::Isolate*>(this)->set_autorun_microtasks(autorun); | 6680 reinterpret_cast<i::Isolate*>(this)->set_autorun_microtasks(autorun); |
6669 } | 6681 } |
6670 | 6682 |
6671 | 6683 |
6672 bool Isolate::WillAutorunMicrotasks() const { | 6684 bool Isolate::WillAutorunMicrotasks() const { |
6673 return reinterpret_cast<const i::Isolate*>(this)->autorun_microtasks(); | 6685 return reinterpret_cast<const i::Isolate*>(this)->autorun_microtasks(); |
6674 } | 6686 } |
6675 | 6687 |
6676 | 6688 |
(...skipping 889 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
7566 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); | 7578 Isolate* isolate = reinterpret_cast<Isolate*>(info.GetIsolate()); |
7567 Address callback_address = | 7579 Address callback_address = |
7568 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 7580 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
7569 VMState<EXTERNAL> state(isolate); | 7581 VMState<EXTERNAL> state(isolate); |
7570 ExternalCallbackScope call_scope(isolate, callback_address); | 7582 ExternalCallbackScope call_scope(isolate, callback_address); |
7571 callback(info); | 7583 callback(info); |
7572 } | 7584 } |
7573 | 7585 |
7574 | 7586 |
7575 } } // namespace v8::internal | 7587 } } // namespace v8::internal |
OLD | NEW |