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

Side by Side Diff: src/objects.h

Issue 3836001: Get rid of requested size in RetryAfterGC. (Closed)
Patch Set: Created 10 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
« no previous file with comments | « 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 2010 the V8 project authors. All rights reserved. 1 // Copyright 2010 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 776 matching lines...) Expand 10 before | Expand all | Expand 10 after
787 DISALLOW_IMPLICIT_CONSTRUCTORS(Smi); 787 DISALLOW_IMPLICIT_CONSTRUCTORS(Smi);
788 }; 788 };
789 789
790 790
791 // Failure is used for reporting out of memory situations and 791 // Failure is used for reporting out of memory situations and
792 // propagating exceptions through the runtime system. Failure objects 792 // propagating exceptions through the runtime system. Failure objects
793 // are transient and cannot occur as part of the object graph. 793 // are transient and cannot occur as part of the object graph.
794 // 794 //
795 // Failures are a single word, encoded as follows: 795 // Failures are a single word, encoded as follows:
796 // +-------------------------+---+--+--+ 796 // +-------------------------+---+--+--+
797 // |...rrrrrrrrrrrrrrrrrrrrrr|sss|tt|11| 797 // |.........unused..........|sss|tt|11|
798 // +-------------------------+---+--+--+ 798 // +-------------------------+---+--+--+
799 // 7 6 4 32 10 799 // 7 6 4 32 10
800 // 800 //
801 // 801 //
802 // The low two bits, 0-1, are the failure tag, 11. The next two bits, 802 // The low two bits, 0-1, are the failure tag, 11. The next two bits,
803 // 2-3, are a failure type tag 'tt' with possible values: 803 // 2-3, are a failure type tag 'tt' with possible values:
804 // 00 RETRY_AFTER_GC 804 // 00 RETRY_AFTER_GC
805 // 01 EXCEPTION 805 // 01 EXCEPTION
806 // 10 INTERNAL_ERROR 806 // 10 INTERNAL_ERROR
807 // 11 OUT_OF_MEMORY_EXCEPTION 807 // 11 OUT_OF_MEMORY_EXCEPTION
808 // 808 //
809 // The next three bits, 4-6, are an allocation space tag 'sss'. The 809 // The next three bits, 4-6, are an allocation space tag 'sss'. The
810 // allocation space tag is 000 for all failure types except 810 // allocation space tag is 000 for all failure types except
811 // RETRY_AFTER_GC. For RETRY_AFTER_GC, the possible values are the 811 // RETRY_AFTER_GC. For RETRY_AFTER_GC, the possible values are the
812 // allocation spaces (the encoding is found in globals.h). 812 // allocation spaces (the encoding is found in globals.h).
813 //
814 // The remaining bits is the size of the allocation request in units
815 // of the pointer size, and is zeroed except for RETRY_AFTER_GC
816 // failures. The 25 bits (on a 32 bit platform) gives a representable
817 // range of 2^27 bytes (128MB).
818 813
819 // Failure type tag info. 814 // Failure type tag info.
820 const int kFailureTypeTagSize = 2; 815 const int kFailureTypeTagSize = 2;
821 const int kFailureTypeTagMask = (1 << kFailureTypeTagSize) - 1; 816 const int kFailureTypeTagMask = (1 << kFailureTypeTagSize) - 1;
822 817
823 class Failure: public Object { 818 class Failure: public Object {
824 public: 819 public:
825 // RuntimeStubs assumes EXCEPTION = 1 in the compiler-generated code. 820 // RuntimeStubs assumes EXCEPTION = 1 in the compiler-generated code.
826 enum Type { 821 enum Type {
827 RETRY_AFTER_GC = 0, 822 RETRY_AFTER_GC = 0,
828 EXCEPTION = 1, // Returning this marker tells the real exception 823 EXCEPTION = 1, // Returning this marker tells the real exception
829 // is in Top::pending_exception. 824 // is in Top::pending_exception.
830 INTERNAL_ERROR = 2, 825 INTERNAL_ERROR = 2,
831 OUT_OF_MEMORY_EXCEPTION = 3 826 OUT_OF_MEMORY_EXCEPTION = 3
832 }; 827 };
833 828
834 inline Type type() const; 829 inline Type type() const;
835 830
836 // Returns the space that needs to be collected for RetryAfterGC failures. 831 // Returns the space that needs to be collected for RetryAfterGC failures.
837 inline AllocationSpace allocation_space() const; 832 inline AllocationSpace allocation_space() const;
838 833
839 // Returns the number of bytes requested (up to the representable maximum)
840 // for RetryAfterGC failures.
841 inline int requested() const;
842
843 inline bool IsInternalError() const; 834 inline bool IsInternalError() const;
844 inline bool IsOutOfMemoryException() const; 835 inline bool IsOutOfMemoryException() const;
845 836
846 static Failure* RetryAfterGC(int requested_bytes, AllocationSpace space); 837 static inline Failure* RetryAfterGC(AllocationSpace space);
847 static inline Failure* RetryAfterGC(int requested_bytes); // NEW_SPACE 838 static inline Failure* RetryAfterGC(); // NEW_SPACE
848 static inline Failure* Exception(); 839 static inline Failure* Exception();
849 static inline Failure* InternalError(); 840 static inline Failure* InternalError();
850 static inline Failure* OutOfMemoryException(); 841 static inline Failure* OutOfMemoryException();
851 // Casting. 842 // Casting.
852 static inline Failure* cast(Object* object); 843 static inline Failure* cast(Object* object);
853 844
854 // Dispatched behavior. 845 // Dispatched behavior.
855 void FailurePrint(); 846 void FailurePrint();
856 void FailurePrint(StringStream* accumulator); 847 void FailurePrint(StringStream* accumulator);
857 #ifdef DEBUG 848 #ifdef DEBUG
(...skipping 4864 matching lines...) Expand 10 before | Expand all | Expand 10 after
5722 } else { 5713 } else {
5723 value &= ~(1 << bit_position); 5714 value &= ~(1 << bit_position);
5724 } 5715 }
5725 return value; 5716 return value;
5726 } 5717 }
5727 }; 5718 };
5728 5719
5729 } } // namespace v8::internal 5720 } } // namespace v8::internal
5730 5721
5731 #endif // V8_OBJECTS_H_ 5722 #endif // V8_OBJECTS_H_
OLDNEW
« no previous file with comments | « src/heap-inl.h ('k') | src/objects.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698