| Index: runtime/vm/dart_api_impl.cc
|
| diff --git a/runtime/vm/dart_api_impl.cc b/runtime/vm/dart_api_impl.cc
|
| index ecf07cf967a51e0faf122ea65c30c0169527d7a1..4e879940f36c15ae528ffb737537fbdaff49de56 100644
|
| --- a/runtime/vm/dart_api_impl.cc
|
| +++ b/runtime/vm/dart_api_impl.cc
|
| @@ -224,7 +224,7 @@ uword Api::Allocate(intptr_t size) {
|
| ASSERT(state != NULL);
|
| ApiLocalScope* scope = state->top_scope();
|
| ASSERT(scope != NULL);
|
| - return scope->zone().Allocate(size);
|
| + return scope->zone()->Allocate(size);
|
| }
|
|
|
|
|
| @@ -235,7 +235,7 @@ uword Api::Reallocate(uword ptr, intptr_t old_size, intptr_t new_size) {
|
| ASSERT(state != NULL);
|
| ApiLocalScope* scope = state->top_scope();
|
| ASSERT(scope != NULL);
|
| - return scope->zone().Reallocate(ptr, old_size, new_size);
|
| + return scope->zone()->Reallocate(ptr, old_size, new_size);
|
| }
|
|
|
|
|
| @@ -2694,4 +2694,21 @@ DART_EXPORT void Dart_GetPprofSymbolInfo(void** buffer, int* buffer_size) {
|
| }
|
| }
|
|
|
| +
|
| +DART_EXPORT uint8_t* Dart_ZoneAllocate(intptr_t size) {
|
| + ApiZone* zone;
|
| + Isolate* isolate = Isolate::Current();
|
| + if (isolate != NULL) {
|
| + ApiState* state = isolate->api_state();
|
| + if (state == NULL) return NULL;
|
| + ApiLocalScope* scope = state->top_scope();
|
| + zone = scope->zone();
|
| + } else {
|
| + ApiNativeScope* scope = ApiNativeScope::Current();
|
| + if (scope == NULL) return NULL;
|
| + zone = scope->zone();
|
| + }
|
| + return reinterpret_cast<uint8_t*>(zone->Allocate(size));
|
| +}
|
| +
|
| } // namespace dart
|
|
|