diff options
Diffstat (limited to 'deps/v8/src/objects/property.h')
-rw-r--r-- | deps/v8/src/objects/property.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/deps/v8/src/objects/property.h b/deps/v8/src/objects/property.h new file mode 100644 index 0000000000..100b39e1f9 --- /dev/null +++ b/deps/v8/src/objects/property.h @@ -0,0 +1,75 @@ +// Copyright 2014 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_PROPERTY_H_ +#define V8_OBJECTS_PROPERTY_H_ + +#include <iosfwd> + +#include "src/common/globals.h" +#include "src/handles/handles.h" +#include "src/handles/maybe-handles.h" +#include "src/objects/name.h" +#include "src/objects/objects.h" +#include "src/objects/property-details.h" + +namespace v8 { +namespace internal { + +// Abstraction for elements in instance-descriptor arrays. +// +// Each descriptor has a key, property attributes, property type, +// property index (in the actual instance-descriptor array) and +// optionally a piece of data. +class V8_EXPORT_PRIVATE Descriptor final { + public: + Descriptor(); + + Handle<Name> GetKey() const { return key_; } + MaybeObjectHandle GetValue() const { return value_; } + PropertyDetails GetDetails() const { return details_; } + + void SetSortedKeyIndex(int index) { details_ = details_.set_pointer(index); } + + static Descriptor DataField(Isolate* isolate, Handle<Name> key, + int field_index, PropertyAttributes attributes, + Representation representation); + + static Descriptor DataField(Handle<Name> key, int field_index, + PropertyAttributes attributes, + PropertyConstness constness, + Representation representation, + const MaybeObjectHandle& wrapped_field_type); + + static Descriptor DataConstant(Handle<Name> key, Handle<Object> value, + PropertyAttributes attributes); + + static Descriptor DataConstant(Isolate* isolate, Handle<Name> key, + int field_index, Handle<Object> value, + PropertyAttributes attributes); + + static Descriptor AccessorConstant(Handle<Name> key, Handle<Object> foreign, + PropertyAttributes attributes); + + private: + Handle<Name> key_; + MaybeObjectHandle value_; + PropertyDetails details_; + + protected: + Descriptor(Handle<Name> key, const MaybeObjectHandle& value, + PropertyDetails details); + + Descriptor(Handle<Name> key, const MaybeObjectHandle& value, + PropertyKind kind, PropertyAttributes attributes, + PropertyLocation location, PropertyConstness constness, + Representation representation, int field_index); + + friend class MapUpdater; +}; + +} // namespace internal +} // namespace v8 + +#endif // V8_OBJECTS_PROPERTY_H_ |