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

Side by Side Diff: src/objects.h

Issue 23182003: Push SetAccessor to Template (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: now with 50% fewer descriptor arrays Created 7 years, 4 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/macros.py ('k') | src/objects.cc » ('j') | src/objects.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Redistribution and use in source and binary forms, with or without 2 // Redistribution and use in source and binary forms, with or without
3 // modification, are permitted provided that the following conditions are 3 // modification, are permitted provided that the following conditions are
4 // met: 4 // met:
5 // 5 //
6 // * Redistributions of source code must retain the above copyright 6 // * Redistributions of source code must retain the above copyright
7 // notice, this list of conditions and the following disclaimer. 7 // notice, this list of conditions and the following disclaimer.
8 // * Redistributions in binary form must reproduce the above 8 // * Redistributions in binary form must reproduce the above
9 // copyright notice, this list of conditions and the following 9 // copyright notice, this list of conditions and the following
10 // disclaimer in the documentation and/or other materials provided 10 // disclaimer in the documentation and/or other materials provided
(...skipping 9505 matching lines...) Expand 10 before | Expand all | Expand 10 after
9516 inline void set_property_attributes(PropertyAttributes attributes); 9516 inline void set_property_attributes(PropertyAttributes attributes);
9517 9517
9518 // Checks whether the given receiver is compatible with this accessor. 9518 // Checks whether the given receiver is compatible with this accessor.
9519 inline bool IsCompatibleReceiver(Object* receiver); 9519 inline bool IsCompatibleReceiver(Object* receiver);
9520 9520
9521 static inline AccessorInfo* cast(Object* obj); 9521 static inline AccessorInfo* cast(Object* obj);
9522 9522
9523 // Dispatched behavior. 9523 // Dispatched behavior.
9524 DECLARE_VERIFIER(AccessorInfo) 9524 DECLARE_VERIFIER(AccessorInfo)
9525 9525
9526 static int AppendUnique(Handle<Object> descriptors,
9527 Handle<FixedArray> array,
9528 int valid_descriptors);
9526 9529
9527 static const int kNameOffset = HeapObject::kHeaderSize; 9530 static const int kNameOffset = HeapObject::kHeaderSize;
9528 static const int kFlagOffset = kNameOffset + kPointerSize; 9531 static const int kFlagOffset = kNameOffset + kPointerSize;
9529 static const int kExpectedReceiverTypeOffset = kFlagOffset + kPointerSize; 9532 static const int kExpectedReceiverTypeOffset = kFlagOffset + kPointerSize;
9530 static const int kSize = kExpectedReceiverTypeOffset + kPointerSize; 9533 static const int kSize = kExpectedReceiverTypeOffset + kPointerSize;
9531 9534
9532 private: 9535 private:
9533 // Bit positions in flag. 9536 // Bit positions in flag.
9534 static const int kAllCanReadBit = 0; 9537 static const int kAllCanReadBit = 0;
9535 static const int kAllCanWriteBit = 1; 9538 static const int kAllCanWriteBit = 1;
(...skipping 273 matching lines...) Expand 10 before | Expand all | Expand 10 after
9809 9812
9810 private: 9813 private:
9811 DISALLOW_IMPLICIT_CONSTRUCTORS(CallHandlerInfo); 9814 DISALLOW_IMPLICIT_CONSTRUCTORS(CallHandlerInfo);
9812 }; 9815 };
9813 9816
9814 9817
9815 class TemplateInfo: public Struct { 9818 class TemplateInfo: public Struct {
9816 public: 9819 public:
9817 DECL_ACCESSORS(tag, Object) 9820 DECL_ACCESSORS(tag, Object)
9818 DECL_ACCESSORS(property_list, Object) 9821 DECL_ACCESSORS(property_list, Object)
9822 DECL_ACCESSORS(property_accessors, Object)
9819 9823
9820 DECLARE_VERIFIER(TemplateInfo) 9824 DECLARE_VERIFIER(TemplateInfo)
9821 9825
9822 static const int kTagOffset = HeapObject::kHeaderSize; 9826 static const int kTagOffset = HeapObject::kHeaderSize;
9823 static const int kPropertyListOffset = kTagOffset + kPointerSize; 9827 static const int kPropertyListOffset = kTagOffset + kPointerSize;
9824 static const int kHeaderSize = kPropertyListOffset + kPointerSize; 9828 static const int kPropertyAccessorsOffset =
9829 kPropertyListOffset + kPointerSize;
9830 static const int kHeaderSize = kPropertyAccessorsOffset + kPointerSize;
9825 9831
9826 private: 9832 private:
9827 DISALLOW_IMPLICIT_CONSTRUCTORS(TemplateInfo); 9833 DISALLOW_IMPLICIT_CONSTRUCTORS(TemplateInfo);
9828 }; 9834 };
9829 9835
9830 9836
9831 class FunctionTemplateInfo: public TemplateInfo { 9837 class FunctionTemplateInfo: public TemplateInfo {
9832 public: 9838 public:
9833 DECL_ACCESSORS(serial_number, Object) 9839 DECL_ACCESSORS(serial_number, Object)
9834 DECL_ACCESSORS(call_code, Object) 9840 DECL_ACCESSORS(call_code, Object)
9835 DECL_ACCESSORS(property_accessors, Object)
9836 DECL_ACCESSORS(prototype_template, Object) 9841 DECL_ACCESSORS(prototype_template, Object)
9837 DECL_ACCESSORS(parent_template, Object) 9842 DECL_ACCESSORS(parent_template, Object)
9838 DECL_ACCESSORS(named_property_handler, Object) 9843 DECL_ACCESSORS(named_property_handler, Object)
9839 DECL_ACCESSORS(indexed_property_handler, Object) 9844 DECL_ACCESSORS(indexed_property_handler, Object)
9840 DECL_ACCESSORS(instance_template, Object) 9845 DECL_ACCESSORS(instance_template, Object)
9841 DECL_ACCESSORS(class_name, Object) 9846 DECL_ACCESSORS(class_name, Object)
9842 DECL_ACCESSORS(signature, Object) 9847 DECL_ACCESSORS(signature, Object)
9843 DECL_ACCESSORS(instance_call_handler, Object) 9848 DECL_ACCESSORS(instance_call_handler, Object)
9844 DECL_ACCESSORS(access_check_info, Object) 9849 DECL_ACCESSORS(access_check_info, Object)
9845 DECL_ACCESSORS(flag, Smi) 9850 DECL_ACCESSORS(flag, Smi)
(...skipping 10 matching lines...) Expand all
9856 DECL_BOOLEAN_ACCESSORS(read_only_prototype) 9861 DECL_BOOLEAN_ACCESSORS(read_only_prototype)
9857 9862
9858 static inline FunctionTemplateInfo* cast(Object* obj); 9863 static inline FunctionTemplateInfo* cast(Object* obj);
9859 9864
9860 // Dispatched behavior. 9865 // Dispatched behavior.
9861 DECLARE_PRINTER(FunctionTemplateInfo) 9866 DECLARE_PRINTER(FunctionTemplateInfo)
9862 DECLARE_VERIFIER(FunctionTemplateInfo) 9867 DECLARE_VERIFIER(FunctionTemplateInfo)
9863 9868
9864 static const int kSerialNumberOffset = TemplateInfo::kHeaderSize; 9869 static const int kSerialNumberOffset = TemplateInfo::kHeaderSize;
9865 static const int kCallCodeOffset = kSerialNumberOffset + kPointerSize; 9870 static const int kCallCodeOffset = kSerialNumberOffset + kPointerSize;
9866 static const int kPropertyAccessorsOffset = kCallCodeOffset + kPointerSize;
9867 static const int kPrototypeTemplateOffset = 9871 static const int kPrototypeTemplateOffset =
9868 kPropertyAccessorsOffset + kPointerSize; 9872 kCallCodeOffset + kPointerSize;
9869 static const int kParentTemplateOffset = 9873 static const int kParentTemplateOffset =
9870 kPrototypeTemplateOffset + kPointerSize; 9874 kPrototypeTemplateOffset + kPointerSize;
9871 static const int kNamedPropertyHandlerOffset = 9875 static const int kNamedPropertyHandlerOffset =
9872 kParentTemplateOffset + kPointerSize; 9876 kParentTemplateOffset + kPointerSize;
9873 static const int kIndexedPropertyHandlerOffset = 9877 static const int kIndexedPropertyHandlerOffset =
9874 kNamedPropertyHandlerOffset + kPointerSize; 9878 kNamedPropertyHandlerOffset + kPointerSize;
9875 static const int kInstanceTemplateOffset = 9879 static const int kInstanceTemplateOffset =
9876 kIndexedPropertyHandlerOffset + kPointerSize; 9880 kIndexedPropertyHandlerOffset + kPointerSize;
9877 static const int kClassNameOffset = kInstanceTemplateOffset + kPointerSize; 9881 static const int kClassNameOffset = kInstanceTemplateOffset + kPointerSize;
9878 static const int kSignatureOffset = kClassNameOffset + kPointerSize; 9882 static const int kSignatureOffset = kClassNameOffset + kPointerSize;
(...skipping 305 matching lines...) Expand 10 before | Expand all | Expand 10 after
10184 } else { 10188 } else {
10185 value &= ~(1 << bit_position); 10189 value &= ~(1 << bit_position);
10186 } 10190 }
10187 return value; 10191 return value;
10188 } 10192 }
10189 }; 10193 };
10190 10194
10191 } } // namespace v8::internal 10195 } } // namespace v8::internal
10192 10196
10193 #endif // V8_OBJECTS_H_ 10197 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/macros.py ('k') | src/objects.cc » ('j') | src/objects.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698