blob: 3a2bb1878044af635a261e7b29b0feb5958d43b4 [file]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft Corporation and contributors. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
#include "WasmReaderPch.h"
#ifdef ENABLE_WASM
namespace Wasm
{
WasmElementSegment::WasmElementSegment(ArenaAllocator* alloc, const uint32 index, const WasmNode initExpr, const uint32 numElem) :
m_alloc(alloc),
m_index(index),
m_offsetExpr(initExpr),
m_numElem(numElem),
m_offset(0),
m_elemIdx(0),
m_elems(nullptr)
{}
void WasmElementSegment::Init()
{
Assert(m_numElem > 0);
m_elems = AnewArray(m_alloc, uint32, m_numElem);
memset(m_elems, Js::Constants::UninitializedValue, m_numElem * sizeof(uint32));
}
void WasmElementSegment::AddElement(const uint32 funcIndex)
{
if (m_elems == nullptr)
{
Init();
}
Assert(m_elemIdx < m_numElem);
m_elems[m_elemIdx++] = funcIndex;
}
uint32 WasmElementSegment::GetElement(const uint32 tableIndex) const
{
Assert(m_elems != nullptr);
return m_elems[tableIndex];
}
} // namespace Wasm
#endif // ENABLE_WASM