| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- //-------------------------------------------------------------------------------------------------------
- // Copyright (C) Microsoft. All rights reserved.
- // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
- //-------------------------------------------------------------------------------------------------------
- #include "Backend.h"
- CompileAssert(sizeof(FixedFieldIDL) == sizeof(FixedFieldInfo));
- /* static */
- void
- FixedFieldInfo::PopulateFixedField(_In_opt_ Js::Type * type, _In_opt_ Js::Var var, _Out_ FixedFieldInfo * fixed)
- {
- FixedFieldIDL * rawFF = fixed->GetRaw();
- rawFF->fieldValue = var;
- rawFF->nextHasSameFixedField = false;
- if (var != nullptr && Js::JavascriptFunction::Is(var))
- {
- Js::JavascriptFunction * funcObj = Js::JavascriptFunction::FromVar(var);
- rawFF->valueType = ValueType::FromObject(funcObj).GetRawData();
- rawFF->funcInfoAddr = (void*)funcObj->GetFunctionInfo();
- rawFF->isClassCtor = funcObj->GetFunctionInfo()->IsClassConstructor();
- rawFF->localFuncId = funcObj->GetFunctionInfo()->GetLocalFunctionId();
- if (Js::ScriptFunction::Is(var))
- {
- rawFF->environmentAddr = (void*)Js::ScriptFunction::FromVar(funcObj)->GetEnvironment();
- }
- }
- if (type != nullptr)
- {
- JITType::BuildFromJsType(type, (JITType*)&rawFF->type);
- }
- }
- void
- FixedFieldInfo::SetNextHasSameFixedField()
- {
- m_data.nextHasSameFixedField = TRUE;
- }
- bool
- FixedFieldInfo::IsClassCtor() const
- {
- return m_data.isClassCtor != FALSE;
- }
- bool
- FixedFieldInfo::NextHasSameFixedField() const
- {
- return m_data.nextHasSameFixedField != FALSE;
- }
- Js::LocalFunctionId
- FixedFieldInfo::GetLocalFuncId() const
- {
- return m_data.localFuncId;
- }
- ValueType
- FixedFieldInfo::GetValueType() const
- {
- CompileAssert(sizeof(ValueType) == sizeof(uint16));
- return *(ValueType*)&m_data.valueType;
- }
- intptr_t
- FixedFieldInfo::GetFieldValue() const
- {
- return (intptr_t)PointerValue(m_data.fieldValue);
- }
- intptr_t
- FixedFieldInfo::GetFuncInfoAddr() const
- {
- return (intptr_t)PointerValue(m_data.funcInfoAddr);
- }
- intptr_t
- FixedFieldInfo::GetEnvironmentAddr() const
- {
- return (intptr_t)PointerValue(m_data.environmentAddr);
- }
- JITType *
- FixedFieldInfo::GetType() const
- {
- if (m_data.type.exists)
- {
- return (JITType*)&m_data.type;
- }
- else
- {
- return nullptr;
- }
- }
- FixedFieldIDL *
- FixedFieldInfo::GetRaw()
- {
- return &m_data;
- }
|