//-------------------------------------------------------------------------------------------------------
// 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

#ifdef ASMJS_PLAT
namespace Js
{
    class OpCodeUtilAsmJs
    {
    public:
        static char16 const * GetOpCodeName(OpCodeAsmJs op);

        static OpLayoutTypeAsmJs GetOpCodeLayout(OpCodeAsmJs op);
        static bool IsValidByteCodeOpcode(OpCodeAsmJs op);
        static bool IsValidOpcode(OpCodeAsmJs op);
        static void ConvertOpToProfiled(OpCodeAsmJs * op);
    private:
#if DBG_DUMP || ENABLE_DEBUG_CONFIG_OPTIONS
        static char16 const * const OpCodeAsmJsNames[(int)Js::OpCodeAsmJs::MaxByteSizedOpcodes + 1];
        static char16 const * const ExtendedOpCodeAsmJsNames[];
#endif
        static OpLayoutTypeAsmJs const OpCodeAsmJsLayouts[];
        static OpLayoutTypeAsmJs const ExtendedOpCodeAsmJsLayouts[];
    };
};
#endif
