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

Side by Side Diff: src/objects.h

Issue 7863: - Optimized CopyFixedArray and CopyJSObject. (Closed) Base URL: http://v8.googlecode.com/svn/branches/bleeding_edge/
Patch Set: Created 12 years, 2 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
« src/heap.cc ('K') | « src/heap-inl.h ('k') | src/objects.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 794 matching lines...) Expand 10 before | Expand all | Expand 10 after
805 inline AllocationSpace allocation_space() const; 805 inline AllocationSpace allocation_space() const;
806 806
807 // Returns the number of bytes requested (up to the representable maximum) 807 // Returns the number of bytes requested (up to the representable maximum)
808 // for RetryAfterGC failures. 808 // for RetryAfterGC failures.
809 inline int requested() const; 809 inline int requested() const;
810 810
811 inline bool IsInternalError() const; 811 inline bool IsInternalError() const;
812 inline bool IsOutOfMemoryException() const; 812 inline bool IsOutOfMemoryException() const;
813 813
814 static Failure* RetryAfterGC(int requested_bytes, AllocationSpace space); 814 static Failure* RetryAfterGC(int requested_bytes, AllocationSpace space);
815 static inline Failure* RetryAfterGC(int requested_bytes); // NEW_SPACE
Kasper Lund 2008/10/22 08:17:21 How about renaming this to avoid the overloading?
815 static inline Failure* Exception(); 816 static inline Failure* Exception();
816 static inline Failure* InternalError(); 817 static inline Failure* InternalError();
817 static inline Failure* OutOfMemoryException(); 818 static inline Failure* OutOfMemoryException();
818 // Casting. 819 // Casting.
819 static inline Failure* cast(Object* object); 820 static inline Failure* cast(Object* object);
820 821
821 // Dispatched behavior. 822 // Dispatched behavior.
822 void FailurePrint(); 823 void FailurePrint();
823 void FailurePrint(StringStream* accumulator); 824 void FailurePrint(StringStream* accumulator);
824 #ifdef DEBUG 825 #ifdef DEBUG
(...skipping 164 matching lines...) Expand 10 before | Expand all | Expand 10 after
989 // Iterates over all pointers contained in the object except the 990 // Iterates over all pointers contained in the object except the
990 // first map pointer. The object type is given in the first 991 // first map pointer. The object type is given in the first
991 // parameter. This function does not access the map pointer in the 992 // parameter. This function does not access the map pointer in the
992 // object, and so is safe to call while the map pointer is modified. 993 // object, and so is safe to call while the map pointer is modified.
993 void IterateBody(InstanceType type, int object_size, ObjectVisitor* v); 994 void IterateBody(InstanceType type, int object_size, ObjectVisitor* v);
994 995
995 // This method only applies to struct objects. Iterates over all the fields 996 // This method only applies to struct objects. Iterates over all the fields
996 // of this struct. 997 // of this struct.
997 void IterateStructBody(int object_size, ObjectVisitor* v); 998 void IterateStructBody(int object_size, ObjectVisitor* v);
998 999
999 // Copy the body from the 'from' object to this.
1000 // Please note the two object must have the same map prior to the call.
1001 inline void CopyBody(JSObject* from);
1002
1003 // Returns the heap object's size in bytes 1000 // Returns the heap object's size in bytes
1004 inline int Size(); 1001 inline int Size();
1005 1002
1006 // Given a heap object's map pointer, returns the heap size in bytes 1003 // Given a heap object's map pointer, returns the heap size in bytes
1007 // Useful when the map pointer field is used for other purposes. 1004 // Useful when the map pointer field is used for other purposes.
1008 // GC internal. 1005 // GC internal.
1009 inline int SizeFromMap(Map* map); 1006 inline int SizeFromMap(Map* map);
1010 1007
1011 // Support for the marking heap objects during the marking phase of GC. 1008 // Support for the marking heap objects during the marking phase of GC.
1012 // True if the object is marked live. 1009 // True if the object is marked live.
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
1246 Object* SetElementsLength(Object* length); 1243 Object* SetElementsLength(Object* length);
1247 1244
1248 // Get the header size for a JSObject. Used to compute the index of 1245 // Get the header size for a JSObject. Used to compute the index of
1249 // internal fields as well as the number of internal fields. 1246 // internal fields as well as the number of internal fields.
1250 inline int GetHeaderSize(); 1247 inline int GetHeaderSize();
1251 1248
1252 inline int GetInternalFieldCount(); 1249 inline int GetInternalFieldCount();
1253 inline Object* GetInternalField(int index); 1250 inline Object* GetInternalField(int index);
1254 inline void SetInternalField(int index, Object* value); 1251 inline void SetInternalField(int index, Object* value);
1255 1252
1256 // Returns a deep copy of the JavaScript object.
1257 // Properties and elements are copied too.
1258 // Returns failure if allocation failed.
1259 Object* Copy(PretenureFlag pretenure = NOT_TENURED);
1260
1261 // Lookup a property. If found, the result is valid and has 1253 // Lookup a property. If found, the result is valid and has
1262 // detailed information. 1254 // detailed information.
1263 void LocalLookup(String* name, LookupResult* result); 1255 void LocalLookup(String* name, LookupResult* result);
1264 void Lookup(String* name, LookupResult* result); 1256 void Lookup(String* name, LookupResult* result);
1265 1257
1266 // The following lookup functions skip interceptors. 1258 // The following lookup functions skip interceptors.
1267 void LocalLookupRealNamedProperty(String* name, LookupResult* result); 1259 void LocalLookupRealNamedProperty(String* name, LookupResult* result);
1268 void LookupRealNamedProperty(String* name, LookupResult* result); 1260 void LookupRealNamedProperty(String* name, LookupResult* result);
1269 void LookupRealNamedPropertyInPrototypes(String* name, LookupResult* result); 1261 void LookupRealNamedPropertyInPrototypes(String* name, LookupResult* result);
1270 void LookupCallbackSetterInPrototypes(String* name, LookupResult* result); 1262 void LookupCallbackSetterInPrototypes(String* name, LookupResult* result);
(...skipping 2785 matching lines...) Expand 10 before | Expand all | Expand 10 after
4056 } else { 4048 } else {
4057 value &= ~(1 << bit_position); 4049 value &= ~(1 << bit_position);
4058 } 4050 }
4059 return value; 4051 return value;
4060 } 4052 }
4061 }; 4053 };
4062 4054
4063 } } // namespace v8::internal 4055 } } // namespace v8::internal
4064 4056
4065 #endif // V8_OBJECTS_H_ 4057 #endif // V8_OBJECTS_H_
OLDNEW
« src/heap.cc ('K') | « src/heap-inl.h ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698