Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions lib/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ if(BuildJIT)
add_subdirectory (Backend)
endif()

add_subdirectory (WasmReader)
add_subdirectory (Common)
add_subdirectory (Parser)
add_subdirectory (Runtime)
Expand Down
224 changes: 112 additions & 112 deletions lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp

Large diffs are not rendered by default.

224 changes: 113 additions & 111 deletions lib/Runtime/ByteCode/OpLayoutsAsmJs.h
Original file line number Diff line number Diff line change
Expand Up @@ -283,165 +283,167 @@ namespace Js
#define Uint32x4LayoutType typename SizePolicy::RegSlotType
#define Uint16x8LayoutType typename SizePolicy::RegSlotType
#define Uint8x16LayoutType typename SizePolicy::RegSlotType
#define LAYOUT_FIELDS_HELPER(x, y) x ## y
#define LAYOUT_FIELDS_DEF(x, y) LAYOUT_FIELDS_HELPER(x, y)
#define LAYOUT_TYPE_WMS_REG2(layout, t0, t1) \
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
Copy link

@jianchun jianchun Oct 12, 2016

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ [](start = 23, length = 44)

Is this to have () in a field name (weird, why do we want that)? From the change I assume directly ##0 doesn't work, right? #Resolved

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

() is part of the macro name and it is not going to be part of the actual field name. The tricky part was to have the number to be appended to the end of the filed name to avoid naming conflicts.
##0 does not work as ## expects strings as operands.

t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
};
#define LAYOUT_TYPE_WMS_REG3(layout, t0, t1, t2) \
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
};

