diff --git a/lib/CMakeLists.txt b/lib/CMakeLists.txt index f0bb0d7e944..d09b52a4c8f 100644 --- a/lib/CMakeLists.txt +++ b/lib/CMakeLists.txt @@ -4,6 +4,7 @@ if(BuildJIT) add_subdirectory (Backend) endif() +add_subdirectory (WasmReader) add_subdirectory (Common) add_subdirectory (Parser) add_subdirectory (Runtime) diff --git a/lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp b/lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp index 588f54921ef..3d55b728179 100644 --- a/lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp +++ b/lib/Runtime/ByteCode/AsmJsByteCodeDumper.cpp @@ -412,7 +412,7 @@ namespace Js void AsmJsByteCodeDumper::DumpUint8x16Reg(RegSlot reg) { Output::Print(_u("U16_%d "), (int)reg); - } + } // Bool32x4 void AsmJsByteCodeDumper::DumpBool32x4Reg(RegSlot reg) { @@ -767,161 +767,161 @@ namespace Js #define LAYOUT_TYPE_WMS_REG2(layout, t0, t1) \ template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ } #define LAYOUT_TYPE_WMS_REG3(layout, t0, t1, t2) \ template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ } #define LAYOUT_TYPE_WMS_REG4(layout, t0, t1, t2, t3)\ template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ }; #define LAYOUT_TYPE_WMS_REG5(layout, t0, t1, t2, t3, t4)\ template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ }; #define LAYOUT_TYPE_WMS_REG6(layout, t0, t1, t2, t3, t4, t5)\ template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ - Dump##t5##Reg(data->LAYOUT_PREFIX_##t5()5);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ }; #define LAYOUT_TYPE_WMS_REG7(layout, t0, t1, t2, t3, t4, t5, t6)\ template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ - Dump##t5##Reg(data->LAYOUT_PREFIX_##t5()5);\ - Dump##t6##Reg(data->LAYOUT_PREFIX_##t6()6);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ }; #define LAYOUT_TYPE_WMS_REG9(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8)\ template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ - Dump##t5##Reg(data->LAYOUT_PREFIX_##t5()5);\ - Dump##t6##Reg(data->LAYOUT_PREFIX_##t6()6);\ - Dump##t7##Reg(data->LAYOUT_PREFIX_##t7()7);\ - Dump##t8##Reg(data->LAYOUT_PREFIX_##t8()8);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ }; #define LAYOUT_TYPE_WMS_REG10(layout, t0, t1, t2, t3, t4, t5, t6, t7, t8, t9)\ template void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ - Dump##t5##Reg(data->LAYOUT_PREFIX_##t5()5);\ - Dump##t6##Reg(data->LAYOUT_PREFIX_##t6()6);\ - Dump##t7##Reg(data->LAYOUT_PREFIX_##t7()7);\ - Dump##t8##Reg(data->LAYOUT_PREFIX_##t8()8);\ - Dump##t9##Reg(data->LAYOUT_PREFIX_##t9()9);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->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 void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ - Dump##t5##Reg(data->LAYOUT_PREFIX_##t5()5);\ - Dump##t6##Reg(data->LAYOUT_PREFIX_##t6()6);\ - Dump##t7##Reg(data->LAYOUT_PREFIX_##t7()7);\ - Dump##t8##Reg(data->LAYOUT_PREFIX_##t8()8);\ - Dump##t9##Reg(data->LAYOUT_PREFIX_##t9()9);\ - Dump##t10##Reg(data->LAYOUT_PREFIX_##t10()10);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + Dump##t10##Reg(data->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 void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ - Dump##t5##Reg(data->LAYOUT_PREFIX_##t5()5);\ - Dump##t6##Reg(data->LAYOUT_PREFIX_##t6()6);\ - Dump##t7##Reg(data->LAYOUT_PREFIX_##t7()7);\ - Dump##t8##Reg(data->LAYOUT_PREFIX_##t8()8);\ - Dump##t9##Reg(data->LAYOUT_PREFIX_##t9()9);\ - Dump##t10##Reg(data->LAYOUT_PREFIX_##t10()10);\ - Dump##t11##Reg(data->LAYOUT_PREFIX_##t11()11);\ - Dump##t12##Reg(data->LAYOUT_PREFIX_##t12()12);\ - Dump##t13##Reg(data->LAYOUT_PREFIX_##t13()13);\ - Dump##t14##Reg(data->LAYOUT_PREFIX_##t14()14);\ - Dump##t15##Reg(data->LAYOUT_PREFIX_##t15()15);\ - Dump##t16##Reg(data->LAYOUT_PREFIX_##t16()16);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + Dump##t10##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10));\ + Dump##t11##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11));\ + Dump##t12##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12));\ + Dump##t13##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13));\ + Dump##t14##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14));\ + Dump##t15##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15));\ + Dump##t16##Reg(data->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 void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ - Dump##t5##Reg(data->LAYOUT_PREFIX_##t5()5);\ - Dump##t6##Reg(data->LAYOUT_PREFIX_##t6()6);\ - Dump##t7##Reg(data->LAYOUT_PREFIX_##t7()7);\ - Dump##t8##Reg(data->LAYOUT_PREFIX_##t8()8);\ - Dump##t9##Reg(data->LAYOUT_PREFIX_##t9()9);\ - Dump##t10##Reg(data->LAYOUT_PREFIX_##t10()10);\ - Dump##t11##Reg(data->LAYOUT_PREFIX_##t11()11);\ - Dump##t12##Reg(data->LAYOUT_PREFIX_##t12()12);\ - Dump##t13##Reg(data->LAYOUT_PREFIX_##t13()13);\ - Dump##t14##Reg(data->LAYOUT_PREFIX_##t14()14);\ - Dump##t15##Reg(data->LAYOUT_PREFIX_##t15()15);\ - Dump##t16##Reg(data->LAYOUT_PREFIX_##t16()16);\ - Dump##t17##Reg(data->LAYOUT_PREFIX_##t17()17);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + Dump##t10##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10));\ + Dump##t11##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11));\ + Dump##t12##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12));\ + Dump##t13##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13));\ + Dump##t14##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14));\ + Dump##t15##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15));\ + Dump##t16##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16));\ + Dump##t17##Reg(data->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 void AsmJsByteCodeDumper::Dump##layout(OpCodeAsmJs op, const unaligned T * data, FunctionBody * dumpFunction, ByteCodeReader& reader)\ {\ - Dump##t0##Reg(data->LAYOUT_PREFIX_##t0()0);\ - Dump##t1##Reg(data->LAYOUT_PREFIX_##t1()1);\ - Dump##t2##Reg(data->LAYOUT_PREFIX_##t2()2);\ - Dump##t3##Reg(data->LAYOUT_PREFIX_##t3()3);\ - Dump##t4##Reg(data->LAYOUT_PREFIX_##t4()4);\ - Dump##t5##Reg(data->LAYOUT_PREFIX_##t5()5);\ - Dump##t6##Reg(data->LAYOUT_PREFIX_##t6()6);\ - Dump##t7##Reg(data->LAYOUT_PREFIX_##t7()7);\ - Dump##t8##Reg(data->LAYOUT_PREFIX_##t8()8);\ - Dump##t9##Reg(data->LAYOUT_PREFIX_##t9()9);\ - Dump##t10##Reg(data->LAYOUT_PREFIX_##t10()10);\ - Dump##t11##Reg(data->LAYOUT_PREFIX_##t11()11);\ - Dump##t12##Reg(data->LAYOUT_PREFIX_##t12()12);\ - Dump##t13##Reg(data->LAYOUT_PREFIX_##t13()13);\ - Dump##t14##Reg(data->LAYOUT_PREFIX_##t14()14);\ - Dump##t15##Reg(data->LAYOUT_PREFIX_##t15()15);\ - Dump##t16##Reg(data->LAYOUT_PREFIX_##t16()16);\ - Dump##t17##Reg(data->LAYOUT_PREFIX_##t17()17);\ - Dump##t18##Reg(data->LAYOUT_PREFIX_##t18()18);\ + Dump##t0##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0));\ + Dump##t1##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1));\ + Dump##t2##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t2(), 2));\ + Dump##t3##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t3(), 3));\ + Dump##t4##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t4(), 4));\ + Dump##t5##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t5(), 5));\ + Dump##t6##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t6(), 6));\ + Dump##t7##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t7(), 7));\ + Dump##t8##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t8(), 8));\ + Dump##t9##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t9(), 9));\ + Dump##t10##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t10(), 10));\ + Dump##t11##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t11(), 11));\ + Dump##t12##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t12(), 12));\ + Dump##t13##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t13(), 13));\ + Dump##t14##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t14(), 14));\ + Dump##t15##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t15(), 15));\ + Dump##t16##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t16(), 16));\ + Dump##t17##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t17(), 17));\ + Dump##t18##Reg(data->LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t18(), 18));\ }; #include "LayoutTypesAsmJs.h" diff --git a/lib/Runtime/ByteCode/OpLayoutsAsmJs.h b/lib/Runtime/ByteCode/OpLayoutsAsmJs.h index d685babd978..fce8a090621 100644 --- a/lib/Runtime/ByteCode/OpLayoutsAsmJs.h +++ b/lib/Runtime/ByteCode/OpLayoutsAsmJs.h @@ -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 struct OpLayoutT_##layout\ {\ - t0##LayoutType LAYOUT_PREFIX_##t0()0;\ - t1##LayoutType LAYOUT_PREFIX_##t1()1;\ + t0##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t0(), 0);\ + t1##LayoutType LAYOUT_FIELDS_DEF(LAYOUT_PREFIX_##t1(), 1);\ }; #define LAYOUT_TYPE_WMS_REG3(layout, t0, t1, t2) \ template 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 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 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 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 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 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 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 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 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 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 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 diff --git a/lib/WasmReader/CMakeLists.txt b/lib/WasmReader/CMakeLists.txt new file mode 100644 index 00000000000..965c5d2bdae --- /dev/null +++ b/lib/WasmReader/CMakeLists.txt @@ -0,0 +1,20 @@ +add_library (Chakra.WasmReader OBJECT + + 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 + ) diff --git a/lib/WasmReader/WasmBinaryReader.cpp b/lib/WasmReader/WasmBinaryReader.cpp index cf77d11af24..908cb208184 100644 --- a/lib/WasmReader/WasmBinaryReader.cpp +++ b/lib/WasmReader/WasmBinaryReader.cpp @@ -5,7 +5,6 @@ #include "WasmReaderPch.h" - #ifdef ENABLE_WASM namespace Wasm @@ -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); #endif return header; } @@ -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); @@ -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; } @@ -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); diff --git a/lib/WasmReader/WasmByteCodeGenerator.cpp b/lib/WasmReader/WasmByteCodeGenerator.cpp index fffbaabdcf8..0e2ecc252b5 100644 --- a/lib/WasmReader/WasmByteCodeGenerator.cpp +++ b/lib/WasmReader/WasmByteCodeGenerator.cpp @@ -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 @@ -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; } @@ -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); @@ -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); diff --git a/lib/WasmReader/WasmModule.cpp b/lib/WasmReader/WasmModule.cpp index 8e465d452df..4469cbaac15 100644 --- a/lib/WasmReader/WasmModule.cpp +++ b/lib/WasmReader/WasmModule.cpp @@ -234,7 +234,7 @@ void WasmModule::SetStartFunction(uint32 i) { if (i >= m_funcCount) { - TRACE_WASM_DECODER(L"Invalid start function index"); + TRACE_WASM_DECODER(_u("Invalid start function index")); return; } m_startFuncIndex = i; diff --git a/lib/WasmReader/WasmParseTree.h b/lib/WasmReader/WasmParseTree.h index 2e75bde1cfd..f17b8b41031 100644 --- a/lib/WasmReader/WasmParseTree.h +++ b/lib/WasmReader/WasmParseTree.h @@ -26,13 +26,13 @@ namespace Wasm struct WasmOpCodeSignatures { #define WASM_SIGNATURE(id, nTypes, ...) static const WasmTypes::WasmType id[nTypes]; DebugOnly(static const int n##id = nTypes;) -#include "WasmBinaryOpcodes.h" +#include "WasmBinaryOpCodes.h" }; enum WasmOp : byte { #define WASM_OPCODE(opname, opcode, sig, nyi) wb##opname = opcode, -#include "WasmBinaryOpcodes.h" +#include "WasmBinaryOpCodes.h" wbFuncEnd, wbLimit }; diff --git a/lib/WasmReader/WasmReader.h b/lib/WasmReader/WasmReader.h index e5c90bc0866..71c4d175544 100644 --- a/lib/WasmReader/WasmReader.h +++ b/lib/WasmReader/WasmReader.h @@ -66,12 +66,12 @@ namespace Wasm #include "WasmSection.h" #include "WasmBinaryReader.h" -#include "WasmBytecodeGenerator.h" +#include "WasmByteCodeGenerator.h" // TODO (michhol): cleanup includes -#include "Bytecode/AsmJsByteCodeWriter.h" -#include "Bytecode/ByteCodeDumper.h" -#include "Bytecode/AsmJsByteCodeDumper.h" -#include "Language/AsmJSTypes.h" +#include "ByteCode/AsmJsByteCodeWriter.h" +#include "ByteCode/ByteCodeDumper.h" +#include "ByteCode/AsmJsByteCodeDumper.h" +#include "Language/AsmJsTypes.h" #endif // ENABLE_WASM diff --git a/lib/WasmReader/WasmReaderPch.h b/lib/WasmReader/WasmReaderPch.h index 4c3c3f8af27..b5e761a8ff7 100644 --- a/lib/WasmReader/WasmReaderPch.h +++ b/lib/WasmReader/WasmReaderPch.h @@ -5,8 +5,6 @@ #pragma once -#include - // Parser Includes #include "WasmReader.h" @@ -16,4 +14,4 @@ #endif // Runtime includes -#include "../Runtime/runtime.h" +#include "../Runtime/Runtime.h" diff --git a/lib/WasmReader/WasmSection.cpp b/lib/WasmReader/WasmSection.cpp index 1dfd644583e..1adbc54a837 100644 --- a/lib/WasmReader/WasmSection.cpp +++ b/lib/WasmReader/WasmSection.cpp @@ -9,7 +9,7 @@ namespace Wasm { SectionInfo SectionInfo::All[bSectLimit] = { -#define WASM_SECTION(name, id, flag, precedent) {flag, bSect ## precedent, L#name, id}, +#define WASM_SECTION(name, id, flag, precedent) {flag, bSect ## precedent, static_cast(_u(#name)), static_cast(id)}, #include "WasmSections.h" }; } diff --git a/lib/WasmReader/WasmSection.h b/lib/WasmReader/WasmSection.h index 5e424c4fec4..f17e33a3f06 100644 --- a/lib/WasmReader/WasmSection.h +++ b/lib/WasmReader/WasmSection.h @@ -27,8 +27,8 @@ namespace Wasm { SectionFlag flag; SectionCode precedent; - char16* name; - char* id; + const wchar_t* name; + const char* id; static SectionInfo All[bSectLimit]; }; }