Index: runtime/vm/isolate.h |
diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h |
index e5873ea3150eeb38280716c1b91fc364d9217835..72e399908dc2c9c6bdb1a7a30023a5e18e3466a6 100644 |
--- a/runtime/vm/isolate.h |
+++ b/runtime/vm/isolate.h |
@@ -703,6 +703,16 @@ class Isolate : public BaseIsolate { |
compilation_allowed_ = allowed; |
} |
+ RawObject* InvokePendingExtensionCalls(); |
+ void AppendExtensionCall(const Instance& closure, |
+ const String& method_name, |
+ const Array& parameter_keys, |
+ const Array& parameter_values, |
+ const Instance& reply_port, |
+ const Instance& id); |
+ void RegisterExtensionHandler(const String& name, const Instance& closure); |
+ RawInstance* LookupExtensionHandler(const String& name); |
+ |
#if defined(DEBUG) |
#define REUSABLE_HANDLE_SCOPE_ACCESSORS(object) \ |
void set_reusable_##object##_handle_scope_active(bool value) { \ |
@@ -766,6 +776,16 @@ class Isolate : public BaseIsolate { |
user_tag_ = tag; |
} |
+ RawGrowableObjectArray* GetAndClearPendingExtensionCalls(); |
+ RawGrowableObjectArray* pending_extension_calls() const { |
+ return pending_extension_calls_; |
+ } |
+ void set_pending_extension_calls(const GrowableObjectArray& value); |
+ RawGrowableObjectArray* registered_extension_handlers() const { |
+ return registered_extension_handlers_; |
+ } |
+ void set_registered_extension_handlers(const GrowableObjectArray& value); |
+ |
void ClearMutatorThread() { |
mutator_thread_ = NULL; |
} |
@@ -857,6 +877,26 @@ class Isolate : public BaseIsolate { |
RawGrowableObjectArray* collected_closures_; |
RawGrowableObjectArray* deoptimized_code_array_; |
+ // We use 6 list entries for each pending service extension calls. |
+ enum { |
+ kPendingHandlerIndex = 0, |
+ kPendingMethodNameIndex, |
+ kPendingKeysIndex, |
+ kPendingValuesIndex, |
+ kPendingReplyPortIndex, |
+ kPendingIdIndex, |
+ kPendingEntrySize |
+ }; |
+ RawGrowableObjectArray* pending_extension_calls_; |
+ |
+ // We use 2 list entries for each register extension handler. |
Ivan Posva
2015/08/26 04:47:00
register -> registered
Cutch
2015/08/26 14:28:00
Done.
|
+ enum { |
+ kRegisteredNameIndex = 0, |
+ kRegisteredHandlerIndex, |
+ kRegisteredEntrySize |
+ }; |
+ RawGrowableObjectArray* registered_extension_handlers_; |
+ |
Metric* metrics_list_head_; |
Counters counters_; |