| OLD | NEW |
| 1 // Copyright 2016 the V8 project authors. All rights reserved. | 1 // Copyright 2016 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 #include "src/code-stub-assembler.h" | 4 #include "src/code-stub-assembler.h" |
| 5 #include "src/code-factory.h" | 5 #include "src/code-factory.h" |
| 6 #include "src/frames-inl.h" | 6 #include "src/frames-inl.h" |
| 7 #include "src/frames.h" | 7 #include "src/frames.h" |
| 8 #include "src/ic/handler-configuration.h" | 8 #include "src/ic/handler-configuration.h" |
| 9 #include "src/ic/stub-cache.h" | 9 #include "src/ic/stub-cache.h" |
| 10 | 10 |
| (...skipping 5715 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5726 Bind(&validity_cell_check_done); | 5726 Bind(&validity_cell_check_done); |
| 5727 Node* smi_handler = LoadObjectField(handler, LoadHandler::kSmiHandlerOffset); | 5727 Node* smi_handler = LoadObjectField(handler, LoadHandler::kSmiHandlerOffset); |
| 5728 CSA_ASSERT(this, TaggedIsSmi(smi_handler)); | 5728 CSA_ASSERT(this, TaggedIsSmi(smi_handler)); |
| 5729 Node* handler_flags = SmiUntag(smi_handler); | 5729 Node* handler_flags = SmiUntag(smi_handler); |
| 5730 | 5730 |
| 5731 Label check_prototypes(this); | 5731 Label check_prototypes(this); |
| 5732 GotoUnless( | 5732 GotoUnless( |
| 5733 IsSetWord<LoadHandler::DoNegativeLookupOnReceiverBits>(handler_flags), | 5733 IsSetWord<LoadHandler::DoNegativeLookupOnReceiverBits>(handler_flags), |
| 5734 &check_prototypes); | 5734 &check_prototypes); |
| 5735 { | 5735 { |
| 5736 CSA_ASSERT(this, Word32BinaryNot( |
| 5737 HasInstanceType(p->receiver, JS_GLOBAL_OBJECT_TYPE))); |
| 5736 // We have a dictionary receiver, do a negative lookup check. | 5738 // We have a dictionary receiver, do a negative lookup check. |
| 5737 NameDictionaryNegativeLookup(p->receiver, p->name, miss); | 5739 NameDictionaryNegativeLookup(p->receiver, p->name, miss); |
| 5738 Goto(&check_prototypes); | 5740 Goto(&check_prototypes); |
| 5739 } | 5741 } |
| 5740 | 5742 |
| 5741 Bind(&check_prototypes); | 5743 Bind(&check_prototypes); |
| 5742 Node* maybe_holder_cell = | 5744 Node* maybe_holder_cell = |
| 5743 LoadObjectField(handler, LoadHandler::kHolderCellOffset); | 5745 LoadObjectField(handler, LoadHandler::kHolderCellOffset); |
| 5744 Label array_handler(this), tuple_handler(this); | 5746 Label array_handler(this), tuple_handler(this); |
| 5745 Branch(TaggedIsSmi(maybe_holder_cell), &array_handler, &tuple_handler); | 5747 Branch(TaggedIsSmi(maybe_holder_cell), &array_handler, &tuple_handler); |
| (...skipping 3591 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9337 STATIC_ASSERT(FAST_HOLEY_ELEMENTS == (FAST_ELEMENTS | 1)); | 9339 STATIC_ASSERT(FAST_HOLEY_ELEMENTS == (FAST_ELEMENTS | 1)); |
| 9338 STATIC_ASSERT(FAST_HOLEY_DOUBLE_ELEMENTS == (FAST_DOUBLE_ELEMENTS | 1)); | 9340 STATIC_ASSERT(FAST_HOLEY_DOUBLE_ELEMENTS == (FAST_DOUBLE_ELEMENTS | 1)); |
| 9339 | 9341 |
| 9340 // Check prototype chain if receiver does not have packed elements. | 9342 // Check prototype chain if receiver does not have packed elements. |
| 9341 Node* holey_elements = Word32And(elements_kind, Int32Constant(1)); | 9343 Node* holey_elements = Word32And(elements_kind, Int32Constant(1)); |
| 9342 return Word32Equal(holey_elements, Int32Constant(1)); | 9344 return Word32Equal(holey_elements, Int32Constant(1)); |
| 9343 } | 9345 } |
| 9344 | 9346 |
| 9345 } // namespace internal | 9347 } // namespace internal |
| 9346 } // namespace v8 | 9348 } // namespace v8 |
| OLD | NEW |