#ifndef V8_OBJECTS_FEEDBACK_CELL_INL_H_
#define V8_OBJECTS_FEEDBACK_CELL_INL_H_
#include <optional>
#include "src/execution/tiering-manager.h"
#include "src/heap/heap-write-barrier-inl.h"
#include "src/objects/feedback-cell.h"
#include "src/objects/feedback-vector-inl.h"
#include "src/objects/objects-inl.h"
#include "src/objects/struct-inl.h"
#include "src/objects/object-macros.h"
namespace v8::internal {
#include "torque-generated/src/objects/feedback-cell-tq-inl.inc"
TQ_OBJECT_CONSTRUCTORS_IMPL(FeedbackCell)
RELEASE_ACQUIRE_ACCESSORS
void FeedbackCell::clear_padding() { … }
void FeedbackCell::reset_feedback_vector(
std::optional<std::function<void(Tagged<HeapObject> object, ObjectSlot slot,
Tagged<HeapObject> target)>>
gc_notify_updated_slot) { … }
void FeedbackCell::clear_interrupt_budget() { … }
#ifdef V8_ENABLE_LEAPTIERING
void FeedbackCell::initialize_dispatch_handle(IsolateForSandbox isolate,
uint16_t parameter_count) {
InitJSDispatchHandleField(kDispatchHandleOffset, isolate, parameter_count);
}
void FeedbackCell::initialize_dispatch_handle(IsolateForSandbox isolate,
uint16_t parameter_count,
Tagged<Code> code,
Address entrypoint) {
InitJSDispatchHandleField(kDispatchHandleOffset, isolate, parameter_count,
code, entrypoint);
}
void FeedbackCell::clear_dispatch_handle() {
WriteField<JSDispatchHandle>(kDispatchHandleOffset, kNullJSDispatchHandle);
}
JSDispatchHandle FeedbackCell::dispatch_handle() const {
return ReadField<JSDispatchHandle>(kDispatchHandleOffset);
}
void FeedbackCell::set_dispatch_handle(JSDispatchHandle new_handle) {
DCHECK_EQ(dispatch_handle(), kNullJSDispatchHandle);
WriteField<JSDispatchHandle>(kDispatchHandleOffset, new_handle);
JS_DISPATCH_HANDLE_WRITE_BARRIER(*this, new_handle);
}
#endif
void FeedbackCell::IncrementClosureCount(Isolate* isolate) { … }
}
#include "src/objects/object-macros-undef.h"
#endif