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

Side by Side Diff: src/heap.h

Issue 10615002: Track allocation info (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Diff with b_e Created 8 years, 1 month 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/factory.cc ('k') | src/heap.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 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 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
252 V(hidden_stack_trace_symbol, "v8::hidden_stack_trace") \ 252 V(hidden_stack_trace_symbol, "v8::hidden_stack_trace") \
253 V(query_colon_symbol, "(?:)") 253 V(query_colon_symbol, "(?:)")
254 254
255 // Forward declarations. 255 // Forward declarations.
256 class GCTracer; 256 class GCTracer;
257 class HeapStats; 257 class HeapStats;
258 class Isolate; 258 class Isolate;
259 class WeakObjectRetainer; 259 class WeakObjectRetainer;
260 260
261 261
262 enum AllocationOriginTrackMode {
263 DONT_TRACK_ALLOCATION_ORIGIN,
264 TRACK_ALLOCATION_ORIGIN
265 };
266
267
262 typedef String* (*ExternalStringTableUpdaterCallback)(Heap* heap, 268 typedef String* (*ExternalStringTableUpdaterCallback)(Heap* heap,
263 Object** pointer); 269 Object** pointer);
264 270
265 class StoreBufferRebuilder { 271 class StoreBufferRebuilder {
266 public: 272 public:
267 explicit StoreBufferRebuilder(StoreBuffer* store_buffer) 273 explicit StoreBufferRebuilder(StoreBuffer* store_buffer)
268 : store_buffer_(store_buffer) { 274 : store_buffer_(store_buffer) {
269 } 275 }
270 276
271 void Callback(MemoryChunk* page, StoreBufferEvent event); 277 void Callback(MemoryChunk* page, StoreBufferEvent event);
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after
557 MUST_USE_RESULT MaybeObject* AllocateJSObject( 563 MUST_USE_RESULT MaybeObject* AllocateJSObject(
558 JSFunction* constructor, PretenureFlag pretenure = NOT_TENURED); 564 JSFunction* constructor, PretenureFlag pretenure = NOT_TENURED);
559 565
560 MUST_USE_RESULT MaybeObject* AllocateJSModule(Context* context, 566 MUST_USE_RESULT MaybeObject* AllocateJSModule(Context* context,
561 ScopeInfo* scope_info); 567 ScopeInfo* scope_info);
562 568
563 // Allocate a JSArray with no elements 569 // Allocate a JSArray with no elements
564 MUST_USE_RESULT MaybeObject* AllocateEmptyJSArray( 570 MUST_USE_RESULT MaybeObject* AllocateEmptyJSArray(
565 ElementsKind elements_kind, 571 ElementsKind elements_kind,
566 PretenureFlag pretenure = NOT_TENURED) { 572 PretenureFlag pretenure = NOT_TENURED) {
567 return AllocateJSArrayAndStorage(elements_kind, 0, 0, 573 return AllocateJSArrayAndStorage(elements_kind, 0,
568 DONT_INITIALIZE_ARRAY_ELEMENTS, 574 JSArray::kPreallocatedArrayElements,
575 INITIALIZE_ARRAY_ELEMENTS_WITH_HOLE,
569 pretenure); 576 pretenure);
570 } 577 }
571 578
572 // Allocate a JSArray with a specified length but elements that are left 579 // Allocate a JSArray with a specified length but elements that are left
573 // uninitialized. 580 // uninitialized.
574 MUST_USE_RESULT MaybeObject* AllocateJSArrayAndStorage( 581 MUST_USE_RESULT MaybeObject* AllocateJSArrayAndStorage(
575 ElementsKind elements_kind, 582 ElementsKind elements_kind,
576 int length, 583 int length,
577 int capacity, 584 int capacity,
578 ArrayStorageAllocationMode mode = DONT_INITIALIZE_ARRAY_ELEMENTS, 585 ArrayStorageAllocationMode mode = DONT_INITIALIZE_ARRAY_ELEMENTS,
579 PretenureFlag pretenure = NOT_TENURED); 586 PretenureFlag pretenure = NOT_TENURED);
580 587
581 // Allocate a JSArray with no elements 588 // Allocate a JSArray with no elements
582 MUST_USE_RESULT MaybeObject* AllocateJSArrayWithElements( 589 MUST_USE_RESULT MaybeObject* AllocateJSArrayWithElements(
583 FixedArrayBase* array_base, 590 FixedArrayBase* array_base,
584 ElementsKind elements_kind, 591 ElementsKind elements_kind,
585 PretenureFlag pretenure = NOT_TENURED); 592 PretenureFlag pretenure = NOT_TENURED);
586 593
587 // Allocates and initializes a new global object based on a constructor. 594 // Allocates and initializes a new global object based on a constructor.
588 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation 595 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
589 // failed. 596 // failed.
590 // Please note this does not perform a garbage collection. 597 // Please note this does not perform a garbage collection.
591 MUST_USE_RESULT MaybeObject* AllocateGlobalObject(JSFunction* constructor); 598 MUST_USE_RESULT MaybeObject* AllocateGlobalObject(JSFunction* constructor);
592 599
593 // Returns a deep copy of the JavaScript object. 600 // Returns a deep copy of the JavaScript object.
594 // Properties and elements are copied too. 601 // Properties and elements are copied too.
595 // Returns failure if allocation failed. 602 // Returns failure if allocation failed.
596 MUST_USE_RESULT MaybeObject* CopyJSObject(JSObject* source); 603 MUST_USE_RESULT MaybeObject* CopyJSObject(
604 JSObject* source,
605 AllocationOriginTrackMode mode = DONT_TRACK_ALLOCATION_ORIGIN);
597 606
598 // Allocates the function prototype. 607 // Allocates the function prototype.
599 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation 608 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
600 // failed. 609 // failed.
601 // Please note this does not perform a garbage collection. 610 // Please note this does not perform a garbage collection.
602 MUST_USE_RESULT MaybeObject* AllocateFunctionPrototype(JSFunction* function); 611 MUST_USE_RESULT MaybeObject* AllocateFunctionPrototype(JSFunction* function);
603 612
604 // Allocates a Harmony proxy or function proxy. 613 // Allocates a Harmony proxy or function proxy.
605 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation 614 // Returns Failure::RetryAfterGC(requested_bytes, space) if the allocation
606 // failed. 615 // failed.
(...skipping 2211 matching lines...) Expand 10 before | Expand all | Expand 10 after
2818 AssertNoAllocation no_alloc; // i.e. no gc allowed. 2827 AssertNoAllocation no_alloc; // i.e. no gc allowed.
2819 2828
2820 private: 2829 private:
2821 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer); 2830 DISALLOW_IMPLICIT_CONSTRUCTORS(PathTracer);
2822 }; 2831 };
2823 #endif // DEBUG || LIVE_OBJECT_LIST 2832 #endif // DEBUG || LIVE_OBJECT_LIST
2824 2833
2825 } } // namespace v8::internal 2834 } } // namespace v8::internal
2826 2835
2827 #endif // V8_HEAP_H_ 2836 #endif // V8_HEAP_H_
OLDNEW
« no previous file with comments | « src/factory.cc ('k') | src/heap.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698