| Index: runtime/vm/isolate.h
|
| diff --git a/runtime/vm/isolate.h b/runtime/vm/isolate.h
|
| index cc07c1bb2f3de4620214165f8533b09ab1d9b1f4..d216b477836fff9e701ef85c9832da43c69bc578 100644
|
| --- a/runtime/vm/isolate.h
|
| +++ b/runtime/vm/isolate.h
|
| @@ -707,6 +707,17 @@ class Isolate : public BaseIsolate {
|
| compilation_allowed_ = allowed;
|
| }
|
|
|
| + RawObject* InvokePendingServiceExtensionCalls();
|
| + void AppendServiceExtensionCall(const Instance& closure,
|
| + const String& method_name,
|
| + const Array& parameter_keys,
|
| + const Array& parameter_values,
|
| + const Instance& reply_port,
|
| + const Instance& id);
|
| + void RegisterServiceExtensionHandler(const String& name,
|
| + const Instance& closure);
|
| + RawInstance* LookupServiceExtensionHandler(const String& name);
|
| +
|
| #if defined(DEBUG)
|
| #define REUSABLE_HANDLE_SCOPE_ACCESSORS(object) \
|
| void set_reusable_##object##_handle_scope_active(bool value) { \
|
| @@ -770,6 +781,17 @@ class Isolate : public BaseIsolate {
|
| user_tag_ = tag;
|
| }
|
|
|
| + RawGrowableObjectArray* GetAndClearPendingServiceExtensionCalls();
|
| + RawGrowableObjectArray* pending_service_extension_calls() const {
|
| + return pending_service_extension_calls_;
|
| + }
|
| + void set_pending_service_extension_calls(const GrowableObjectArray& value);
|
| + RawGrowableObjectArray* registered_service_extension_handlers() const {
|
| + return registered_service_extension_handlers_;
|
| + }
|
| + void set_registered_service_extension_handlers(
|
| + const GrowableObjectArray& value);
|
| +
|
| void ClearMutatorThread() {
|
| mutator_thread_ = NULL;
|
| }
|
| @@ -862,6 +884,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_service_extension_calls_;
|
| +
|
| + // We use 2 list entries for each registered extension handler.
|
| + enum {
|
| + kRegisteredNameIndex = 0,
|
| + kRegisteredHandlerIndex,
|
| + kRegisteredEntrySize
|
| + };
|
| + RawGrowableObjectArray* registered_service_extension_handlers_;
|
| +
|
| Metric* metrics_list_head_;
|
|
|
| Counters counters_;
|
|
|