diff options
Diffstat (limited to 'src/objects/literal-objects.h')
-rw-r--r-- | src/objects/literal-objects.h | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/objects/literal-objects.h b/src/objects/literal-objects.h new file mode 100644 index 00000000..fdd321e7 --- /dev/null +++ b/src/objects/literal-objects.h @@ -0,0 +1,67 @@ +// Copyright 2017 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_LITERAL_OBJECTS_H_ +#define V8_OBJECTS_LITERAL_OBJECTS_H_ + +#include "src/objects.h" + +// Has to be the last include (doesn't have include guards): +#include "src/objects/object-macros.h" + +namespace v8 { +namespace internal { + +// BoilerplateDescription is a list of properties consisting of name value +// pairs. In addition to the properties, it provides the projected number +// of properties in the backing store. This number includes properties with +// computed names that are not +// in the list. +class BoilerplateDescription : public FixedArray { + public: + Object* name(int index) const; + Object* value(int index) const; + + // The number of boilerplate properties. + int size() const; + + // Number of boilerplate properties and properties with computed names. + int backing_store_size() const; + + void set_backing_store_size(Isolate* isolate, int backing_store_size); + + DECLARE_CAST(BoilerplateDescription) + + private: + bool has_number_of_properties() const; +}; + +// Pair of {ElementsKind} and an array of constant values for {ArrayLiteral} +// expressions. Used to communicate with the runtime for literal boilerplate +// creation within the {Runtime_CreateArrayLiteral} method. +class ConstantElementsPair : public Struct { + public: + DECL_INT_ACCESSORS(elements_kind) + DECL_ACCESSORS(constant_values, FixedArrayBase) + + DECLARE_CAST(ConstantElementsPair) + + // Dispatched behavior. + DECLARE_PRINTER(ConstantElementsPair) + DECLARE_VERIFIER(ConstantElementsPair) + + static const int kElementsKindOffset = HeapObject::kHeaderSize; + static const int kConstantValuesOffset = kElementsKindOffset + kPointerSize; + static const int kSize = kConstantValuesOffset + kPointerSize; + + private: + DISALLOW_IMPLICIT_CONSTRUCTORS(ConstantElementsPair); +}; + +} // namespace internal +} // namespace v8 + +#include "src/objects/object-macros-undef.h" + +#endif // V8_OBJECTS_LITERAL_OBJECTS_H_ |