//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------
// This is the list of internal properties used in the Chakra engine.
// They become nameless compile time known PropertyRecords, stored as static
// fields on the InternalPropertyRecords class.

// NOTE: When new property is added here, please evaluate if the property's value needs to be restored to nullptr
// when it gets reset to undefined inside DynamicObject::ResetObject()

INTERNALPROPERTY(TypeOfPrototypeObjectInlined)     // Used to store the type of the prototype object in the prototype objects slots. Only DynamicTypes having TypeIds_Object are saved in this slot.
// Used to store the type of the prototype object in the prototype objects slots. Everything else (except ExternalType) are stored in this slot as Dictionary.
// Key in the Dictionary is combination of Type and TypeId and value is dynamicType object.
INTERNALPROPERTY(TypeOfPrototypeObjectDictionary)  
INTERNALPROPERTY(NonExtensibleType)               // Used to store shared non-extensible type in PathTypeHandler::propertySuccessors map.
INTERNALPROPERTY(SealedType)                      // Used to store shared sealed type in PathTypeHandler::propertySuccessors map.
INTERNALPROPERTY(FrozenType)                      // Used to store shared frozen type in PathTypeHandler::propertySuccessors map.
INTERNALPROPERTY(StackTrace)                      // Stack trace object for Error.stack generation
INTERNALPROPERTY(StackTraceCache)                 // Cache of Error.stack string
INTERNALPROPERTY(WeakMapKeyMap)                   // WeakMap data stored on WeakMap key objects
INTERNALPROPERTY(HiddenObject)                    // Used to store internal slot data for JS library code (Intl as an example will use this)
INTERNALPROPERTY(CachedUCollator)                 // Used to store cached UCollator objects for Intl.Collator
INTERNALPROPERTY(CachedUNumberFormat)             // Used to store cached UNumberFormat objects for Intl.NumberFormat and Intl.PluralRules
INTERNALPROPERTY(CachedUDateFormat)               // Used to store cached UDateFormat objects for Intl.DateTimeFormat
INTERNALPROPERTY(CachedUPluralRules)              // Used to store cached UPluralRules objects for Intl.PluralRules
INTERNALPROPERTY(RevocableProxy)                  // Internal slot for [[RevokableProxy]] for revocable proxy in ES6
INTERNALPROPERTY(MutationBp)                      // Used to store strong reference to the mutation breakpoint object
#undef INTERNALPROPERTY
