| 1234567891011121314151617181920212223242526272829303132333435 |
- //-------------------------------------------------------------------------------------------------------
- // 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) {}
- };
- }
|