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 1462 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1473 // mark or if we've already filled the bottom 1/16th of the to space, | 1473 // mark or if we've already filled the bottom 1/16th of the to space, |
1474 // we try to promote this object. | 1474 // we try to promote this object. |
1475 inline bool ShouldBePromoted(Address old_address, int object_size); | 1475 inline bool ShouldBePromoted(Address old_address, int object_size); |
1476 | 1476 |
1477 int MaxObjectSizeInNewSpace() { return kMaxObjectSizeInNewSpace; } | 1477 int MaxObjectSizeInNewSpace() { return kMaxObjectSizeInNewSpace; } |
1478 | 1478 |
1479 void ClearJSFunctionResultCaches(); | 1479 void ClearJSFunctionResultCaches(); |
1480 | 1480 |
1481 void ClearNormalizedMapCaches(); | 1481 void ClearNormalizedMapCaches(); |
1482 | 1482 |
| 1483 // Clears the cache of ICs related to this map. |
| 1484 void ClearCacheOnMap(Map* map) { |
| 1485 if (FLAG_cleanup_code_caches_at_gc) { |
| 1486 map->ClearCodeCache(this); |
| 1487 } |
| 1488 } |
| 1489 |
1483 GCTracer* tracer() { return tracer_; } | 1490 GCTracer* tracer() { return tracer_; } |
1484 | 1491 |
1485 // Returns the size of objects residing in non new spaces. | 1492 // Returns the size of objects residing in non new spaces. |
1486 intptr_t PromotedSpaceSize(); | 1493 intptr_t PromotedSpaceSize(); |
1487 intptr_t PromotedSpaceSizeOfObjects(); | 1494 intptr_t PromotedSpaceSizeOfObjects(); |
1488 | 1495 |
1489 double total_regexp_code_generated() { return total_regexp_code_generated_; } | 1496 double total_regexp_code_generated() { return total_regexp_code_generated_; } |
1490 void IncreaseTotalRegexpCodeGenerated(int size) { | 1497 void IncreaseTotalRegexpCodeGenerated(int size) { |
1491 total_regexp_code_generated_ += size; | 1498 total_regexp_code_generated_ += size; |
1492 } | 1499 } |
(...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1578 } | 1585 } |
1579 | 1586 |
1580 void SetConstructStubDeoptPCOffset(int pc_offset) { | 1587 void SetConstructStubDeoptPCOffset(int pc_offset) { |
1581 ASSERT(construct_stub_deopt_pc_offset() == Smi::FromInt(0)); | 1588 ASSERT(construct_stub_deopt_pc_offset() == Smi::FromInt(0)); |
1582 set_construct_stub_deopt_pc_offset(Smi::FromInt(pc_offset)); | 1589 set_construct_stub_deopt_pc_offset(Smi::FromInt(pc_offset)); |
1583 } | 1590 } |
1584 | 1591 |
1585 // For post mortem debugging. | 1592 // For post mortem debugging. |
1586 void RememberUnmappedPage(Address page, bool compacted); | 1593 void RememberUnmappedPage(Address page, bool compacted); |
1587 | 1594 |
| 1595 // Global inline caching age: it is incremented on some GCs after context |
| 1596 // disposal. We use it to flush inline caches. |
| 1597 int global_ic_age() { |
| 1598 return global_ic_age_; |
| 1599 } |
| 1600 |
| 1601 void AgeInlineCaches() { |
| 1602 ++global_ic_age_; |
| 1603 } |
| 1604 |
1588 private: | 1605 private: |
1589 Heap(); | 1606 Heap(); |
1590 | 1607 |
1591 // This can be calculated directly from a pointer to the heap; however, it is | 1608 // This can be calculated directly from a pointer to the heap; however, it is |
1592 // more expedient to get at the isolate directly from within Heap methods. | 1609 // more expedient to get at the isolate directly from within Heap methods. |
1593 Isolate* isolate_; | 1610 Isolate* isolate_; |
1594 | 1611 |
1595 intptr_t code_range_size_; | 1612 intptr_t code_range_size_; |
1596 int reserved_semispace_size_; | 1613 int reserved_semispace_size_; |
1597 int max_semispace_size_; | 1614 int max_semispace_size_; |
1598 int initial_semispace_size_; | 1615 int initial_semispace_size_; |
1599 intptr_t max_old_generation_size_; | 1616 intptr_t max_old_generation_size_; |
1600 intptr_t max_executable_size_; | 1617 intptr_t max_executable_size_; |
1601 | 1618 |
1602 // For keeping track of how much data has survived | 1619 // For keeping track of how much data has survived |
1603 // scavenge since last new space expansion. | 1620 // scavenge since last new space expansion. |
1604 int survived_since_last_expansion_; | 1621 int survived_since_last_expansion_; |
1605 | 1622 |
1606 // For keeping track on when to flush RegExp code. | 1623 // For keeping track on when to flush RegExp code. |
1607 int sweep_generation_; | 1624 int sweep_generation_; |
1608 | 1625 |
1609 int always_allocate_scope_depth_; | 1626 int always_allocate_scope_depth_; |
1610 int linear_allocation_scope_depth_; | 1627 int linear_allocation_scope_depth_; |
1611 | 1628 |
1612 // For keeping track of context disposals. | 1629 // For keeping track of context disposals. |
1613 int contexts_disposed_; | 1630 int contexts_disposed_; |
1614 | 1631 |
| 1632 int global_ic_age_; |
| 1633 |
1615 int scan_on_scavenge_pages_; | 1634 int scan_on_scavenge_pages_; |
1616 | 1635 |
1617 #if defined(V8_TARGET_ARCH_X64) | 1636 #if defined(V8_TARGET_ARCH_X64) |
1618 static const int kMaxObjectSizeInNewSpace = 1024*KB; | 1637 static const int kMaxObjectSizeInNewSpace = 1024*KB; |
1619 #else | 1638 #else |
1620 static const int kMaxObjectSizeInNewSpace = 512*KB; | 1639 static const int kMaxObjectSizeInNewSpace = 512*KB; |
1621 #endif | 1640 #endif |
1622 | 1641 |
1623 NewSpace new_space_; | 1642 NewSpace new_space_; |
1624 OldSpace* old_pointer_space_; | 1643 OldSpace* old_pointer_space_; |
(...skipping 1067 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2692 AssertNoAllocation no_alloc; // i.e. no gc allowed. | 2711 AssertNoAllocation no_alloc; // i.e. no gc allowed. |
2693 | 2712 |
2694 private: | 2713 private: |
2695 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); | 2714 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); |
2696 }; | 2715 }; |
2697 #endif // DEBUG || LIVE_OBJECT_LIST | 2716 #endif // DEBUG || LIVE_OBJECT_LIST |
2698 | 2717 |
2699 } } // namespace v8::internal | 2718 } } // namespace v8::internal |
2700 | 2719 |
2701 #endif // V8_HEAP_H_ | 2720 #endif // V8_HEAP_H_ |
OLD | NEW |