#define LAYOUT_TYPE_WMS_REG4(layout, t0, t1, t2, t3)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
};
#define LAYOUT_TYPE_WMS_REG5(layout, t0, t1, t2, t3, t4)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
};
#define LAYOUT_TYPE_WMS_REG6(layout, t0, t1, t2, t3, t4, t5)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t5##LayoutType LAYOUT_PREFIX_##t5()5;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\
};
#define LAYOUT_TYPE_WMS_REG7(layout, t0, t1, t2, t3, t4, t5, t6)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t5##LayoutType LAYOUT_PREFIX_##t5()5;\
t6##LayoutType LAYOUT_PREFIX_##t6()6;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\
t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\
};
#define LAYOUT_TYPE_WMS_REG9(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t5##LayoutType LAYOUT_PREFIX_##t5()5;\
t6##LayoutType LAYOUT_PREFIX_##t6()6;\
t7##LayoutType LAYOUT_PREFIX_##t7()7;\
t8##LayoutType LAYOUT_PREFIX_##t8()8;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\
t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\
t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\
t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\
};
#define LAYOUT_TYPE_WMS_REG10(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t5##LayoutType LAYOUT_PREFIX_##t5()5;\
t6##LayoutType LAYOUT_PREFIX_##t6()6;\
t7##LayoutType LAYOUT_PREFIX_##t7()7;\
t8##LayoutType LAYOUT_PREFIX_##t8()8;\
t9##LayoutType LAYOUT_PREFIX_##t9()9;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\
t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\
t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\
t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\
t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\
};
#define LAYOUT_TYPE_WMS_REG11(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t5##LayoutType LAYOUT_PREFIX_##t5()5;\
t6##LayoutType LAYOUT_PREFIX_##t6()6;\
t7##LayoutType LAYOUT_PREFIX_##t7()7;\
t8##LayoutType LAYOUT_PREFIX_##t8()8;\
t9##LayoutType LAYOUT_PREFIX_##t9()9;\
t10##LayoutType LAYOUT_PREFIX_##t10()10;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\
t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\
t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\
t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\
t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\
t10##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10);\
};
#define LAYOUT_TYPE_WMS_REG17(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t5##LayoutType LAYOUT_PREFIX_##t5()5;\
t6##LayoutType LAYOUT_PREFIX_##t6()6;\
t7##LayoutType LAYOUT_PREFIX_##t7()7;\
t8##LayoutType LAYOUT_PREFIX_##t8()8;\
t9##LayoutType LAYOUT_PREFIX_##t9()9;\
t10##LayoutType LAYOUT_PREFIX_##t10()10;\
t11##LayoutType LAYOUT_PREFIX_##t11()11;\
t12##LayoutType LAYOUT_PREFIX_##t12()12;\
t13##LayoutType LAYOUT_PREFIX_##t13()13;\
t14##LayoutType LAYOUT_PREFIX_##t14()14;\
t15##LayoutType LAYOUT_PREFIX_##t15()15;\
t16##LayoutType LAYOUT_PREFIX_##t16()16;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\
t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\
t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\
t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\
t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\
t10##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10);\
t11##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11);\
t12##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12);\
t13##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13);\
t14##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14);\
t15##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15);\
t16##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16);\
};
#define LAYOUT_TYPE_WMS_REG18(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t5##LayoutType LAYOUT_PREFIX_##t5()5;\
t6##LayoutType LAYOUT_PREFIX_##t6()6;\
t7##LayoutType LAYOUT_PREFIX_##t7()7;\
t8##LayoutType LAYOUT_PREFIX_##t8()8;\
t9##LayoutType LAYOUT_PREFIX_##t9()9;\
t10##LayoutType LAYOUT_PREFIX_##t10()10;\
t11##LayoutType LAYOUT_PREFIX_##t11()11;\
t12##LayoutType LAYOUT_PREFIX_##t12()12;\
t13##LayoutType LAYOUT_PREFIX_##t13()13;\
t14##LayoutType LAYOUT_PREFIX_##t14()14;\
t15##LayoutType LAYOUT_PREFIX_##t15()15;\
t16##LayoutType LAYOUT_PREFIX_##t16()16;\
t17##LayoutType LAYOUT_PREFIX_##t17()17;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\
t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\
t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\
t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\
t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\
t10##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10);\
t11##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11);\
t12##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12);\
t13##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13);\
t14##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14);\
t15##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15);\
t16##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16);\
t17##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t17(), 17);\
};
#define LAYOUT_TYPE_WMS_REG19(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9, t10, t11, t12, t13, t14, t15, t16, t17, t18)\
template <typename SizePolicy> struct OpLayoutT_##layout\
{\
t0##LayoutType LAYOUT_PREFIX_##t0()0;\
t1##LayoutType LAYOUT_PREFIX_##t1()1;\
t2##LayoutType LAYOUT_PREFIX_##t2()2;\
t3##LayoutType LAYOUT_PREFIX_##t3()3;\
t4##LayoutType LAYOUT_PREFIX_##t4()4;\
t5##LayoutType LAYOUT_PREFIX_##t5()5;\
t6##LayoutType LAYOUT_PREFIX_##t6()6;\
t7##LayoutType LAYOUT_PREFIX_##t7()7;\
t8##LayoutType LAYOUT_PREFIX_##t8()8;\
t9##LayoutType LAYOUT_PREFIX_##t9()9;\
t10##LayoutType LAYOUT_PREFIX_##t10()10;\
t11##LayoutType LAYOUT_PREFIX_##t11()11;\
t12##LayoutType LAYOUT_PREFIX_##t12()12;\
t13##LayoutType LAYOUT_PREFIX_##t13()13;\
t14##LayoutType LAYOUT_PREFIX_##t14()14;\
t15##LayoutType LAYOUT_PREFIX_##t15()15;\
t16##LayoutType LAYOUT_PREFIX_##t16()16;\
t17##LayoutType LAYOUT_PREFIX_##t17()17;\
t18##LayoutType LAYOUT_PREFIX_##t18()18;\
t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\
t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\
t2##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2);\
t3##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3);\
t4##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4);\
t5##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5);\
t6##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6);\
t7##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7);\
t8##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8);\
t9##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9);\
t10##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10);\
t11##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11);\
t12##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12);\
t13##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13);\
t14##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14);\
t15##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15);\
t16##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16);\
t17##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t17(), 17);\
t18##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t18(), 18);\
};
#include "LayoutTypesAsmJs.h"
#undef RegLayoutType
Expand Down
20 changes: 20 additions & 0 deletions lib/WasmReader/CMakeLists.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
add_library (Chakra.WasmReader OBJECT

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: unneeded extra blank line

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will remove.

WasmReaderPch.cpp
WasmDataSegment.cpp
WasmFunctionInfo.cpp
WasmModule.cpp
WasmSection.cpp
WasmSignature.cpp
WasmBinaryReader.cpp
WasmByteCodeGenerator.cpp
)

target_include_directories (
Chakra.WasmReader PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}
../JITIDL
../Backend
../Runtime
../Runtime/ByteCode
../Parser
)
13 changes: 4 additions & 9 deletions lib/WasmReader/WasmBinaryReader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@

