blob: 5a7ed6d40733831308c63932258baa6683d35fd7 [file]
//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
namespace Js {
class StackTraceArguments
{
private:
static const uint64 MaxNumberOfDisplayedArgumentsInStack = 20; // 1 << (3*MaxNumberOfDisplayedArgumentsInStack + 1) must fit in uint64 (or you have to change it's type)
static const uint64 fCallerIsGlobal = 1ull << (3*MaxNumberOfDisplayedArgumentsInStack + 1);
static const uint64 fTooManyArgs = 1ull << (3*MaxNumberOfDisplayedArgumentsInStack);
static uint64 ObjectToTypeCode(Js::Var object);
static JavascriptString *TypeCodeToTypeName(unsigned typeCode, ScriptContext *scriptContext);
// We use 3 bits to store the value type. If we add another type, we need to use more bits.
enum valueTypes
{
nullValue = 0,
undefinedValue = 1,
booleanValue = 2,
stringValue = 3,
nanValue = 4,
numberValue = 5,
symbolValue = 6,
objectValue = 7
};
uint64 types;
public:
HRESULT ToString(LPCWSTR functionName, Js::ScriptContext *scriptContext, _In_ LPCWSTR* outResult) const;
void Init(const JavascriptStackWalker &walker);
StackTraceArguments() : types(fCallerIsGlobal) {}
};
}