| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- //-------------------------------------------------------------------------------------------------------
- // 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.
- //-------------------------------------------------------------------------------------------------------
- #pragma once
- #ifdef ASMJS_PLAT
- namespace Js {
- #if DBG_DUMP
- class AsmJsByteCodeDumper : public ByteCodeDumper
- {
- public:
- static void Dump(FunctionBody* body, const WAsmJs::TypedRegisterAllocator* typedRegister, AsmJsFunc* asmFunc);
- static void DumpConstants(AsmJsFunc* func, FunctionBody* body);
- static void DumpOp(OpCodeAsmJs op, LayoutSize layoutSize, ByteCodeReader& reader, FunctionBody* dumpFunction);
- static void DumpIntReg(RegSlot reg);
- static void DumpLongReg(RegSlot reg);
- static void DumpDoubleReg(RegSlot reg);
- static void DumpFloatReg(RegSlot reg);
- static void DumpR8Float(float value);
- static void DumpFloat32x4Reg(RegSlot reg);
- static void DumpInt32x4Reg(RegSlot reg);
-
- static void DumpUint32x4Reg(RegSlot reg);
- static void DumpInt16x8Reg(RegSlot reg);
- static void DumpUint16x8Reg(RegSlot reg);
- static void DumpInt8x16Reg(RegSlot reg);
- static void DumpUint8x16Reg(RegSlot reg);
- static void DumpBool32x4Reg(RegSlot reg);
- static void DumpBool16x8Reg(RegSlot reg);
- static void DumpBool8x16Reg(RegSlot reg);
- static void DumpFloat64x2Reg(RegSlot reg);
- static void DumpInt64x2Reg(RegSlot reg);
- static void DumpRegReg(RegSlot reg) { DumpReg(reg); }
- static void DumpIntConstReg(int val) { DumpI4(val); }
- static void DumpLongConstReg(int64 val) { DumpI8(val); }
- static void DumpFloatConstReg(float val) { DumpR4(val); }
- static void DumpDoubleConstReg(double val) { DumpR8(val); }
- #define LAYOUT_TYPE(layout) \
- static void Dump##layout(OpCodeAsmJs op, const unaligned OpLayout##layout* data, FunctionBody * dumpFunction, ByteCodeReader& reader);
- #define LAYOUT_TYPE_WMS(layout) \
- template <class T> static void Dump##layout(OpCodeAsmJs op, const unaligned T* data, FunctionBody * dumpFunction, ByteCodeReader& reader);
- #include "LayoutTypesAsmJs.h"
- private:
- struct WAsmJsMemTag
- {
- char16 valueTag;
- const char16 * heapTag;
- };
- static void InitializeWAsmJsMemTag(ArrayBufferView::ViewType type, _Out_ WAsmJsMemTag * tag);
- };
- #endif
- }
- #endif
|