#include "WasmReaderPch.h"


#ifdef ENABLE_WASM

namespace Wasm
Expand Down Expand Up @@ -174,11 +173,7 @@ WasmBinaryReader::ReadSectionHeader()

#if ENABLE_DEBUG_CONFIG_OPTIONS
Assert(idSize < 64);
char16 buf[64];
size_t convertedChars = 0;
mbstowcs_s(&convertedChars, buf, idSize + 1, sectionName, _TRUNCATE);
buf[idSize] = 0;
TRACE_WASM_SECTION(_u("Section Header: %s, length = %u (0x%x)"), buf, sectionSize, sectionSize);
TRACE_WASM_SECTION(_u("Section Header: %s, length = %u (0x%x)"), sectionName, sectionSize, sectionSize);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

sectionName is a char* does it work in with a printf function using a char16 format string ?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure if %S will work here to print char string. If that doesn't, try use utf8::NarrowToWide

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had changed sectionName to wchar_t to avoid the use of mbstowcs_s in linux to get around a method not defined error. Will change this back to char16* and look for another workaround to make it compile in xplat.

#endif
return header;
}
Expand Down Expand Up @@ -217,7 +212,7 @@ WasmBinaryReader::PrintOps()
case opcode: \
Output::Print(_u("%s\r\n"), _u(#opname)); \
break;
#include "WasmBinaryOpcodes.h"
#include "WasmBinaryOpCodes.h"
}
}
HeapDeleteArray(m_ops->Count(), ops);
Expand Down Expand Up @@ -372,7 +367,7 @@ WasmBinaryReader::ReadExpr()
case wb##opname: \
m_currentNode.op = MemNode(op); \
break;
#include "WasmBinaryOpcodes.h"
#include "WasmBinaryOpCodes.h"
default:
m_currentNode.op = op;
}
Expand Down Expand Up @@ -677,7 +672,7 @@ WasmBinaryReader::ReadDataSegments()

for (uint32 i = 0; i < entries; ++i)
{
TRACE_WASM_DECODER(L"Data Segment #%u", i);
TRACE_WASM_DECODER(_u("Data Segment #%u"), i);
UINT32 offset = LEB128(len);
UINT32 dataByteLen = LEB128(len);
WasmDataSegment *dseg = Anew(m_alloc, WasmDataSegment, m_alloc, offset, dataByteLen, m_pc);
Expand Down
8 changes: 4 additions & 4 deletions lib/WasmReader/WasmByteCodeGenerator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
namespace Wasm
{
#define WASM_SIGNATURE(id, nTypes, ...) const WasmTypes::WasmType WasmOpCodeSignatures::id[] = {__VA_ARGS__};
#include "WasmBinaryOpcodes.h"
#include "WasmBinaryOpCodes.h"

#if DBG_DUMP
void
Expand Down Expand Up @@ -476,7 +476,7 @@ WasmBytecodeGenerator::EmitExpr(WasmOp op)
#define WASM_OPCODE(opname, opcode, sig, nyi) \
case opcode: \
if (nyi) throw WasmCompilationException(_u("Operator %s NYI"), _u(#opname)); break;
#include "WasmBinaryOpcodes.h"
#include "WasmBinaryOpCodes.h"
default:
break;
}
Expand Down Expand Up @@ -746,7 +746,7 @@ WasmBytecodeGenerator::EmitCall()
funcNum = GetReader()->m_currentNode.call.num;
if (funcNum >= m_module->GetImportCount())
{
throw WasmCompilationException(L"Call is to unknown function");
throw WasmCompilationException(_u("Call is to unknown function"));
}
uint sigId = m_module->GetFunctionImport(funcNum)->sigId;
calleeSignature = m_module->GetSignature(sigId);
Expand Down Expand Up @@ -993,7 +993,7 @@ WasmBytecodeGenerator::EmitBrTable()
EmitInfo scrutineeInfo = PopEvalStack();
if (scrutineeInfo.type != WasmTypes::I32)
{
throw WasmCompilationException(L"br_table expression must be of type I32");
throw WasmCompilationException(_u("br_table expression must be of type I32"));
}

m_writer.AsmReg2(Js::OpCodeAsmJs::BeginSwitch_Int, scrutineeInfo.location, scrutineeInfo.location);
Expand Down
Loading