OLD | NEW |
---|---|
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 413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
424 // separate from old space strings. | 424 // separate from old space strings. |
425 List<Object*> new_space_strings_; | 425 List<Object*> new_space_strings_; |
426 List<Object*> old_space_strings_; | 426 List<Object*> old_space_strings_; |
427 | 427 |
428 Heap* heap_; | 428 Heap* heap_; |
429 | 429 |
430 DISALLOW_COPY_AND_ASSIGN(ExternalStringTable); | 430 DISALLOW_COPY_AND_ASSIGN(ExternalStringTable); |
431 }; | 431 }; |
432 | 432 |
433 | 433 |
434 enum ArrayStorageAllocationMode { | |
435 DONT_INITIALIZE_ARRAY_ELEMENTS, | |
436 INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE | |
437 }; | |
438 | |
434 class Heap { | 439 class Heap { |
435 public: | 440 public: |
436 // Configure heap size before setup. Return false if the heap has been | 441 // Configure heap size before setup. Return false if the heap has been |
437 // set up already. | 442 // set up already. |
438 bool ConfigureHeap(int max_semispace_size, | 443 bool ConfigureHeap(int max_semispace_size, |
439 intptr_t max_old_gen_size, | 444 intptr_t max_old_gen_size, |
440 intptr_t max_executable_size); | 445 intptr_t max_executable_size); |
441 bool ConfigureHeapDefault(); | 446 bool ConfigureHeapDefault(); |
442 | 447 |
443 // Initializes the global object heap. If create_heap_objects is true, | 448 // Initializes the global object heap. If create_heap_objects is true, |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
525 bool UncommitFromSpace() { return new_space_.UncommitFromSpace(); } | 530 bool UncommitFromSpace() { return new_space_.UncommitFromSpace(); } |
526 | 531 |
527 // Allocates and initializes a new JavaScript object based on a | 532 // Allocates and initializes a new JavaScript object based on a |
528 // constructor. | 533 // constructor. |
529 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 534 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
530 // failed. | 535 // failed. |
531 // Please note this does not perform a garbage collection. | 536 // Please note this does not perform a garbage collection. |
532 MUST_USE_RESULT MaybeObject* AllocateJSObject( | 537 MUST_USE_RESULT MaybeObject* AllocateJSObject( |
533 JSFunction* constructor, PretenureFlag pretenure = NOT_TENURED); | 538 JSFunction* constructor, PretenureFlag pretenure = NOT_TENURED); |
534 | 539 |
540 // Allocate a JSArray with no elements | |
541 MUST_USE_RESULT MaybeObject* AllocateEmptyJSArray( | |
542 ElementsKind elements_kind, | |
543 PretenureFlag pretenure = NOT_TENURED) { | |
544 return AllocateJSArrayAndStorage(elements_kind, 0, 0, | |
545 DONT_INITIALIZE_ARRAY_ELEMENTS, | |
546 pretenure); | |
547 } | |
548 | |
549 // Allocate a JSArray with a specified length but elements that are left | |
550 // uninitialized. | |
551 MUST_USE_RESULT MaybeObject* AllocateJSArrayAndStorage( | |
552 ElementsKind elements_kind, | |
553 int length, | |
554 int capacity, | |
555 ArrayStorageAllocationMode mode = DONT_INITIALIZE_ARRAY_ELEMENTS, | |
556 PretenureFlag pretenure = NOT_TENURED); | |
557 | |
558 // Allocate a JSArray with no elements | |
559 MUST_USE_RESULT MaybeObject* AllocateJSArrayWithElements( | |
560 FixedArrayBase* array_base, | |
561 ElementsKind elements_kind, | |
562 PretenureFlag pretenure = NOT_TENURED); | |
563 | |
535 // Allocates and initializes a new global object based on a constructor. | 564 // Allocates and initializes a new global object based on a constructor. |
536 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation | 565 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation |
537 // failed. | 566 // failed. |
538 // Please note this does not perform a garbage collection. | 567 // Please note this does not perform a garbage collection. |
539 MUST_USE_RESULT MaybeObject* AllocateGlobalObject(JSFunction* constructor); | 568 MUST_USE_RESULT MaybeObject* AllocateGlobalObject(JSFunction* constructor); |
540 | 569 |
541 // Returns a deep copy of the JavaScript object. | 570 // Returns a deep copy of the JavaScript object. |
542 // Properties and elements are copied too. | 571 // Properties and elements are copied too. |
543 // Returns failure if allocation failed. | 572 // Returns failure if allocation failed. |
544 MUST_USE_RESULT MaybeObject* CopyJSObject(JSObject* source); | 573 MUST_USE_RESULT MaybeObject* CopyJSObject(JSObject* source); |
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
771 int length, | 800 int length, |
772 PretenureFlag pretenure); | 801 PretenureFlag pretenure); |
773 | 802 |
774 // Allocates a fixed double array with uninitialized values. Returns | 803 // Allocates a fixed double array with uninitialized values. Returns |
775 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. | 804 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. |
776 // Please note this does not perform a garbage collection. | 805 // Please note this does not perform a garbage collection. |
777 MUST_USE_RESULT MaybeObject* AllocateUninitializedFixedDoubleArray( | 806 MUST_USE_RESULT MaybeObject* AllocateUninitializedFixedDoubleArray( |
778 int length, | 807 int length, |
779 PretenureFlag pretenure = NOT_TENURED); | 808 PretenureFlag pretenure = NOT_TENURED); |
780 | 809 |
810 // Allocates a fixed double array with hole values. Returns | |
Jakob Kummerow
2012/01/23 17:16:55
nit: s/ / /
danno
2012/01/26 21:32:34
Done.
| |
811 // Failure::RetryAfterGC(requested_bytes, space) if the allocation failed. | |
812 // Please note this does not perform a garbage collection. | |
813 MUST_USE_RESULT MaybeObject* AllocateFixedDoubleArrayWithHoles( | |
814 int length, | |
815 PretenureFlag pretenure = NOT_TENURED); | |
816 | |
781 // AllocateHashTable is identical to AllocateFixedArray except | 817 // AllocateHashTable is identical to AllocateFixedArray except |
782 // that the resulting object has hash_table_map as map. | 818 // that the resulting object has hash_table_map as map. |
783 MUST_USE_RESULT MaybeObject* AllocateHashTable( | 819 MUST_USE_RESULT MaybeObject* AllocateHashTable( |
784 int length, PretenureFlag pretenure = NOT_TENURED); | 820 int length, PretenureFlag pretenure = NOT_TENURED); |
785 | 821 |
786 // Allocate a global (but otherwise uninitialized) context. | 822 // Allocate a global (but otherwise uninitialized) context. |
787 MUST_USE_RESULT MaybeObject* AllocateGlobalContext(); | 823 MUST_USE_RESULT MaybeObject* AllocateGlobalContext(); |
788 | 824 |
789 // Allocate a function context. | 825 // Allocate a function context. |
790 MUST_USE_RESULT MaybeObject* AllocateFunctionContext(int length, | 826 MUST_USE_RESULT MaybeObject* AllocateFunctionContext(int length, |
(...skipping 945 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1736 // because of a gcc-4.4 bug that assigns wrong vtable entries. | 1772 // because of a gcc-4.4 bug that assigns wrong vtable entries. |
1737 NO_INLINE(void CreateJSEntryStub()); | 1773 NO_INLINE(void CreateJSEntryStub()); |
1738 NO_INLINE(void CreateJSConstructEntryStub()); | 1774 NO_INLINE(void CreateJSConstructEntryStub()); |
1739 | 1775 |
1740 void CreateFixedStubs(); | 1776 void CreateFixedStubs(); |
1741 | 1777 |
1742 MaybeObject* CreateOddball(const char* to_string, | 1778 MaybeObject* CreateOddball(const char* to_string, |
1743 Object* to_number, | 1779 Object* to_number, |
1744 byte kind); | 1780 byte kind); |
1745 | 1781 |
1782 // Allocate a JSArray with no elements | |
1783 MUST_USE_RESULT MaybeObject* AllocateJSArray( | |
1784 ElementsKind elements_kind, | |
1785 PretenureFlag pretenure = NOT_TENURED); | |
1786 | |
1746 // Allocate empty fixed array. | 1787 // Allocate empty fixed array. |
1747 MUST_USE_RESULT MaybeObject* AllocateEmptyFixedArray(); | 1788 MUST_USE_RESULT MaybeObject* AllocateEmptyFixedArray(); |
1748 | 1789 |
1749 // Allocate empty fixed double array. | 1790 // Allocate empty fixed double array. |
1750 MUST_USE_RESULT MaybeObject* AllocateEmptyFixedDoubleArray(); | 1791 MUST_USE_RESULT MaybeObject* AllocateEmptyFixedDoubleArray(); |
1751 | 1792 |
1752 // Performs a minor collection in new generation. | 1793 // Performs a minor collection in new generation. |
1753 void Scavenge(); | 1794 void Scavenge(); |
1754 | 1795 |
1755 static String* UpdateNewSpaceReferenceInExternalStringTableEntry( | 1796 static String* UpdateNewSpaceReferenceInExternalStringTableEntry( |
(...skipping 851 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2607 static const int kMarkTag = 2; | 2648 static const int kMarkTag = 2; |
2608 | 2649 |
2609 Object* search_target_; | 2650 Object* search_target_; |
2610 bool found_target_; | 2651 bool found_target_; |
2611 bool found_target_in_trace_; | 2652 bool found_target_in_trace_; |
2612 WhatToFind what_to_find_; | 2653 WhatToFind what_to_find_; |
2613 VisitMode visit_mode_; | 2654 VisitMode visit_mode_; |
2614 List<Object*> object_stack_; | 2655 List<Object*> object_stack_; |
2615 | 2656 |
2616 AssertNoAllocation no_alloc; // i.e. no gc allowed. | 2657 AssertNoAllocation no_alloc; // i.e. no gc allowed. |
2617 | 2658 |
Jakob Kummerow
2012/01/23 17:16:55
nit: No reason for an empty line here.
danno
2012/01/26 21:32:34
Done.
| |
2659 | |
2618 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2660 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
2619 }; | 2661 }; |
2620 #endif // DEBUG || LIVE_OBJECT_LIST | 2662 #endif // DEBUG || LIVE_OBJECT_LIST |
2621 | 2663 |
2622 } } // namespace v8::internal | 2664 } } // namespace v8::internal |
2623 | 2665 |
2624 #undef HEAP | 2666 #undef HEAP |
2625 | 2667 |
2626 #endif // V8_HEAP_H_ | 2668 #endif // V8_HEAP_H_ |
OLD | NEW |