| // Copyright 2021 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #if !V8_ENABLE_WEBASSEMBLY |
| #error This header should only be included if WebAssembly is enabled. |
| #endif // !V8_ENABLE_WEBASSEMBLY |
| |
| #ifndef V8_DEBUG_DEBUG_WASM_OBJECTS_H_ |
| #define V8_DEBUG_DEBUG_WASM_OBJECTS_H_ |
| |
| #include <memory> |
| |
| #include "src/objects/js-objects.h" |
| |
| // Has to be the last include (doesn't have include guards): |
| #include "src/objects/object-macros.h" |
| |
| namespace v8 { |
| namespace debug { |
| class ScopeIterator; |
| } // namespace debug |
| |
| namespace internal { |
| namespace wasm { |
| class WasmValue; |
| } // namespace wasm |
| |
| #include "torque-generated/src/debug/debug-wasm-objects-tq.inc" |
| |
| class ArrayList; |
| class WasmFrame; |
| class WasmInstanceObject; |
| class WasmModuleObject; |
| class WasmTableObject; |
| |
| class WasmValueObject : public JSObject { |
| public: |
| DECL_CAST(WasmValueObject) |
| |
| DECL_ACCESSORS(type, String) |
| DECL_ACCESSORS(value, Object) |
| |
| // Dispatched behavior. |
| DECL_PRINTER(WasmValueObject) |
| DECL_VERIFIER(WasmValueObject) |
| |
| // Layout description. |
| #define WASM_VALUE_FIELDS(V) \ |
| V(kTypeOffset, kTaggedSize) \ |
| V(kValueOffset, kTaggedSize) \ |
| V(kSize, 0) |
| DEFINE_FIELD_OFFSET_CONSTANTS(JSObject::kHeaderSize, WASM_VALUE_FIELDS) |
| #undef WASM_VALUE_FIELDS |
| |
| // Indices of in-object properties. |
| static constexpr int kTypeIndex = 0; |
| static constexpr int kValueIndex = 1; |
| |
| static Handle<WasmValueObject> New(Isolate* isolate, Handle<String> type, |
| Handle<Object> value); |
| static Handle<WasmValueObject> New(Isolate* isolate, |
| const wasm::WasmValue& value, |
| Handle<WasmModuleObject> module); |
| |
| OBJECT_CONSTRUCTORS(WasmValueObject, JSObject); |
| }; |
| |
| Handle<JSObject> GetWasmDebugProxy(WasmFrame* frame); |
| |
| std::unique_ptr<debug::ScopeIterator> GetWasmScopeIterator(WasmFrame* frame); |
| |
| Handle<String> GetWasmFunctionDebugName(Isolate* isolate, |
| Handle<WasmInstanceObject> instance, |
| uint32_t func_index); |
| |
| Handle<ArrayList> AddWasmInstanceObjectInternalProperties( |
| Isolate* isolate, Handle<ArrayList> result, |
| Handle<WasmInstanceObject> instance); |
| |
| Handle<ArrayList> AddWasmModuleObjectInternalProperties( |
| Isolate* isolate, Handle<ArrayList> result, |
| Handle<WasmModuleObject> module_object); |
| |
| Handle<ArrayList> AddWasmTableObjectInternalProperties( |
| Isolate* isolate, Handle<ArrayList> result, Handle<WasmTableObject> table); |
| |
| } // namespace internal |
| } // namespace v8 |
| |
| #include "src/objects/object-macros-undef.h" |
| |
| #endif // V8_DEBUG_DEBUG_WASM_OBJECTS_H_ |