blob: 8b68ac7f405cc01b0a45be5260918b47ca623de0 [file]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
#pragma once
namespace Js
{
class WebAssemblyTable : public DynamicObject
{
protected:
DEFINE_VTABLE_CTOR( WebAssemblyTable, DynamicObject );
DEFINE_MARSHAL_OBJECT_TO_SCRIPT_CONTEXT( WebAssemblyTable );
#ifdef ENABLE_WASM
public:
class EntryInfo
{
public:
static FunctionInfo NewInstance;
static FunctionInfo GetterLength;
static FunctionInfo Grow;
static FunctionInfo Get;
static FunctionInfo Set;
};
WebAssemblyTable(
Field(Var) * values, uint32 currentLength, uint32 initialLength, uint32 maxLength, DynamicType * type);
static Var NewInstance(RecyclableObject* function, CallInfo callInfo, ...);
static Var EntryGetterLength(RecyclableObject* function, CallInfo callInfo, ...);
static Var EntryGrow(RecyclableObject* function, CallInfo callInfo, ...);
static Var EntryGet(RecyclableObject* function, CallInfo callInfo, ...);
static Var EntrySet(RecyclableObject* function, CallInfo callInfo, ...);
static WebAssemblyTable * Create(uint32 initial, uint32 maximum, ScriptContext * scriptContext);
uint32 GetCurrentLength() const;
uint32 GetInitialLength() const;
uint32 GetMaximumLength() const;
void DirectSetValue(uint index, Var val);
Var DirectGetValue(uint index) const;
static uint32 GetOffsetOfValues() { return offsetof(WebAssemblyTable, m_values); }
static uint32 GetOffsetOfCurrentLength() { return offsetof(WebAssemblyTable, m_currentLength); }
private:
Field(uint32) m_initialLength;
Field(uint32) m_maxLength;
Field(uint32) m_currentLength;
Field(Field(Var)*) m_values;
#endif
};
template <> inline bool VarIsImpl<WebAssemblyTable>(RecyclableObject* obj)
{
return JavascriptOperators::GetTypeId(obj) == TypeIds_WebAssemblyTable;
}
}