//------------------------------------------------------------------------------------------------------- // 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 { template class StatementReader { private: const byte* m_startLocation; SmallSpanSequence* m_statementMap; SmallSpanSequenceIter m_statementMapIter; TStatementMapList * m_fullstatementMap; const byte* m_nextStatementBoundary; int m_statementIndex; bool m_startOfStatement; public: void Create(FunctionBody* functionRead, uint startOffset = 0); void Create(FunctionBody* functionRead, uint startOffset, bool useOriginalByteCode); void Create( _In_ const byte * byteCodeStart, uint startOffset, Js::SmallSpanSequence * statementMap, TStatementMapList* fullstatementMap); inline bool AtStatementBoundary(ByteCodeReader * reader) { return m_nextStatementBoundary == reader->GetIP(); } inline uint32 MoveNextStatementBoundary(); inline uint32 GetStatementIndex() const { return m_statementIndex; } }; } // namespace Js