// Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. #include "vm/thread_state.h" #include "vm/handles_impl.h" #include "vm/zone.h" namespace dart { ThreadState::ThreadState(bool is_os_thread) : BaseThread(is_os_thread) {} ThreadState::~ThreadState() {} bool ThreadState::IsValidZoneHandle(Dart_Handle object) const { Zone* zone = this->zone(); while (zone != nullptr) { if (zone->handles()->IsValidZoneHandle(reinterpret_cast(object))) { return true; } zone = zone->previous(); } return false; } intptr_t ThreadState::CountZoneHandles() const { intptr_t count = 0; Zone* zone = this->zone(); while (zone != nullptr) { count += zone->handles()->CountZoneHandles(); zone = zone->previous(); } ASSERT(count >= 0); return count; } bool ThreadState::IsValidScopedHandle(Dart_Handle object) const { Zone* zone = this->zone(); while (zone != nullptr) { if (zone->handles()->IsValidScopedHandle(reinterpret_cast(object))) { return true; } zone = zone->previous(); } return false; } intptr_t ThreadState::CountScopedHandles() const { intptr_t count = 0; Zone* zone = this->zone(); while (zone != nullptr) { count += zone->handles()->CountScopedHandles(); zone = zone->previous(); } ASSERT(count >= 0); return count; } } // namespace dart