#include "src/compiler/access-builder.h"
#include "src/compiler/type-cache.h"
#include "src/handles/handles-inl.h"
#include "src/objects/arguments.h"
#include "src/objects/contexts.h"
#include "src/objects/heap-number.h"
#include "src/objects/js-collection.h"
#include "src/objects/js-generator.h"
#include "src/objects/js-objects.h"
#include "src/objects/objects-inl.h"
#include "src/objects/ordered-hash-table.h"
#include "src/objects/source-text-module.h"
#include "src/objects/tagged-field.h"
namespace v8 {
namespace internal {
namespace compiler {
FieldAccess AccessBuilder::ForExternalIntPtr() { … }
FieldAccess AccessBuilder::ForMap(WriteBarrierKind write_barrier) { … }
FieldAccess AccessBuilder::ForHeapNumberValue() { … }
FieldAccess AccessBuilder::ForHeapNumberOrOddballOrHoleValue() { … }
FieldAccess AccessBuilder::ForBigIntBitfield() { … }
#ifdef BIGINT_NEEDS_PADDING
FieldAccess AccessBuilder::ForBigIntOptionalPadding() {
static_assert(arraysize(BigInt::padding_) == sizeof(uint32_t));
FieldAccess access = {
kTaggedBase, offsetof(BigInt, padding_), MaybeHandle<Name>(),
OptionalMapRef(), TypeCache::Get()->kInt32, MachineType::Uint32(),
kNoWriteBarrier, "BigIntOptionalPadding"};
return access;
}
#endif
FieldAccess AccessBuilder::ForBigIntLeastSignificantDigit64() { … }
FieldAccess AccessBuilder::ForJSObjectPropertiesOrHash() { … }
FieldAccess AccessBuilder::ForJSObjectPropertiesOrHashKnownPointer() { … }
FieldAccess AccessBuilder::ForJSObjectElements() { … }
FieldAccess AccessBuilder::ForJSObjectInObjectProperty(
MapRef map, int index, MachineType machine_type) { … }
FieldAccess AccessBuilder::ForJSObjectOffset(
int offset, WriteBarrierKind write_barrier_kind) { … }
FieldAccess AccessBuilder::ForJSCollectionTable() { … }
FieldAccess AccessBuilder::ForJSCollectionIteratorTable() { … }
FieldAccess AccessBuilder::ForJSCollectionIteratorIndex() { … }
FieldAccess AccessBuilder::ForJSExternalObjectValue() { … }
#ifdef V8_ENABLE_SANDBOX
FieldAccess AccessBuilder::ForJSExternalObjectPointerHandle() { … }
#endif
FieldAccess AccessBuilder::ForJSFunctionPrototypeOrInitialMap() { … }
FieldAccess AccessBuilder::ForJSFunctionContext() { … }
FieldAccess AccessBuilder::ForJSFunctionSharedFunctionInfo() { … }
FieldAccess AccessBuilder::ForJSFunctionFeedbackCell() { … }
#ifdef V8_ENABLE_LEAPTIERING
FieldAccess AccessBuilder::ForJSFunctionDispatchHandleNoWriteBarrier() {
FieldAccess access = {
kTaggedBase, JSFunction::kDispatchHandleOffset, Handle<Name>(),
OptionalMapRef(), TypeCache::Get()->kInt32, MachineType::Int32(),
kNoWriteBarrier, "JSFunctionDispatchHandle"};
return access;
}
#else
#ifdef V8_ENABLE_SANDBOX
FieldAccess AccessBuilder::ForJSFunctionCode() { … }
#else
FieldAccess AccessBuilder::ForJSFunctionCode() {
FieldAccess access = {kTaggedBase, JSFunction::kCodeOffset,
Handle<Name>(), OptionalMapRef(),
Type::OtherInternal(), MachineType::TaggedPointer(),
kPointerWriteBarrier, "JSFunctionCode"};
return access;
}
#endif
#endif
FieldAccess AccessBuilder::ForJSBoundFunctionBoundTargetFunction() { … }
FieldAccess AccessBuilder::ForJSBoundFunctionBoundThis() { … }
FieldAccess AccessBuilder::ForJSBoundFunctionBoundArguments() { … }
FieldAccess AccessBuilder::ForJSGeneratorObjectContext() { … }
FieldAccess AccessBuilder::ForJSGeneratorObjectFunction() { … }
FieldAccess AccessBuilder::ForJSGeneratorObjectReceiver() { … }
FieldAccess AccessBuilder::ForJSGeneratorObjectContinuation() { … }
FieldAccess AccessBuilder::ForJSGeneratorObjectInputOrDebugPos() { … }
FieldAccess AccessBuilder::ForJSGeneratorObjectParametersAndRegisters() { … }
FieldAccess AccessBuilder::ForJSGeneratorObjectResumeMode() { … }
FieldAccess AccessBuilder::ForJSAsyncFunctionObjectPromise() { … }
FieldAccess AccessBuilder::ForJSAsyncGeneratorObjectQueue() { … }
FieldAccess AccessBuilder::ForJSAsyncGeneratorObjectIsAwaiting() { … }
FieldAccess AccessBuilder::ForJSArrayLength(ElementsKind elements_kind) { … }
FieldAccess AccessBuilder::ForJSArrayBufferBitField() { … }
FieldAccess AccessBuilder::ForJSArrayBufferByteLength() { … }
FieldAccess AccessBuilder::ForJSArrayBufferViewBuffer() { … }
FieldAccess AccessBuilder::ForJSArrayBufferViewByteLength() { … }
FieldAccess AccessBuilder::ForJSArrayBufferViewByteOffset() { … }
FieldAccess AccessBuilder::ForJSArrayBufferViewBitField() { … }
FieldAccess AccessBuilder::ForJSTypedArrayLength() { … }
FieldAccess AccessBuilder::ForJSTypedArrayBasePointer() { … }
FieldAccess AccessBuilder::ForJSTypedArrayExternalPointer() { … }
FieldAccess AccessBuilder::ForJSDataViewDataPointer() { … }
FieldAccess AccessBuilder::ForJSDateValue() { … }
FieldAccess AccessBuilder::ForJSDateField(JSDate::FieldIndex index) { … }
FieldAccess AccessBuilder::ForJSIteratorResultDone() { … }
FieldAccess AccessBuilder::ForJSIteratorResultValue() { … }
FieldAccess AccessBuilder::ForJSPrimitiveWrapperValue() { … }
#ifdef V8_ENABLE_SANDBOX
FieldAccess AccessBuilder::ForJSRegExpData() { … }
#else
FieldAccess AccessBuilder::ForJSRegExpData() {
FieldAccess access = {kTaggedBase, JSRegExp::kDataOffset,
MaybeHandle<Name>(), OptionalMapRef(),
Type::OtherInternal(), MachineType::TaggedPointer(),
kPointerWriteBarrier, "JSRegExpData"};
return access;
}
#endif
FieldAccess AccessBuilder::ForJSRegExpFlags() { … }
FieldAccess AccessBuilder::ForJSRegExpLastIndex() { … }
FieldAccess AccessBuilder::ForJSRegExpSource() { … }
FieldAccess AccessBuilder::ForFixedArrayLength() { … }
FieldAccess AccessBuilder::ForWeakFixedArrayLength() { … }
FieldAccess AccessBuilder::ForSloppyArgumentsElementsContext() { … }
FieldAccess AccessBuilder::ForSloppyArgumentsElementsArguments() { … }
FieldAccess AccessBuilder::ForPropertyArrayLengthAndHash() { … }
FieldAccess AccessBuilder::ForDescriptorArrayEnumCache() { … }
FieldAccess AccessBuilder::ForMapBitField() { … }
FieldAccess AccessBuilder::ForMapBitField2() { … }
FieldAccess AccessBuilder::ForMapBitField3() { … }
FieldAccess AccessBuilder::ForMapDescriptors() { … }
FieldAccess AccessBuilder::ForMapInstanceType() { … }
FieldAccess AccessBuilder::ForMapPrototype() { … }
FieldAccess AccessBuilder::ForMapNativeContext() { … }
FieldAccess AccessBuilder::ForModuleRegularExports() { … }
FieldAccess AccessBuilder::ForModuleRegularImports() { … }
FieldAccess AccessBuilder::ForNameRawHashField() { … }
FieldAccess AccessBuilder::ForFreeSpaceSize() { … }
FieldAccess AccessBuilder::ForStringLength() { … }
FieldAccess AccessBuilder::ForConsStringFirst() { … }
FieldAccess AccessBuilder::ForConsStringSecond() { … }
FieldAccess AccessBuilder::ForThinStringActual() { … }
FieldAccess AccessBuilder::ForSlicedStringOffset() { … }
FieldAccess AccessBuilder::ForSlicedStringParent() { … }
FieldAccess AccessBuilder::ForExternalStringResourceData() { … }
ElementAccess AccessBuilder::ForSeqOneByteStringCharacter() { … }
ElementAccess AccessBuilder::ForSeqTwoByteStringCharacter() { … }
FieldAccess AccessBuilder::ForJSArrayIteratorIteratedObject() { … }
FieldAccess AccessBuilder::ForJSArrayIteratorNextIndex() { … }
FieldAccess AccessBuilder::ForJSArrayIteratorKind() { … }
FieldAccess AccessBuilder::ForJSStringIteratorString() { … }
FieldAccess AccessBuilder::ForJSStringIteratorIndex() { … }
FieldAccess AccessBuilder::ForArgumentsLength() { … }
FieldAccess AccessBuilder::ForArgumentsCallee() { … }
FieldAccess AccessBuilder::ForFixedArraySlot(
size_t index, WriteBarrierKind write_barrier_kind) { … }
FieldAccess AccessBuilder::ForFeedbackVectorSlot(int index) { … }
FieldAccess AccessBuilder::ForPropertyArraySlot(int index) { … }
FieldAccess AccessBuilder::ForWeakFixedArraySlot(int index) { … }
FieldAccess AccessBuilder::ForCellValue() { … }
FieldAccess AccessBuilder::ForScopeInfoFlags() { … }
FieldAccess AccessBuilder::ForContextSlot(size_t index) { … }
FieldAccess AccessBuilder::ForContextSlotKnownPointer(size_t index) { … }
ElementAccess AccessBuilder::ForFixedArrayElement() { … }
ElementAccess AccessBuilder::ForWeakFixedArrayElement() { … }
ElementAccess AccessBuilder::ForSloppyArgumentsElementsMappedEntry() { … }
ElementAccess AccessBuilder::ForFixedArrayElement(ElementsKind kind) { … }
ElementAccess AccessBuilder::ForFixedDoubleArrayElement() { … }
FieldAccess AccessBuilder::ForEnumCacheKeys() { … }
FieldAccess AccessBuilder::ForEnumCacheIndices() { … }
ElementAccess AccessBuilder::ForTypedArrayElement(ExternalArrayType type,
bool is_external) { … }
ElementAccess AccessBuilder::ForJSForInCacheArrayElement(ForInMode mode) { … }
FieldAccess AccessBuilder::ForHashTableBaseNumberOfElements() { … }
FieldAccess AccessBuilder::ForHashTableBaseNumberOfDeletedElement() { … }
FieldAccess AccessBuilder::ForHashTableBaseCapacity() { … }
FieldAccess AccessBuilder::ForOrderedHashMapOrSetNextTable() { … }
FieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfBuckets() { … }
FieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfDeletedElements() { … }
FieldAccess AccessBuilder::ForOrderedHashMapOrSetNumberOfElements() { … }
ElementAccess AccessBuilder::ForOrderedHashMapEntryValue() { … }
FieldAccess AccessBuilder::ForDictionaryNextEnumerationIndex() { … }
FieldAccess AccessBuilder::ForDictionaryObjectHashIndex() { … }
FieldAccess AccessBuilder::ForNameDictionaryFlagsIndex() { … }
FieldAccess AccessBuilder::ForFeedbackCellInterruptBudget() { … }
#ifdef V8_ENABLE_LEAPTIERING
FieldAccess AccessBuilder::ForFeedbackCellDispatchHandleNoWriteBarrier() {
FieldAccess access = {kTaggedBase,
FeedbackCell::kDispatchHandleOffset,
Handle<Name>(),
OptionalMapRef(),
TypeCache::Get()->kInt32,
MachineType::Int32(),
kNoWriteBarrier,
"FeedbackCellDispatchHandle"};
return access;
}
#endif
FieldAccess AccessBuilder::ForFeedbackVectorInvocationCount() { … }
FieldAccess AccessBuilder::ForFeedbackVectorFlags() { … }
FieldAccess AccessBuilder::ForFeedbackVectorClosureFeedbackCellArray() { … }
#if V8_ENABLE_WEBASSEMBLY
FieldAccess AccessBuilder::ForWasmArrayLength() { … }
FieldAccess AccessBuilder::ForWasmDispatchTableLength() { … }
#endif
}
}
}