8 #include "src/objects.h" 9 #include "src/objects/hash-table.h" 10 #include "src/objects/ordered-hash-table.h" 17 enum AddKeyConversion { DO_NOT_CONVERT, CONVERT_TO_ARRAY_INDEX };
38 PropertyFilter filter)
39 : isolate_(isolate), mode_(mode), filter_(filter) {}
44 GetKeysConversion keys_conversion = GetKeysConversion::kKeepNumbers,
45 bool is_for_in =
false,
bool skip_indices =
false);
48 GetKeysConversion convert = GetKeysConversion::kKeepNumbers);
66 void AddKey(
Object* key, AddKeyConversion convert = DO_NOT_CONVERT);
67 void AddKey(
Handle<Object> key, AddKeyConversion convert = DO_NOT_CONVERT);
73 Isolate* isolate() {
return isolate_; }
75 PropertyFilter filter() {
return filter_; }
78 KeyCollectionMode mode() {
return mode_; }
82 void set_is_for_in(
bool value) { is_for_in_ = value; }
83 void set_skip_indices(
bool value) { skip_indices_ = value; }
88 last_non_empty_prototype_ = object;
92 void AddShadowingKey(
Object* key);
105 bool HasShadowingKeys();
115 KeyCollectionMode mode_;
116 PropertyFilter filter_;
117 bool is_for_in_ =
false;
118 bool skip_indices_ =
false;
121 bool skip_shadow_check_ =
true;
133 KeyCollectionMode mode, PropertyFilter filter,
134 bool is_for_in =
false,
bool skip_indices =
false)
139 is_for_in_(is_for_in),
140 skip_indices_(skip_indices) {
144 bool is_receiver_simple_enum() {
return is_receiver_simple_enum_; }
145 bool has_empty_prototype() {
return has_empty_prototype_; }
148 GetKeysConversion convert = GetKeysConversion::kKeepNumbers);
160 KeyCollectionMode mode_;
161 PropertyFilter filter_;
162 bool is_for_in_ =
false;
163 bool skip_indices_ =
false;
164 bool is_receiver_simple_enum_ =
false;
165 bool has_empty_prototype_ =
false;