Lines Matching refs:desc

30 PropertyAttributes::PropertyAttributes(const PropertyDescriptor &desc)
33 if (desc.HasWritable()) {
34 SetWritable(desc.IsWritable());
37 if (desc.HasEnumerable()) {
38 SetEnumerable(desc.IsEnumerable());
41 if (desc.HasConfigurable()) {
42 SetConfigurable(desc.IsConfigurable());
45 if (desc.IsAccessorDescriptor()) {
49 if (desc.HasValue() && desc.GetValue()->IsAccessor()) {
1172 // 4. If desc is undefined, then
1177 // 5. If IsDataDescriptor(desc) is true, return desc.[[Value]]
1183 // 6. Otherwise, IsAccessorDescriptor(desc) must be true so, let getter be desc.[[Get]].
1197 // 2. Let desc be O.[[GetOwnProperty]](P).
1200 // 4. If desc is undefined, return true.
1204 // 5. If desc.[[Configurable]] is true, then
1218 PropertyDescriptor &desc)
1220 return OrdinaryGetOwnProperty(thread, obj, key, desc);
1223 bool JSObject::GlobalGetOwnProperty(JSThread *thread, const JSHandle<JSTaggedValue> &key, PropertyDescriptor &desc)
1232 op.ToPropertyDescriptor(desc);
1234 if (desc.HasValue()) {
1235 PropertyBox *cell = PropertyBox::Cast(desc.GetValue().GetTaggedValue().GetTaggedObject());
1237 desc.SetValue(valueHandle);
1239 ASSERT(!desc.GetValue()->IsInternalAccessor());
1244 const JSHandle<JSTaggedValue> &key, PropertyDescriptor &desc)
1253 op.ToPropertyDescriptor(desc);
1255 if (desc.HasValue() && obj->IsJSGlobalObject()) {
1256 JSTaggedValue val = desc.GetValue().GetTaggedValue();
1260 desc.SetValue(valueHandle);
1268 const PropertyDescriptor &desc, SCheckMode sCheckMode)
1270 return OrdinaryDefineOwnProperty(thread, op, desc, sCheckMode);
1274 const PropertyDescriptor &desc, SCheckMode sCheckMode)
1276 return OrdinaryDefineOwnProperty(thread, obj, key, desc, sCheckMode);
1280 const PropertyDescriptor &desc, SCheckMode sCheckMode)
1282 return OrdinaryDefineOwnProperty(thread, obj, index, desc, sCheckMode);
1287 const PropertyDescriptor &desc, SCheckMode sCheckMode)
1298 return ValidateAndApplyPropertyDescriptor(op, extensible, desc, current, sCheckMode);
1302 const JSHandle<JSTaggedValue> &key, const PropertyDescriptor &desc,
1309 return OrdinaryDefineOwnProperty(thread, &op, desc, sCheckMode);
1313 const PropertyDescriptor &desc, SCheckMode sCheckMode)
1321 return ValidateAndApplyPropertyDescriptor(&op, extensible, desc, current, sCheckMode);
1324 bool JSObject::ValidateDataDescriptorWhenConfigurable(ObjectOperator *op, const PropertyDescriptor &desc,
1329 if (!current.IsWritable() && desc.HasWritable() && desc.IsWritable()) {
1334 if (desc.HasValue() && !JSTaggedValue::SameValue(current.GetValue(), desc.GetValue())) {
1339 if (!desc.HasValue()) {
1342 if (!ClassHelper::MatchFieldType(current.GetSharedFieldType(), desc.GetValue().GetTaggedValue())) {
1350 bool JSObject::ValidateAndApplyPropertyDescriptor(ObjectOperator *op, bool extensible, const PropertyDescriptor &desc,
1364 PropertyAttributes attr(desc);
1366 if (!desc.IsAccessorDescriptor()) {
1368 success = op->AddPropertyInHolder(desc.GetValue(), attr);
1373 if (desc.HasGetter()) {
1374 accessor->SetGetter(thread, desc.GetGetter());
1377 if (desc.HasSetter()) {
1378 accessor->SetSetter(thread, desc.GetSetter());
1390 if ((!desc.HasEnumerable() || desc.IsEnumerable() == current.IsEnumerable()) &&
1391 (!desc.HasConfigurable() || desc.IsConfigurable() == current.IsConfigurable()) &&
1392 (!desc.HasValue() || JSTaggedValue::SameValue(current.GetValue(), desc.GetValue())) &&
1393 (!desc.HasWritable() || (current.IsWritable() == desc.IsWritable())) &&
1394 (!desc.HasGetter() ||
1395 (current.HasGetter() && JSTaggedValue::SameValue(current.GetGetter(), desc.GetGetter()))) &&
1396 (!desc.HasSetter() ||
1397 (current.HasSetter() && JSTaggedValue::SameValue(current.GetSetter(), desc.GetSetter())))) {
1404 if (desc.HasConfigurable() && desc.IsConfigurable()) {
1409 if (desc.HasEnumerable() && (desc.IsEnumerable() != current.IsEnumerable())) {
1415 if (desc.IsGenericDescriptor()) {
1417 } else if (current.IsDataDescriptor() != desc.IsDataDescriptor()) {
1433 } else if (current.IsDataDescriptor() && desc.IsDataDescriptor()) {
1435 if (!current.IsConfigurable() && !ValidateDataDescriptorWhenConfigurable(op, desc, current, sCheckMode)) {
1444 if (desc.HasSetter() && !JSTaggedValue::SameValue(current.GetSetter(), desc.GetSetter())) {
1449 if (desc.HasGetter() && !JSTaggedValue::SameValue(current.GetGetter(), desc.GetGetter())) {
1459 if (!desc.HasValue() && desc.HasWritable() && current.HasValue()) {
1462 PropertyDescriptor newDesc = desc;
1473 return op->WriteDataPropertyInHolder(desc);
1479 bool JSObject::IsCompatiblePropertyDescriptor(bool extensible, const PropertyDescriptor &desc,
1484 return ValidateAndApplyPropertyDescriptor(&op, extensible, desc, current);
1726 PropertyDescriptor desc(thread, value, true, true, true);
1727 return JSTaggedValue::DefineOwnProperty(thread, JSHandle<JSTaggedValue>::Cast(obj), key, desc, sCheckMode);
1739 PropertyDescriptor desc(thread, value, true, true, true);
1740 return DefineOwnProperty(thread, obj, index, desc, sCheckMode);
1776 PropertyDescriptor desc(thread, value, true, false, true);
1777 return DefineOwnProperty(thread, obj, key, desc);
1864 PropertyDescriptor desc = currentDesc.IsAccessorDescriptor() ? descNoConf : descNoConfWrite;
1866 JSTaggedValue::DefinePropertyOrThrow(thread, JSHandle<JSTaggedValue>(obj), handleKey, desc);
1992 PropertyDescriptor desc(thread);
1994 keyHandle, desc);
1997 if (status && desc.IsEnumerable()) {
2025 PropertyDescriptor desc(thread);
2026 bool status = JSTaggedValue::GetOwnProperty(thread, JSHandle<JSTaggedValue>(obj), key, desc);
2028 if (!status || !desc.IsEnumerable()) {
2031 if (desc.HasValue()) {
2032 value = desc.GetValue().GetTaggedValue();
2083 // i. Let desc be ? O.[[GetOwnProperty]](key).
2084 // ii. If desc is not undefined and desc.[[Enumerable]] is true, then
2098 PropertyDescriptor desc(thread);
2100 key, desc);
2102 if (status && desc.IsEnumerable()) {
2200 JSHandle<JSTaggedValue> JSObject::FromPropertyDescriptor(JSThread *thread, const PropertyDescriptor &desc)
2203 if (desc.IsEmpty()) {
2214 if (desc.HasValue()) {
2216 bool success = CreateDataProperty(thread, objHandle, valueStr, desc.GetValue());
2220 if (desc.HasWritable()) {
2222 JSHandle<JSTaggedValue> writable(thread, JSTaggedValue(desc.IsWritable()));
2227 if (desc.HasGetter()) {
2229 bool success = CreateDataProperty(thread, objHandle, getStr, desc.GetGetter());
2233 if (desc.HasSetter()) {
2235 bool success = CreateDataProperty(thread, objHandle, setStr, desc.GetSetter());
2240 if (desc.HasEnumerable()) {
2242 JSHandle<JSTaggedValue> enumerable(thread, JSTaggedValue(desc.IsEnumerable()));
2248 if (desc.HasConfigurable()) {
2250 JSHandle<JSTaggedValue> configurable(thread, JSTaggedValue(desc.IsConfigurable()));
2257 bool JSObject::ToPropertyDescriptorFast(JSThread *thread, const JSHandle<JSTaggedValue> &obj, PropertyDescriptor &desc)
2287 desc.SetEnumerable(enumerable);
2290 desc.SetConfigurable(configurable);
2293 desc.SetValue(handleValue);
2296 desc.SetWritable(writable);
2302 desc.SetGetter(getter);
2308 desc.SetSetter(setter);
2312 if (desc.IsAccessorDescriptor()) {
2313 // 22a. If either desc.[[Value]] or desc.[[Writable]] is present, throw a TypeError exception.
2314 if (desc.HasValue() || desc.HasWritable()) {
2322 void JSObject::ToPropertyDescriptor(JSThread *thread, const JSHandle<JSTaggedValue> &obj, PropertyDescriptor &desc)
2329 if (ToPropertyDescriptorFast(thread, obj, desc)) {
2333 // 3. Let desc be a new Property Descriptor that initially has no fields.
2340 desc.SetEnumerable(enumerable);
2349 desc.SetConfigurable(conf);
2357 desc.SetValue(prop);
2366 desc.SetWritable(writable);
2377 desc.SetGetter(getter);
2389 desc.SetSetter(setter);
2393 // 22. If either desc.[[Get]] or desc.[[Set]] is present, then
2394 if (desc.IsAccessorDescriptor()) {
2395 // 22a. If either desc.[[Value]] or desc.[[Writable]] is present, throw a TypeError exception.
2396 if (desc.HasValue() || desc.HasWritable()) {
2397 THROW_TYPE_ERROR(thread, "either desc.[[Value]] or desc.[[Writable]] is present");
2400 // 23. Return desc.
2499 void PropertyDescriptor::CompletePropertyDescriptor(const JSThread *thread, PropertyDescriptor &desc)
2506 if (!desc.IsAccessorDescriptor()) {
2509 if (!desc.HasValue()) {
2510 desc.SetValue(JSHandle<JSTaggedValue>(thread, JSTaggedValue::Undefined()));
2512 if (!desc.HasWritable()) {
2513 desc.SetWritable(false);
2522 if (!desc.HasEnumerable()) {
2523 desc.SetEnumerable(false);
2525 if (!desc.HasConfigurable()) {
2526 desc.SetConfigurable(false);