20 auto iterator = std::unique_ptr<DebugPropertyIterator>(
24 iterator->AdvanceToPrototype();
27 if (!iterator->FillKeysForCurrentPrototypeAndStage())
return nullptr;
28 if (iterator->should_move_to_next_stage() && !iterator->AdvanceInternal()) {
41 skip_indices_(skip_indices),
42 current_key_index_(0),
43 current_keys_(
isolate_->factory()->empty_fixed_array()),
44 current_keys_length_(0) {}
132 raw_name()->NameShortPrint(name_buffer);
134 name_buffer.
begin());
150 if (!did_get_descriptor.
FromJust()) {
179 return key.is_element();
193 typed_array->WasDetached() ? 0 : typed_array->GetLength();
215 Isolate* isolate =
object->GetIsolate();
223 DirectHandle<Object> structure = it.GetAccessors();
226 if (*structure == *isolate->factory()->value_unavailable_accessor()) {
229#define IS_BUILTIN_ACCESSOR(_, name, ...) \
230 if (*structure == *isolate->factory()->name##_accessor()) \
231 return debug::NativeAccessorType::None;
233#undef IS_BUILTIN_ACCESSOR
235 if (accessor_info->has_getter(isolate)) {
238 if (accessor_info->has_setter(isolate)) {
#define ACCESSOR_INFO_LIST_GENERATOR(V, _)
V8_INLINE T FromJust() const &
V8_INLINE bool IsNothing() const
constexpr T * begin() const
void AdvanceToPrototype()
static V8_WARN_UNUSED_RESULT std::unique_ptr< DebugPropertyIterator > Create(Isolate *isolate, DirectHandle< JSReceiver > receiver, bool skip_indices)
bool should_move_to_next_stage() const
Handle< FixedArray > current_keys_
bool is_native_accessor() override
size_t current_key_index_
V8_WARN_UNUSED_RESULT bool FillKeysForCurrentPrototypeAndStage()
DirectHandle< Name > raw_name() const
v8::Local< v8::Name > name() const override
bool is_array_index() override
DebugPropertyIterator(const DebugPropertyIterator &)=delete
int native_accessor_flags_
bool has_native_getter() override
bool has_native_setter() override
PrototypeIterator prototype_iterator_
enum v8::internal::DebugPropertyIterator::@56 stage_
v8::Maybe< v8::debug::PropertyDescriptor > descriptor() override
bool Done() const override
void CalculateNativeAccessorFlags()
size_t current_keys_length_
v8::Maybe< v8::PropertyAttribute > attributes() override
bool calculated_native_accessor_flags_
V8_WARN_UNUSED_RESULT bool AdvanceInternal()
Handle< String > SizeToString(size_t value, bool check_cache=true)
v8::internal::Factory * factory()
V8_EXPORT_PRIVATE static V8_WARN_UNUSED_RESULT Maybe< bool > GetOwnPropertyDescriptor(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Object > key, PropertyDescriptor *desc)
static V8_WARN_UNUSED_RESULT Maybe< PropertyAttributes > GetPropertyAttributes(Isolate *isolate, DirectHandle< JSReceiver > object, DirectHandle< Name > name)
static MaybeHandle< FixedArray > GetKeys(Isolate *isolate, DirectHandle< JSReceiver > object, KeyCollectionMode mode, PropertyFilter filter, GetKeysConversion keys_conversion=GetKeysConversion::kKeepNumbers, bool is_for_in=false, bool skip_indices=false)
Tagged< T > GetCurrent() const
void AdvanceIgnoringProxies()
#define IS_BUILTIN_ACCESSOR(_, name,...)
ZoneVector< RpoNumber > & result
int SNPrintF(Vector< char > str, const char *format,...)
V8_INLINE DirectHandle< T > direct_handle(Tagged< T > object, Isolate *isolate)
Tagged< To > Cast(Tagged< From > value, const v8::SourceLocation &loc=INIT_SOURCE_LOCATION_IN_DEBUG)
Maybe< T > Just(const T &t)
#define DCHECK_WITH_MSG(condition, msg)
#define DCHECK(condition)