@@ -221,22 +221,31 @@ _Ret_notnull_ Var
221
221
JSONStringifier::ReadValue (_In_ JavascriptString* key, _In_opt_ const PropertyRecord* propertyRecord, _In_ RecyclableObject* holder)
222
222
{
223
223
Var value = nullptr ;
224
- PropertyString* propertyString = JavascriptOperators::TryFromVar<PropertyString>(key);
225
224
PropertyValueInfo info;
226
- if (propertyString != nullptr )
227
- {
228
- PropertyValueInfo::SetCacheInfo (&info, propertyString, propertyString->GetLdElemInlineCache (), false );
229
- if (propertyString->TryGetPropertyFromCache <false /* ownPropertyOnly */ , false /* OutputExistence */ >(holder, holder, &value, this ->scriptContext , &info))
230
- {
231
- return value;
232
- }
233
- }
234
225
235
226
if (propertyRecord == nullptr )
236
227
{
237
228
key->GetPropertyRecord (&propertyRecord);
238
229
}
239
- JavascriptOperators::GetProperty (holder, propertyRecord->GetPropertyId (), &value, this ->scriptContext , &info);
230
+
231
+ if (propertyRecord->IsNumeric ())
232
+ {
233
+ JavascriptOperators::GetItem (holder, propertyRecord->GetNumericValue (), &value, this ->scriptContext );
234
+ }
235
+ else
236
+ {
237
+ PropertyString* propertyString = JavascriptOperators::TryFromVar<PropertyString>(key);
238
+ if (propertyString != nullptr )
239
+ {
240
+ PropertyValueInfo::SetCacheInfo (&info, propertyString, propertyString->GetLdElemInlineCache (), false );
241
+ if (propertyString->TryGetPropertyFromCache <false /* ownPropertyOnly */ , false /* OutputExistence */ >(holder, holder, &value, this ->scriptContext , &info))
242
+ {
243
+ return value;
244
+ }
245
+ }
246
+ JavascriptOperators::GetProperty (holder, propertyRecord->GetPropertyId (), &value, this ->scriptContext , &info);
247
+ }
248
+
240
249
return value;
241
250
}
242
251
0 commit comments