Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(539)

Unified Diff: src/objects.h

Issue 12297012: Runtime version of declarative native accessors. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: src/objects.h
diff --git a/src/objects.h b/src/objects.h
index 1dc3865fd6009b6bf15e901c4b75cbabb1ca3f9a..a52c2be70757f76e8d599f645129ab1062470ea4 100644
--- a/src/objects.h
+++ b/src/objects.h
@@ -8379,19 +8379,63 @@ class AccessorInfo: public Struct {
};
+class AccessorDescriptorSerializerBase {
+ public:
+ void VisitError() { CHECK(false); }
Sven Panne 2013/02/19 08:41:16 Hmmm, unless I misunderstood things, this seems to
+ bool Complete() { return length_ == offset_; }
+
+ protected:
+ AccessorDescriptorSerializerBase(uint16_t length, uint8_t* storage) :
+ offset_(0), length_(length), storage_(storage) {
+ }
+
+ uint16_t offset_;
+ const uint16_t length_;
+ uint8_t* const storage_;
+
+ private:
+ DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorDescriptorSerializerBase);
+};
+
+
+class AccessorDescriptorDeserializer
+ : public AccessorDescriptorSerializerBase {
+ public:
+ inline AccessorDescriptorDeserializer(uint16_t length, uint8_t* storage);
+
+ template<typename T>
+ inline bool ShouldVisit(T* descriptor);
+ inline bool ShouldVisit(v8::AccessorDescriptor* descriptor);
+
+ template<typename T>
+ inline void Visit(T* member);
+
+ inline void Next(v8::AccessorDescriptor* descriptor);
+
+ private:
+ bool visited_;
+ DISALLOW_IMPLICIT_CONSTRUCTORS(AccessorDescriptorDeserializer);
+};
+
+
class DeclaredAccessorDescriptor: public Struct {
public:
- // TODO(dcarney): Fill out this class.
- DECL_ACCESSORS(internal_field, Smi)
+ DECL_ACCESSORS(serialized_descriptor, ByteArray)
Sven Panne 2013/02/19 08:41:16 Why do we need it? It's unclear to me, which is an
static inline DeclaredAccessorDescriptor* cast(Object* obj);
+ static int SerializedLength(
+ const v8::AccessorDescriptor* descriptor);
+ static Handle<DeclaredAccessorDescriptor> Create(
+ const v8::AccessorDescriptor* descriptor,
+ Isolate* isolate);
+
// Dispatched behavior.
DECLARE_PRINTER(DeclaredAccessorDescriptor)
DECLARE_VERIFIER(DeclaredAccessorDescriptor)
- static const int kInternalFieldOffset = HeapObject::kHeaderSize;
- static const int kSize = kInternalFieldOffset + kPointerSize;
+ static const int kSerializedDescriptorOffset = HeapObject::kHeaderSize;
+ static const int kSize = kSerializedDescriptorOffset + kPointerSize;
private:
DISALLOW_IMPLICIT_CONSTRUCTORS(DeclaredAccessorDescriptor);

Powered by Google App Engine
This is Rietveld 408576698