blob: e8d050528c7250cf6fe8c5537bff72fd35c99158 [file] [log] [blame]
//-------------------------------------------------------------------------------------------------------
// 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
class AsmJsJITInfo
{
#ifdef ASMJS_PLAT
public:
AsmJsJITInfo(AsmJsDataIDL * data);
WAsmJs::TypedSlotInfo GetTypedSlotInfo(WAsmJs::Types type) const;
#define TYPED_SLOT_INFO_GETTER(name, type) \
int Get##name##ByteOffset() const { return m_data.typedSlotInfos[WAsmJs::##type].byteOffset; }\
int Get##name##ConstCount() const { return m_data.typedSlotInfos[WAsmJs::##type].constCount; }\
int Get##name##TmpCount() const { return m_data.typedSlotInfos[WAsmJs::##type].tmpCount; }\
int Get##name##VarCount() const { return m_data.typedSlotInfos[WAsmJs::##type].varCount; }
TYPED_SLOT_INFO_GETTER(Double, FLOAT64);
TYPED_SLOT_INFO_GETTER(Float, FLOAT32);
TYPED_SLOT_INFO_GETTER(Int, INT32);
TYPED_SLOT_INFO_GETTER(Int64, INT64);
TYPED_SLOT_INFO_GETTER(Simd, SIMD);
int GetTotalSizeInBytes() const;
Js::ArgSlot GetArgCount() const;
Js::ArgSlot GetArgByteSize() const;
Js::AsmJsRetType::Which GetRetType() const;
Js::AsmJsVarType::Which GetArgType(Js::ArgSlot argNum) const;
#ifdef ENABLE_WASM
Wasm::WasmSignature * GetWasmSignature(uint index) const;
intptr_t GetWasmSignatureAddr(uint index) const;
bool IsSharedMemory() const;
#endif
bool UsesHeapBuffer() const;
bool AccessNeedsBoundCheck(uint offset) const;
private:
Js::AsmJsVarType::Which * GetArgTypeArray() const;
AsmJsDataIDL m_data;
#endif
};