@@ -223,7 +223,8 @@ inline bool PrototypeHasNoElements(Isolate* isolate, JSObject* object) {
223223 HeapObject* empty = isolate->heap ()->empty_fixed_array ();
224224 while (prototype != null) {
225225 Map* map = prototype->map ();
226- if (map->instance_type () <= LAST_CUSTOM_ELEMENTS_RECEIVER) return false ;
226+ if (map->instance_type () <= LAST_CUSTOM_ELEMENTS_RECEIVER ||
227+ map->instance_type () == JS_GLOBAL_PROXY_TYPE) return false ;
227228 if (JSObject::cast (prototype)->elements () != empty) return false ;
228229 prototype = HeapObject::cast (map->prototype ());
229230 }
@@ -237,6 +238,7 @@ inline bool IsJSArrayFastElementMovingAllowed(Isolate* isolate,
237238
238239inline bool HasSimpleElements (JSObject* current) {
239240 return current->map ()->instance_type () > LAST_CUSTOM_ELEMENTS_RECEIVER &&
241+ current->map ()->instance_type () != JS_GLOBAL_PROXY_TYPE &&
240242 !current->GetElementsAccessor ()->HasAccessors (current);
241243}
242244
@@ -421,9 +423,13 @@ void Builtins::Generate_ObjectHasOwnProperty(
421423
422424 {
423425 Label if_objectissimple (assembler);
424- assembler->Branch (assembler->Int32LessThanOrEqual (
425- instance_type,
426- assembler->Int32Constant (LAST_SPECIAL_RECEIVER_TYPE)),
426+ assembler->Branch (assembler->Word32Or (
427+ assembler->Int32LessThanOrEqual (
428+ instance_type, assembler->Int32Constant (
429+ LAST_SPECIAL_RECEIVER_TYPE)),
430+ assembler->Word32Equal (
431+ instance_type, assembler->Int32Constant (
432+ JS_GLOBAL_PROXY_TYPE))),
427433 &call_runtime, &if_objectissimple);
428434 assembler->Bind (&if_objectissimple);
429435 }
@@ -481,9 +487,13 @@ void Builtins::Generate_ObjectHasOwnProperty(
481487 assembler->Bind (&keyisindex);
482488 {
483489 Label if_objectissimple (assembler);
484- assembler->Branch (assembler->Int32LessThanOrEqual (
485- instance_type, assembler->Int32Constant (
490+ assembler->Branch (assembler->Word32Or (
491+ assembler->Int32LessThanOrEqual (
492+ instance_type, assembler->Int32Constant (
486493 LAST_CUSTOM_ELEMENTS_RECEIVER)),
494+ assembler->Word32Equal (
495+ instance_type, assembler->Int32Constant (
496+ JS_GLOBAL_PROXY_TYPE))),
487497 &call_runtime, &if_objectissimple);
488498 assembler->Bind (&if_objectissimple);
489499 }
0 commit comments