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

Side by Side Diff: src/spaces.h

Issue 3329006: Allows the host application to provide a mechanism to be notified and perfor... (Closed) Base URL: http://v8.googlecode.com/svn/trunk/
Patch Set: '' Created 10 years, 3 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
« no previous file with comments | « src/api.cc ('k') | src/spaces.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 2006-2008 the V8 project authors. All rights reserved. 1 // Copyright 2006-2008 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 549 matching lines...) Expand 10 before | Expand all | Expand 10 after
560 // but keep track of allocated bytes as part of heap. 560 // but keep track of allocated bytes as part of heap.
561 // If the flag is EXECUTABLE and a code range exists, the requested 561 // If the flag is EXECUTABLE and a code range exists, the requested
562 // memory is allocated from the code range. If a code range exists 562 // memory is allocated from the code range. If a code range exists
563 // and the freed memory is in it, the code range manages the freed memory. 563 // and the freed memory is in it, the code range manages the freed memory.
564 static void* AllocateRawMemory(const size_t requested, 564 static void* AllocateRawMemory(const size_t requested,
565 size_t* allocated, 565 size_t* allocated,
566 Executability executable); 566 Executability executable);
567 static void FreeRawMemory(void* buf, 567 static void FreeRawMemory(void* buf,
568 size_t length, 568 size_t length,
569 Executability executable); 569 Executability executable);
570 static void PerformAllocationCallback(ObjectSpace space,
571 AllocationAction action,
572 int size);
573
574 static void AddMemoryAllocationCallback(MemoryAllocationCallback callback,
575 ObjectSpace space,
576 AllocationAction action);
577 static void RemoveMemoryAllocationCallback(
578 MemoryAllocationCallback callback);
579 static bool MemoryAllocationCallbackRegistered(
580 MemoryAllocationCallback callback);
570 581
571 // Returns the maximum available bytes of heaps. 582 // Returns the maximum available bytes of heaps.
572 static int Available() { return capacity_ < size_ ? 0 : capacity_ - size_; } 583 static int Available() { return capacity_ < size_ ? 0 : capacity_ - size_; }
573 584
574 // Returns allocated spaces in bytes. 585 // Returns allocated spaces in bytes.
575 static int Size() { return size_; } 586 static int Size() { return size_; }
576 587
577 // Returns allocated executable spaces in bytes. 588 // Returns allocated executable spaces in bytes.
578 static int SizeExecutable() { return size_executable_; } 589 static int SizeExecutable() { return size_executable_; }
579 590
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
636 647
637 private: 648 private:
638 // Maximum space size in bytes. 649 // Maximum space size in bytes.
639 static int capacity_; 650 static int capacity_;
640 651
641 // Allocated space size in bytes. 652 // Allocated space size in bytes.
642 static int size_; 653 static int size_;
643 // Allocated executable space size in bytes. 654 // Allocated executable space size in bytes.
644 static int size_executable_; 655 static int size_executable_;
645 656
657 struct MemoryAllocationCallbackRegistration {
658 MemoryAllocationCallbackRegistration(MemoryAllocationCallback callback,
659 ObjectSpace space,
660 AllocationAction action)
661 : callback(callback), space(space), action(action) {
662 }
663 MemoryAllocationCallback callback;
664 ObjectSpace space;
665 AllocationAction action;
666 };
667 // A List of callback that are triggered when memory is allocated or free'd
668 static List<MemoryAllocationCallbackRegistration>
669 memory_allocation_callbacks_;
670
646 // The initial chunk of virtual memory. 671 // The initial chunk of virtual memory.
647 static VirtualMemory* initial_chunk_; 672 static VirtualMemory* initial_chunk_;
648 673
649 // Allocated chunk info: chunk start address, chunk size, and owning space. 674 // Allocated chunk info: chunk start address, chunk size, and owning space.
650 class ChunkInfo BASE_EMBEDDED { 675 class ChunkInfo BASE_EMBEDDED {
651 public: 676 public:
652 ChunkInfo() : address_(NULL), size_(0), owner_(NULL) {} 677 ChunkInfo() : address_(NULL), size_(0), owner_(NULL) {}
653 void init(Address a, size_t s, PagedSpace* o) { 678 void init(Address a, size_t s, PagedSpace* o) {
654 address_ = a; 679 address_ = a;
655 size_ = s; 680 size_ = s;
(...skipping 1566 matching lines...) Expand 10 before | Expand all | Expand 10 after
2222 2247
2223 private: 2248 private:
2224 LargeObjectChunk* current_; 2249 LargeObjectChunk* current_;
2225 HeapObjectCallback size_func_; 2250 HeapObjectCallback size_func_;
2226 }; 2251 };
2227 2252
2228 2253
2229 } } // namespace v8::internal 2254 } } // namespace v8::internal
2230 2255
2231 #endif // V8_SPACES_H_ 2256 #endif // V8_SPACES_H_
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/spaces.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698