OLD | NEW |
---|---|
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef V8_HEAP_H_ | 5 #ifndef V8_HEAP_H_ |
6 #define V8_HEAP_H_ | 6 #define V8_HEAP_H_ |
7 | 7 |
8 #include <cmath> | 8 #include <cmath> |
9 | 9 |
10 #include "src/allocation.h" | 10 #include "src/allocation.h" |
(...skipping 1020 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1031 void ReserveSpace(int *sizes, Address* addresses); | 1031 void ReserveSpace(int *sizes, Address* addresses); |
1032 | 1032 |
1033 // | 1033 // |
1034 // Support for the API. | 1034 // Support for the API. |
1035 // | 1035 // |
1036 | 1036 |
1037 void CreateApiObjects(); | 1037 void CreateApiObjects(); |
1038 | 1038 |
1039 // Adjusts the amount of registered external memory. | 1039 // Adjusts the amount of registered external memory. |
1040 // Returns the adjusted value. | 1040 // Returns the adjusted value. |
1041 inline int64_t AdjustAmountOfExternalAllocatedMemory( | 1041 inline int64_t AdjustAmountOfExternalAllocatedMemory( |
Hannes Payer (out of office)
2014/06/04 11:24:49
With that change, can we get rid of this method? T
jochen (gone - plz use gerrit)
2014/06/04 11:41:24
The fast path method doesn't handle the case where
| |
1042 int64_t change_in_bytes); | 1042 int64_t change_in_bytes); |
1043 | 1043 |
1044 inline intptr_t PromotedTotalSize() { | 1044 inline intptr_t PromotedTotalSize() { |
1045 int64_t total = PromotedSpaceSizeOfObjects() + PromotedExternalMemorySize(); | 1045 int64_t total = PromotedSpaceSizeOfObjects() + PromotedExternalMemorySize(); |
1046 if (total > kMaxInt) return static_cast<intptr_t>(kMaxInt); | 1046 if (total > kMaxInt) return static_cast<intptr_t>(kMaxInt); |
1047 if (total < 0) return 0; | 1047 if (total < 0) return 0; |
1048 return static_cast<intptr_t>(total); | 1048 return static_cast<intptr_t>(total); |
1049 } | 1049 } |
1050 | 1050 |
1051 inline intptr_t OldGenerationSpaceAvailable() { | 1051 inline intptr_t OldGenerationSpaceAvailable() { |
(...skipping 445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1497 int length, | 1497 int length, |
1498 PretenureFlag pretenure = NOT_TENURED); | 1498 PretenureFlag pretenure = NOT_TENURED); |
1499 | 1499 |
1500 private: | 1500 private: |
1501 Heap(); | 1501 Heap(); |
1502 | 1502 |
1503 // This can be calculated directly from a pointer to the heap; however, it is | 1503 // This can be calculated directly from a pointer to the heap; however, it is |
1504 // more expedient to get at the isolate directly from within Heap methods. | 1504 // more expedient to get at the isolate directly from within Heap methods. |
1505 Isolate* isolate_; | 1505 Isolate* isolate_; |
1506 | 1506 |
1507 // The amount of external memory registered through the API kept alive | |
1508 // by global handles | |
1509 int64_t amount_of_external_allocated_memory_; | |
1510 | |
1511 // Caches the amount of external memory registered at the last global gc. | |
1512 int64_t amount_of_external_allocated_memory_at_last_global_gc_; | |
1513 | |
1507 Object* roots_[kRootListLength]; | 1514 Object* roots_[kRootListLength]; |
1508 | 1515 |
1509 intptr_t code_range_size_; | 1516 intptr_t code_range_size_; |
1510 int reserved_semispace_size_; | 1517 int reserved_semispace_size_; |
1511 int max_semi_space_size_; | 1518 int max_semi_space_size_; |
1512 int initial_semispace_size_; | 1519 int initial_semispace_size_; |
1513 intptr_t max_old_generation_size_; | 1520 intptr_t max_old_generation_size_; |
1514 intptr_t max_executable_size_; | 1521 intptr_t max_executable_size_; |
1515 intptr_t maximum_committed_; | 1522 intptr_t maximum_committed_; |
1516 | 1523 |
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
1583 | 1590 |
1584 // Limit that triggers a global GC on the next (normally caused) GC. This | 1591 // Limit that triggers a global GC on the next (normally caused) GC. This |
1585 // is checked when we have already decided to do a GC to help determine | 1592 // is checked when we have already decided to do a GC to help determine |
1586 // which collector to invoke, before expanding a paged space in the old | 1593 // which collector to invoke, before expanding a paged space in the old |
1587 // generation and on every allocation in large object space. | 1594 // generation and on every allocation in large object space. |
1588 intptr_t old_generation_allocation_limit_; | 1595 intptr_t old_generation_allocation_limit_; |
1589 | 1596 |
1590 // Used to adjust the limits that control the timing of the next GC. | 1597 // Used to adjust the limits that control the timing of the next GC. |
1591 intptr_t size_of_old_gen_at_last_old_space_gc_; | 1598 intptr_t size_of_old_gen_at_last_old_space_gc_; |
1592 | 1599 |
1593 // Limit on the amount of externally allocated memory allowed | |
1594 // between global GCs. If reached a global GC is forced. | |
1595 intptr_t external_allocation_limit_; | |
1596 | |
1597 // The amount of external memory registered through the API kept alive | |
1598 // by global handles | |
1599 int64_t amount_of_external_allocated_memory_; | |
1600 | |
1601 // Caches the amount of external memory registered at the last global gc. | |
1602 int64_t amount_of_external_allocated_memory_at_last_global_gc_; | |
1603 | |
1604 // Indicates that an allocation has failed in the old generation since the | 1600 // Indicates that an allocation has failed in the old generation since the |
1605 // last GC. | 1601 // last GC. |
1606 bool old_gen_exhausted_; | 1602 bool old_gen_exhausted_; |
1607 | 1603 |
1608 // Indicates that inline bump-pointer allocation has been globally disabled | 1604 // Indicates that inline bump-pointer allocation has been globally disabled |
1609 // for all spaces. This is used to disable allocations in generated code. | 1605 // for all spaces. This is used to disable allocations in generated code. |
1610 bool inline_allocation_disabled_; | 1606 bool inline_allocation_disabled_; |
1611 | 1607 |
1612 // Weak list heads, threaded through the objects. | 1608 // Weak list heads, threaded through the objects. |
1613 // List heads are initilized lazily and contain the undefined_value at start. | 1609 // List heads are initilized lazily and contain the undefined_value at start. |
(...skipping 1174 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2788 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. | 2784 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. |
2789 | 2785 |
2790 private: | 2786 private: |
2791 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2787 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
2792 }; | 2788 }; |
2793 #endif // DEBUG | 2789 #endif // DEBUG |
2794 | 2790 |
2795 } } // namespace v8::internal | 2791 } } // namespace v8::internal |
2796 | 2792 |
2797 #endif // V8_HEAP_H_ | 2793 #endif // V8_HEAP_H_ |
OLD | NEW |