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

Side by Side Diff: src/heap/heap.h

Issue 200443004: Move left and right trimming of FixedArray into Heap. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Addressed comments by Hannes Payer. Created 6 years, 4 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
OLDNEW
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_HEAP_H_ 5 #ifndef V8_HEAP_HEAP_H_
6 #define V8_HEAP_HEAP_H_ 6 #define V8_HEAP_HEAP_H_
7 7
8 #include <cmath> 8 #include <cmath>
9 9
10 #include "src/allocation.h" 10 #include "src/allocation.h"
(...skipping 682 matching lines...) Expand 10 before | Expand all | Expand 10 after
693 // Indicies for direct access into argument objects. 693 // Indicies for direct access into argument objects.
694 static const int kArgumentsLengthIndex = 0; 694 static const int kArgumentsLengthIndex = 0;
695 // callee is only valid in sloppy mode. 695 // callee is only valid in sloppy mode.
696 static const int kArgumentsCalleeIndex = 1; 696 static const int kArgumentsCalleeIndex = 1;
697 697
698 // Finalizes an external string by deleting the associated external 698 // Finalizes an external string by deleting the associated external
699 // data and clearing the resource pointer. 699 // data and clearing the resource pointer.
700 inline void FinalizeExternalString(String* string); 700 inline void FinalizeExternalString(String* string);
701 701
702 // Initialize a filler object to keep the ability to iterate over the heap 702 // Initialize a filler object to keep the ability to iterate over the heap
703 // when shortening objects. 703 // when introducing gaps within pages.
704 void CreateFillerObjectAt(Address addr, int size); 704 void CreateFillerObjectAt(Address addr, int size);
705 705
706 bool CanMoveObjectStart(HeapObject* object); 706 bool CanMoveObjectStart(HeapObject* object);
707 707
708 // Indicates whether live bytes adjustment is triggered from within the GC
709 // code or from mutator code.
708 enum InvocationMode { FROM_GC, FROM_MUTATOR }; 710 enum InvocationMode { FROM_GC, FROM_MUTATOR };
709 711
710 // Maintain marking consistency for IncrementalMarking. 712 // Maintain consistency of live bytes during incremental marking.
711 void AdjustLiveBytes(Address address, int by, InvocationMode mode); 713 void AdjustLiveBytes(Address address, int by, InvocationMode mode);
712 714
715 // Trim the given array from the left. Note that this relocates the object
716 // start and hence is only valid if there is only a single reference to it.
717 FixedArrayBase* LeftTrimFixedArray(FixedArrayBase* obj, int elements_to_trim);
718
719 // Trim the given array from the right.
720 template<Heap::InvocationMode mode>
721 void RightTrimFixedArray(FixedArrayBase* obj, int elements_to_trim);
722
713 // Converts the given boolean condition to JavaScript boolean value. 723 // Converts the given boolean condition to JavaScript boolean value.
714 inline Object* ToBoolean(bool condition); 724 inline Object* ToBoolean(bool condition);
715 725
716 // Performs garbage collection operation. 726 // Performs garbage collection operation.
717 // Returns whether there is a chance that another major GC could 727 // Returns whether there is a chance that another major GC could
718 // collect more garbage. 728 // collect more garbage.
719 inline bool CollectGarbage( 729 inline bool CollectGarbage(
720 AllocationSpace space, const char* gc_reason = NULL, 730 AllocationSpace space, const char* gc_reason = NULL,
721 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags); 731 const GCCallbackFlags gc_callback_flags = kNoGCCallbackFlags);
722 732
(...skipping 1805 matching lines...) Expand 10 before | Expand all | Expand 10 after
2528 DisallowHeapAllocation no_allocation; // i.e. no gc allowed. 2538 DisallowHeapAllocation no_allocation; // i.e. no gc allowed.
2529 2539
2530 private: 2540 private:
2531 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); 2541 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
2532 }; 2542 };
2533 #endif // DEBUG 2543 #endif // DEBUG
2534 } 2544 }
2535 } // namespace v8::internal 2545 } // namespace v8::internal
2536 2546
2537 #endif // V8_HEAP_HEAP_H_ 2547 #endif // V8_HEAP_HEAP_H_
OLDNEW
« no previous file with comments | « src/elements.cc ('k') | src/heap/heap.cc » ('j') | src/heap/heap.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698