diff --git a/bin/ch/Helpers.cpp b/bin/ch/Helpers.cpp index 9d3101450b3..ee27b43ce64 100644 --- a/bin/ch/Helpers.cpp +++ b/bin/ch/Helpers.cpp @@ -35,36 +35,51 @@ void TTDHostInitFromUriBytes(TTDHostCharType* dst, const byte* uriBytes, size_t AssertMsg(wcslen(dst) == (uriBytesLength / sizeof(TTDHostCharType)), "We have an null in the uri or our math is wrong somewhere."); } -void TTDHostAppend(TTDHostCharType* dst, const TTDHostCharType* src) +void TTDHostAppend(TTDHostCharType* dst, size_t dstLength, const TTDHostCharType* src) { - size_t dpos = TTDHostStringLength(dst); size_t srcLength = TTDHostStringLength(src); + size_t dpos = TTDHostStringLength(dst); + Helpers::TTReportLastIOErrorAsNeeded(dpos < dstLength, "The end of the string already exceeds the buffer"); + size_t srcByteLength = srcLength * sizeof(TTDHostCharType); + size_t dstRemainingByteLength = (dstLength - dpos - 1) * sizeof(TTDHostCharType); + Helpers::TTReportLastIOErrorAsNeeded(srcByteLength <= dstRemainingByteLength, "The source string must be able to fit within the destination buffer"); - memcpy_s(dst + dpos, srcByteLength, src, srcByteLength); + memcpy_s(dst + dpos, dstRemainingByteLength, src, srcByteLength); dst[dpos + srcLength] = _u('\0'); } -void TTDHostAppendWChar(TTDHostCharType* dst, const wchar* src) +void TTDHostAppendWChar(TTDHostCharType* dst, size_t dstLength, const wchar* src) { - size_t dpos = TTDHostStringLength(dst); size_t srcLength = wcslen(src); + size_t dpos = TTDHostStringLength(dst); + Helpers::TTReportLastIOErrorAsNeeded(dpos < dstLength, "The end of the string already exceeds the buffer"); + + size_t dstRemainingLength = dstLength - dpos - 1; + Helpers::TTReportLastIOErrorAsNeeded(srcLength <= dstRemainingLength, "The source string must be able to fit within the destination buffer"); for(size_t i = 0; i < srcLength; ++i) { dst[dpos + i] = (char16)src[i]; } + dst[dpos + srcLength] = _u('\0'); } -void TTDHostAppendAscii(TTDHostCharType* dst, const char* src) +void TTDHostAppendAscii(TTDHostCharType* dst, size_t dstLength, const char* src) { - size_t dpos = TTDHostStringLength(dst); size_t srcLength = strlen(src); + size_t dpos = TTDHostStringLength(dst); + Helpers::TTReportLastIOErrorAsNeeded(dpos < dstLength, "The end of the string already exceeds the buffer"); + + size_t dstRemainingLength = dstLength - dpos - 1; + Helpers::TTReportLastIOErrorAsNeeded(srcLength <= dstRemainingLength, "The source string must be able to fit within the destination buffer"); + for(size_t i = 0; i < srcLength; ++i) { dst[dpos + i] = (char16)src[i]; } + dst[dpos + srcLength] = _u('\0'); } @@ -80,7 +95,7 @@ void TTDHostBuildCurrentExeDirectory(TTDHostCharType* path, size_t pathBufferLen } exePath[i + 1] = _u('\0'); - TTDHostAppendWChar(path, exePath); + TTDHostAppendWChar(path, pathBufferLength, exePath); } JsTTDStreamHandle TTDHostOpen(const TTDHostCharType* path, bool isWrite) @@ -91,8 +106,8 @@ JsTTDStreamHandle TTDHostOpen(const TTDHostCharType* path, bool isWrite) return (JsTTDStreamHandle)res; } -#define TTDHostCWD(dst) _wgetcwd(dst, MAX_PATH) -#define TTDDoPathInit(dst) +#define TTDHostCWD(dst, dstLength) _wgetcwd(dst, dstLength) +#define TTDDoPathInit(dst, dstLength) #define TTDHostTok(opath, TTDHostPathSeparator, context) wcstok_s(opath, TTDHostPathSeparator, context) #define TTDHostStat(cpath, statVal) _wstat(cpath, statVal) @@ -148,30 +163,44 @@ void TTDHostInitFromUriBytes(TTDHostCharType* dst, const byte* uriBytes, size_t AssertMsg(TTDHostStringLength(dst) == (uriBytesLength / sizeof(TTDHostCharType)), "We have an null in the uri or our math is wrong somewhere."); } -void TTDHostAppend(TTDHostCharType* dst, const TTDHostCharType* src) +void TTDHostAppend(TTDHostCharType* dst, size_t dstLength, const TTDHostCharType* src) { - size_t dpos = TTDHostStringLength(dst); size_t srcLength = TTDHostStringLength(src); + size_t dpos = TTDHostStringLength(dst); + Helpers::TTReportLastIOErrorAsNeeded(dpos < dstLength, "The end of the string already exceeds the buffer"); + size_t srcByteLength = srcLength * sizeof(TTDHostCharType); + size_t dstRemainingByteLength = (dstLength - dpos - 1) * sizeof(TTDHostCharType); + Helpers::TTReportLastIOErrorAsNeeded(srcByteLength <= dstRemainingByteLength, "The source string must be able to fit within the destination buffer"); - memcpy_s(dst + dpos, srcByteLength, src, srcByteLength); + memcpy_s(dst + dpos, dstRemainingByteLength, src, srcByteLength); dst[dpos + srcLength] = '\0'; } -void TTDHostAppendWChar(TTDHostCharType* dst, const wchar* src) +void TTDHostAppendWChar(TTDHostCharType* dst, size_t dstLength, const wchar* src) { - size_t dpos = TTDHostStringLength(dst); size_t srcLength = wcslen(src); + size_t dpos = TTDHostStringLength(dst); + Helpers::TTReportLastIOErrorAsNeeded(dpos < dstLength, "The end of the string already exceeds the buffer"); + + size_t dstRemainingLength = dstLength - dpos - 1; + Helpers::TTReportLastIOErrorAsNeeded(srcLength <= dstRemainingLength, "The source string must be able to fit within the destination buffer"); + + // TODO - analyze this function further utf8::EncodeIntoAndNullTerminate(dst + dpos, src, srcLength); } -void TTDHostAppendAscii(TTDHostCharType* dst, const char* src) +void TTDHostAppendAscii(TTDHostCharType* dst, size_t dstLength, const char* src) { - size_t dpos = TTDHostStringLength(dst); size_t srcLength = strlen(src); + size_t dpos = TTDHostStringLength(dst); + Helpers::TTReportLastIOErrorAsNeeded(dpos < dstLength, "The end of the string already exceeds the buffer"); + size_t srcByteLength = srcLength * sizeof(TTDHostCharType); + size_t dstRemainingByteLength = (dstLength - dpos - 1) * sizeof(TTDHostCharType); + Helpers::TTReportLastIOErrorAsNeeded(srcByteLength <= dstRemainingByteLength, "The source string must be able to fit within the destination buffer"); - memcpy_s(dst + dpos, srcByteLength, src, srcByteLength); + memcpy_s(dst + dpos, dstRemainingByteLength, src, srcByteLength); dst[dpos + srcLength] = '\0'; } @@ -192,9 +221,10 @@ void TTDHostBuildCurrentExeDirectory(TTDHostCharType* path, size_t pathBufferLen { --i; } + exePath[i + 1] = '\0'; - TTDHostAppend(path, exePath); + TTDHostAppend(path, pathBufferLength, exePath); } JsTTDStreamHandle TTDHostOpen(const TTDHostCharType* path, bool isWrite) @@ -202,8 +232,8 @@ JsTTDStreamHandle TTDHostOpen(const TTDHostCharType* path, bool isWrite) return (JsTTDStreamHandle)fopen(TTDHostCharConvert(path), isWrite ? "w+b" : "r+b"); } -#define TTDHostCWD(dst) TTDHostUtf8CharConvert(getcwd(TTDHostCharConvert(dst), MAX_PATH)) -#define TTDDoPathInit(dst) TTDHostAppend(dst, TTDHostPathSeparator) +#define TTDHostCWD(dst, dstLength) TTDHostUtf8CharConvert(getcwd(TTDHostCharConvert(dst), dstLength)) +#define TTDDoPathInit(dst, dstLength) TTDHostAppend(dst, dstLength, TTDHostPathSeparator) #define TTDHostTok(opath, TTDHostPathSeparator, context) TTDHostUtf8CharConvert(strtok(TTDHostCharConvert(opath), TTDHostCharConvert(TTDHostPathSeparator))) #define TTDHostStat(cpath, statVal) stat(TTDHostCharConvert(cpath), statVal) @@ -504,6 +534,7 @@ HRESULT Helpers::LoadBinaryFile(LPCSTR filename, LPCSTR& contents, UINT& lengthB return hr; } + void Helpers::TTReportLastIOErrorAsNeeded(BOOL ok, const char* msg) { if(!ok) @@ -530,19 +561,19 @@ void Helpers::CreateDirectoryIfNeeded(size_t uriByteLength, const byte* uriBytes TTDHostCharType cpath[MAX_PATH]; TTDHostInitEmpty(cpath); - TTDDoPathInit(cpath); + TTDDoPathInit(cpath, MAX_PATH); TTDHostStatType statVal; TTDHostCharType* context = nullptr; TTDHostCharType* token = TTDHostTok(opath, TTDHostPathSeparator, &context); - TTDHostAppend(cpath, token); + TTDHostAppend(cpath, MAX_PATH, token); //At least 1 part of the path must exist so iterate until we find it while(TTDHostStat(cpath, &statVal) == -1) { token = TTDHostTok(nullptr, TTDHostPathSeparator, &context); - TTDHostAppend(cpath, TTDHostPathSeparator); - TTDHostAppend(cpath, token); + TTDHostAppend(cpath, MAX_PATH, TTDHostPathSeparator); + TTDHostAppend(cpath, MAX_PATH, token); } //Now continue until we hit the part that doesn't exist (or the end of the path) @@ -551,8 +582,8 @@ void Helpers::CreateDirectoryIfNeeded(size_t uriByteLength, const byte* uriBytes token = TTDHostTok(nullptr, TTDHostPathSeparator, &context); if(token != nullptr) { - TTDHostAppend(cpath, TTDHostPathSeparator); - TTDHostAppend(cpath, token); + TTDHostAppend(cpath, MAX_PATH, TTDHostPathSeparator); + TTDHostAppend(cpath, MAX_PATH, token); } } @@ -569,8 +600,8 @@ void Helpers::CreateDirectoryIfNeeded(size_t uriByteLength, const byte* uriBytes token = TTDHostTok(nullptr, TTDHostPathSeparator, &context); if(token != nullptr) { - TTDHostAppend(cpath, TTDHostPathSeparator); - TTDHostAppend(cpath, token); + TTDHostAppend(cpath, MAX_PATH, TTDHostPathSeparator); + TTDHostAppend(cpath, MAX_PATH, token); } } } @@ -582,7 +613,7 @@ void Helpers::CleanDirectory(size_t uriByteLength, const byte* uriBytes) TTDHostCharType strPattern[MAX_PATH]; TTDHostInitFromUriBytes(strPattern, uriBytes, uriByteLength); - TTDHostAppendAscii(strPattern, "*.*"); + TTDHostAppendAscii(strPattern, MAX_PATH, "*.*"); hFile = TTDHostFindFirst(strPattern, &FileInformation); if(hFile != TTDHostFindInvalid) @@ -593,7 +624,7 @@ void Helpers::CleanDirectory(size_t uriByteLength, const byte* uriBytes) { TTDHostCharType strFilePath[MAX_PATH]; TTDHostInitFromUriBytes(strFilePath, uriBytes, uriByteLength); - TTDHostAppend(strFilePath, TTDHostDirInfoName(FileInformation)); + TTDHostAppend(strFilePath, MAX_PATH, TTDHostDirInfoName(FileInformation)); // Set file attributes int statusch = TTDHostCHMod(strFilePath, S_IREAD | S_IWRITE); @@ -616,27 +647,27 @@ void Helpers::GetTTDDirectory(const wchar* curi, size_t* uriByteLength, byte* ur if(curi[0] != _u('~')) { - TTDHostCharType* status = TTDHostCWD(turi); + TTDHostCharType* status = TTDHostCWD(turi, MAX_PATH); Helpers::TTReportLastIOErrorAsNeeded(status != nullptr, "Failed to chmod directory"); - TTDHostAppend(turi, TTDHostPathSeparator); + TTDHostAppend(turi, MAX_PATH, TTDHostPathSeparator); - TTDHostAppendWChar(turi, curi); + TTDHostAppendWChar(turi, MAX_PATH, curi); } else { TTDHostBuildCurrentExeDirectory(turi, MAX_PATH); - TTDHostAppendAscii(turi, "_ttdlog"); - TTDHostAppend(turi, TTDHostPathSeparator); + TTDHostAppendAscii(turi, MAX_PATH, "_ttdlog"); + TTDHostAppend(turi, MAX_PATH, TTDHostPathSeparator); - TTDHostAppendWChar(turi, curi + 1); + TTDHostAppendWChar(turi, MAX_PATH, curi + 1); } //add a path separator if one is not already present if(curi[wcslen(curi) - 1] != (wchar)TTDHostPathSeparatorChar) { - TTDHostAppend(turi, TTDHostPathSeparator); + TTDHostAppend(turi, MAX_PATH, TTDHostPathSeparator); } size_t turiLength = TTDHostStringLength(turi); @@ -665,7 +696,7 @@ JsTTDStreamHandle CALLBACK Helpers::TTCreateStreamCallback(size_t uriByteLength, void* res = nullptr; TTDHostCharType path[MAX_PATH]; TTDHostInitFromUriBytes(path, uriBytes, uriByteLength); - TTDHostAppendAscii(path, asciiResourceName); + TTDHostAppendAscii(path, MAX_PATH, asciiResourceName); res = TTDHostOpen(path, write); if(res == nullptr) diff --git a/lib/Backend/Backend.cpp b/lib/Backend/Backend.cpp index 6e43951c934..de6ccd1e616 100644 --- a/lib/Backend/Backend.cpp +++ b/lib/Backend/Backend.cpp @@ -3,3 +3,7 @@ // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #include "Backend.h" + +#if !ENABLE_OOP_NATIVE_CODEGEN +JITManager JITManager::s_jitManager; // dummy object when OOP JIT disabled +#endif diff --git a/lib/Backend/FlowGraph.cpp b/lib/Backend/FlowGraph.cpp index a7b93b1e1a5..a4af0a7cbed 100644 --- a/lib/Backend/FlowGraph.cpp +++ b/lib/Backend/FlowGraph.cpp @@ -323,6 +323,7 @@ FlowGraph::RunPeeps() case Js::OpCode::BrFncCachedScopeNeq: case Js::OpCode::BrOnObject_A: case Js::OpCode::BrOnClassConstructor: + case Js::OpCode::BrOnBaseConstructorKind: if (tryUnsignedCmpPeep) { this->UnsignedCmpPeep(instr); diff --git a/lib/Backend/Inline.cpp b/lib/Backend/Inline.cpp index 80f29742690..875db415543 100644 --- a/lib/Backend/Inline.cpp +++ b/lib/Backend/Inline.cpp @@ -2442,6 +2442,14 @@ IR::Instr * Inline::InlineApplyWithArgumentsObject(IR::Instr * callInstr, IR::In IR::Instr* builtInStartInstr; InsertInlineeBuiltInStartEndTags(callInstr, 3, &builtInStartInstr); //3 args (implicit this + explicit this + arguments = 3) + // Move argouts close to call. Globopt expects this for arguments object tracking. + IR::Instr* argInsertInstr = builtInStartInstr; + builtInStartInstr->IterateArgInstrs([&](IR::Instr* argInstr) { + argInstr->Move(argInsertInstr); + argInsertInstr = argInstr; + return false; + }); + IR::Instr *startCall = IR::Instr::New(Js::OpCode::StartCall, callInstr->m_func); startCall->SetDst(IR::RegOpnd::New(TyVar, callInstr->m_func)); startCall->SetSrc1(IR::IntConstOpnd::New(2, TyInt32, callInstr->m_func)); //2 args (this pointer & ArgOut_A_From_StackArgs for this direct call to init diff --git a/lib/Backend/JnHelperMethodList.h b/lib/Backend/JnHelperMethodList.h index 9bdfadea36b..dea116483b6 100644 --- a/lib/Backend/JnHelperMethodList.h +++ b/lib/Backend/JnHelperMethodList.h @@ -44,6 +44,7 @@ HELPERCALL(ScrObj_OP_IsInst, Js::JavascriptOperators::OP_IsInst, AttrCanThrow) HELPERCALL(Op_IsIn, Js::JavascriptOperators::IsIn, AttrCanThrow) HELPERCALL(Op_IsObject, Js::JavascriptOperators::IsObject, AttrCanThrow) HELPERCALL(Op_IsClassConstructor, Js::JavascriptOperators::IsClassConstructor, AttrCanThrow) +HELPERCALL(Op_IsBaseConstructorKind, Js::JavascriptOperators::IsBaseConstructorKind, AttrCanThrow) HELPERCALL(Op_LoadHeapArguments, Js::JavascriptOperators::LoadHeapArguments, 0) HELPERCALL(Op_LoadHeapArgsCached, Js::JavascriptOperators::LoadHeapArgsCached, 0) HELPERCALL(OP_InitCachedScope, Js::JavascriptOperators::OP_InitCachedScope, 0) diff --git a/lib/Backend/Lower.cpp b/lib/Backend/Lower.cpp index 53ede94958e..14d34997b96 100644 --- a/lib/Backend/Lower.cpp +++ b/lib/Backend/Lower.cpp @@ -2154,6 +2154,10 @@ Lowerer::LowerRange(IR::Instr *instrStart, IR::Instr *instrEnd, bool defaultDoFa } break; + case Js::OpCode::BrOnBaseConstructorKind: + this->LowerBrOnClassConstructor(instr, IR::HelperOp_IsBaseConstructorKind); + break; + case Js::OpCode::BrOnClassConstructor: this->LowerBrOnClassConstructor(instr, IR::HelperOp_IsClassConstructor); break; diff --git a/lib/Backend/LowerMDShared.cpp b/lib/Backend/LowerMDShared.cpp index f81d83879dc..c40508f59f4 100644 --- a/lib/Backend/LowerMDShared.cpp +++ b/lib/Backend/LowerMDShared.cpp @@ -954,6 +954,7 @@ LowererMD::LowerCondBranch(IR::Instr * instr) case Js::OpCode::BrNotNull_A: case Js::OpCode::BrOnObject_A: case Js::OpCode::BrOnClassConstructor: + case Js::OpCode::BrOnBaseConstructorKind: Assert(!opndSrc1->IsFloat64()); AssertMsg(instr->GetSrc2() == nullptr, "Expected 1 src on boolean branch"); instrPrev = IR::Instr::New(Js::OpCode::TEST, this->m_func); diff --git a/lib/Backend/arm/LowerMD.cpp b/lib/Backend/arm/LowerMD.cpp index 02177ab317a..a7aed46b540 100644 --- a/lib/Backend/arm/LowerMD.cpp +++ b/lib/Backend/arm/LowerMD.cpp @@ -2710,6 +2710,7 @@ LowererMD::LowerCondBranch(IR::Instr * instr) case Js::OpCode::BrNotNull_A: case Js::OpCode::BrOnObject_A: case Js::OpCode::BrOnClassConstructor: + case Js::OpCode::BrOnBaseConstructorKind: Assert(!opndSrc1->IsFloat64()); AssertMsg(opndSrc1->IsRegOpnd(),"NYI for other operands"); AssertMsg(instr->GetSrc2() == nullptr, "Expected 1 src on boolean branch"); diff --git a/lib/Common/Common.h b/lib/Common/Common.h index c7fcefd12a9..582728ee1cc 100644 --- a/lib/Common/Common.h +++ b/lib/Common/Common.h @@ -74,7 +74,6 @@ template<> struct IntMath { using Type = Int64Math; }; // Exceptions #include "Exceptions/ExceptionBase.h" -#include "Exceptions/InternalErrorException.h" #include "Exceptions/JavascriptException.h" #include "Exceptions/OutOfMemoryException.h" #include "Exceptions/OperationAbortedException.h" diff --git a/lib/Common/Exceptions/Chakra.Common.Exceptions.vcxproj b/lib/Common/Exceptions/Chakra.Common.Exceptions.vcxproj index 957a9d9da66..2aeac9a8b0f 100644 --- a/lib/Common/Exceptions/Chakra.Common.Exceptions.vcxproj +++ b/lib/Common/Exceptions/Chakra.Common.Exceptions.vcxproj @@ -45,7 +45,6 @@ - diff --git a/lib/Common/Exceptions/InternalErrorException.h b/lib/Common/Exceptions/InternalErrorException.h deleted file mode 100644 index 594430eb962..00000000000 --- a/lib/Common/Exceptions/InternalErrorException.h +++ /dev/null @@ -1,13 +0,0 @@ -//------------------------------------------------------------------------------------------------------- -// 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 { - - class InternalErrorException: public ExceptionBase - { - }; - -} // namespace Js diff --git a/lib/Common/Exceptions/Throw.cpp b/lib/Common/Exceptions/Throw.cpp index 157a99615a1..a7de0e4e2c8 100644 --- a/lib/Common/Exceptions/Throw.cpp +++ b/lib/Common/Exceptions/Throw.cpp @@ -15,7 +15,6 @@ #include "StackOverflowException.h" #include "AsmJsParseException.h" -#include "InternalErrorException.h" #include "OutOfMemoryException.h" #include "NotImplementedException.h" @@ -84,8 +83,7 @@ namespace Js { void Throw::InternalError() { - AssertMsg(false, "Internal error!!"); - throw InternalErrorException(); + AssertOrFailFastMsg(false, "Internal error!!"); } void Throw::OutOfMemory() diff --git a/lib/Common/Exceptions/Throw.h b/lib/Common/Exceptions/Throw.h index aa5de8a3d15..fc0bb938174 100644 --- a/lib/Common/Exceptions/Throw.h +++ b/lib/Common/Exceptions/Throw.h @@ -110,10 +110,6 @@ namespace Js { #define END_TRANSLATE_KNOWN_EXCEPTION_TO_HRESULT(hr) \ } \ - catch (Js::InternalErrorException) \ - { \ - hr = E_FAIL; \ - } \ catch (Js::OutOfMemoryException) \ { \ hr = E_OUTOFMEMORY; \ @@ -135,14 +131,43 @@ namespace Js { hr = JSERR_AsmJsCompileError; \ } +// This should be the inverse of END_TRANSLATE_KNOWN_EXCEPTION_TO_HRESULT, and catch all the same cases. +#define THROW_KNOWN_HRESULT_EXCEPTIONS(hr, scriptContext) \ + if (hr == E_OUTOFMEMORY) \ + { \ + JavascriptError::ThrowOutOfMemoryError(scriptContext); \ + } \ + else if (hr == VBSERR_OutOfStack) \ + { \ + JavascriptError::ThrowStackOverflowError(scriptContext); \ + } \ + else if (hr == E_NOTIMPL) \ + { \ + throw Js::NotImplementedException(); \ + } \ + else if (hr == E_ABORT) \ + { \ + throw Js::ScriptAbortException(); \ + } \ + else if (hr == JSERR_AsmJsCompileError) \ + { \ + throw Js::AsmJsParseException(); \ + } \ + else if (FAILED(hr)) \ + { \ + /* Intended to be the inverse of E_FAIL in CATCH_UNHANDLED_EXCEPTION */ \ + AssertOrFailFast(false); \ + } + #define CATCH_UNHANDLED_EXCEPTION(hr) \ catch (...) \ - { \ - AssertMsg(FALSE, "invalid exception thrown and didn't get handled"); \ - hr = E_FAIL; \ + { \ + AssertOrFailFastMsg(FALSE, "invalid exception thrown and didn't get handled"); \ + hr = E_FAIL; /* Suppress C4701 */ \ } \ } + #define END_TRANSLATE_EXCEPTION_TO_HRESULT(hr) \ END_TRANSLATE_KNOWN_EXCEPTION_TO_HRESULT(hr)\ CATCH_UNHANDLED_EXCEPTION(hr) diff --git a/lib/Common/Memory/PageAllocator.h b/lib/Common/Memory/PageAllocator.h index 6ef7cda6db9..6f0c0f83049 100644 --- a/lib/Common/Memory/PageAllocator.h +++ b/lib/Common/Memory/PageAllocator.h @@ -5,7 +5,6 @@ #pragma once #include "PageAllocatorDefines.h" #include "Exceptions/ExceptionBase.h" -#include "Exceptions/InternalErrorException.h" #ifdef PROFILE_MEM struct PageMemoryData; @@ -400,7 +399,7 @@ class MemoryOperationLastError if (MemOpLastError == 0) { MemOpLastError = GetLastError(); - throw Js::InternalErrorException(); + AssertOrFailFast(false); } } static void CheckProcessAndThrowFatalError(HANDLE hProcess) diff --git a/lib/JITServer/JITServer.cpp b/lib/JITServer/JITServer.cpp index 97bc4f196d8..b2261d7168d 100644 --- a/lib/JITServer/JITServer.cpp +++ b/lib/JITServer/JITServer.cpp @@ -833,17 +833,12 @@ HRESULT ServerCallWrapper(ServerThreadContext* threadContextInfo, Fn fn) { hr = E_ABORT; } - catch (Js::InternalErrorException) - { - hr = E_FAIL; - } catch (...) { - AssertMsg(false, "Unknown exception caught in JIT server call."); - hr = E_FAIL; + AssertOrFailFastMsg(false, "Unknown exception caught in JIT server call."); } - if (hr == E_OUTOFMEMORY || hr == E_FAIL) + if (hr == E_OUTOFMEMORY) { if (HRESULT_FROM_WIN32(MemoryOperationLastError::GetLastError()) != S_OK) { diff --git a/lib/Jsrt/JsrtHelper.cpp b/lib/Jsrt/JsrtHelper.cpp index 10110e99c31..0189de04136 100644 --- a/lib/Jsrt/JsrtHelper.cpp +++ b/lib/Jsrt/JsrtHelper.cpp @@ -3,11 +3,12 @@ // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- -#if !defined(_WIN32) +#include "JsrtPch.h" + +#if !defined(_WIN32) && !defined(__ANDROID__) #include #endif -#include "JsrtPch.h" #include "jsrtHelper.h" #include "Base/ThreadContextTlsEntry.h" diff --git a/lib/Jsrt/JsrtPch.h b/lib/Jsrt/JsrtPch.h index 2291248d852..05cb6e831a2 100644 --- a/lib/Jsrt/JsrtPch.h +++ b/lib/Jsrt/JsrtPch.h @@ -4,5 +4,9 @@ //------------------------------------------------------------------------------------------------------- #pragma once +#if defined(__ANDROID__) +#include +#endif + #include "Runtime.h" #include "JsrtContext.h" diff --git a/lib/Runtime/Base/FunctionBody.cpp b/lib/Runtime/Base/FunctionBody.cpp index 12203ee5ba4..ee8a37d83fb 100644 --- a/lib/Runtime/Base/FunctionBody.cpp +++ b/lib/Runtime/Base/FunctionBody.cpp @@ -900,6 +900,10 @@ namespace Js { functionType->SetEntryPoint(GetScriptContext()->DeferredParsingThunk); } + if (!CrossSite::IsThunk(functionType->GetEntryPointInfo()->jsMethod)) + { + functionType->GetEntryPointInfo()->jsMethod = GetScriptContext()->DeferredParsingThunk; + } }); this->Cleanup(false); @@ -2132,28 +2136,7 @@ namespace Js bool isDebugOrAsmJsReparse = false; FunctionBody* funcBody = nullptr; - // If we throw or fail with the function body in an unfinished state, make sure the function info is still - // pointing to the old ParseableFunctionInfo and has the right attributes. - class AutoRestoreFunctionInfo { - public: - AutoRestoreFunctionInfo(ParseableFunctionInfo *pfi) : pfi(pfi), funcBody(nullptr) {} - ~AutoRestoreFunctionInfo() { - if (this->pfi != nullptr && this->pfi->GetFunctionInfo()->GetFunctionProxy() != this->pfi) - { - FunctionInfo *functionInfo = this->pfi->functionInfo; - functionInfo->SetAttributes( - (FunctionInfo::Attributes)(functionInfo->GetAttributes() | FunctionInfo::Attributes::DeferredParse)); - functionInfo->SetFunctionProxy(this->pfi); - functionInfo->SetOriginalEntryPoint(DefaultEntryThunk); - } - - Assert(this->pfi == nullptr || (this->pfi->GetFunctionInfo()->GetFunctionProxy() == this->pfi && !this->pfi->IsFunctionBody())); - } - void Clear() { pfi = nullptr; funcBody = nullptr; } - - ParseableFunctionInfo * pfi; - FunctionBody * funcBody; - } autoRestoreFunctionInfo(this); + AutoRestoreFunctionInfo autoRestoreFunctionInfo(this, DefaultEntryThunk); // If m_hasBeenParsed = true, one of the following things happened: // - We had multiple function objects which were all defer-parsed, but with the same function body and one of them @@ -2343,22 +2326,7 @@ namespace Js } END_LEAVE_SCRIPT_INTERNAL(m_scriptContext); - if (hr == E_OUTOFMEMORY) - { - JavascriptError::ThrowOutOfMemoryError(m_scriptContext); - } - else if(hr == VBSERR_OutOfStack) - { - JavascriptError::ThrowStackOverflowError(m_scriptContext); - } - else if(hr == E_ABORT) - { - throw Js::ScriptAbortException(); - } - else if(FAILED(hr)) - { - throw Js::InternalErrorException(); - } + THROW_KNOWN_HRESULT_EXCEPTIONS(hr, m_scriptContext); Assert(hr == NO_ERROR); diff --git a/lib/Runtime/Base/FunctionBody.h b/lib/Runtime/Base/FunctionBody.h index 24453c36a87..7b56b07e5ff 100644 --- a/lib/Runtime/Base/FunctionBody.h +++ b/lib/Runtime/Base/FunctionBody.h @@ -3669,6 +3669,30 @@ namespace Js StatementAdjustmentRecordList* GetStatementAdjustmentRecords(); }; + class AutoRestoreFunctionInfo { + public: + AutoRestoreFunctionInfo(ParseableFunctionInfo *pfi, const JavascriptMethod originalEntryPoint) : pfi(pfi), funcBody(nullptr), originalEntryPoint(originalEntryPoint) {} + ~AutoRestoreFunctionInfo() { + if (this->pfi != nullptr && this->pfi->GetFunctionInfo()->GetFunctionProxy() != this->pfi) + { + FunctionInfo *functionInfo = this->pfi->GetFunctionInfo(); + functionInfo->SetAttributes( + (FunctionInfo::Attributes)(functionInfo->GetAttributes() | FunctionInfo::Attributes::DeferredParse)); + functionInfo->SetFunctionProxy(this->pfi); + functionInfo->SetOriginalEntryPoint(originalEntryPoint); + } + + Assert(this->pfi == nullptr || (this->pfi->GetFunctionInfo()->GetFunctionProxy() == this->pfi && !this->pfi->IsFunctionBody())); + } + void Clear() { pfi = nullptr; funcBody = nullptr; } + + ParseableFunctionInfo * pfi; + FunctionBody * funcBody; + const JavascriptMethod originalEntryPoint; + }; + + // If we throw or fail with the function body in an unfinished state, make sure the function info is still + // pointing to the old ParseableFunctionInfo and has the right attributes. typedef SynchronizableList > FunctionBodyList; struct ScopeSlots diff --git a/lib/Runtime/Base/FunctionInfo.h b/lib/Runtime/Base/FunctionInfo.h index 9c40d4ed25b..1cf8ee0a953 100644 --- a/lib/Runtime/Base/FunctionInfo.h +++ b/lib/Runtime/Base/FunctionInfo.h @@ -39,7 +39,8 @@ namespace Js Module = 0x20000, // The function is the function body wrapper for a module EnclosedByGlobalFunc = 0x40000, CanDefer = 0x80000, - AllowDirectSuper = 0x100000 + AllowDirectSuper = 0x100000, + BaseConstructorKind = 0x200000 }; FunctionInfo(JavascriptMethod entryPoint, Attributes attributes = None, LocalFunctionId functionId = Js::Constants::NoFunctionId, FunctionProxy* functionBodyImpl = nullptr); @@ -133,6 +134,8 @@ namespace Js bool GetEnclosedByGlobalFunc() const { return (attributes & Attributes::EnclosedByGlobalFunc) != 0; } void SetAllowDirectSuper() { attributes = (Attributes)(attributes | Attributes::AllowDirectSuper); } bool GetAllowDirectSuper() const { return (attributes & Attributes::AllowDirectSuper) != 0; } + void SetBaseConstructorKind() { attributes = (Attributes)(attributes | Attributes::BaseConstructorKind); } + bool GetBaseConstructorKind() const { return (attributes & Attributes::BaseConstructorKind) != 0; } protected: JavascriptMethod originalEntryPoint; diff --git a/lib/Runtime/ByteCode/ByteCodeEmitter.cpp b/lib/Runtime/ByteCode/ByteCodeEmitter.cpp index 47ddc3ca6a1..087a7dd04c8 100644 --- a/lib/Runtime/ByteCode/ByteCodeEmitter.cpp +++ b/lib/Runtime/ByteCode/ByteCodeEmitter.cpp @@ -2113,16 +2113,31 @@ void ByteCodeGenerator::LoadThisObject(FuncInfo *funcInfo, bool thisLoadedFromPa { if (this->scriptContext->GetConfig()->IsES6ClassAndExtendsEnabled() && funcInfo->IsClassConstructor()) { - // Derived class constructors initialize 'this' to be Undecl + // Derived class constructors initialize 'this' to be Undecl except "extends null" cases // - we'll check this value during a super call and during 'this' access - // Base class constructors initialize 'this' to a new object using new.target + // + // Base class constructors or "extends null" cases initialize 'this' to a new object using new.target if (funcInfo->IsBaseClassConstructor()) { EmitBaseClassConstructorThisObject(funcInfo); } else { - this->m_writer.Reg1(Js::OpCode::InitUndecl, funcInfo->thisPointerRegister); + Js::ByteCodeLabel thisLabel = this->Writer()->DefineLabel(); + Js::ByteCodeLabel skipLabel = this->Writer()->DefineLabel(); + + Js::RegSlot tmpReg = funcInfo->AcquireTmpRegister(); + this->Writer()->Reg1(Js::OpCode::LdFuncObj, tmpReg); + this->Writer()->BrReg1(Js::OpCode::BrOnBaseConstructorKind, thisLabel, tmpReg); // branch when [[ConstructorKind]]=="base" + funcInfo->ReleaseTmpRegister(tmpReg); + + this->m_writer.Reg1(Js::OpCode::InitUndecl, funcInfo->thisPointerRegister); // not "extends null" case + this->Writer()->Br(Js::OpCode::Br, skipLabel); + + this->Writer()->MarkLabel(thisLabel); + EmitBaseClassConstructorThisObject(funcInfo); // "extends null" case + + this->Writer()->MarkLabel(skipLabel); } } else if (!funcInfo->IsGlobalFunction() || (this->flags & fscrEval)) @@ -2411,12 +2426,6 @@ void ByteCodeGenerator::EmitClassConstructorEndCode(FuncInfo *funcInfo) EmitScopeSlotLoadThis(funcInfo, funcInfo->thisPointerRegister); this->Writer()->Reg2(Js::OpCode::Ld_A, ByteCodeGenerator::ReturnRegister, funcInfo->thisPointerRegister); } - else - { - // This is the case where we don't have any references to this or super in the constructor or any nested lambda functions. - // We know 'this' must be undecl so let's just emit the ReferenceError as part of the fallthrough. - EmitUseBeforeDeclarationRuntimeError(this, ByteCodeGenerator::ReturnRegister); - } } void ByteCodeGenerator::EmitBaseClassConstructorThisObject(FuncInfo *funcInfo) diff --git a/lib/Runtime/ByteCode/ByteCodeGenerator.cpp b/lib/Runtime/ByteCode/ByteCodeGenerator.cpp index a5f9eaa5764..9598b54bee4 100644 --- a/lib/Runtime/ByteCode/ByteCodeGenerator.cpp +++ b/lib/Runtime/ByteCode/ByteCodeGenerator.cpp @@ -1168,6 +1168,8 @@ FuncInfo * ByteCodeGenerator::StartBindFunction(const char16 *name, uint nameLen bool funcExprWithName; Js::ParseableFunctionInfo* parseableFunctionInfo = nullptr; + Js::AutoRestoreFunctionInfo autoRestoreFunctionInfo(reuseNestedFunc, reuseNestedFunc ? reuseNestedFunc->GetOriginalEntryPoint() : nullptr); + if (this->pCurrentFunction && this->pCurrentFunction->IsFunctionParsed()) { @@ -1228,7 +1230,7 @@ FuncInfo * ByteCodeGenerator::StartBindFunction(const char16 *name, uint nameLen // Create a function body if: // 1. The parse node is not defer parsed // 2. Or creating function proxies is disallowed - bool createFunctionBody = (pnode->sxFnc.pnodeBody != nullptr) && (!reuseNestedFunc || reuseNestedFunc->IsFunctionBody()); + bool createFunctionBody = (pnode->sxFnc.pnodeBody != nullptr); if (!CONFIG_FLAG(CreateFunctionProxy)) createFunctionBody = true; Js::FunctionInfo::Attributes attributes = Js::FunctionInfo::Attributes::None; @@ -1278,8 +1280,17 @@ FuncInfo * ByteCodeGenerator::StartBindFunction(const char16 *name, uint nameLen propertyRecordList = EnsurePropertyRecordList(); if (reuseNestedFunc) { - Assert(reuseNestedFunc->IsFunctionBody()); - parseableFunctionInfo = reuseNestedFunc->GetFunctionBody(); + if (!reuseNestedFunc->IsFunctionBody()) + { + Js::FunctionBody * parsedFunctionBody = + Js::FunctionBody::NewFromParseableFunctionInfo(reuseNestedFunc->GetParseableFunctionInfo()); + autoRestoreFunctionInfo.funcBody = parsedFunctionBody; + parseableFunctionInfo = parsedFunctionBody; + } + else + { + parseableFunctionInfo = reuseNestedFunc->GetFunctionBody(); + } } else { @@ -1309,7 +1320,7 @@ FuncInfo * ByteCodeGenerator::StartBindFunction(const char16 *name, uint nameLen if (reuseNestedFunc) { Assert(!reuseNestedFunc->IsFunctionBody() || reuseNestedFunc->GetFunctionBody()->GetByteCode() != nullptr); - pnode->sxFnc.pnodeBody = nullptr; + Assert(pnode->sxFnc.pnodeBody == nullptr); parseableFunctionInfo = reuseNestedFunc; } else @@ -1437,6 +1448,8 @@ FuncInfo * ByteCodeGenerator::StartBindFunction(const char16 *name, uint nameLen this->maxAstSize = currentAstSize; } + autoRestoreFunctionInfo.Clear(); + return funcInfo; } @@ -2973,10 +2986,10 @@ FuncInfo* PostVisitFunction(ParseNode* pnode, ByteCodeGenerator* byteCodeGenerat top->AssignUndefinedConstRegister(); top->AssignNewTargetRegister(); + top->AssignThisRegister(); if (top->GetCallsEval() || top->GetChildCallsEval()) { - top->AssignThisRegister(); top->SetIsThisLexicallyCaptured(); top->SetIsNewTargetLexicallyCaptured(); top->SetIsSuperLexicallyCaptured(); diff --git a/lib/Runtime/ByteCode/OpCodes.h b/lib/Runtime/ByteCode/OpCodes.h index 79f4add84a1..176ab31914b 100755 --- a/lib/Runtime/ByteCode/OpCodes.h +++ b/lib/Runtime/ByteCode/OpCodes.h @@ -318,6 +318,7 @@ MACRO_EXTEND_WMS( InitClassMemberGet, ElementC, OpSideEffect MACRO_EXTEND_WMS( InitClassMemberSetComputedName,ElementI, OpSideEffect|OpOpndHasImplicitCall|OpPostOpDbgBailOut) // Class member in set syntax with computed property name MACRO_EXTEND_WMS( InitClassMemberGetComputedName,ElementI, OpSideEffect|OpOpndHasImplicitCall|OpPostOpDbgBailOut) // Class member in get syntax with computed property name MACRO_EXTEND_WMS( BrOnClassConstructor, BrReg1, None) // Branch if argument is a class constructor +MACRO_EXTEND_WMS( BrOnBaseConstructorKind, BrReg1, None) // Branch if argument's [[ConstructorKind]] is 'base' MACRO_BACKEND_ONLY( ArgIn_A, Empty, None) // Copy from "in slot" to "local slot", unchecked MACRO_WMS( ArgIn0, Reg1, OpByteCodeOnly) // Copy from "in slot" to "local slot", unchecked diff --git a/lib/Runtime/Debug/TTRuntmeInfoTracker.cpp b/lib/Runtime/Debug/TTRuntmeInfoTracker.cpp index 7e635944fb1..9b8020ea481 100644 --- a/lib/Runtime/Debug/TTRuntmeInfoTracker.cpp +++ b/lib/Runtime/Debug/TTRuntmeInfoTracker.cpp @@ -697,6 +697,8 @@ namespace TTD this->EnqueueRootPathObject(_u("_stackTraceAccessor"), ctx->GetLibrary()->GetStackTraceAccessorFunction()); this->EnqueueRootPathObject(_u("_throwTypeErrorRestrictedPropertyAccessor"), ctx->GetLibrary()->GetThrowTypeErrorRestrictedPropertyAccessorFunction()); + this->EnqueueRootPathObject(_u("_arrayIteratorPrototype"), ctx->GetLibrary()->GetArrayIteratorPrototype()); + uint32 counter = 0; while(!this->m_worklist.Empty()) { diff --git a/lib/Runtime/Debug/TTSnapValues.cpp b/lib/Runtime/Debug/TTSnapValues.cpp index 718add03d12..85425a4465e 100644 --- a/lib/Runtime/Debug/TTSnapValues.cpp +++ b/lib/Runtime/Debug/TTSnapValues.cpp @@ -561,7 +561,7 @@ namespace TTD compareMap.DiagnosticAssert((!!v1->u_boolValue) == (!!v2->u_boolValue)); break; case Js::TypeIds_Number: - compareMap.DiagnosticAssert(v1->u_doubleValue == v2->u_doubleValue); //This may be problematic wrt. precise FP values + compareMap.DiagnosticAssert(CheckSnapEquivTTDDouble(v1->u_doubleValue, v2->u_doubleValue)); break; case Js::TypeIds_Int64Number: compareMap.DiagnosticAssert(v1->u_int64Value == v2->u_int64Value); diff --git a/lib/Runtime/Language/InterpreterHandler.inl b/lib/Runtime/Language/InterpreterHandler.inl index 5970c264185..091b4b0bf4d 100644 --- a/lib/Runtime/Language/InterpreterHandler.inl +++ b/lib/Runtime/Language/InterpreterHandler.inl @@ -219,6 +219,7 @@ EXDEF3_WMS(CUSTOM, InitClassMemberGetComputedName, OP_InitClass EXDEF3_WMS(CUSTOM, InitClassMemberGet, OP_InitClassMemberGet, ElementC) EXDEF3_WMS(CUSTOM, InitClassMemberSetComputedName, OP_InitClassMemberSetComputedName, ElementI) EXDEF2_WMS(BRB, BrOnClassConstructor, OP_BrOnClassConstructor) +EXDEF2_WMS(BRB, BrOnBaseConstructorKind, OP_BrOnBaseConstructorKind) DEF3_WMS(GET_ELEM_LOCALSLOTNonVar,LdLocalSlot, OP_LdSlot, ElementSlotI1) EXDEF3_WMS(GET_ELEM_PARAMSLOTNonVar,LdParamSlot, OP_LdSlot, ElementSlotI1) DEF3_WMS(GET_ELEM_INNERSLOTNonVar,LdInnerSlot, OP_LdInnerSlot, ElementSlotI2) diff --git a/lib/Runtime/Language/InterpreterStackFrame.cpp b/lib/Runtime/Language/InterpreterStackFrame.cpp index dab3f9db18c..131895ea4cc 100644 --- a/lib/Runtime/Language/InterpreterStackFrame.cpp +++ b/lib/Runtime/Language/InterpreterStackFrame.cpp @@ -8216,6 +8216,11 @@ const byte * InterpreterStackFrame::OP_ProfiledLoopBodyStart(const byte * ip) return JavascriptOperators::IsClassConstructor(aValue); } + BOOL InterpreterStackFrame::OP_BrOnBaseConstructorKind(Var aValue) + { + return JavascriptOperators::IsBaseConstructorKind(aValue); + } + template void InterpreterStackFrame::OP_LdLen(const unaligned T * const playout) { diff --git a/lib/Runtime/Language/InterpreterStackFrame.h b/lib/Runtime/Language/InterpreterStackFrame.h index 5fad9986723..5668e3319d0 100644 --- a/lib/Runtime/Language/InterpreterStackFrame.h +++ b/lib/Runtime/Language/InterpreterStackFrame.h @@ -419,6 +419,7 @@ namespace Js BOOL OP_BrOnNoProperty(Var argInstance, uint propertyIdIndex, ScriptContext* scriptContext); BOOL OP_BrOnNoEnvProperty(Var envInstance, int32 slotIndex, uint propertyIdIndex, ScriptContext* scriptContext); BOOL OP_BrOnClassConstructor(Var aValue); + BOOL OP_BrOnBaseConstructorKind(Var aValue); RecyclableObject * OP_CallGetFunc(Var target); diff --git a/lib/Runtime/Language/JavascriptOperators.cpp b/lib/Runtime/Language/JavascriptOperators.cpp index 21b5dba3621..6e6aaffbfa4 100644 --- a/lib/Runtime/Language/JavascriptOperators.cpp +++ b/lib/Runtime/Language/JavascriptOperators.cpp @@ -6651,6 +6651,11 @@ namespace Js return JavascriptFunction::Is(instance) && (JavascriptFunction::FromVar(instance)->GetFunctionInfo()->IsClassConstructor() || !JavascriptFunction::FromVar(instance)->IsScriptFunction()); } + BOOL JavascriptOperators::IsBaseConstructorKind(Var instance) + { + return JavascriptFunction::Is(instance) && (JavascriptFunction::FromVar(instance)->GetFunctionInfo()->GetBaseConstructorKind()); + } + void JavascriptOperators::OP_InitGetter(Var object, PropertyId propertyId, Var getter) { AssertMsg(!TaggedNumber::Is(object), "GetMember on a non-object?"); @@ -7042,6 +7047,12 @@ namespace Js ctorProtoObj->EnsureProperty(Js::PropertyIds::constructor); ctorProtoObj->SetEnumerable(Js::PropertyIds::constructor, FALSE); + + if (ScriptFunctionBase::Is(constructor)) + { + ScriptFunctionBase::FromVar(constructor)->GetFunctionInfo()->SetBaseConstructorKind(); + } + break; } diff --git a/lib/Runtime/Language/JavascriptOperators.h b/lib/Runtime/Language/JavascriptOperators.h index 9b074caf5b5..b57be11247b 100644 --- a/lib/Runtime/Language/JavascriptOperators.h +++ b/lib/Runtime/Language/JavascriptOperators.h @@ -220,6 +220,7 @@ namespace Js static BOOL IsUndefinedObject(Var instance, JavascriptLibrary* library); static BOOL IsAnyNumberValue(Var instance); static BOOL IsClassConstructor(Var instance); + static BOOL IsBaseConstructorKind(Var instance); static bool CanShortcutOnUnknownPropertyName(RecyclableObject * instance); static bool CanShortcutInstanceOnUnknownPropertyName(RecyclableObject *instance); diff --git a/lib/Runtime/Library/GlobalObject.cpp b/lib/Runtime/Library/GlobalObject.cpp index 108e32f00ae..3516ec030b9 100644 --- a/lib/Runtime/Library/GlobalObject.cpp +++ b/lib/Runtime/Library/GlobalObject.cpp @@ -925,22 +925,7 @@ namespace Js #ifdef PROFILE_EXEC scriptContext->ProfileEnd(Js::EvalCompilePhase); #endif - if (hr == E_OUTOFMEMORY) - { - JavascriptError::ThrowOutOfMemoryError(scriptContext); - } - else if(hr == VBSERR_OutOfStack) - { - JavascriptError::ThrowStackOverflowError(scriptContext); - } - else if(hr == E_ABORT) - { - throw Js::ScriptAbortException(); - } - else if(FAILED(hr)) - { - throw Js::InternalErrorException(); - } + THROW_KNOWN_HRESULT_EXCEPTIONS(hr, scriptContext); if (!SUCCEEDED(hrParser)) { @@ -1087,22 +1072,7 @@ namespace Js #ifdef PROFILE_EXEC scriptContext->ProfileEnd(Js::EvalCompilePhase); #endif - if (hr == E_OUTOFMEMORY) - { - JavascriptError::ThrowOutOfMemoryError(scriptContext); - } - else if(hr == VBSERR_OutOfStack) - { - JavascriptError::ThrowStackOverflowError(scriptContext); - } - else if(hr == E_ABORT) - { - throw Js::ScriptAbortException(); - } - else if(FAILED(hr)) - { - throw Js::InternalErrorException(); - } + THROW_KNOWN_HRESULT_EXCEPTIONS(hr); if (!SUCCEEDED(hrParser)) { diff --git a/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h b/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h index c8163be4987..175b8f6231f 100644 --- a/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h +++ b/lib/Runtime/Library/InJavascript/Intl.js.bc.32b.h @@ -2987,14 +2987,14 @@ namespace Js /* 00006220 */ 0xA8, 0x34, 0xA8, 0x35, 0xA8, 0x36, 0xA8, 0x37, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, /* 00006230 */ 0x00, 0x3D, 0x00, 0x00, 0x14, 0x17, 0x00, 0x3D, 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, /* 00006240 */ 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x14, 0x03, 0x00, 0x3D, 0x03, 0x09, 0xC1, 0x04, -/* 00006250 */ 0xDE, 0x00, 0x09, 0x01, 0xB8, 0x3D, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x3D, -/* 00006260 */ 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, -/* 00006270 */ 0x00, 0x30, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x01, 0x4A, 0x01, +/* 00006250 */ 0xDE, 0x00, 0x09, 0x01, 0xB8, 0x3D, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x3D, +/* 00006260 */ 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, +/* 00006270 */ 0x00, 0x30, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x01, 0x4B, 0x01, /* 00006280 */ 0x02, 0x00, 0x00, 0x00, 0x31, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x31, -/* 00006290 */ 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x32, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, -/* 000062A0 */ 0x00, 0x00, 0x32, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x95, 0x00, 0x00, 0x00, -/* 000062B0 */ 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x34, 0x3D, 0x95, -/* 000062C0 */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x4A, 0x01, 0x06, 0x00, 0x00, 0x00, +/* 00006290 */ 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x32, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, +/* 000062A0 */ 0x00, 0x00, 0x32, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x95, 0x00, 0x00, 0x00, +/* 000062B0 */ 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x34, 0x3D, 0x95, +/* 000062C0 */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x4B, 0x01, 0x06, 0x00, 0x00, 0x00, /* 000062D0 */ 0x35, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x35, 0xCC, 0x00, 0x00, 0x00, /* 000062E0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x7B, 0x05, 0x3D, 0x00, 0x7B, 0x07, 0x3D, /* 000062F0 */ 0x01, 0x7B, 0x09, 0x3D, 0x02, 0x7B, 0x0B, 0x3D, 0x03, 0x7B, 0x0D, 0x3D, 0x04, 0x7B, 0x0F, 0x3D, @@ -3002,23 +3002,23 @@ namespace Js /* 00006310 */ 0x00, 0x00, 0x3D, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x6D, /* 00006320 */ 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, /* 00006330 */ 0x00, 0x00, 0x3F, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5D, 0x01, 0x17, 0x01, 0x00, -/* 00006340 */ 0xB8, 0x41, 0x00, 0x01, 0x4A, 0x01, 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, +/* 00006340 */ 0xB8, 0x41, 0x00, 0x01, 0x4B, 0x01, 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, /* 00006350 */ 0x03, 0x3F, 0x3F, 0x01, 0x00, 0x5C, 0x01, 0x3F, 0x5D, 0x02, 0x19, 0x00, 0x00, 0xF2, 0x03, 0xFF, /* 00006360 */ 0x3D, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 00006370 */ 0x3E, 0x01, 0x00, 0x6D, 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, 0x8F, 0x01, 0x00, /* 00006380 */ 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5D, -/* 00006390 */ 0x01, 0x1A, 0x03, 0x00, 0xB8, 0x41, 0x00, 0x01, 0x4A, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, 0x41, +/* 00006390 */ 0x01, 0x1A, 0x03, 0x00, 0xB8, 0x41, 0x00, 0x01, 0x4B, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, 0x41, /* 000063A0 */ 0x5C, 0x02, 0x40, 0xEE, 0x03, 0x3F, 0x3F, 0x03, 0x00, 0x5C, 0x01, 0x3F, 0x5D, 0x02, 0x1B, 0x02, /* 000063B0 */ 0x00, 0xF2, 0x03, 0xFF, 0x3D, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, /* 000063C0 */ 0x07, 0x00, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x6D, 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 000063D0 */ 0x3E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x07, 0x03, 0x00, -/* 000063E0 */ 0x5C, 0x00, 0x18, 0x5D, 0x01, 0x1C, 0x05, 0x00, 0xB8, 0x41, 0x00, 0x01, 0x4A, 0x01, 0x09, 0x00, +/* 000063E0 */ 0x5C, 0x00, 0x18, 0x5D, 0x01, 0x1C, 0x05, 0x00, 0xB8, 0x41, 0x00, 0x01, 0x4B, 0x01, 0x09, 0x00, /* 000063F0 */ 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, 0x03, 0x3F, 0x3F, 0x05, 0x00, 0x5C, 0x01, 0x3F, /* 00006400 */ 0x5D, 0x02, 0x1D, 0x04, 0x00, 0xF2, 0x03, 0xFF, 0x3D, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x8F, /* 00006410 */ 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x14, 0x03, 0x00, 0x3D, 0x02, /* 00006420 */ 0x09, 0xEE, 0x02, 0xDE, 0x01, 0x04, 0x02, 0xB8, 0x3D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x3D, -/* 00006430 */ 0x3D, 0x01, 0x4A, 0x01, 0x0A, 0x00, 0x00, 0x00, 0x36, 0x3D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, -/* 00006440 */ 0x00, 0x00, 0x00, 0x36, 0x01, 0x4A, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x37, 0x3D, 0x95, 0x01, 0x00, +/* 00006430 */ 0x3D, 0x01, 0x4B, 0x01, 0x0A, 0x00, 0x00, 0x00, 0x36, 0x3D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, +/* 00006440 */ 0x00, 0x00, 0x00, 0x36, 0x01, 0x4B, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x37, 0x3D, 0x95, 0x01, 0x00, /* 00006450 */ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x37, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, /* 00006460 */ 0x3D, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5D, 0x01, 0x1E, 0x06, 0x00, 0x91, 0x01, /* 00006470 */ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x03, 0x00, 0x5C, 0x02, 0x3E, 0xEE, 0x03, 0xFF, @@ -3048,14 +3048,14 @@ namespace Js /* 000065F0 */ 0x00, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x8F, 0x01, /* 00006600 */ 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, /* 00006610 */ 0x5D, 0x01, 0x2C, 0x0D, 0x00, 0xB8, 0x41, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x41, 0x41, 0x01, -/* 00006620 */ 0x4A, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, 0x03, 0x3F, 0x3F, 0x0D, +/* 00006620 */ 0x4B, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, 0x03, 0x3F, 0x3F, 0x0D, /* 00006630 */ 0x00, 0x7B, 0x3F, 0x3E, 0x10, 0x7B, 0x25, 0x3E, 0x0D, 0x7B, 0x29, 0x3E, 0x0E, 0x5C, 0x03, 0x3E, /* 00006640 */ 0xEE, 0x04, 0xFF, 0x3D, 0x0C, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3D, /* 00006650 */ 0x05, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x18, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 00006660 */ 0x00, 0x3E, 0x03, 0x00, 0x62, 0x3E, 0x3E, 0x0F, 0x5C, 0x01, 0x3E, 0x5D, 0x02, 0x2D, 0x0E, 0x00, /* 00006670 */ 0xCC, 0x70, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xB8, 0x40, 0x00, -/* 00006680 */ 0xB7, 0x01, 0x00, 0x00, 0x00, 0x40, 0x40, 0x01, 0x4A, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x3F, 0x40, -/* 00006690 */ 0x7B, 0x3F, 0x3E, 0x0B, 0x01, 0x5F, 0x01, 0x3F, 0x3E, 0x7B, 0x29, 0x3E, 0x0C, 0x7B, 0x25, 0x3E, +/* 00006680 */ 0xB7, 0x01, 0x00, 0x00, 0x00, 0x40, 0x40, 0x01, 0x4B, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x3F, 0x40, +/* 00006690 */ 0x7B, 0x3F, 0x3E, 0x0B, 0x01, 0x60, 0x01, 0x3F, 0x3E, 0x7B, 0x29, 0x3E, 0x0C, 0x7B, 0x25, 0x3E, /* 000066A0 */ 0x0D, 0x7B, 0x29, 0x3E, 0x0E, 0x5C, 0x03, 0x3E, 0xEE, 0x04, 0xFF, 0x3D, 0x0E, 0x00, 0x8F, 0x01, /* 000066B0 */ 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3D, 0x05, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x18, /* 000066C0 */ 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x03, 0x00, 0x5C, 0x01, 0x3E, 0x5D, @@ -3891,17 +3891,17 @@ namespace Js /* 00009AA0 */ 0xA8, 0x23, 0xA8, 0x24, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, /* 00009AB0 */ 0x14, 0x17, 0x00, 0x2A, 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, /* 00009AC0 */ 0x00, 0x2A, 0x00, 0x00, 0x14, 0x03, 0x00, 0x2A, 0x03, 0x09, 0x8A, 0x03, 0xDE, 0x00, 0x03, 0x01, -/* 00009AD0 */ 0xB8, 0x2A, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2A, 0x95, 0x00, 0x00, 0x00, +/* 00009AD0 */ 0xB8, 0x2A, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2A, 0x95, 0x00, 0x00, 0x00, /* 00009AE0 */ 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2B, /* 00009AF0 */ 0x01, 0x00, 0x6D, 0x2A, 0x2B, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x2B, 0x8F, 0x01, 0x00, 0x00, /* 00009B00 */ 0x00, 0x28, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, -/* 00009B10 */ 0x04, 0x01, 0x00, 0xB8, 0x2E, 0x00, 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, +/* 00009B10 */ 0x04, 0x01, 0x00, 0xB8, 0x2E, 0x00, 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, /* 00009B20 */ 0x02, 0x2D, 0xEE, 0x03, 0x2C, 0x2C, 0x01, 0x00, 0x5C, 0x01, 0x2C, 0x5D, 0x02, 0x06, 0x00, 0x00, /* 00009B30 */ 0xF2, 0x03, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, /* 00009B40 */ 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x14, 0x03, 0x00, 0x2A, 0x02, 0x09, 0x08, 0x03, 0xDE, 0x01, -/* 00009B50 */ 0x04, 0x02, 0xB8, 0x2A, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x01, 0x4A, 0x01, 0x02, +/* 00009B50 */ 0x04, 0x02, 0xB8, 0x2A, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x01, 0x4B, 0x01, 0x02, /* 00009B60 */ 0x00, 0x00, 0x00, 0x23, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x01, -/* 00009B70 */ 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x24, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +/* 00009B70 */ 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x24, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, /* 00009B80 */ 0x00, 0x24, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x07, 0x03, /* 00009B90 */ 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, 0x07, 0x02, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, /* 00009BA0 */ 0x00, 0x00, 0x2B, 0x03, 0x00, 0x5C, 0x02, 0x2B, 0xEE, 0x03, 0xFF, 0x2A, 0x02, 0x00, 0x8F, 0x01, @@ -3936,7 +3936,7 @@ namespace Js /* 00009D70 */ 0x00, 0x05, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x62, 0x2B, /* 00009D80 */ 0x2B, 0x05, 0x5C, 0x01, 0x2B, 0x5D, 0x02, 0x1E, 0x09, 0x00, 0xCC, 0x44, 0x00, 0x00, 0x00, 0x03, /* 00009D90 */ 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0xB8, 0x2D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2D, -/* 00009DA0 */ 0x2D, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x2D, 0x7B, 0x2C, 0x2B, 0x01, 0x01, 0x5F, +/* 00009DA0 */ 0x2D, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x2D, 0x7B, 0x2C, 0x2B, 0x01, 0x01, 0x60, /* 00009DB0 */ 0x01, 0x2C, 0x2B, 0x7B, 0x0C, 0x2B, 0x02, 0x7B, 0x1B, 0x2B, 0x04, 0x7B, 0x0C, 0x2B, 0x03, 0x5C, /* 00009DC0 */ 0x03, 0x2B, 0xEE, 0x04, 0xFF, 0x2A, 0x09, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, /* 00009DD0 */ 0x00, 0x2A, 0x05, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, @@ -3944,7 +3944,7 @@ namespace Js /* 00009DF0 */ 0x0A, 0x00, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x8F, /* 00009E00 */ 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 00009E10 */ 0x05, 0x5D, 0x01, 0x21, 0x0B, 0x00, 0xB8, 0x2E, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2E, 0x2E, -/* 00009E20 */ 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, 0x2D, 0xEE, 0x03, 0x2C, 0x2C, +/* 00009E20 */ 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, 0x2D, 0xEE, 0x03, 0x2C, 0x2C, /* 00009E30 */ 0x0B, 0x00, 0x7B, 0x2C, 0x2B, 0x06, 0x7B, 0x1B, 0x2B, 0x04, 0x7B, 0x0C, 0x2B, 0x03, 0x5C, 0x03, /* 00009E40 */ 0x2B, 0xEE, 0x04, 0xFF, 0x2A, 0x0A, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 00009E50 */ 0x00, 0x03, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, @@ -4281,17 +4281,17 @@ namespace Js /* 0000B300 */ 0x03, 0x02, 0xFE, 0x38, 0x03, 0xFE, 0x8A, 0x03, 0xA8, 0x17, 0xA8, 0x18, 0xA8, 0x19, 0x8F, 0x01, /* 0000B310 */ 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x14, 0x17, 0x00, 0x1D, 0x02, 0x09, /* 0000B320 */ 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x14, 0x03, -/* 0000B330 */ 0x00, 0x1D, 0x03, 0x09, 0x53, 0x03, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x1D, 0x00, 0x01, 0x4A, 0x01, +/* 0000B330 */ 0x00, 0x1D, 0x03, 0x09, 0x53, 0x03, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x1D, 0x00, 0x01, 0x4B, 0x01, /* 0000B340 */ 0x00, 0x00, 0x00, 0x00, 0x17, 0x1D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, /* 0000B350 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0x01, 0x00, 0x6D, 0x1D, 0x1E, 0x00, /* 0000B360 */ 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1F, /* 0000B370 */ 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, 0x04, 0x01, 0x00, 0xB8, 0x21, 0x00, -/* 0000B380 */ 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, 0xEE, 0x03, 0x1F, 0x1F, +/* 0000B380 */ 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, 0xEE, 0x03, 0x1F, 0x1F, /* 0000B390 */ 0x01, 0x00, 0x5C, 0x01, 0x1F, 0x5D, 0x02, 0x06, 0x00, 0x00, 0xF2, 0x03, 0xFF, 0x1D, 0x00, 0x00, /* 0000B3A0 */ 0x00, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, /* 0000B3B0 */ 0x14, 0x03, 0x00, 0x1D, 0x02, 0x09, 0xD1, 0x02, 0xDE, 0x01, 0x04, 0x02, 0xB8, 0x1D, 0x00, 0xB7, -/* 0000B3C0 */ 0x01, 0x00, 0x00, 0x00, 0x1D, 0x1D, 0x01, 0x4A, 0x01, 0x02, 0x00, 0x00, 0x00, 0x18, 0x1D, 0x95, -/* 0000B3D0 */ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, +/* 0000B3C0 */ 0x01, 0x00, 0x00, 0x00, 0x1D, 0x1D, 0x01, 0x4B, 0x01, 0x02, 0x00, 0x00, 0x00, 0x18, 0x1D, 0x95, +/* 0000B3D0 */ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, /* 0000B3E0 */ 0x19, 0x1D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x19, 0x8F, 0x01, 0x00, 0x00, /* 0000B3F0 */ 0x00, 0x28, 0x00, 0x00, 0x00, 0x1D, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, /* 0000B400 */ 0x07, 0x02, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x03, 0x00, 0x5C, @@ -4323,15 +4323,15 @@ namespace Js /* 0000B5A0 */ 0x04, 0x00, 0x5C, 0x00, 0x05, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x03, /* 0000B5B0 */ 0x00, 0x62, 0x1E, 0x1E, 0x05, 0x5C, 0x01, 0x1E, 0x5D, 0x02, 0x13, 0x09, 0x00, 0xCC, 0x44, 0x00, /* 0000B5C0 */ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xB8, 0x20, 0x00, 0xB7, 0x01, 0x00, -/* 0000B5D0 */ 0x00, 0x00, 0x20, 0x20, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x7B, 0x1F, 0x1E, -/* 0000B5E0 */ 0x01, 0x01, 0x5F, 0x01, 0x1F, 0x1E, 0x7B, 0x0C, 0x1E, 0x02, 0x7B, 0x10, 0x1E, 0x04, 0x7B, 0x0C, +/* 0000B5D0 */ 0x00, 0x00, 0x20, 0x20, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x7B, 0x1F, 0x1E, +/* 0000B5E0 */ 0x01, 0x01, 0x60, 0x01, 0x1F, 0x1E, 0x7B, 0x0C, 0x1E, 0x02, 0x7B, 0x10, 0x1E, 0x04, 0x7B, 0x0C, /* 0000B5F0 */ 0x1E, 0x03, 0x5C, 0x03, 0x1E, 0xEE, 0x04, 0xFF, 0x1D, 0x09, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, /* 0000B600 */ 0x19, 0x00, 0x00, 0x00, 0x1D, 0x05, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x91, 0x01, 0x00, /* 0000B610 */ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x03, 0x00, 0x62, 0x1E, 0x1E, 0x05, 0x5C, 0x01, 0x1E, /* 0000B620 */ 0x5D, 0x02, 0x14, 0x0A, 0x00, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, /* 0000B630 */ 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1F, 0x02, 0x00, 0x07, 0x03, /* 0000B640 */ 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, 0x16, 0x0B, 0x00, 0xB8, 0x21, 0x00, 0xB7, 0x01, 0x00, 0x00, -/* 0000B650 */ 0x00, 0x21, 0x21, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, 0xEE, +/* 0000B650 */ 0x00, 0x21, 0x21, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, 0xEE, /* 0000B660 */ 0x03, 0x1F, 0x1F, 0x0B, 0x00, 0x7B, 0x1F, 0x1E, 0x06, 0x7B, 0x10, 0x1E, 0x04, 0x7B, 0x0C, 0x1E, /* 0000B670 */ 0x03, 0x5C, 0x03, 0x1E, 0xEE, 0x04, 0xFF, 0x1D, 0x0A, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, /* 0000B680 */ 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, @@ -5011,12 +5011,12 @@ namespace Js /* 0000E0A0 */ 0xFE, 0x13, 0x03, 0x02, 0xFE, 0x14, 0x03, 0x02, 0xFE, 0x15, 0x03, 0x03, 0x04, 0x8E, 0x8F, 0x01, /* 0000E0B0 */ 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, /* 0000E0C0 */ 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, -/* 0000E0D0 */ 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x00, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x01, 0x00, 0x00, -/* 0000E0E0 */ 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x01, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x02, 0x00, 0x00, 0x00, -/* 0000E0F0 */ 0x0D, 0x7B, 0x0D, 0x0C, 0x02, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x03, 0x00, 0x00, 0x00, 0x0D, -/* 0000E100 */ 0x7B, 0x0D, 0x0C, 0x03, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x7B, -/* 0000E110 */ 0x0D, 0x0C, 0x04, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, -/* 0000E120 */ 0x0C, 0x05, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0x5C, 0x01, 0x0C, 0x5D, 0x02, 0x08, 0x00, 0x00, 0xEE, +/* 0000E0D0 */ 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x00, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x01, 0x00, 0x00, +/* 0000E0E0 */ 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x01, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x02, 0x00, 0x00, 0x00, +/* 0000E0F0 */ 0x0D, 0x7B, 0x0D, 0x0C, 0x02, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x03, 0x00, 0x00, 0x00, 0x0D, +/* 0000E100 */ 0x7B, 0x0D, 0x0C, 0x03, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x7B, +/* 0000E110 */ 0x0D, 0x0C, 0x04, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, +/* 0000E120 */ 0x0C, 0x05, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0x5C, 0x01, 0x0C, 0x5D, 0x02, 0x08, 0x00, 0x00, 0xEE, /* 0000E130 */ 0x03, 0x00, 0x0B, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, 0x20, 0x00, 0x00, /* 0000E140 */ 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x38, /* 0000E150 */ 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x3C, 0x02, 0x00, 0x00, 0x15, diff --git a/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h b/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h index 6f73194d2a2..e1f475368a6 100644 --- a/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h +++ b/lib/Runtime/Library/InJavascript/Intl.js.bc.64b.h @@ -2987,14 +2987,14 @@ namespace Js /* 00006220 */ 0xA8, 0x34, 0xA8, 0x35, 0xA8, 0x36, 0xA8, 0x37, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, /* 00006230 */ 0x00, 0x3D, 0x00, 0x00, 0x14, 0x17, 0x00, 0x3D, 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, /* 00006240 */ 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x14, 0x03, 0x00, 0x3D, 0x03, 0x09, 0xC1, 0x04, -/* 00006250 */ 0xDE, 0x00, 0x09, 0x01, 0xB8, 0x3D, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x3D, -/* 00006260 */ 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, -/* 00006270 */ 0x00, 0x30, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x01, 0x4A, 0x01, +/* 00006250 */ 0xDE, 0x00, 0x09, 0x01, 0xB8, 0x3D, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2F, 0x3D, +/* 00006260 */ 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, +/* 00006270 */ 0x00, 0x30, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x01, 0x4B, 0x01, /* 00006280 */ 0x02, 0x00, 0x00, 0x00, 0x31, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x31, -/* 00006290 */ 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x32, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, -/* 000062A0 */ 0x00, 0x00, 0x32, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x95, 0x00, 0x00, 0x00, -/* 000062B0 */ 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x34, 0x3D, 0x95, -/* 000062C0 */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x4A, 0x01, 0x06, 0x00, 0x00, 0x00, +/* 00006290 */ 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x32, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, +/* 000062A0 */ 0x00, 0x00, 0x32, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x95, 0x00, 0x00, 0x00, +/* 000062B0 */ 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x34, 0x3D, 0x95, +/* 000062C0 */ 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x4B, 0x01, 0x06, 0x00, 0x00, 0x00, /* 000062D0 */ 0x35, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x35, 0xCC, 0x00, 0x00, 0x00, /* 000062E0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x7B, 0x05, 0x3D, 0x00, 0x7B, 0x07, 0x3D, /* 000062F0 */ 0x01, 0x7B, 0x09, 0x3D, 0x02, 0x7B, 0x0B, 0x3D, 0x03, 0x7B, 0x0D, 0x3D, 0x04, 0x7B, 0x0F, 0x3D, @@ -3002,23 +3002,23 @@ namespace Js /* 00006310 */ 0x00, 0x00, 0x3D, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x6D, /* 00006320 */ 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, /* 00006330 */ 0x00, 0x00, 0x3F, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5D, 0x01, 0x17, 0x01, 0x00, -/* 00006340 */ 0xB8, 0x41, 0x00, 0x01, 0x4A, 0x01, 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, +/* 00006340 */ 0xB8, 0x41, 0x00, 0x01, 0x4B, 0x01, 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, /* 00006350 */ 0x03, 0x3F, 0x3F, 0x01, 0x00, 0x5C, 0x01, 0x3F, 0x5D, 0x02, 0x19, 0x00, 0x00, 0xF2, 0x03, 0xFF, /* 00006360 */ 0x3D, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, /* 00006370 */ 0x3E, 0x01, 0x00, 0x6D, 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, 0x8F, 0x01, 0x00, /* 00006380 */ 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5D, -/* 00006390 */ 0x01, 0x1A, 0x03, 0x00, 0xB8, 0x41, 0x00, 0x01, 0x4A, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, 0x41, +/* 00006390 */ 0x01, 0x1A, 0x03, 0x00, 0xB8, 0x41, 0x00, 0x01, 0x4B, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, 0x41, /* 000063A0 */ 0x5C, 0x02, 0x40, 0xEE, 0x03, 0x3F, 0x3F, 0x03, 0x00, 0x5C, 0x01, 0x3F, 0x5D, 0x02, 0x1B, 0x02, /* 000063B0 */ 0x00, 0xF2, 0x03, 0xFF, 0x3D, 0x09, 0x00, 0x00, 0x00, 0x02, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, /* 000063C0 */ 0x07, 0x00, 0x00, 0x00, 0x3E, 0x01, 0x00, 0x6D, 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 000063D0 */ 0x3E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x07, 0x03, 0x00, -/* 000063E0 */ 0x5C, 0x00, 0x18, 0x5D, 0x01, 0x1C, 0x05, 0x00, 0xB8, 0x41, 0x00, 0x01, 0x4A, 0x01, 0x09, 0x00, +/* 000063E0 */ 0x5C, 0x00, 0x18, 0x5D, 0x01, 0x1C, 0x05, 0x00, 0xB8, 0x41, 0x00, 0x01, 0x4B, 0x01, 0x09, 0x00, /* 000063F0 */ 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, 0x03, 0x3F, 0x3F, 0x05, 0x00, 0x5C, 0x01, 0x3F, /* 00006400 */ 0x5D, 0x02, 0x1D, 0x04, 0x00, 0xF2, 0x03, 0xFF, 0x3D, 0x09, 0x00, 0x00, 0x00, 0x04, 0x00, 0x8F, /* 00006410 */ 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x14, 0x03, 0x00, 0x3D, 0x02, /* 00006420 */ 0x09, 0xEE, 0x02, 0xDE, 0x01, 0x04, 0x02, 0xB8, 0x3D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x3D, -/* 00006430 */ 0x3D, 0x01, 0x4A, 0x01, 0x0A, 0x00, 0x00, 0x00, 0x36, 0x3D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, -/* 00006440 */ 0x00, 0x00, 0x00, 0x36, 0x01, 0x4A, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x37, 0x3D, 0x95, 0x01, 0x00, +/* 00006430 */ 0x3D, 0x01, 0x4B, 0x01, 0x0A, 0x00, 0x00, 0x00, 0x36, 0x3D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, +/* 00006440 */ 0x00, 0x00, 0x00, 0x36, 0x01, 0x4B, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x37, 0x3D, 0x95, 0x01, 0x00, /* 00006450 */ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x37, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, /* 00006460 */ 0x3D, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5D, 0x01, 0x1E, 0x06, 0x00, 0x91, 0x01, /* 00006470 */ 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x03, 0x00, 0x5C, 0x02, 0x3E, 0xEE, 0x03, 0xFF, @@ -3048,14 +3048,14 @@ namespace Js /* 000065F0 */ 0x00, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0x8F, 0x01, /* 00006600 */ 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, /* 00006610 */ 0x5D, 0x01, 0x2C, 0x0D, 0x00, 0xB8, 0x41, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x41, 0x41, 0x01, -/* 00006620 */ 0x4A, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, 0x03, 0x3F, 0x3F, 0x0D, +/* 00006620 */ 0x4B, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0xEE, 0x03, 0x3F, 0x3F, 0x0D, /* 00006630 */ 0x00, 0x7B, 0x3F, 0x3E, 0x10, 0x7B, 0x25, 0x3E, 0x0D, 0x7B, 0x29, 0x3E, 0x0E, 0x5C, 0x03, 0x3E, /* 00006640 */ 0xEE, 0x04, 0xFF, 0x3D, 0x0C, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3D, /* 00006650 */ 0x05, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x18, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 00006660 */ 0x00, 0x3E, 0x03, 0x00, 0x62, 0x3E, 0x3E, 0x0F, 0x5C, 0x01, 0x3E, 0x5D, 0x02, 0x2D, 0x0E, 0x00, /* 00006670 */ 0xCC, 0x70, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xB8, 0x40, 0x00, -/* 00006680 */ 0xB7, 0x01, 0x00, 0x00, 0x00, 0x40, 0x40, 0x01, 0x4A, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x3F, 0x40, -/* 00006690 */ 0x7B, 0x3F, 0x3E, 0x0B, 0x01, 0x5F, 0x01, 0x3F, 0x3E, 0x7B, 0x29, 0x3E, 0x0C, 0x7B, 0x25, 0x3E, +/* 00006680 */ 0xB7, 0x01, 0x00, 0x00, 0x00, 0x40, 0x40, 0x01, 0x4B, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x3F, 0x40, +/* 00006690 */ 0x7B, 0x3F, 0x3E, 0x0B, 0x01, 0x60, 0x01, 0x3F, 0x3E, 0x7B, 0x29, 0x3E, 0x0C, 0x7B, 0x25, 0x3E, /* 000066A0 */ 0x0D, 0x7B, 0x29, 0x3E, 0x0E, 0x5C, 0x03, 0x3E, 0xEE, 0x04, 0xFF, 0x3D, 0x0E, 0x00, 0x8F, 0x01, /* 000066B0 */ 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3D, 0x05, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x18, /* 000066C0 */ 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x03, 0x00, 0x5C, 0x01, 0x3E, 0x5D, @@ -3891,17 +3891,17 @@ namespace Js /* 00009AA0 */ 0xA8, 0x23, 0xA8, 0x24, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, /* 00009AB0 */ 0x14, 0x17, 0x00, 0x2A, 0x02, 0x09, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, /* 00009AC0 */ 0x00, 0x2A, 0x00, 0x00, 0x14, 0x03, 0x00, 0x2A, 0x03, 0x09, 0x8A, 0x03, 0xDE, 0x00, 0x03, 0x01, -/* 00009AD0 */ 0xB8, 0x2A, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2A, 0x95, 0x00, 0x00, 0x00, +/* 00009AD0 */ 0xB8, 0x2A, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2A, 0x95, 0x00, 0x00, 0x00, /* 00009AE0 */ 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x2B, /* 00009AF0 */ 0x01, 0x00, 0x6D, 0x2A, 0x2B, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x2B, 0x8F, 0x01, 0x00, 0x00, /* 00009B00 */ 0x00, 0x28, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, -/* 00009B10 */ 0x04, 0x01, 0x00, 0xB8, 0x2E, 0x00, 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, +/* 00009B10 */ 0x04, 0x01, 0x00, 0xB8, 0x2E, 0x00, 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, /* 00009B20 */ 0x02, 0x2D, 0xEE, 0x03, 0x2C, 0x2C, 0x01, 0x00, 0x5C, 0x01, 0x2C, 0x5D, 0x02, 0x06, 0x00, 0x00, /* 00009B30 */ 0xF2, 0x03, 0xFF, 0x2A, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, /* 00009B40 */ 0x00, 0x00, 0x00, 0x2A, 0x00, 0x00, 0x14, 0x03, 0x00, 0x2A, 0x02, 0x09, 0x08, 0x03, 0xDE, 0x01, -/* 00009B50 */ 0x04, 0x02, 0xB8, 0x2A, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x01, 0x4A, 0x01, 0x02, +/* 00009B50 */ 0x04, 0x02, 0xB8, 0x2A, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x01, 0x4B, 0x01, 0x02, /* 00009B60 */ 0x00, 0x00, 0x00, 0x23, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x01, -/* 00009B70 */ 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x24, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, +/* 00009B70 */ 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x24, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, /* 00009B80 */ 0x00, 0x24, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2A, 0x02, 0x00, 0x07, 0x03, /* 00009B90 */ 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, 0x07, 0x02, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, /* 00009BA0 */ 0x00, 0x00, 0x2B, 0x03, 0x00, 0x5C, 0x02, 0x2B, 0xEE, 0x03, 0xFF, 0x2A, 0x02, 0x00, 0x8F, 0x01, @@ -3936,7 +3936,7 @@ namespace Js /* 00009D70 */ 0x00, 0x05, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2B, 0x03, 0x00, 0x62, 0x2B, /* 00009D80 */ 0x2B, 0x05, 0x5C, 0x01, 0x2B, 0x5D, 0x02, 0x1E, 0x09, 0x00, 0xCC, 0x44, 0x00, 0x00, 0x00, 0x03, /* 00009D90 */ 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0xB8, 0x2D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2D, -/* 00009DA0 */ 0x2D, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x2D, 0x7B, 0x2C, 0x2B, 0x01, 0x01, 0x5F, +/* 00009DA0 */ 0x2D, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x2D, 0x7B, 0x2C, 0x2B, 0x01, 0x01, 0x60, /* 00009DB0 */ 0x01, 0x2C, 0x2B, 0x7B, 0x0C, 0x2B, 0x02, 0x7B, 0x1B, 0x2B, 0x04, 0x7B, 0x0C, 0x2B, 0x03, 0x5C, /* 00009DC0 */ 0x03, 0x2B, 0xEE, 0x04, 0xFF, 0x2A, 0x09, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, /* 00009DD0 */ 0x00, 0x2A, 0x05, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, @@ -3944,7 +3944,7 @@ namespace Js /* 00009DF0 */ 0x0A, 0x00, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x8F, /* 00009E00 */ 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2C, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 00009E10 */ 0x05, 0x5D, 0x01, 0x21, 0x0B, 0x00, 0xB8, 0x2E, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2E, 0x2E, -/* 00009E20 */ 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, 0x2D, 0xEE, 0x03, 0x2C, 0x2C, +/* 00009E20 */ 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, 0x2D, 0xEE, 0x03, 0x2C, 0x2C, /* 00009E30 */ 0x0B, 0x00, 0x7B, 0x2C, 0x2B, 0x06, 0x7B, 0x1B, 0x2B, 0x04, 0x7B, 0x0C, 0x2B, 0x03, 0x5C, 0x03, /* 00009E40 */ 0x2B, 0xEE, 0x04, 0xFF, 0x2A, 0x0A, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 00009E50 */ 0x00, 0x03, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, @@ -4281,17 +4281,17 @@ namespace Js /* 0000B300 */ 0x03, 0x02, 0xFE, 0x38, 0x03, 0xFE, 0x8A, 0x03, 0xA8, 0x17, 0xA8, 0x18, 0xA8, 0x19, 0x8F, 0x01, /* 0000B310 */ 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x14, 0x17, 0x00, 0x1D, 0x02, 0x09, /* 0000B320 */ 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, 0x14, 0x03, -/* 0000B330 */ 0x00, 0x1D, 0x03, 0x09, 0x53, 0x03, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x1D, 0x00, 0x01, 0x4A, 0x01, +/* 0000B330 */ 0x00, 0x1D, 0x03, 0x09, 0x53, 0x03, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x1D, 0x00, 0x01, 0x4B, 0x01, /* 0000B340 */ 0x00, 0x00, 0x00, 0x00, 0x17, 0x1D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, /* 0000B350 */ 0x8F, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0x01, 0x00, 0x6D, 0x1D, 0x1E, 0x00, /* 0000B360 */ 0x07, 0x03, 0x00, 0x5C, 0x00, 0x1E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1F, /* 0000B370 */ 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, 0x04, 0x01, 0x00, 0xB8, 0x21, 0x00, -/* 0000B380 */ 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, 0xEE, 0x03, 0x1F, 0x1F, +/* 0000B380 */ 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, 0xEE, 0x03, 0x1F, 0x1F, /* 0000B390 */ 0x01, 0x00, 0x5C, 0x01, 0x1F, 0x5D, 0x02, 0x06, 0x00, 0x00, 0xF2, 0x03, 0xFF, 0x1D, 0x00, 0x00, /* 0000B3A0 */ 0x00, 0x00, 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x00, 0x00, /* 0000B3B0 */ 0x14, 0x03, 0x00, 0x1D, 0x02, 0x09, 0xD1, 0x02, 0xDE, 0x01, 0x04, 0x02, 0xB8, 0x1D, 0x00, 0xB7, -/* 0000B3C0 */ 0x01, 0x00, 0x00, 0x00, 0x1D, 0x1D, 0x01, 0x4A, 0x01, 0x02, 0x00, 0x00, 0x00, 0x18, 0x1D, 0x95, -/* 0000B3D0 */ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, +/* 0000B3C0 */ 0x01, 0x00, 0x00, 0x00, 0x1D, 0x1D, 0x01, 0x4B, 0x01, 0x02, 0x00, 0x00, 0x00, 0x18, 0x1D, 0x95, +/* 0000B3D0 */ 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x18, 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, /* 0000B3E0 */ 0x19, 0x1D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x19, 0x8F, 0x01, 0x00, 0x00, /* 0000B3F0 */ 0x00, 0x28, 0x00, 0x00, 0x00, 0x1D, 0x02, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, /* 0000B400 */ 0x07, 0x02, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x03, 0x00, 0x5C, @@ -4323,15 +4323,15 @@ namespace Js /* 0000B5A0 */ 0x04, 0x00, 0x5C, 0x00, 0x05, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x03, /* 0000B5B0 */ 0x00, 0x62, 0x1E, 0x1E, 0x05, 0x5C, 0x01, 0x1E, 0x5D, 0x02, 0x13, 0x09, 0x00, 0xCC, 0x44, 0x00, /* 0000B5C0 */ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xB8, 0x20, 0x00, 0xB7, 0x01, 0x00, -/* 0000B5D0 */ 0x00, 0x00, 0x20, 0x20, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x7B, 0x1F, 0x1E, -/* 0000B5E0 */ 0x01, 0x01, 0x5F, 0x01, 0x1F, 0x1E, 0x7B, 0x0C, 0x1E, 0x02, 0x7B, 0x10, 0x1E, 0x04, 0x7B, 0x0C, +/* 0000B5D0 */ 0x00, 0x00, 0x20, 0x20, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x7B, 0x1F, 0x1E, +/* 0000B5E0 */ 0x01, 0x01, 0x60, 0x01, 0x1F, 0x1E, 0x7B, 0x0C, 0x1E, 0x02, 0x7B, 0x10, 0x1E, 0x04, 0x7B, 0x0C, /* 0000B5F0 */ 0x1E, 0x03, 0x5C, 0x03, 0x1E, 0xEE, 0x04, 0xFF, 0x1D, 0x09, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, /* 0000B600 */ 0x19, 0x00, 0x00, 0x00, 0x1D, 0x05, 0x00, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x91, 0x01, 0x00, /* 0000B610 */ 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, 0x03, 0x00, 0x62, 0x1E, 0x1E, 0x05, 0x5C, 0x01, 0x1E, /* 0000B620 */ 0x5D, 0x02, 0x14, 0x0A, 0x00, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x1E, 0x00, /* 0000B630 */ 0x00, 0x00, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1F, 0x02, 0x00, 0x07, 0x03, /* 0000B640 */ 0x00, 0x5C, 0x00, 0x05, 0x5D, 0x01, 0x16, 0x0B, 0x00, 0xB8, 0x21, 0x00, 0xB7, 0x01, 0x00, 0x00, -/* 0000B650 */ 0x00, 0x21, 0x21, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, 0xEE, +/* 0000B650 */ 0x00, 0x21, 0x21, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, 0xEE, /* 0000B660 */ 0x03, 0x1F, 0x1F, 0x0B, 0x00, 0x7B, 0x1F, 0x1E, 0x06, 0x7B, 0x10, 0x1E, 0x04, 0x7B, 0x0C, 0x1E, /* 0000B670 */ 0x03, 0x5C, 0x03, 0x1E, 0xEE, 0x04, 0xFF, 0x1D, 0x0A, 0x00, 0x91, 0x01, 0x00, 0x00, 0x00, 0x02, /* 0000B680 */ 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, @@ -5011,12 +5011,12 @@ namespace Js /* 0000E0A0 */ 0x12, 0x03, 0x02, 0xFE, 0x13, 0x03, 0x02, 0xFE, 0x14, 0x03, 0x02, 0xFE, 0x15, 0x03, 0x03, 0x04, /* 0000E0B0 */ 0x8E, 0x8F, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x0B, 0x00, 0x00, 0x07, 0x03, 0x00, /* 0000E0C0 */ 0x5C, 0x00, 0x09, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, -/* 0000E0D0 */ 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x00, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, -/* 0000E0E0 */ 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x01, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x02, -/* 0000E0F0 */ 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x02, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x03, 0x00, -/* 0000E100 */ 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x03, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x04, 0x00, 0x00, -/* 0000E110 */ 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x04, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, -/* 0000E120 */ 0x0D, 0x7B, 0x0D, 0x0C, 0x05, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0x5C, 0x01, 0x0C, 0x5D, 0x02, 0x08, +/* 0000E0D0 */ 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x00, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, +/* 0000E0E0 */ 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x01, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x02, +/* 0000E0F0 */ 0x00, 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x02, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x03, 0x00, +/* 0000E100 */ 0x00, 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x03, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x04, 0x00, 0x00, +/* 0000E110 */ 0x00, 0x0D, 0x7B, 0x0D, 0x0C, 0x04, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, +/* 0000E120 */ 0x0D, 0x7B, 0x0D, 0x0C, 0x05, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0x5C, 0x01, 0x0C, 0x5D, 0x02, 0x08, /* 0000E130 */ 0x00, 0x00, 0xEE, 0x03, 0x00, 0x0B, 0x00, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x01, /* 0000E140 */ 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x03, /* 0000E150 */ 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x3C, 0x02, diff --git a/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h b/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h index 5109bf0ca0d..17a27c59fa4 100644 --- a/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h +++ b/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.32b.h @@ -2970,35 +2970,35 @@ namespace Js /* 00006110 */ 0x31, 0xA8, 0x32, 0xA8, 0x33, 0xA8, 0x34, 0xA8, 0x35, 0xA8, 0x36, 0xA8, 0x37, 0x8E, 0x01, 0x00, /* 00006120 */ 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x14, 0x15, 0x00, 0x3D, 0x02, 0x09, 0x00, 0x00, 0x8E, /* 00006130 */ 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x14, 0x03, 0x00, 0x3D, 0x03, 0x09, 0x3B, -/* 00006140 */ 0x04, 0xDE, 0x00, 0x09, 0x01, 0xB8, 0x3D, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2F, -/* 00006150 */ 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x4A, 0x01, 0x01, 0x00, -/* 00006160 */ 0x00, 0x00, 0x30, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x01, 0x4A, +/* 00006140 */ 0x04, 0xDE, 0x00, 0x09, 0x01, 0xB8, 0x3D, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2F, +/* 00006150 */ 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x4B, 0x01, 0x01, 0x00, +/* 00006160 */ 0x00, 0x00, 0x30, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x01, 0x4B, /* 00006170 */ 0x01, 0x02, 0x00, 0x00, 0x00, 0x31, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, -/* 00006180 */ 0x31, 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x32, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x05, -/* 00006190 */ 0x00, 0x00, 0x00, 0x32, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x95, 0x00, 0x00, -/* 000061A0 */ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x34, 0x3D, -/* 000061B0 */ 0x95, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x4A, 0x01, 0x06, 0x00, 0x00, +/* 00006180 */ 0x31, 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x32, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x05, +/* 00006190 */ 0x00, 0x00, 0x00, 0x32, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x95, 0x00, 0x00, +/* 000061A0 */ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x34, 0x3D, +/* 000061B0 */ 0x95, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x4B, 0x01, 0x06, 0x00, 0x00, /* 000061C0 */ 0x00, 0x35, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x35, 0xCC, 0x00, 0x00, /* 000061D0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x7A, 0x05, 0x3D, 0x00, 0x7A, 0x07, /* 000061E0 */ 0x3D, 0x01, 0x7A, 0x09, 0x3D, 0x02, 0x7A, 0x0B, 0x3D, 0x03, 0x7A, 0x0D, 0x3D, 0x04, 0x7A, 0x0F, /* 000061F0 */ 0x3D, 0x05, 0x7A, 0x11, 0x3D, 0x06, 0x7A, 0x13, 0x3D, 0x07, 0x7A, 0x15, 0x3D, 0x08, 0x96, 0x02, /* 00006200 */ 0x00, 0x00, 0x00, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3E, 0x6C, 0x3D, /* 00006210 */ 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, -/* 00006220 */ 0x00, 0x3F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x17, 0xB8, 0x41, 0x00, 0x01, 0x4A, +/* 00006220 */ 0x00, 0x3F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x17, 0xB8, 0x41, 0x00, 0x01, 0x4B, /* 00006230 */ 0x01, 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, 0x3F, 0x3F, 0x5C, 0x01, /* 00006240 */ 0x3F, 0x5C, 0x02, 0x19, 0x1F, 0x03, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, /* 00006250 */ 0x00, 0x3E, 0x6C, 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, 0x8E, 0x01, 0x00, 0x00, /* 00006260 */ 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x1A, 0xB8, -/* 00006270 */ 0x41, 0x00, 0x01, 0x4A, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, +/* 00006270 */ 0x41, 0x00, 0x01, 0x4B, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, /* 00006280 */ 0x3F, 0x3F, 0x5C, 0x01, 0x3F, 0x5C, 0x02, 0x1B, 0x1F, 0x03, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, /* 00006290 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x3E, 0x6C, 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, /* 000062A0 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, -/* 000062B0 */ 0x5C, 0x01, 0x1C, 0xB8, 0x41, 0x00, 0x01, 0x4A, 0x01, 0x09, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, +/* 000062B0 */ 0x5C, 0x01, 0x1C, 0xB8, 0x41, 0x00, 0x01, 0x4B, 0x01, 0x09, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, /* 000062C0 */ 0x02, 0x40, 0x1F, 0x03, 0x3F, 0x3F, 0x5C, 0x01, 0x3F, 0x5C, 0x02, 0x1D, 0x1F, 0x03, 0xFF, 0x3D, /* 000062D0 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x14, 0x03, 0x00, 0x3D, 0x02, 0x09, /* 000062E0 */ 0x9A, 0x02, 0xDE, 0x01, 0x04, 0x02, 0xB8, 0x3D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x3D, 0x3D, -/* 000062F0 */ 0x01, 0x4A, 0x01, 0x0A, 0x00, 0x00, 0x00, 0x36, 0x3D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, -/* 00006300 */ 0x00, 0x00, 0x36, 0x01, 0x4A, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x37, 0x3D, 0x95, 0x01, 0x00, 0x00, +/* 000062F0 */ 0x01, 0x4B, 0x01, 0x0A, 0x00, 0x00, 0x00, 0x36, 0x3D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, +/* 00006300 */ 0x00, 0x00, 0x36, 0x01, 0x4B, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x37, 0x3D, 0x95, 0x01, 0x00, 0x00, /* 00006310 */ 0x00, 0x03, 0x00, 0x00, 0x00, 0x37, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3D, /* 00006320 */ 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x1E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, /* 00006330 */ 0x00, 0x00, 0x3E, 0x5C, 0x02, 0x3E, 0x1F, 0x03, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, @@ -3024,13 +3024,13 @@ namespace Js /* 00006470 */ 0x3E, 0x0F, 0x5C, 0x01, 0x3E, 0x5C, 0x02, 0x2A, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, /* 00006480 */ 0x00, 0x3E, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x07, /* 00006490 */ 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x2C, 0xB8, 0x41, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, -/* 000064A0 */ 0x41, 0x41, 0x01, 0x4A, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, +/* 000064A0 */ 0x41, 0x41, 0x01, 0x4B, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, /* 000064B0 */ 0x3F, 0x3F, 0x7A, 0x3F, 0x3E, 0x10, 0x7A, 0x25, 0x3E, 0x0D, 0x7A, 0x29, 0x3E, 0x0E, 0x5C, 0x03, /* 000064C0 */ 0x3E, 0x1F, 0x04, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3D, 0x07, /* 000064D0 */ 0x04, 0x00, 0x5C, 0x00, 0x18, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x61, /* 000064E0 */ 0x3E, 0x3E, 0x0F, 0x5C, 0x01, 0x3E, 0x5C, 0x02, 0x2D, 0xCC, 0x70, 0x00, 0x00, 0x00, 0x04, 0x00, /* 000064F0 */ 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xB8, 0x40, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x40, 0x40, -/* 00006500 */ 0x01, 0x4A, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x7A, 0x3F, 0x3E, 0x0B, 0x01, 0x5F, 0x01, +/* 00006500 */ 0x01, 0x4B, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x7A, 0x3F, 0x3E, 0x0B, 0x01, 0x60, 0x01, /* 00006510 */ 0x3F, 0x3E, 0x7A, 0x29, 0x3E, 0x0C, 0x7A, 0x25, 0x3E, 0x0D, 0x7A, 0x29, 0x3E, 0x0E, 0x5C, 0x03, /* 00006520 */ 0x3E, 0x1F, 0x04, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3D, 0x07, /* 00006530 */ 0x04, 0x00, 0x5C, 0x00, 0x18, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x5C, @@ -3794,16 +3794,16 @@ namespace Js /* 00009490 */ 0x64, 0x03, 0xFE, 0x59, 0x03, 0xA8, 0x22, 0xA8, 0x23, 0xA8, 0x24, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 000094A0 */ 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x14, 0x15, 0x00, 0x2A, 0x02, 0x09, 0x00, 0x00, 0x8E, 0x01, 0x00, /* 000094B0 */ 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x14, 0x03, 0x00, 0x2A, 0x03, 0x09, 0x26, 0x03, 0xDE, -/* 000094C0 */ 0x00, 0x03, 0x01, 0xB8, 0x2A, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2A, 0x95, +/* 000094C0 */ 0x00, 0x03, 0x01, 0xB8, 0x2A, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2A, 0x95, /* 000094D0 */ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, /* 000094E0 */ 0x00, 0x00, 0x2B, 0x6C, 0x2A, 0x2B, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x2B, 0x8E, 0x01, 0x00, /* 000094F0 */ 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x04, -/* 00009500 */ 0xB8, 0x2E, 0x00, 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, 0x2D, 0x1F, +/* 00009500 */ 0xB8, 0x2E, 0x00, 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, 0x2D, 0x1F, /* 00009510 */ 0x03, 0x2C, 0x2C, 0x5C, 0x01, 0x2C, 0x5C, 0x02, 0x06, 0x1F, 0x03, 0xFF, 0x2A, 0x8E, 0x01, 0x00, /* 00009520 */ 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x14, 0x03, 0x00, 0x2A, 0x02, 0x09, 0xB6, 0x02, 0xDE, -/* 00009530 */ 0x01, 0x04, 0x02, 0xB8, 0x2A, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x01, 0x4A, 0x01, +/* 00009530 */ 0x01, 0x04, 0x02, 0xB8, 0x2A, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x01, 0x4B, 0x01, /* 00009540 */ 0x02, 0x00, 0x00, 0x00, 0x23, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, -/* 00009550 */ 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x24, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, +/* 00009550 */ 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x24, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, /* 00009560 */ 0x00, 0x00, 0x24, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2A, 0x07, 0x03, 0x00, /* 00009570 */ 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x07, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2B, /* 00009580 */ 0x5C, 0x02, 0x2B, 0x1F, 0x03, 0xFF, 0x2A, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, @@ -3834,14 +3834,14 @@ namespace Js /* 00009710 */ 0x2A, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 00009720 */ 0x2B, 0x61, 0x2B, 0x2B, 0x05, 0x5C, 0x01, 0x2B, 0x5C, 0x02, 0x1E, 0xCC, 0x44, 0x00, 0x00, 0x00, /* 00009730 */ 0x03, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0xB8, 0x2D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, -/* 00009740 */ 0x2D, 0x2D, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x2D, 0x7A, 0x2C, 0x2B, 0x01, 0x01, -/* 00009750 */ 0x5F, 0x01, 0x2C, 0x2B, 0x7A, 0x0C, 0x2B, 0x02, 0x7A, 0x1B, 0x2B, 0x04, 0x7A, 0x0C, 0x2B, 0x03, +/* 00009740 */ 0x2D, 0x2D, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x2D, 0x7A, 0x2C, 0x2B, 0x01, 0x01, +/* 00009750 */ 0x60, 0x01, 0x2C, 0x2B, 0x7A, 0x0C, 0x2B, 0x02, 0x7A, 0x1B, 0x2B, 0x04, 0x7A, 0x0C, 0x2B, 0x03, /* 00009760 */ 0x5C, 0x03, 0x2B, 0x1F, 0x04, 0xFF, 0x2A, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, /* 00009770 */ 0x2A, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 00009780 */ 0x2B, 0x61, 0x2B, 0x2B, 0x05, 0x5C, 0x01, 0x2B, 0x5C, 0x02, 0x1F, 0xCC, 0x5C, 0x00, 0x00, 0x00, /* 00009790 */ 0x04, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, /* 000097A0 */ 0x00, 0x2C, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x21, 0xB8, 0x2E, 0x00, 0xB7, 0x01, -/* 000097B0 */ 0x00, 0x00, 0x00, 0x2E, 0x2E, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, +/* 000097B0 */ 0x00, 0x00, 0x00, 0x2E, 0x2E, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, /* 000097C0 */ 0x2D, 0x1F, 0x03, 0x2C, 0x2C, 0x7A, 0x2C, 0x2B, 0x06, 0x7A, 0x1B, 0x2B, 0x04, 0x7A, 0x0C, 0x2B, /* 000097D0 */ 0x03, 0x5C, 0x03, 0x2B, 0x1F, 0x04, 0xFF, 0x2A, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 000097E0 */ 0x00, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, @@ -4151,16 +4151,16 @@ namespace Js /* 0000AAE0 */ 0x37, 0x03, 0x02, 0xFE, 0x38, 0x03, 0xFE, 0x24, 0x03, 0xA8, 0x17, 0xA8, 0x18, 0xA8, 0x19, 0x8E, /* 0000AAF0 */ 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x14, 0x15, 0x00, 0x1D, 0x02, 0x09, 0x00, /* 0000AB00 */ 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x14, 0x03, 0x00, 0x1D, 0x03, -/* 0000AB10 */ 0x09, 0xF1, 0x02, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x1D, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, +/* 0000AB10 */ 0x09, 0xF1, 0x02, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x1D, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, /* 0000AB20 */ 0x00, 0x17, 0x1D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x8E, 0x01, 0x00, /* 0000AB30 */ 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0x6C, 0x1D, 0x1E, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 0000AB40 */ 0x1E, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1F, 0x07, 0x03, 0x00, 0x5C, 0x00, -/* 0000AB50 */ 0x05, 0x5C, 0x01, 0x04, 0xB8, 0x21, 0x00, 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x20, 0x21, +/* 0000AB50 */ 0x05, 0x5C, 0x01, 0x04, 0xB8, 0x21, 0x00, 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, 0x00, 0x20, 0x21, /* 0000AB60 */ 0x5C, 0x02, 0x20, 0x1F, 0x03, 0x1F, 0x1F, 0x5C, 0x01, 0x1F, 0x5C, 0x02, 0x06, 0x1F, 0x03, 0xFF, /* 0000AB70 */ 0x1D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x14, 0x03, 0x00, 0x1D, 0x02, /* 0000AB80 */ 0x09, 0x81, 0x02, 0xDE, 0x01, 0x04, 0x02, 0xB8, 0x1D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x1D, -/* 0000AB90 */ 0x1D, 0x01, 0x4A, 0x01, 0x02, 0x00, 0x00, 0x00, 0x18, 0x1D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, -/* 0000ABA0 */ 0x00, 0x00, 0x00, 0x18, 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x19, 0x1D, 0x95, 0x01, 0x00, +/* 0000AB90 */ 0x1D, 0x01, 0x4B, 0x01, 0x02, 0x00, 0x00, 0x00, 0x18, 0x1D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, +/* 0000ABA0 */ 0x00, 0x00, 0x00, 0x18, 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x19, 0x1D, 0x95, 0x01, 0x00, /* 0000ABB0 */ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x19, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, /* 0000ABC0 */ 0x1D, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x07, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, /* 0000ABD0 */ 0x00, 0x00, 0x00, 0x1E, 0x5C, 0x02, 0x1E, 0x1F, 0x03, 0xFF, 0x1D, 0x8E, 0x01, 0x00, 0x00, 0x00, @@ -4188,14 +4188,14 @@ namespace Js /* 0000AD30 */ 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, /* 0000AD40 */ 0x61, 0x1E, 0x1E, 0x05, 0x5C, 0x01, 0x1E, 0x5C, 0x02, 0x13, 0xCC, 0x44, 0x00, 0x00, 0x00, 0x03, /* 0000AD50 */ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xB8, 0x20, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x20, -/* 0000AD60 */ 0x20, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x7A, 0x1F, 0x1E, 0x01, 0x01, 0x5F, +/* 0000AD60 */ 0x20, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x7A, 0x1F, 0x1E, 0x01, 0x01, 0x60, /* 0000AD70 */ 0x01, 0x1F, 0x1E, 0x7A, 0x0C, 0x1E, 0x02, 0x7A, 0x10, 0x1E, 0x04, 0x7A, 0x0C, 0x1E, 0x03, 0x5C, /* 0000AD80 */ 0x03, 0x1E, 0x1F, 0x04, 0xFF, 0x1D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1D, /* 0000AD90 */ 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, /* 0000ADA0 */ 0x61, 0x1E, 0x1E, 0x05, 0x5C, 0x01, 0x1E, 0x5C, 0x02, 0x14, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x04, /* 0000ADB0 */ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, /* 0000ADC0 */ 0x1F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x16, 0xB8, 0x21, 0x00, 0xB7, 0x01, 0x00, -/* 0000ADD0 */ 0x00, 0x00, 0x21, 0x21, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, +/* 0000ADD0 */ 0x00, 0x00, 0x21, 0x21, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, /* 0000ADE0 */ 0x1F, 0x03, 0x1F, 0x1F, 0x7A, 0x1F, 0x1E, 0x06, 0x7A, 0x10, 0x1E, 0x04, 0x7A, 0x0C, 0x1E, 0x03, /* 0000ADF0 */ 0x5C, 0x03, 0x1E, 0x1F, 0x04, 0xFF, 0x1D, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 0000AE00 */ 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, @@ -4821,11 +4821,11 @@ namespace Js /* 0000D4C0 */ 0x03, 0x02, 0xFE, 0x15, 0x03, 0x03, 0x04, 0x88, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, /* 0000D4D0 */ 0x00, 0x0B, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0xCC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, /* 0000D4E0 */ 0x00, 0x0C, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x00, 0x01, -/* 0000D4F0 */ 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x01, 0x01, 0x5F, -/* 0000D500 */ 0x01, 0x0D, 0x0C, 0xD4, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x02, 0x01, 0x5F, 0x01, -/* 0000D510 */ 0x0D, 0x0C, 0xD4, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x03, 0x01, 0x5F, 0x01, 0x0D, -/* 0000D520 */ 0x0C, 0xD4, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x04, 0x01, 0x5F, 0x01, 0x0D, 0x0C, -/* 0000D530 */ 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x05, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0x5C, +/* 0000D4F0 */ 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x01, 0x01, 0x60, +/* 0000D500 */ 0x01, 0x0D, 0x0C, 0xD4, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x02, 0x01, 0x60, 0x01, +/* 0000D510 */ 0x0D, 0x0C, 0xD4, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x03, 0x01, 0x60, 0x01, 0x0D, +/* 0000D520 */ 0x0C, 0xD4, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x04, 0x01, 0x60, 0x01, 0x0D, 0x0C, +/* 0000D530 */ 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x05, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0x5C, /* 0000D540 */ 0x01, 0x0C, 0x5C, 0x02, 0x08, 0x1F, 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, /* 0000D550 */ 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, /* 0000D560 */ 0x03, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x37, 0x02, 0x00, 0x00, 0x3C, diff --git a/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h b/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h index 44db62dfa94..0e11fee99c9 100644 --- a/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h +++ b/lib/Runtime/Library/InJavascript/Intl.js.nojit.bc.64b.h @@ -2970,35 +2970,35 @@ namespace Js /* 00006110 */ 0x31, 0xA8, 0x32, 0xA8, 0x33, 0xA8, 0x34, 0xA8, 0x35, 0xA8, 0x36, 0xA8, 0x37, 0x8E, 0x01, 0x00, /* 00006120 */ 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x14, 0x15, 0x00, 0x3D, 0x02, 0x09, 0x00, 0x00, 0x8E, /* 00006130 */ 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x14, 0x03, 0x00, 0x3D, 0x03, 0x09, 0x3B, -/* 00006140 */ 0x04, 0xDE, 0x00, 0x09, 0x01, 0xB8, 0x3D, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2F, -/* 00006150 */ 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x4A, 0x01, 0x01, 0x00, -/* 00006160 */ 0x00, 0x00, 0x30, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x01, 0x4A, +/* 00006140 */ 0x04, 0xDE, 0x00, 0x09, 0x01, 0xB8, 0x3D, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x2F, +/* 00006150 */ 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2F, 0x01, 0x4B, 0x01, 0x01, 0x00, +/* 00006160 */ 0x00, 0x00, 0x30, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x01, 0x4B, /* 00006170 */ 0x01, 0x02, 0x00, 0x00, 0x00, 0x31, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, -/* 00006180 */ 0x31, 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x32, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x05, -/* 00006190 */ 0x00, 0x00, 0x00, 0x32, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x95, 0x00, 0x00, -/* 000061A0 */ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x34, 0x3D, -/* 000061B0 */ 0x95, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x4A, 0x01, 0x06, 0x00, 0x00, +/* 00006180 */ 0x31, 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x32, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x05, +/* 00006190 */ 0x00, 0x00, 0x00, 0x32, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x33, 0x3D, 0x95, 0x00, 0x00, +/* 000061A0 */ 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x33, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x34, 0x3D, +/* 000061B0 */ 0x95, 0x00, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x34, 0x01, 0x4B, 0x01, 0x06, 0x00, 0x00, /* 000061C0 */ 0x00, 0x35, 0x3D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x35, 0xCC, 0x00, 0x00, /* 000061D0 */ 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3D, 0x00, 0x00, 0x00, 0x7A, 0x05, 0x3D, 0x00, 0x7A, 0x07, /* 000061E0 */ 0x3D, 0x01, 0x7A, 0x09, 0x3D, 0x02, 0x7A, 0x0B, 0x3D, 0x03, 0x7A, 0x0D, 0x3D, 0x04, 0x7A, 0x0F, /* 000061F0 */ 0x3D, 0x05, 0x7A, 0x11, 0x3D, 0x06, 0x7A, 0x13, 0x3D, 0x07, 0x7A, 0x15, 0x3D, 0x08, 0x96, 0x02, /* 00006200 */ 0x00, 0x00, 0x00, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3E, 0x6C, 0x3D, /* 00006210 */ 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, -/* 00006220 */ 0x00, 0x3F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x17, 0xB8, 0x41, 0x00, 0x01, 0x4A, +/* 00006220 */ 0x00, 0x3F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x17, 0xB8, 0x41, 0x00, 0x01, 0x4B, /* 00006230 */ 0x01, 0x07, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, 0x3F, 0x3F, 0x5C, 0x01, /* 00006240 */ 0x3F, 0x5C, 0x02, 0x19, 0x1F, 0x03, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, /* 00006250 */ 0x00, 0x3E, 0x6C, 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, 0x8E, 0x01, 0x00, 0x00, /* 00006260 */ 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x1A, 0xB8, -/* 00006270 */ 0x41, 0x00, 0x01, 0x4A, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, +/* 00006270 */ 0x41, 0x00, 0x01, 0x4B, 0x01, 0x08, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, /* 00006280 */ 0x3F, 0x3F, 0x5C, 0x01, 0x3F, 0x5C, 0x02, 0x1B, 0x1F, 0x03, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, /* 00006290 */ 0x00, 0x07, 0x00, 0x00, 0x00, 0x3E, 0x6C, 0x3D, 0x3E, 0x09, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x3E, /* 000062A0 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, -/* 000062B0 */ 0x5C, 0x01, 0x1C, 0xB8, 0x41, 0x00, 0x01, 0x4A, 0x01, 0x09, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, +/* 000062B0 */ 0x5C, 0x01, 0x1C, 0xB8, 0x41, 0x00, 0x01, 0x4B, 0x01, 0x09, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, /* 000062C0 */ 0x02, 0x40, 0x1F, 0x03, 0x3F, 0x3F, 0x5C, 0x01, 0x3F, 0x5C, 0x02, 0x1D, 0x1F, 0x03, 0xFF, 0x3D, /* 000062D0 */ 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x3D, 0x14, 0x03, 0x00, 0x3D, 0x02, 0x09, /* 000062E0 */ 0x9A, 0x02, 0xDE, 0x01, 0x04, 0x02, 0xB8, 0x3D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x3D, 0x3D, -/* 000062F0 */ 0x01, 0x4A, 0x01, 0x0A, 0x00, 0x00, 0x00, 0x36, 0x3D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, -/* 00006300 */ 0x00, 0x00, 0x36, 0x01, 0x4A, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x37, 0x3D, 0x95, 0x01, 0x00, 0x00, +/* 000062F0 */ 0x01, 0x4B, 0x01, 0x0A, 0x00, 0x00, 0x00, 0x36, 0x3D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, +/* 00006300 */ 0x00, 0x00, 0x36, 0x01, 0x4B, 0x01, 0x0B, 0x00, 0x00, 0x00, 0x37, 0x3D, 0x95, 0x01, 0x00, 0x00, /* 00006310 */ 0x00, 0x03, 0x00, 0x00, 0x00, 0x37, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3D, /* 00006320 */ 0x07, 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x1E, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, /* 00006330 */ 0x00, 0x00, 0x3E, 0x5C, 0x02, 0x3E, 0x1F, 0x03, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, @@ -3024,13 +3024,13 @@ namespace Js /* 00006470 */ 0x3E, 0x0F, 0x5C, 0x01, 0x3E, 0x5C, 0x02, 0x2A, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, /* 00006480 */ 0x00, 0x3E, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3F, 0x07, /* 00006490 */ 0x03, 0x00, 0x5C, 0x00, 0x18, 0x5C, 0x01, 0x2C, 0xB8, 0x41, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, -/* 000064A0 */ 0x41, 0x41, 0x01, 0x4A, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, +/* 000064A0 */ 0x41, 0x41, 0x01, 0x4B, 0x01, 0x0C, 0x00, 0x00, 0x00, 0x40, 0x41, 0x5C, 0x02, 0x40, 0x1F, 0x03, /* 000064B0 */ 0x3F, 0x3F, 0x7A, 0x3F, 0x3E, 0x10, 0x7A, 0x25, 0x3E, 0x0D, 0x7A, 0x29, 0x3E, 0x0E, 0x5C, 0x03, /* 000064C0 */ 0x3E, 0x1F, 0x04, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3D, 0x07, /* 000064D0 */ 0x04, 0x00, 0x5C, 0x00, 0x18, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x61, /* 000064E0 */ 0x3E, 0x3E, 0x0F, 0x5C, 0x01, 0x3E, 0x5C, 0x02, 0x2D, 0xCC, 0x70, 0x00, 0x00, 0x00, 0x04, 0x00, /* 000064F0 */ 0x00, 0x00, 0x3E, 0x00, 0x00, 0x00, 0xB8, 0x40, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x40, 0x40, -/* 00006500 */ 0x01, 0x4A, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x7A, 0x3F, 0x3E, 0x0B, 0x01, 0x5F, 0x01, +/* 00006500 */ 0x01, 0x4B, 0x01, 0x0D, 0x00, 0x00, 0x00, 0x3F, 0x40, 0x7A, 0x3F, 0x3E, 0x0B, 0x01, 0x60, 0x01, /* 00006510 */ 0x3F, 0x3E, 0x7A, 0x29, 0x3E, 0x0C, 0x7A, 0x25, 0x3E, 0x0D, 0x7A, 0x29, 0x3E, 0x0E, 0x5C, 0x03, /* 00006520 */ 0x3E, 0x1F, 0x04, 0xFF, 0x3D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x3D, 0x07, /* 00006530 */ 0x04, 0x00, 0x5C, 0x00, 0x18, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3E, 0x5C, @@ -3794,16 +3794,16 @@ namespace Js /* 00009490 */ 0x64, 0x03, 0xFE, 0x59, 0x03, 0xA8, 0x22, 0xA8, 0x23, 0xA8, 0x24, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 000094A0 */ 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x14, 0x15, 0x00, 0x2A, 0x02, 0x09, 0x00, 0x00, 0x8E, 0x01, 0x00, /* 000094B0 */ 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x14, 0x03, 0x00, 0x2A, 0x03, 0x09, 0x26, 0x03, 0xDE, -/* 000094C0 */ 0x00, 0x03, 0x01, 0xB8, 0x2A, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2A, 0x95, +/* 000094C0 */ 0x00, 0x03, 0x01, 0xB8, 0x2A, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, 0x00, 0x22, 0x2A, 0x95, /* 000094D0 */ 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x22, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x07, 0x00, /* 000094E0 */ 0x00, 0x00, 0x2B, 0x6C, 0x2A, 0x2B, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x2B, 0x8E, 0x01, 0x00, /* 000094F0 */ 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2C, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x04, -/* 00009500 */ 0xB8, 0x2E, 0x00, 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, 0x2D, 0x1F, +/* 00009500 */ 0xB8, 0x2E, 0x00, 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, 0x2D, 0x1F, /* 00009510 */ 0x03, 0x2C, 0x2C, 0x5C, 0x01, 0x2C, 0x5C, 0x02, 0x06, 0x1F, 0x03, 0xFF, 0x2A, 0x8E, 0x01, 0x00, /* 00009520 */ 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x2A, 0x14, 0x03, 0x00, 0x2A, 0x02, 0x09, 0xB6, 0x02, 0xDE, -/* 00009530 */ 0x01, 0x04, 0x02, 0xB8, 0x2A, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x01, 0x4A, 0x01, +/* 00009530 */ 0x01, 0x04, 0x02, 0xB8, 0x2A, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x2A, 0x2A, 0x01, 0x4B, 0x01, /* 00009540 */ 0x02, 0x00, 0x00, 0x00, 0x23, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, -/* 00009550 */ 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x24, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, +/* 00009550 */ 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x24, 0x2A, 0x95, 0x01, 0x00, 0x00, 0x00, 0x03, 0x00, /* 00009560 */ 0x00, 0x00, 0x24, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x2A, 0x07, 0x03, 0x00, /* 00009570 */ 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x07, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2B, /* 00009580 */ 0x5C, 0x02, 0x2B, 0x1F, 0x03, 0xFF, 0x2A, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, @@ -3834,14 +3834,14 @@ namespace Js /* 00009710 */ 0x2A, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 00009720 */ 0x2B, 0x61, 0x2B, 0x2B, 0x05, 0x5C, 0x01, 0x2B, 0x5C, 0x02, 0x1E, 0xCC, 0x44, 0x00, 0x00, 0x00, /* 00009730 */ 0x03, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0xB8, 0x2D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, -/* 00009740 */ 0x2D, 0x2D, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x2D, 0x7A, 0x2C, 0x2B, 0x01, 0x01, -/* 00009750 */ 0x5F, 0x01, 0x2C, 0x2B, 0x7A, 0x0C, 0x2B, 0x02, 0x7A, 0x1B, 0x2B, 0x04, 0x7A, 0x0C, 0x2B, 0x03, +/* 00009740 */ 0x2D, 0x2D, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x2C, 0x2D, 0x7A, 0x2C, 0x2B, 0x01, 0x01, +/* 00009750 */ 0x60, 0x01, 0x2C, 0x2B, 0x7A, 0x0C, 0x2B, 0x02, 0x7A, 0x1B, 0x2B, 0x04, 0x7A, 0x0C, 0x2B, 0x03, /* 00009760 */ 0x5C, 0x03, 0x2B, 0x1F, 0x04, 0xFF, 0x2A, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, /* 00009770 */ 0x2A, 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 00009780 */ 0x2B, 0x61, 0x2B, 0x2B, 0x05, 0x5C, 0x01, 0x2B, 0x5C, 0x02, 0x1F, 0xCC, 0x5C, 0x00, 0x00, 0x00, /* 00009790 */ 0x04, 0x00, 0x00, 0x00, 0x2B, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, /* 000097A0 */ 0x00, 0x2C, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x21, 0xB8, 0x2E, 0x00, 0xB7, 0x01, -/* 000097B0 */ 0x00, 0x00, 0x00, 0x2E, 0x2E, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, +/* 000097B0 */ 0x00, 0x00, 0x00, 0x2E, 0x2E, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x2D, 0x2E, 0x5C, 0x02, /* 000097C0 */ 0x2D, 0x1F, 0x03, 0x2C, 0x2C, 0x7A, 0x2C, 0x2B, 0x06, 0x7A, 0x1B, 0x2B, 0x04, 0x7A, 0x0C, 0x2B, /* 000097D0 */ 0x03, 0x5C, 0x03, 0x2B, 0x1F, 0x04, 0xFF, 0x2A, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, /* 000097E0 */ 0x00, 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, @@ -4151,16 +4151,16 @@ namespace Js /* 0000AAE0 */ 0x37, 0x03, 0x02, 0xFE, 0x38, 0x03, 0xFE, 0x24, 0x03, 0xA8, 0x17, 0xA8, 0x18, 0xA8, 0x19, 0x8E, /* 0000AAF0 */ 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x14, 0x15, 0x00, 0x1D, 0x02, 0x09, 0x00, /* 0000AB00 */ 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x14, 0x03, 0x00, 0x1D, 0x03, -/* 0000AB10 */ 0x09, 0xF1, 0x02, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x1D, 0x00, 0x01, 0x4A, 0x01, 0x00, 0x00, 0x00, +/* 0000AB10 */ 0x09, 0xF1, 0x02, 0xDE, 0x00, 0x03, 0x01, 0xB8, 0x1D, 0x00, 0x01, 0x4B, 0x01, 0x00, 0x00, 0x00, /* 0000AB20 */ 0x00, 0x17, 0x1D, 0x95, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x17, 0x8E, 0x01, 0x00, /* 0000AB30 */ 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1E, 0x6C, 0x1D, 0x1E, 0x00, 0x07, 0x03, 0x00, 0x5C, 0x00, /* 0000AB40 */ 0x1E, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x1F, 0x07, 0x03, 0x00, 0x5C, 0x00, -/* 0000AB50 */ 0x05, 0x5C, 0x01, 0x04, 0xB8, 0x21, 0x00, 0x01, 0x4A, 0x01, 0x01, 0x00, 0x00, 0x00, 0x20, 0x21, +/* 0000AB50 */ 0x05, 0x5C, 0x01, 0x04, 0xB8, 0x21, 0x00, 0x01, 0x4B, 0x01, 0x01, 0x00, 0x00, 0x00, 0x20, 0x21, /* 0000AB60 */ 0x5C, 0x02, 0x20, 0x1F, 0x03, 0x1F, 0x1F, 0x5C, 0x01, 0x1F, 0x5C, 0x02, 0x06, 0x1F, 0x03, 0xFF, /* 0000AB70 */ 0x1D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x3A, 0x00, 0x00, 0x00, 0x1D, 0x14, 0x03, 0x00, 0x1D, 0x02, /* 0000AB80 */ 0x09, 0x81, 0x02, 0xDE, 0x01, 0x04, 0x02, 0xB8, 0x1D, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x1D, -/* 0000AB90 */ 0x1D, 0x01, 0x4A, 0x01, 0x02, 0x00, 0x00, 0x00, 0x18, 0x1D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, -/* 0000ABA0 */ 0x00, 0x00, 0x00, 0x18, 0x01, 0x4A, 0x01, 0x03, 0x00, 0x00, 0x00, 0x19, 0x1D, 0x95, 0x01, 0x00, +/* 0000AB90 */ 0x1D, 0x01, 0x4B, 0x01, 0x02, 0x00, 0x00, 0x00, 0x18, 0x1D, 0x95, 0x01, 0x00, 0x00, 0x00, 0x02, +/* 0000ABA0 */ 0x00, 0x00, 0x00, 0x18, 0x01, 0x4B, 0x01, 0x03, 0x00, 0x00, 0x00, 0x19, 0x1D, 0x95, 0x01, 0x00, /* 0000ABB0 */ 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x19, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, /* 0000ABC0 */ 0x1D, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x07, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, /* 0000ABD0 */ 0x00, 0x00, 0x00, 0x1E, 0x5C, 0x02, 0x1E, 0x1F, 0x03, 0xFF, 0x1D, 0x8E, 0x01, 0x00, 0x00, 0x00, @@ -4188,14 +4188,14 @@ namespace Js /* 0000AD30 */ 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, /* 0000AD40 */ 0x61, 0x1E, 0x1E, 0x05, 0x5C, 0x01, 0x1E, 0x5C, 0x02, 0x13, 0xCC, 0x44, 0x00, 0x00, 0x00, 0x03, /* 0000AD50 */ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0xB8, 0x20, 0x00, 0xB7, 0x01, 0x00, 0x00, 0x00, 0x20, -/* 0000AD60 */ 0x20, 0x01, 0x4A, 0x01, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x7A, 0x1F, 0x1E, 0x01, 0x01, 0x5F, +/* 0000AD60 */ 0x20, 0x01, 0x4B, 0x01, 0x04, 0x00, 0x00, 0x00, 0x1F, 0x20, 0x7A, 0x1F, 0x1E, 0x01, 0x01, 0x60, /* 0000AD70 */ 0x01, 0x1F, 0x1E, 0x7A, 0x0C, 0x1E, 0x02, 0x7A, 0x10, 0x1E, 0x04, 0x7A, 0x0C, 0x1E, 0x03, 0x5C, /* 0000AD80 */ 0x03, 0x1E, 0x1F, 0x04, 0xFF, 0x1D, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1D, /* 0000AD90 */ 0x07, 0x04, 0x00, 0x5C, 0x00, 0x05, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1E, /* 0000ADA0 */ 0x61, 0x1E, 0x1E, 0x05, 0x5C, 0x01, 0x1E, 0x5C, 0x02, 0x14, 0xCC, 0x5C, 0x00, 0x00, 0x00, 0x04, /* 0000ADB0 */ 0x00, 0x00, 0x00, 0x1E, 0x00, 0x00, 0x00, 0x8E, 0x01, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, /* 0000ADC0 */ 0x1F, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x05, 0x5C, 0x01, 0x16, 0xB8, 0x21, 0x00, 0xB7, 0x01, 0x00, -/* 0000ADD0 */ 0x00, 0x00, 0x21, 0x21, 0x01, 0x4A, 0x01, 0x05, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, +/* 0000ADD0 */ 0x00, 0x00, 0x21, 0x21, 0x01, 0x4B, 0x01, 0x05, 0x00, 0x00, 0x00, 0x20, 0x21, 0x5C, 0x02, 0x20, /* 0000ADE0 */ 0x1F, 0x03, 0x1F, 0x1F, 0x7A, 0x1F, 0x1E, 0x06, 0x7A, 0x10, 0x1E, 0x04, 0x7A, 0x0C, 0x1E, 0x03, /* 0000ADF0 */ 0x5C, 0x03, 0x1E, 0x1F, 0x04, 0xFF, 0x1D, 0x90, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, /* 0000AE00 */ 0x00, 0x09, 0x07, 0x00, 0xA8, 0x00, 0x09, 0x02, 0x00, 0xA8, 0x00, 0x24, 0x00, 0x05, 0x70, 0x00, @@ -4821,11 +4821,11 @@ namespace Js /* 0000D4C0 */ 0x02, 0xFE, 0x14, 0x03, 0x02, 0xFE, 0x15, 0x03, 0x03, 0x04, 0x88, 0x8E, 0x01, 0x00, 0x00, 0x00, /* 0000D4D0 */ 0x08, 0x00, 0x00, 0x00, 0x0B, 0x07, 0x03, 0x00, 0x5C, 0x00, 0x09, 0xCC, 0x00, 0x00, 0x00, 0x00, /* 0000D4E0 */ 0x00, 0x00, 0x00, 0x00, 0x0C, 0x00, 0x00, 0x00, 0xD4, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, -/* 0000D4F0 */ 0x0C, 0x00, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, -/* 0000D500 */ 0x01, 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x02, -/* 0000D510 */ 0x01, 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x03, 0x01, -/* 0000D520 */ 0x5F, 0x01, 0x0D, 0x0C, 0xD4, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x04, 0x01, 0x5F, -/* 0000D530 */ 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x05, 0x01, 0x5F, 0x01, +/* 0000D4F0 */ 0x0C, 0x00, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x01, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, +/* 0000D500 */ 0x01, 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x02, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x02, +/* 0000D510 */ 0x01, 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x03, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x03, 0x01, +/* 0000D520 */ 0x60, 0x01, 0x0D, 0x0C, 0xD4, 0x04, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x04, 0x01, 0x60, +/* 0000D530 */ 0x01, 0x0D, 0x0C, 0xD4, 0x05, 0x00, 0x00, 0x00, 0x0D, 0x7A, 0x0D, 0x0C, 0x05, 0x01, 0x60, 0x01, /* 0000D540 */ 0x0D, 0x0C, 0x5C, 0x01, 0x0C, 0x5C, 0x02, 0x08, 0x1F, 0x03, 0x00, 0x0B, 0x09, 0x02, 0x00, 0xA8, /* 0000D550 */ 0x00, 0x24, 0x00, 0x01, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x06, 0x00, 0x00, 0x00, 0x00, /* 0000D560 */ 0x00, 0x00, 0x10, 0x03, 0x00, 0x00, 0x38, 0x02, 0x00, 0x00, 0x39, 0x02, 0x00, 0x00, 0x37, 0x02, diff --git a/lib/Runtime/Library/JavascriptArray.cpp b/lib/Runtime/Library/JavascriptArray.cpp index 57536405935..9ac784126fc 100644 --- a/lib/Runtime/Library/JavascriptArray.cpp +++ b/lib/Runtime/Library/JavascriptArray.cpp @@ -2997,7 +2997,9 @@ namespace Js } template - void JavascriptArray::ConcatArgs(RecyclableObject* pDestObj, TypeId* remoteTypeIds, Js::Arguments& args, ScriptContext* scriptContext, uint start, BigIndex startIdxDest, BOOL FirstPromotedItemIsSpreadable, BigIndex FirstPromotedItemLength) + void JavascriptArray::ConcatArgs(RecyclableObject* pDestObj, TypeId* remoteTypeIds, + Js::Arguments& args, ScriptContext* scriptContext, uint start, BigIndex startIdxDest, + BOOL FirstPromotedItemIsSpreadable, BigIndex FirstPromotedItemLength, bool spreadableCheckedAndTrue) { // This never gets called. Throw::InternalError(); @@ -3006,7 +3008,9 @@ namespace Js // Helper for EntryConcat. Concat args or elements of arg arrays into dest array. // template - void JavascriptArray::ConcatArgs(RecyclableObject* pDestObj, TypeId* remoteTypeIds, Js::Arguments& args, ScriptContext* scriptContext, uint start, uint startIdxDest, BOOL firstPromotedItemIsSpreadable, BigIndex firstPromotedItemLength) + void JavascriptArray::ConcatArgs(RecyclableObject* pDestObj, TypeId* remoteTypeIds, + Js::Arguments& args, ScriptContext* scriptContext, uint start, uint startIdxDest, + BOOL firstPromotedItemIsSpreadable, BigIndex firstPromotedItemLength, bool spreadableCheckedAndTrue) { JavascriptArray* pDestArray = nullptr; @@ -3019,8 +3023,8 @@ namespace Js for (uint idxArg = start; idxArg < args.Info.Count; idxArg++) { Var aItem = args[idxArg]; - BOOL spreadable = false; - if (scriptContext->GetConfig()->IsES6IsConcatSpreadableEnabled()) + bool spreadable = spreadableCheckedAndTrue; + if (!spreadable && scriptContext->GetConfig()->IsES6IsConcatSpreadableEnabled()) { // firstPromotedItemIsSpreadable is ONLY used to resume after a type promotion from uint32 to uint64 // we do this because calls to IsConcatSpreadable are observable (a big deal for proxies) and we don't @@ -3034,6 +3038,10 @@ namespace Js continue; } } + else + { + spreadableCheckedAndTrue = false; // if it was `true`, reset after the first use + } if (pDestArray && JavascriptArray::IsDirectAccessArray(aItem) && JavascriptArray::IsDirectAccessArray(pDestArray) && BigIndex(idxDest + JavascriptArray::FromVar(aItem)->length).IsSmallIndex()) // Fast path @@ -3151,6 +3159,7 @@ namespace Js pDestArray->SetLength(ConvertToIndex(idxDest, scriptContext)); } } + bool JavascriptArray::PromoteToBigIndex(BigIndex lhs, BigIndex rhs) { return false; // already a big index @@ -3173,17 +3182,25 @@ namespace Js for (uint idxArg = 0; idxArg < args.Info.Count; idxArg++) { Var aItem = args[idxArg]; + bool spreadableCheckedAndTrue = false; - if (scriptContext->GetConfig()->IsES6IsConcatSpreadableEnabled() && !JavascriptOperators::IsConcatSpreadable(aItem)) + if (scriptContext->GetConfig()->IsES6IsConcatSpreadableEnabled()) { - pDestArray->SetItem(idxDest, aItem, PropertyOperation_ThrowIfNotExtensible); - idxDest = idxDest + 1; - if (!JavascriptNativeIntArray::Is(pDestArray)) // SetItem could convert pDestArray to a var array if aItem is not an integer if so fall back + if (JavascriptOperators::IsConcatSpreadable(aItem)) { - ConcatArgs(pDestArray, remoteTypeIds, args, scriptContext, idxArg + 1, idxDest); - return pDestArray; + spreadableCheckedAndTrue = true; + } + else + { + pDestArray->SetItem(idxDest, aItem, PropertyOperation_ThrowIfNotExtensible); + idxDest = idxDest + 1; + if (!JavascriptNativeIntArray::Is(pDestArray)) // SetItem could convert pDestArray to a var array if aItem is not an integer if so fall back + { + ConcatArgs(pDestArray, remoteTypeIds, args, scriptContext, idxArg + 1, idxDest); + return pDestArray; + } + continue; } - continue; } if (JavascriptNativeIntArray::Is(aItem)) // Fast path @@ -3220,7 +3237,7 @@ namespace Js else { JavascriptArray *pVarDestArray = JavascriptNativeIntArray::ConvertToVarArray(pDestArray); - ConcatArgs(pVarDestArray, remoteTypeIds, args, scriptContext, idxArg, idxDest); + ConcatArgs(pVarDestArray, remoteTypeIds, args, scriptContext, idxArg, idxDest, spreadableCheckedAndTrue); return pVarDestArray; } } @@ -3238,18 +3255,26 @@ namespace Js { Var aItem = args[idxArg]; - if (scriptContext->GetConfig()->IsES6IsConcatSpreadableEnabled() && !JavascriptOperators::IsConcatSpreadable(aItem)) - { - - pDestArray->SetItem(idxDest, aItem, PropertyOperation_ThrowIfNotExtensible); + bool spreadableCheckedAndTrue = false; - idxDest = idxDest + 1; - if (!JavascriptNativeFloatArray::Is(pDestArray)) // SetItem could convert pDestArray to a var array if aItem is not an integer if so fall back + if (scriptContext->GetConfig()->IsES6IsConcatSpreadableEnabled()) + { + if (JavascriptOperators::IsConcatSpreadable(aItem)) { - ConcatArgs(pDestArray, remoteTypeIds, args, scriptContext, idxArg + 1, idxDest); - return pDestArray; + spreadableCheckedAndTrue = true; + } + else + { + pDestArray->SetItem(idxDest, aItem, PropertyOperation_ThrowIfNotExtensible); + + idxDest = idxDest + 1; + if (!JavascriptNativeFloatArray::Is(pDestArray)) // SetItem could convert pDestArray to a var array if aItem is not an integer if so fall back + { + ConcatArgs(pDestArray, remoteTypeIds, args, scriptContext, idxArg + 1, idxDest); + return pDestArray; + } + continue; } - continue; } bool converted; @@ -3270,9 +3295,10 @@ namespace Js else { JavascriptArray *pVarDestArray = JavascriptNativeFloatArray::ConvertToVarArray(pDestArray); - ConcatArgs(pVarDestArray, remoteTypeIds, args, scriptContext, idxArg, idxDest); + ConcatArgs(pVarDestArray, remoteTypeIds, args, scriptContext, idxArg, idxDest, spreadableCheckedAndTrue); return pVarDestArray; } + if (converted) { // Copying the last array forced a conversion, so switch over to the var version @@ -7563,7 +7589,7 @@ namespace Js { return res; } - if (JavascriptArray::Is(args[0])) + if (JavascriptArray::Is(args[0]) && !JavascriptArray::FromVar(args[0])->IsCrossSiteObject()) { #if ENABLE_COPYONACCESS_ARRAY JavascriptLibrary::CheckAndConvertCopyOnAccessNativeIntArray(args[0]); diff --git a/lib/Runtime/Library/JavascriptArray.h b/lib/Runtime/Library/JavascriptArray.h index b20ca7dd0c0..22bc1cb1b0e 100644 --- a/lib/Runtime/Library/JavascriptArray.h +++ b/lib/Runtime/Library/JavascriptArray.h @@ -123,7 +123,7 @@ namespace Js static const uint8 AllocationBucketIndex = 0; // 1st column in allocationBuckets that stores no. of missing elements to initialize for given bucket static const uint8 MissingElementsCountIndex = 1; - // 2nd column in allocationBuckets that stores allocation size for given bucket + // 2nd column in allocationBuckets that stores allocation size for given bucket static const uint8 AllocationSizeIndex = 2; #if defined(_M_X64_OR_ARM64) static const uint8 AllocationBucketsCount = 3; @@ -780,9 +780,9 @@ namespace Js static void SetConcatItem(Var aItem, uint idxArg, JavascriptArray* pDestArray, RecyclableObject* pDestObj, T idxDest, ScriptContext *scriptContext); template - static void ConcatArgs(RecyclableObject* pDestObj, TypeId* remoteTypeIds, Js::Arguments& args, ScriptContext* scriptContext, uint start, BigIndex startIdxDest, BOOL firstPromotedItemIsSpreadable, BigIndex firstPromotedItemLength); + static void ConcatArgs(RecyclableObject* pDestObj, TypeId* remoteTypeIds, Js::Arguments& args, ScriptContext* scriptContext, uint start, BigIndex startIdxDest, BOOL firstPromotedItemIsSpreadable, BigIndex firstPromotedItemLength, bool spreadableCheckedAndTrue = false); template - static void ConcatArgs(RecyclableObject* pDestObj, TypeId* remoteTypeIds, Js::Arguments& args, ScriptContext* scriptContext, uint start = 0, uint startIdxDest = 0u, BOOL FirstPromotedItemIsSpreadable = false, BigIndex FirstPromotedItemLength = 0u); + static void ConcatArgs(RecyclableObject* pDestObj, TypeId* remoteTypeIds, Js::Arguments& args, ScriptContext* scriptContext, uint start = 0, uint startIdxDest = 0u, BOOL FirstPromotedItemIsSpreadable = false, BigIndex FirstPromotedItemLength = 0u, bool spreadableCheckedAndTrue = false); static JavascriptArray* ConcatIntArgs(JavascriptNativeIntArray* pDestArray, TypeId* remoteTypeIds, Js::Arguments& args, ScriptContext* scriptContext); static bool PromoteToBigIndex(BigIndex lhs, BigIndex rhs); static bool PromoteToBigIndex(BigIndex lhs, uint32 rhs); diff --git a/lib/Runtime/Library/JavascriptFunction.cpp b/lib/Runtime/Library/JavascriptFunction.cpp index 0e45249bdc0..f95966c909c 100644 --- a/lib/Runtime/Library/JavascriptFunction.cpp +++ b/lib/Runtime/Library/JavascriptFunction.cpp @@ -709,7 +709,7 @@ namespace Js { // Just don't execute anything if we are in an assert // throw the exception directly to avoid additional assert in Js::Throw::InternalError - throw Js::InternalErrorException(); + AssertOrFailFast(false); } #endif diff --git a/lib/Runtime/Library/JavascriptObject.cpp b/lib/Runtime/Library/JavascriptObject.cpp index 072b38b1e09..bb2586ed473 100644 --- a/lib/Runtime/Library/JavascriptObject.cpp +++ b/lib/Runtime/Library/JavascriptObject.cpp @@ -486,7 +486,7 @@ namespace Js if (type == TypeIds_HostDispatch) { RecyclableObject* hostDispatchObject = RecyclableObject::FromVar(thisArg); - DynamicObject* remoteObject = hostDispatchObject->GetRemoteObject(); + const DynamicObject* remoteObject = hostDispatchObject->GetRemoteObject(); if (!remoteObject) { Var result = nullptr; @@ -1726,6 +1726,7 @@ namespace Js tempVar = JavascriptOperators::GetProperty(props, propId, scriptContext); + AnalysisAssert(descCount < descSize); if (!JavascriptOperators::ToPropertyDescriptor(tempVar, &descriptors[descCount].descriptor, scriptContext)) { JavascriptError::ThrowTypeError(scriptContext, JSERR_PropertyDescriptor_Invalid, scriptContext->GetPropertyName(propId)->GetBuffer()); @@ -1900,7 +1901,7 @@ namespace Js && _wcsicmp(Js::ScriptFunction::FromVar(descriptor.GetGetter())->GetFunctionProxy()->GetDisplayName(), _u("get")) == 0) { // modify to name.get - char16* finalName = ConstructName(propertyRecord, _u(".get"), scriptContext); + const char16* finalName = ConstructName(propertyRecord, _u(".get"), scriptContext); if (finalName != nullptr) { FunctionProxy::SetDisplayNameFlags flags = (FunctionProxy::SetDisplayNameFlags) (FunctionProxy::SetDisplayNameFlagsDontCopy | FunctionProxy::SetDisplayNameFlagsRecyclerAllocated); @@ -1915,7 +1916,7 @@ namespace Js && _wcsicmp(Js::ScriptFunction::FromVar(descriptor.GetSetter())->GetFunctionProxy()->GetDisplayName(), _u("set")) == 0) { // modify to name.set - char16* finalName = ConstructName(propertyRecord, _u(".set"), scriptContext); + const char16* finalName = ConstructName(propertyRecord, _u(".set"), scriptContext); if (finalName != nullptr) { FunctionProxy::SetDisplayNameFlags flags = (FunctionProxy::SetDisplayNameFlags) (FunctionProxy::SetDisplayNameFlagsDontCopy | FunctionProxy::SetDisplayNameFlagsRecyclerAllocated); @@ -1932,7 +1933,7 @@ namespace Js BOOL returnValue; obj->ThrowIfCannotDefineProperty(propId, descriptor); - Type* oldType = obj->GetType(); + const Type* oldType = obj->GetType(); obj->ClearWritableDataOnlyDetectionBit(); // HostDispatch: it doesn't support changing property attributes and default attributes are not per ES5, diff --git a/lib/Runtime/Library/JavascriptProxy.cpp b/lib/Runtime/Library/JavascriptProxy.cpp index a62931e12b0..72a1571a70a 100644 --- a/lib/Runtime/Library/JavascriptProxy.cpp +++ b/lib/Runtime/Library/JavascriptProxy.cpp @@ -1960,7 +1960,7 @@ namespace Js { functionResult = JavascriptFunction::CallFunction(this, this->GetEntryPoint(), args); } - return functionResult; + return CrossSite::MarshalVar(scriptContext, functionResult); } Var JavascriptProxy::FunctionCallTrap(RecyclableObject* function, CallInfo callInfo, ...) diff --git a/lib/Runtime/Library/RuntimeLibraryPch.cpp b/lib/Runtime/Library/RuntimeLibraryPch.cpp index 3ab7432f353..be869b8eec8 100644 --- a/lib/Runtime/Library/RuntimeLibraryPch.cpp +++ b/lib/Runtime/Library/RuntimeLibraryPch.cpp @@ -3,7 +3,3 @@ // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. //------------------------------------------------------------------------------------------------------- #include "RuntimeLibraryPch.h" - -#if !ENABLE_OOP_NATIVE_CODEGEN -JITManager JITManager::s_jitManager; // dummy object when OOP JIT disabled -#endif diff --git a/lib/Runtime/Library/StackScriptFunction.cpp b/lib/Runtime/Library/StackScriptFunction.cpp index 2bb7fd5e6af..5884b5afc1d 100644 --- a/lib/Runtime/Library/StackScriptFunction.cpp +++ b/lib/Runtime/Library/StackScriptFunction.cpp @@ -349,8 +349,8 @@ namespace Js ScopeSlots slots(slotArray); if (slots.IsFunctionScopeSlotArray()) { - FunctionBody *functionBody = slots.GetFunctionInfo()->GetFunctionBody(); - if (this->NeedBoxFrame(functionBody)) + FunctionProxy *functionProxy = slots.GetFunctionInfo()->GetFunctionProxy(); + if (functionProxy->IsFunctionBody() && this->NeedBoxFrame(functionProxy->GetFunctionBody())) { break; } diff --git a/pal/src/CMakeLists.txt b/pal/src/CMakeLists.txt index b138ae4826f..211d686fb14 100644 --- a/pal/src/CMakeLists.txt +++ b/pal/src/CMakeLists.txt @@ -100,6 +100,7 @@ set(SOURCES cruntime/thread.cpp cruntime/wchar.cpp cruntime/wchartls.cpp + cruntime/runtime_proxy.cpp safecrt/makepath_s.c safecrt/mbusafecrt.c safecrt/safecrt_input_s.c diff --git a/pal/src/cruntime/runtime_proxy.cpp b/pal/src/cruntime/runtime_proxy.cpp new file mode 100644 index 00000000000..90391f17f88 --- /dev/null +++ b/pal/src/cruntime/runtime_proxy.cpp @@ -0,0 +1,25 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +// do not use other PAL headers here. +// combining wctype.h with PAL headers creates type mismatches under latest NDK + +#if HAVE_COREFOUNDATION +#define CF_EXCLUDE_CSTD_HEADERS +#include +#include +#else +#include +#endif + +int proxy_iswprint(char16_t c) +{ + return iswprint(c); +} + +int proxy_iswspace(char16_t c) +{ + return iswspace(c); +} diff --git a/pal/src/cruntime/runtime_proxy.h b/pal/src/cruntime/runtime_proxy.h new file mode 100644 index 00000000000..c32fbaed9c2 --- /dev/null +++ b/pal/src/cruntime/runtime_proxy.h @@ -0,0 +1,12 @@ +// +// Copyright (c) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE file in the project root for full license information. +// + +#ifndef PAL_SRC_CRUNTIME_RUNTIME_PROXY_H +#define PAL_SRC_CRUNTIME_RUNTIME_PROXY_H + +int proxy_iswprint(char16_t c); +int proxy_iswspace(char16_t c); + +#endif // PAL_SRC_CRUNTIME_RUNTIME_PROXY_H diff --git a/pal/src/cruntime/wchar.cpp b/pal/src/cruntime/wchar.cpp index b83c264d6b7..4141f2eef72 100644 --- a/pal/src/cruntime/wchar.cpp +++ b/pal/src/cruntime/wchar.cpp @@ -33,14 +33,7 @@ Module Name: #include "config.h" #endif -#if HAVE_COREFOUNDATION -#define CF_EXCLUDE_CSTD_HEADERS -#include -#include -#else -#include -#endif - +#include "runtime_proxy.h" #include SET_DEFAULT_DEBUG_CHANNEL(CRT); @@ -306,7 +299,7 @@ PAL_iswspace(char16_t c) PERF_ENTRY(iswspace); ENTRY("PAL_iswspace (c=%C)\n", c); - ret = iswspace(c); + ret = proxy_iswspace(c); LOGEXIT("PAL_iswspace returns int %d\n", ret); PERF_EXIT(iswspace); @@ -1900,7 +1893,7 @@ PAL_iswprint( char16_t c ) PERF_ENTRY(iswprint); ENTRY("PAL_iswprint (%#X)\n", c); - ret = iswprint(c); + ret = proxy_iswprint(c); LOGEXIT("PAL_iswprint returns %d\n", ret); PERF_EXIT(iswprint); diff --git a/test/Array/bug_9575461.js b/test/Array/bug_9575461.js new file mode 100644 index 00000000000..dedf7ad4d9c --- /dev/null +++ b/test/Array/bug_9575461.js @@ -0,0 +1,28 @@ +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +var obj = [1, 2, 3]; +var cc_base = [-2, -1, 0]; +var isCS = false; +var counter = 0; + +Object.defineProperty(obj, Symbol.isConcatSpreadable, { + get : function () { + counter++; + obj[2] = isCS ? "Some String inserted" : 123; + isCS = !isCS; + return isCS; + } +}); + +var MAY_THROW = function(n, result) { + if (!result) throw new Error(n + ". FAILED"); +}; + +MAY_THROW(0, cc_base.concat(obj).length == 6); +MAY_THROW(1, cc_base.concat(obj).length == 4); +MAY_THROW(2, counter == 2 && !isCS); + +print("PASS"); diff --git a/test/Array/rlexe.xml b/test/Array/rlexe.xml index 77b9368fb4e..113ba7db645 100644 --- a/test/Array/rlexe.xml +++ b/test/Array/rlexe.xml @@ -728,4 +728,9 @@ BugFix + + + bug_9575461.js + + diff --git a/test/Array/shift_unshift.baseline b/test/Array/shift_unshift.baseline index bb805682a93..3217e7ce5f2 100644 --- a/test/Array/shift_unshift.baseline +++ b/test/Array/shift_unshift.baseline @@ -48,6 +48,7 @@ e instanceOf TypeError = true a.length = 1 ary.length = 18 arr.length = 6 +Crosssite new length: 2 Overridden unshift Overridden unshift Overridden unshift diff --git a/test/Array/shift_unshift.js b/test/Array/shift_unshift.js index 324a7456d16..2ba3bf55c5b 100644 --- a/test/Array/shift_unshift.js +++ b/test/Array/shift_unshift.js @@ -140,6 +140,14 @@ function test1(arr) WScript.Echo("arr.length = " + test1(new Array(10))); +// OS 9357224: Array.prototype.unshift does not marshal parameters correctly +function crossSiteUnshift() { + var sc0 = WScript.LoadScript('', 'samethread'); + sc0.ary = [1]; + return sc0.eval('Array.prototype.unshift.call(ary, null)'); +} +WScript.Echo("Crosssite new length: " + crossSiteUnshift()); // 2 + // // To check bailouts for inlined unshift // @@ -164,4 +172,3 @@ function foo() Array.prototype.unshift = function(){WScript.Echo ("Overridden unshift")}; foo(); WScript.Echo (a); - diff --git a/test/es6/ES6Class_BaseClassConstruction.js b/test/es6/ES6Class_BaseClassConstruction.js index 28c7ea1cab8..0bfb6267496 100644 --- a/test/es6/ES6Class_BaseClassConstruction.js +++ b/test/es6/ES6Class_BaseClassConstruction.js @@ -99,6 +99,70 @@ var tests = [ assert.isTrue(result instanceof Boolean, "new ReturnArgumentBaseClass(new Boolean(false)); returns an instance of Boolean"); } }, + { + name: "Class that extends null has right prototypes", + body: function () { + class A extends null {} + assert.areEqual(Function.prototype, Object.getPrototypeOf(A)); + assert.areEqual(null, Object.getPrototypeOf(A.prototype)); + } + }, + { + name: "Class that extends null binds this in constructor", + body: function () { + var thisVal; + class B extends null { + constructor() { thisVal = this; } + } + + var b = new B(); + assert.areEqual(true, b instanceof B); + assert.areEqual(thisVal, b); + } + }, + { + name: "Class that extends null throws TypeError upon super call in constructor", + body: function () { + var beforeSuper = 0; + var afterSuper = 0; + + class C extends null { + constructor() { + beforeSuper++; + super(); + afterSuper++; + } + } + + assert.throws(function(){new C();}, TypeError, "super", "Function is not a constructor"); + assert.areEqual(1, beforeSuper); + assert.areEqual(0, afterSuper); + } + }, + { + name: "Class that extends null with implicit return in constructor", + body: function () { + class A extends null { + constructor() {} + } + + var a; + assert.doesNotThrow(()=>{a = new A()}); + assert.areEqual(A.prototype, Object.getPrototypeOf(a)); + } + }, + { + name: "Class that extends null with explicit return in constructor", + body: function () { + class A extends null { + constructor() { return {}; } + } + + var a; + assert.doesNotThrow(()=>{a = new A()}); + assert.areEqual(Object.prototype, Object.getPrototypeOf(a)); + } + }, ]; testRunner.runTests(tests, { verbose: WScript.Arguments[0] != "summary" }); diff --git a/test/es6/proxybug.js b/test/es6/proxybug.js index c4821935e55..c654aec37f1 100644 --- a/test/es6/proxybug.js +++ b/test/es6/proxybug.js @@ -1,73 +1,100 @@ -//------------------------------------------------------------------------------------------------------- -// Copyright (C) Microsoft. All rights reserved. -// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. -//------------------------------------------------------------------------------------------------------- - -var passed = true; - -function test1() { - var sc4 = WScript.LoadScript('function test(){ obj2.prop4 = {needMarshal:true}; }', 'samethread'); - var obj1 = new Proxy({}, { set: function (target, property, value) { Reflect.set(value); } }) - sc4.obj2 = obj1; - sc4.test(); - obj1.prop4 = { needMarshal: false }; - obj1.prop5 = { needMarshal: false }; -}; -test1(); - - -function test2() { - var bug = new Proxy(new Array(1), { has: () => true }); - var a = bug.concat(); - if (a[0] !== undefined || a.length !== 1) { - passed = false; - } else { - passed &= true; - } -} -test2(); - -function test3() { - var obj1 = {}; - var arrObj0 = {}; - var x = 1 - var proxyHandler = {}; - proxyHandler['get'] = function () { }; - proxyHandler['defineProperty'] = function (target, property, descriptor) { - return Reflect.defineProperty(target, property, descriptor); - }; - proxyHandler['isExtensible'] = function (target) { - arrObj0.prop0; - arrObj0 = new Proxy(arrObj0, proxyHandler); - return Reflect.isExtensible(target); - }; - arrObj0 = new Proxy(arrObj0, proxyHandler); - arrObj0 = new Proxy(arrObj0, proxyHandler); - do { - var sc3 = WScript.LoadScript('function test(){arrObj0.length = arrObj0[obj1];}', 'samethread'); - sc3.obj1 = obj1; - sc3.arrObj0 = arrObj0; - sc3.test(); - } while (x--); -} -test3(); - -function test4() { - var func3 = function () { }; - var ary = Array(); - var proxyHandler = {}; - var ownkeys = Reflect.ownKeys(ary); - proxyHandler['ownKeys'] = function () { - func3() == 0; - return ownkeys; - }; - - ary = new Proxy(ary, proxyHandler); - var sc2 = WScript.LoadScript('function test(){for (var x in ary);}', 'samethread'); - sc2.ary = ary; - sc2.func3 = func3; - sc2.test(); -} -test4(); - -print(passed ? "passed" : "failed"); +//------------------------------------------------------------------------------------------------------- +// Copyright (C) Microsoft. All rights reserved. +// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information. +//------------------------------------------------------------------------------------------------------- + +var passed = true; + +function test1() { + var sc4 = WScript.LoadScript('function test(){ obj2.prop4 = {needMarshal:true}; }', 'samethread'); + var obj1 = new Proxy({}, { set: function (target, property, value) { Reflect.set(value); } }) + sc4.obj2 = obj1; + sc4.test(); + obj1.prop4 = { needMarshal: false }; + obj1.prop5 = { needMarshal: false }; +}; +test1(); + + +function test2() { + var bug = new Proxy(new Array(1), { has: () => true }); + var a = bug.concat(); + if (a[0] !== undefined || a.length !== 1) { + passed = false; + } else { + passed &= true; + } +} +test2(); + +function test3() { + var obj1 = {}; + var arrObj0 = {}; + var x = 1 + var proxyHandler = {}; + proxyHandler['get'] = function () { }; + proxyHandler['defineProperty'] = function (target, property, descriptor) { + return Reflect.defineProperty(target, property, descriptor); + }; + proxyHandler['isExtensible'] = function (target) { + arrObj0.prop0; + arrObj0 = new Proxy(arrObj0, proxyHandler); + return Reflect.isExtensible(target); + }; + arrObj0 = new Proxy(arrObj0, proxyHandler); + arrObj0 = new Proxy(arrObj0, proxyHandler); + do { + var sc3 = WScript.LoadScript('function test(){arrObj0.length = arrObj0[obj1];}', 'samethread'); + sc3.obj1 = obj1; + sc3.arrObj0 = arrObj0; + sc3.test(); + } while (x--); +} +test3(); + +function test4() { + var func3 = function () { }; + var ary = Array(); + var proxyHandler = {}; + var ownkeys = Reflect.ownKeys(ary); + proxyHandler['ownKeys'] = function () { + func3() == 0; + return ownkeys; + }; + + ary = new Proxy(ary, proxyHandler); + var sc2 = WScript.LoadScript('function test(){for (var x in ary);}', 'samethread'); + sc2.ary = ary; + sc2.func3 = func3; + sc2.test(); +} +test4(); + + +function test5() { + function makeArrayLength() { + } + function leaf() { + } + var obj1 = {}; + var arrObj0 = {}; + var func1 = function () { + }; + obj1.method0 = func1; + obj1.method1 = func1; + var protoObj1 = Object(); + var proxyHandler = {}; + var v0 = new Proxy(obj1.method0, proxyHandler); + var sc9 = WScript.LoadScript('', 'samethread'); + sc9.arrObj0 = arrObj0; + sc9.obj1 = obj1; + sc9.protoObj1 = protoObj1; + sc9.v0 = v0; + sc9.makeArrayLength = makeArrayLength; + sc9.leaf = leaf; + var sc9_cctx = sc9.WScript.LoadScript('function test() {var b = 1; arrObj0.length= makeArrayLength((arrObj0.length != arrObj0.prop4));\n var d = obj1.method1.call(protoObj1 , (((new v0((protoObj1.length >>>= -866043558),(protoObj1.prop0 = 1),leaf,leaf)) , (b ? 1 : 16678541)) & (typeof(arrObj0.prop4) == \'number\') ), ((1) * (d %= (1 * obj1.length - b)) + obj1.method0.call(arrObj0 , ("a" instanceof ((typeof RegExp == \'function\' ) ? RegExp : Object)), (\'prop0\' in arrObj0), leaf, leaf)), leaf, leaf);\n var uniqobj21 = Object.create(arrObj0);\n arrObj0.length= makeArrayLength(((1 ) % -520343586));\n ;\n }'); + sc9_cctx.test(); +} +test5(); + +print(passed ? "passed" : "failed"); \ No newline at end of file