11cb0ef41Sopenharmony_ci// Copyright 2020 the V8 project authors. All rights reserved.
21cb0ef41Sopenharmony_ci// Use of this source code is governed by a BSD-style license that can be
31cb0ef41Sopenharmony_ci// found in the LICENSE file.
41cb0ef41Sopenharmony_ci
51cb0ef41Sopenharmony_ci#ifndef V8_TOOLS_V8WINDBG_SRC_CUR_ISOLATE_H_
61cb0ef41Sopenharmony_ci#define V8_TOOLS_V8WINDBG_SRC_CUR_ISOLATE_H_
71cb0ef41Sopenharmony_ci
81cb0ef41Sopenharmony_ci#include <crtdbg.h>
91cb0ef41Sopenharmony_ci#include <wrl/implements.h>
101cb0ef41Sopenharmony_ci
111cb0ef41Sopenharmony_ci#include <string>
121cb0ef41Sopenharmony_ci#include <vector>
131cb0ef41Sopenharmony_ci
141cb0ef41Sopenharmony_ci#include "tools/v8windbg/base/utilities.h"
151cb0ef41Sopenharmony_ci#include "tools/v8windbg/src/v8-debug-helper-interop.h"
161cb0ef41Sopenharmony_ci#include "tools/v8windbg/src/v8windbg-extension.h"
171cb0ef41Sopenharmony_ci
181cb0ef41Sopenharmony_ciHRESULT GetCurrentIsolate(WRL::ComPtr<IModelObject>& sp_result);
191cb0ef41Sopenharmony_ci
201cb0ef41Sopenharmony_ciconstexpr wchar_t kIsolateKey[] = L"v8::internal::Isolate::isolate_key_";
211cb0ef41Sopenharmony_ciconstexpr wchar_t kIsolate[] = L"v8::internal::Isolate";
221cb0ef41Sopenharmony_ci
231cb0ef41Sopenharmony_ciclass CurrIsolateAlias
241cb0ef41Sopenharmony_ci    : public WRL::RuntimeClass<
251cb0ef41Sopenharmony_ci          WRL::RuntimeClassFlags<WRL::RuntimeClassType::ClassicCom>,
261cb0ef41Sopenharmony_ci          IModelMethod> {
271cb0ef41Sopenharmony_ci public:
281cb0ef41Sopenharmony_ci  IFACEMETHOD(Call)
291cb0ef41Sopenharmony_ci  (IModelObject* p_context_object, ULONG64 arg_count,
301cb0ef41Sopenharmony_ci   _In_reads_(arg_count) IModelObject** pp_arguments, IModelObject** pp_result,
311cb0ef41Sopenharmony_ci   IKeyStore** pp_metadata);
321cb0ef41Sopenharmony_ci};
331cb0ef41Sopenharmony_ci
341cb0ef41Sopenharmony_ci#endif  // V8_TOOLS_V8WINDBG_SRC_CUR_ISOLATE_H_
35