Commit 2a440bb2 authored by Igor Sheludko's avatar Igor Sheludko Committed by Commit Bot

[ptr-compr] Use [DECL|DEF]_GETTERS macros (part 1)

... for defining isolate-full getters.

Bug: v8:9353
Change-Id: I91aa11bfe41ab61b2fa72c21018fc38753a846bd
Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1676286Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#62375}
parent eb0dd1da
...@@ -523,10 +523,11 @@ void FeedbackVector::FeedbackVectorVerify(Isolate* isolate) { ...@@ -523,10 +523,11 @@ void FeedbackVector::FeedbackVectorVerify(Isolate* isolate) {
USE_TORQUE_VERIFIER(JSReceiver) USE_TORQUE_VERIFIER(JSReceiver)
bool JSObject::ElementsAreSafeToExamine() const { bool JSObject::ElementsAreSafeToExamine(Isolate* isolate) const {
// If a GC was caused while constructing this object, the elements // If a GC was caused while constructing this object, the elements
// pointer may point to a one pointer filler map. // pointer may point to a one pointer filler map.
return elements() != GetReadOnlyRoots().one_pointer_filler_map(); return elements(isolate) !=
GetReadOnlyRoots(isolate).one_pointer_filler_map();
} }
namespace { namespace {
...@@ -632,7 +633,7 @@ void JSObject::JSObjectVerify(Isolate* isolate) { ...@@ -632,7 +633,7 @@ void JSObject::JSObjectVerify(Isolate* isolate) {
// If a GC was caused while constructing this object, the elements // If a GC was caused while constructing this object, the elements
// pointer may point to a one pointer filler map. // pointer may point to a one pointer filler map.
if (ElementsAreSafeToExamine()) { if (ElementsAreSafeToExamine(isolate)) {
CHECK_EQ((map().has_fast_smi_or_object_elements() || CHECK_EQ((map().has_fast_smi_or_object_elements() ||
map().has_frozen_or_sealed_elements() || map().has_frozen_or_sealed_elements() ||
(elements() == GetReadOnlyRoots().empty_fixed_array()) || (elements() == GetReadOnlyRoots().empty_fixed_array()) ||
...@@ -1182,7 +1183,7 @@ void JSArray::JSArrayVerify(Isolate* isolate) { ...@@ -1182,7 +1183,7 @@ void JSArray::JSArrayVerify(Isolate* isolate) {
TorqueGeneratedClassVerifiers::JSArrayVerify(*this, isolate); TorqueGeneratedClassVerifiers::JSArrayVerify(*this, isolate);
// If a GC was caused while constructing this array, the elements // If a GC was caused while constructing this array, the elements
// pointer may point to a one pointer filler map. // pointer may point to a one pointer filler map.
if (!ElementsAreSafeToExamine()) return; if (!ElementsAreSafeToExamine(isolate)) return;
if (elements().IsUndefined(isolate)) return; if (elements().IsUndefined(isolate)) return;
CHECK(elements().IsFixedArray() || elements().IsFixedDoubleArray()); CHECK(elements().IsFixedArray() || elements().IsFixedDoubleArray());
if (elements().length() == 0) { if (elements().length() == 0) {
......
...@@ -2338,7 +2338,7 @@ Handle<JSFunction> Factory::NewFunction(Handle<Map> map, ...@@ -2338,7 +2338,7 @@ Handle<JSFunction> Factory::NewFunction(Handle<Map> map,
Handle<JSFunction> function(JSFunction::cast(New(map, allocation)), Handle<JSFunction> function(JSFunction::cast(New(map, allocation)),
isolate()); isolate());
function->initialize_properties(); function->initialize_properties(isolate());
function->initialize_elements(); function->initialize_elements();
function->set_shared(*info); function->set_shared(*info);
function->set_code(info->GetCode()); function->set_code(info->GetCode());
...@@ -3292,7 +3292,7 @@ Handle<JSProxy> Factory::NewJSProxy(Handle<JSReceiver> target, ...@@ -3292,7 +3292,7 @@ Handle<JSProxy> Factory::NewJSProxy(Handle<JSReceiver> target,
DCHECK(map->prototype().IsNull(isolate())); DCHECK(map->prototype().IsNull(isolate()));
Handle<JSProxy> result(JSProxy::cast(New(map, AllocationType::kYoung)), Handle<JSProxy> result(JSProxy::cast(New(map, AllocationType::kYoung)),
isolate()); isolate());
result->initialize_properties(); result->initialize_properties(isolate());
result->set_target(*target); result->set_target(*target);
result->set_handler(*handler); result->set_handler(*handler);
return result; return result;
......
...@@ -201,7 +201,7 @@ class ElementsAccessor { ...@@ -201,7 +201,7 @@ class ElementsAccessor {
uint32_t destination_start, int copy_size) = 0; uint32_t destination_start, int copy_size) = 0;
private: private:
static ElementsAccessor** elements_accessors_; V8_EXPORT_PRIVATE static ElementsAccessor** elements_accessors_;
DISALLOW_COPY_AND_ASSIGN(ElementsAccessor); DISALLOW_COPY_AND_ASSIGN(ElementsAccessor);
}; };
......
...@@ -29,8 +29,7 @@ class HeapObject : public Object { ...@@ -29,8 +29,7 @@ class HeapObject : public Object {
// [map]: Contains a map which contains the object's reflective // [map]: Contains a map which contains the object's reflective
// information. // information.
inline Map map() const; DECL_GETTER(map, Map)
inline Map map(Isolate* isolate) const;
inline void set_map(Map value); inline void set_map(Map value);
inline ObjectSlot map_slot() const; inline ObjectSlot map_slot() const;
...@@ -59,8 +58,7 @@ class HeapObject : public Object { ...@@ -59,8 +58,7 @@ class HeapObject : public Object {
// During garbage collection, the map word of a heap object does not // During garbage collection, the map word of a heap object does not
// necessarily contain a map pointer. // necessarily contain a map pointer.
inline MapWord map_word() const; DECL_GETTER(map_word, MapWord)
inline MapWord map_word(Isolate* isolate) const;
inline void set_map_word(MapWord map_word); inline void set_map_word(MapWord map_word);
// TODO(v8:7464): Once RO_SPACE is shared between isolates, this method can be // TODO(v8:7464): Once RO_SPACE is shared between isolates, this method can be
......
This diff is collapsed.
...@@ -4480,10 +4480,6 @@ void JSObject::EnsureCanContainElements(Handle<JSObject> object, ...@@ -4480,10 +4480,6 @@ void JSObject::EnsureCanContainElements(Handle<JSObject> object,
object, args->slot_at(first_arg + arg_count - 1), arg_count, mode); object, args->slot_at(first_arg + arg_count - 1), arg_count, mode);
} }
ElementsAccessor* JSObject::GetElementsAccessor() {
return ElementsAccessor::ForKind(GetElementsKind());
}
void JSObject::ValidateElements(JSObject object) { void JSObject::ValidateElements(JSObject object) {
#ifdef ENABLE_SLOW_DCHECKS #ifdef ENABLE_SLOW_DCHECKS
if (FLAG_enable_slow_asserts) { if (FLAG_enable_slow_asserts) {
......
...@@ -27,16 +27,16 @@ class JSReceiver : public HeapObject { ...@@ -27,16 +27,16 @@ class JSReceiver : public HeapObject {
public: public:
NEVER_READ_ONLY_SPACE NEVER_READ_ONLY_SPACE
// Returns true if there is no slow (ie, dictionary) backing store. // Returns true if there is no slow (ie, dictionary) backing store.
inline bool HasFastProperties() const; DECL_GETTER(HasFastProperties, bool)
// Returns the properties array backing store if it // Returns the properties array backing store if it
// exists. Otherwise, returns an empty_property_array when there's a // exists. Otherwise, returns an empty_property_array when there's a
// Smi (hash code) or an empty_fixed_array for a fast properties // Smi (hash code) or an empty_fixed_array for a fast properties
// map. // map.
inline PropertyArray property_array() const; DECL_GETTER(property_array, PropertyArray)
// Gets slow properties for non-global objects. // Gets slow properties for non-global objects.
inline NameDictionary property_dictionary() const; DECL_GETTER(property_dictionary, NameDictionary)
// Sets the properties backing store and makes sure any existing hash is moved // Sets the properties backing store and makes sure any existing hash is moved
// to the new properties store. To clear out the properties store, pass in the // to the new properties store. To clear out the properties store, pass in the
...@@ -62,7 +62,7 @@ class JSReceiver : public HeapObject { ...@@ -62,7 +62,7 @@ class JSReceiver : public HeapObject {
// above typed getters and setters to access the properties. // above typed getters and setters to access the properties.
DECL_ACCESSORS(raw_properties_or_hash, Object) DECL_ACCESSORS(raw_properties_or_hash, Object)
inline void initialize_properties(); inline void initialize_properties(Isolate* isolate);
// Deletes an existing named property in a normalized object. // Deletes an existing named property in a normalized object.
static void DeleteNormalizedProperty(Handle<JSReceiver> object, int entry); static void DeleteNormalizedProperty(Handle<JSReceiver> object, int entry);
...@@ -311,58 +311,60 @@ class JSObject : public JSReceiver { ...@@ -311,58 +311,60 @@ class JSObject : public JSReceiver {
inline void initialize_elements(); inline void initialize_elements();
static inline void SetMapAndElements(Handle<JSObject> object, Handle<Map> map, static inline void SetMapAndElements(Handle<JSObject> object, Handle<Map> map,
Handle<FixedArrayBase> elements); Handle<FixedArrayBase> elements);
inline ElementsKind GetElementsKind() const; DECL_GETTER(GetElementsKind, ElementsKind)
V8_EXPORT_PRIVATE ElementsAccessor* GetElementsAccessor(); DECL_GETTER(GetElementsAccessor, ElementsAccessor*)
// Returns true if an object has elements of PACKED_SMI_ELEMENTS or // Returns true if an object has elements of PACKED_SMI_ELEMENTS or
// HOLEY_SMI_ELEMENTS ElementsKind. // HOLEY_SMI_ELEMENTS ElementsKind.
inline bool HasSmiElements(); DECL_GETTER(HasSmiElements, bool)
// Returns true if an object has elements of PACKED_ELEMENTS or // Returns true if an object has elements of PACKED_ELEMENTS or
// HOLEY_ELEMENTS ElementsKind. // HOLEY_ELEMENTS ElementsKind.
inline bool HasObjectElements(); DECL_GETTER(HasObjectElements, bool)
// Returns true if an object has elements of PACKED_SMI_ELEMENTS, // Returns true if an object has elements of PACKED_SMI_ELEMENTS,
// HOLEY_SMI_ELEMENTS, PACKED_ELEMENTS, or HOLEY_ELEMENTS. // HOLEY_SMI_ELEMENTS, PACKED_ELEMENTS, or HOLEY_ELEMENTS.
inline bool HasSmiOrObjectElements(); DECL_GETTER(HasSmiOrObjectElements, bool)
// Returns true if an object has any of the "fast" elements kinds. // Returns true if an object has any of the "fast" elements kinds.
inline bool HasFastElements(); DECL_GETTER(HasFastElements, bool)
// Returns true if an object has any of the PACKED elements kinds. // Returns true if an object has any of the PACKED elements kinds.
inline bool HasFastPackedElements(); DECL_GETTER(HasFastPackedElements, bool)
// Returns true if an object has elements of PACKED_DOUBLE_ELEMENTS or // Returns true if an object has elements of PACKED_DOUBLE_ELEMENTS or
// HOLEY_DOUBLE_ELEMENTS ElementsKind. // HOLEY_DOUBLE_ELEMENTS ElementsKind.
inline bool HasDoubleElements(); DECL_GETTER(HasDoubleElements, bool)
// Returns true if an object has elements of HOLEY_SMI_ELEMENTS, // Returns true if an object has elements of HOLEY_SMI_ELEMENTS,
// HOLEY_DOUBLE_ELEMENTS, or HOLEY_ELEMENTS ElementsKind. // HOLEY_DOUBLE_ELEMENTS, or HOLEY_ELEMENTS ElementsKind.
inline bool HasHoleyElements(); DECL_GETTER(HasHoleyElements, bool)
inline bool HasSloppyArgumentsElements(); DECL_GETTER(HasSloppyArgumentsElements, bool)
inline bool HasStringWrapperElements(); DECL_GETTER(HasStringWrapperElements, bool)
inline bool HasDictionaryElements(); DECL_GETTER(HasDictionaryElements, bool)
// Returns true if an object has elements of PACKED_ELEMENTS // Returns true if an object has elements of PACKED_ELEMENTS
inline bool HasPackedElements(); DECL_GETTER(HasPackedElements, bool)
inline bool HasFrozenOrSealedElements(); DECL_GETTER(HasFrozenOrSealedElements, bool)
inline bool HasSealedElements(); DECL_GETTER(HasSealedElements, bool)
inline bool HasTypedArrayElements(); DECL_GETTER(HasTypedArrayElements, bool)
inline bool HasFixedUint8ClampedElements(); DECL_GETTER(HasFixedUint8ClampedElements, bool)
inline bool HasFixedArrayElements(); DECL_GETTER(HasFixedArrayElements, bool)
inline bool HasFixedInt8Elements(); DECL_GETTER(HasFixedInt8Elements, bool)
inline bool HasFixedUint8Elements(); DECL_GETTER(HasFixedUint8Elements, bool)
inline bool HasFixedInt16Elements(); DECL_GETTER(HasFixedInt16Elements, bool)
inline bool HasFixedUint16Elements(); DECL_GETTER(HasFixedUint16Elements, bool)
inline bool HasFixedInt32Elements(); DECL_GETTER(HasFixedInt32Elements, bool)
inline bool HasFixedUint32Elements(); DECL_GETTER(HasFixedUint32Elements, bool)
inline bool HasFixedFloat32Elements(); DECL_GETTER(HasFixedFloat32Elements, bool)
inline bool HasFixedFloat64Elements(); DECL_GETTER(HasFixedFloat64Elements, bool)
inline bool HasFixedBigInt64Elements(); DECL_GETTER(HasFixedBigInt64Elements, bool)
inline bool HasFixedBigUint64Elements(); DECL_GETTER(HasFixedBigUint64Elements, bool)
inline bool HasFastArgumentsElements(); DECL_GETTER(HasFastArgumentsElements, bool)
inline bool HasSlowArgumentsElements(); DECL_GETTER(HasSlowArgumentsElements, bool)
inline bool HasFastStringWrapperElements(); DECL_GETTER(HasFastStringWrapperElements, bool)
inline bool HasSlowStringWrapperElements(); DECL_GETTER(HasSlowStringWrapperElements, bool)
bool HasEnumerableElements(); bool HasEnumerableElements();
inline NumberDictionary element_dictionary(); // Gets slow elements. // Gets slow elements.
DECL_GETTER(element_dictionary, NumberDictionary)
// Requires: HasFastElements(). // Requires: HasFastElements().
static void EnsureWritableFastElements(Handle<JSObject> object); static void EnsureWritableFastElements(Handle<JSObject> object);
...@@ -547,8 +549,8 @@ class JSObject : public JSReceiver { ...@@ -547,8 +549,8 @@ class JSObject : public JSReceiver {
// Lookup interceptors are used for handling properties controlled by host // Lookup interceptors are used for handling properties controlled by host
// objects. // objects.
inline bool HasNamedInterceptor(); DECL_GETTER(HasNamedInterceptor, bool)
inline bool HasIndexedInterceptor(); DECL_GETTER(HasIndexedInterceptor, bool)
// Support functions for v8 api (needed for correct interceptor behavior). // Support functions for v8 api (needed for correct interceptor behavior).
V8_WARN_UNUSED_RESULT static Maybe<bool> HasRealNamedProperty( V8_WARN_UNUSED_RESULT static Maybe<bool> HasRealNamedProperty(
...@@ -728,7 +730,7 @@ class JSObject : public JSReceiver { ...@@ -728,7 +730,7 @@ class JSObject : public JSReceiver {
// If a GC was caused while constructing this object, the elements pointer // If a GC was caused while constructing this object, the elements pointer
// may point to a one pointer filler map. The object won't be rooted, but // may point to a one pointer filler map. The object won't be rooted, but
// our heap verification code could stumble across it. // our heap verification code could stumble across it.
V8_EXPORT_PRIVATE bool ElementsAreSafeToExamine() const; V8_EXPORT_PRIVATE bool ElementsAreSafeToExamine(Isolate* isolate) const;
#endif #endif
Object SlowReverseLookup(Object value); Object SlowReverseLookup(Object value);
...@@ -1080,13 +1082,14 @@ class JSFunction : public JSObject { ...@@ -1080,13 +1082,14 @@ class JSFunction : public JSObject {
inline bool NeedsResetDueToFlushedBytecode(); inline bool NeedsResetDueToFlushedBytecode();
inline void ResetIfBytecodeFlushed(); inline void ResetIfBytecodeFlushed();
inline bool has_prototype_slot() const; DECL_GETTER(has_prototype_slot, bool)
// The initial map for an object created by this constructor. // The initial map for an object created by this constructor.
inline Map initial_map(); DECL_GETTER(initial_map, Map)
static void SetInitialMap(Handle<JSFunction> function, Handle<Map> map, static void SetInitialMap(Handle<JSFunction> function, Handle<Map> map,
Handle<HeapObject> prototype); Handle<HeapObject> prototype);
inline bool has_initial_map(); DECL_GETTER(has_initial_map, bool)
V8_EXPORT_PRIVATE static void EnsureHasInitialMap( V8_EXPORT_PRIVATE static void EnsureHasInitialMap(
Handle<JSFunction> function); Handle<JSFunction> function);
...@@ -1101,12 +1104,12 @@ class JSFunction : public JSObject { ...@@ -1101,12 +1104,12 @@ class JSFunction : public JSObject {
// function has an initial map the prototype is set on the initial // function has an initial map the prototype is set on the initial
// map. Otherwise, the prototype is put in the initial map field // map. Otherwise, the prototype is put in the initial map field
// until an initial map is needed. // until an initial map is needed.
inline bool has_prototype(); DECL_GETTER(has_prototype, bool)
inline bool has_instance_prototype(); DECL_GETTER(has_instance_prototype, bool)
inline Object prototype(); DECL_GETTER(prototype, Object)
inline HeapObject instance_prototype(); DECL_GETTER(instance_prototype, HeapObject)
inline bool has_prototype_property(); DECL_GETTER(has_prototype_property, bool)
inline bool PrototypeRequiresRuntimeLookup(); DECL_GETTER(PrototypeRequiresRuntimeLookup, bool)
static void SetPrototype(Handle<JSFunction> function, Handle<Object> value); static void SetPrototype(Handle<JSFunction> function, Handle<Object> value);
// Returns if this function has been compiled to native code yet. // Returns if this function has been compiled to native code yet.
...@@ -1207,7 +1210,7 @@ class JSGlobalObject : public JSObject { ...@@ -1207,7 +1210,7 @@ class JSGlobalObject : public JSObject {
DECL_ACCESSORS(global_proxy, JSGlobalProxy) DECL_ACCESSORS(global_proxy, JSGlobalProxy)
// Gets global object properties. // Gets global object properties.
inline GlobalDictionary global_dictionary(); DECL_GETTER(global_dictionary, GlobalDictionary)
inline void set_global_dictionary(GlobalDictionary dictionary); inline void set_global_dictionary(GlobalDictionary dictionary);
static void InvalidatePropertyCell(Handle<JSGlobalObject> object, static void InvalidatePropertyCell(Handle<JSGlobalObject> object,
......
...@@ -686,21 +686,17 @@ void Map::AppendDescriptor(Isolate* isolate, Descriptor* desc) { ...@@ -686,21 +686,17 @@ void Map::AppendDescriptor(Isolate* isolate, Descriptor* desc) {
#endif #endif
} }
HeapObject Map::GetBackPointer() const { DEF_GETTER(Map, GetBackPointer, HeapObject) {
Object object = constructor_or_backpointer(); Object object = constructor_or_backpointer(isolate);
if (object.IsMap()) { if (object.IsMap(isolate)) {
return Map::cast(object); return Map::cast(object);
} }
return GetReadOnlyRoots().undefined_value(); // Can't use ReadOnlyRoots(isolate) as this isolate could be produced by
// i::GetIsolateForPtrCompr(HeapObject).
return GetReadOnlyRoots(isolate).undefined_value();
} }
Map Map::ElementsTransitionMap(Isolate* isolate) { void Map::SetBackPointer(HeapObject value, WriteBarrierMode mode) {
DisallowHeapAllocation no_gc;
return TransitionsAccessor(isolate, *this, &no_gc)
.SearchSpecial(ReadOnlyRoots(isolate).elements_transition_symbol());
}
void Map::SetBackPointer(Object value, WriteBarrierMode mode) {
CHECK_GE(instance_type(), FIRST_JS_RECEIVER_TYPE); CHECK_GE(instance_type(), FIRST_JS_RECEIVER_TYPE);
CHECK(value.IsMap()); CHECK(value.IsMap());
CHECK(GetBackPointer().IsUndefined()); CHECK(GetBackPointer().IsUndefined());
...@@ -709,6 +705,13 @@ void Map::SetBackPointer(Object value, WriteBarrierMode mode) { ...@@ -709,6 +705,13 @@ void Map::SetBackPointer(Object value, WriteBarrierMode mode) {
set_constructor_or_backpointer(value, mode); set_constructor_or_backpointer(value, mode);
} }
// static
Map Map::ElementsTransitionMap(Isolate* isolate) {
DisallowHeapAllocation no_gc;
return TransitionsAccessor(isolate, *this, &no_gc)
.SearchSpecial(ReadOnlyRoots(isolate).elements_transition_symbol());
}
ACCESSORS(Map, dependent_code, DependentCode, kDependentCodeOffset) ACCESSORS(Map, dependent_code, DependentCode, kDependentCodeOffset)
ACCESSORS(Map, prototype_validity_cell, Object, kPrototypeValidityCellOffset) ACCESSORS(Map, prototype_validity_cell, Object, kPrototypeValidityCellOffset)
ACCESSORS(Map, constructor_or_backpointer, Object, ACCESSORS(Map, constructor_or_backpointer, Object,
...@@ -721,23 +724,24 @@ bool Map::IsPrototypeValidityCellValid() const { ...@@ -721,23 +724,24 @@ bool Map::IsPrototypeValidityCellValid() const {
return value == Smi::FromInt(Map::kPrototypeChainValid); return value == Smi::FromInt(Map::kPrototypeChainValid);
} }
Object Map::GetConstructor() const { DEF_GETTER(Map, GetConstructor, Object) {
Object maybe_constructor = constructor_or_backpointer(); Object maybe_constructor = constructor_or_backpointer(isolate);
// Follow any back pointers. // Follow any back pointers.
while (maybe_constructor.IsMap()) { while (maybe_constructor.IsMap(isolate)) {
maybe_constructor = maybe_constructor =
Map::cast(maybe_constructor).constructor_or_backpointer(); Map::cast(maybe_constructor).constructor_or_backpointer(isolate);
} }
return maybe_constructor; return maybe_constructor;
} }
FunctionTemplateInfo Map::GetFunctionTemplateInfo() const { DEF_GETTER(Map, GetFunctionTemplateInfo, FunctionTemplateInfo) {
Object constructor = GetConstructor(); Object constructor = GetConstructor(isolate);
if (constructor.IsJSFunction()) { if (constructor.IsJSFunction(isolate)) {
DCHECK(JSFunction::cast(constructor).shared().IsApiFunction()); // TODO(ishell): IsApiFunction(isolate) and get_api_func_data(isolate)
return JSFunction::cast(constructor).shared().get_api_func_data(); DCHECK(JSFunction::cast(constructor).shared(isolate).IsApiFunction());
return JSFunction::cast(constructor).shared(isolate).get_api_func_data();
} }
DCHECK(constructor.IsFunctionTemplateInfo()); DCHECK(constructor.IsFunctionTemplateInfo(isolate));
return FunctionTemplateInfo::cast(constructor); return FunctionTemplateInfo::cast(constructor);
} }
......
...@@ -576,19 +576,18 @@ class Map : public HeapObject { ...@@ -576,19 +576,18 @@ class Map : public HeapObject {
// Returns null_value if there's neither a constructor function nor a // Returns null_value if there's neither a constructor function nor a
// FunctionTemplateInfo available. // FunctionTemplateInfo available.
DECL_ACCESSORS(constructor_or_backpointer, Object) DECL_ACCESSORS(constructor_or_backpointer, Object)
inline Object GetConstructor() const; DECL_GETTER(GetConstructor, Object)
inline FunctionTemplateInfo GetFunctionTemplateInfo() const; DECL_GETTER(GetFunctionTemplateInfo, FunctionTemplateInfo)
inline void SetConstructor(Object constructor, inline void SetConstructor(Object constructor,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER); WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
// [back pointer]: points back to the parent map from which a transition // [back pointer]: points back to the parent map from which a transition
// leads to this map. The field overlaps with the constructor (see above). // leads to this map. The field overlaps with the constructor (see above).
inline HeapObject GetBackPointer() const; DECL_GETTER(GetBackPointer, HeapObject)
inline void SetBackPointer(Object value, inline void SetBackPointer(HeapObject value,
WriteBarrierMode mode = UPDATE_WRITE_BARRIER); WriteBarrierMode mode = UPDATE_WRITE_BARRIER);
// [instance descriptors]: describes the object. // [instance descriptors]: describes the object.
inline DescriptorArray instance_descriptors() const; DECL_GETTER(instance_descriptors, DescriptorArray)
inline DescriptorArray instance_descriptors(Isolate* isolate) const;
V8_EXPORT_PRIVATE void SetInstanceDescriptors(Isolate* isolate, V8_EXPORT_PRIVATE void SetInstanceDescriptors(Isolate* isolate,
DescriptorArray descriptors, DescriptorArray descriptors,
int number_of_own_descriptors); int number_of_own_descriptors);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment