current commit
261007.21 · deps: update V8 to 15.5.35.20
// Copyright 2026 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef V8_OBJECTS_JS_INTERCEPTOR_MAP_H_
#define V8_OBJECTS_JS_INTERCEPTOR_MAP_H_

#include "src/objects/map.h"

// Has to be the last include (doesn't have include guards):
#include "src/objects/object-macros.h"

namespace v8::internal {

class InterceptorInfo;

// Extended map for interceptor objects, it caches named and indexed
// InterceptorInfo objects in the Map for faster access.
V8_OBJECT class JSInterceptorMap : public ExtendedMap {
  V8_IT_REUSE_PARENT;

 public:
  using SupportsFastIterableToListBit = base::BitField<bool, 0, 1, uint8_t>;

  inline bool supports_fast_iterable_to_list() const;
  inline void set_supports_fast_iterable_to_list(bool value);

  inline Tagged<InterceptorInfo> named_interceptor() const;
  inline void set_named_interceptor(
      Tagged<InterceptorInfo> interceptor_info,
      WriteBarrierMode mode = UPDATE_WRITE_BARRIER);

  inline Tagged<InterceptorInfo> indexed_interceptor() const;
  inline void set_indexed_interceptor(
      Tagged<InterceptorInfo> interceptor_info,
      WriteBarrierMode mode = UPDATE_WRITE_BARRIER);

  inline Tagged<Cell> fast_case_validity_cell() const;
  inline void set_fast_case_validity_cell(
      Tagged<Cell> cell, WriteBarrierMode mode = UPDATE_WRITE_BARRIER);

  inline void init_flags_and_clear_extended_padding();

 public:
  uint8_t flags_;
  uint8_t extended_padding_[kTaggedSize - 2];
  TaggedMember<InterceptorInfo> named_interceptor_;
  TaggedMember<InterceptorInfo> indexed_interceptor_;
  TaggedMember<Cell> fast_case_validity_cell_;
} V8_OBJECT_END;

}  // namespace v8::internal

#include "src/objects/object-macros-undef.h"

#endif  // V8_OBJECTS_JS_INTERCEPTOR_MAP_H_