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

Side by Side Diff: src/assembler.h

Issue 22852024: Track JS allocations as they arrive with no affection on performance when tracking is switched off (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Deoptimize code and generate optimized code when switching allocations tracking Created 7 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
OLDNEW
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. 1 // Copyright (c) 1994-2006 Sun Microsystems Inc.
2 // All Rights Reserved. 2 // All Rights Reserved.
3 // 3 //
4 // Redistribution and use in source and binary forms, with or without 4 // Redistribution and use in source and binary forms, with or without
5 // modification, are permitted provided that the following conditions are 5 // modification, are permitted provided that the following conditions are
6 // met: 6 // met:
7 // 7 //
8 // - Redistributions of source code must retain the above copyright notice, 8 // - Redistributions of source code must retain the above copyright notice,
9 // this list of conditions and the following disclaimer. 9 // this list of conditions and the following disclaimer.
10 // 10 //
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
58 public: 58 public:
59 AssemblerBase(Isolate* isolate, void* buffer, int buffer_size); 59 AssemblerBase(Isolate* isolate, void* buffer, int buffer_size);
60 virtual ~AssemblerBase(); 60 virtual ~AssemblerBase();
61 61
62 Isolate* isolate() const { return isolate_; } 62 Isolate* isolate() const { return isolate_; }
63 int jit_cookie() const { return jit_cookie_; } 63 int jit_cookie() const { return jit_cookie_; }
64 64
65 bool emit_debug_code() const { return emit_debug_code_; } 65 bool emit_debug_code() const { return emit_debug_code_; }
66 void set_emit_debug_code(bool value) { emit_debug_code_ = value; } 66 void set_emit_debug_code(bool value) { emit_debug_code_ = value; }
67 67
68 bool emit_allocations_tracking_code() const {
69 return emit_allocations_tracking_code_;
70 }
71 void set_emit_allocations_tracking_code(bool value) {
72 emit_allocations_tracking_code_ = value;
73 }
74
68 bool predictable_code_size() const { return predictable_code_size_; } 75 bool predictable_code_size() const { return predictable_code_size_; }
69 void set_predictable_code_size(bool value) { predictable_code_size_ = value; } 76 void set_predictable_code_size(bool value) { predictable_code_size_ = value; }
70 77
71 uint64_t enabled_cpu_features() const { return enabled_cpu_features_; } 78 uint64_t enabled_cpu_features() const { return enabled_cpu_features_; }
72 void set_enabled_cpu_features(uint64_t features) { 79 void set_enabled_cpu_features(uint64_t features) {
73 enabled_cpu_features_ = features; 80 enabled_cpu_features_ = features;
74 } 81 }
75 bool IsEnabled(CpuFeature f) { 82 bool IsEnabled(CpuFeature f) {
76 return (enabled_cpu_features_ & (static_cast<uint64_t>(1) << f)) != 0; 83 return (enabled_cpu_features_ & (static_cast<uint64_t>(1) << f)) != 0;
77 } 84 }
(...skipping 14 matching lines...) Expand all
92 bool own_buffer_; 99 bool own_buffer_;
93 100
94 // The program counter, which points into the buffer above and moves forward. 101 // The program counter, which points into the buffer above and moves forward.
95 byte* pc_; 102 byte* pc_;
96 103
97 private: 104 private:
98 Isolate* isolate_; 105 Isolate* isolate_;
99 int jit_cookie_; 106 int jit_cookie_;
100 uint64_t enabled_cpu_features_; 107 uint64_t enabled_cpu_features_;
101 bool emit_debug_code_; 108 bool emit_debug_code_;
109 bool emit_allocations_tracking_code_;
102 bool predictable_code_size_; 110 bool predictable_code_size_;
103 }; 111 };
104 112
105 113
106 // Avoids using instructions that vary in size in unpredictable ways between the 114 // Avoids using instructions that vary in size in unpredictable ways between the
107 // snapshot and the running VM. 115 // snapshot and the running VM.
108 class PredictableCodeSizeScope { 116 class PredictableCodeSizeScope {
109 public: 117 public:
110 PredictableCodeSizeScope(AssemblerBase* assembler, int expected_size); 118 PredictableCodeSizeScope(AssemblerBase* assembler, int expected_size);
111 ~PredictableCodeSizeScope(); 119 ~PredictableCodeSizeScope();
(...skipping 610 matching lines...) Expand 10 before | Expand all | Expand 10 after
722 Isolate* isolate); 730 Isolate* isolate);
723 static ExternalReference random_uint32_function(Isolate* isolate); 731 static ExternalReference random_uint32_function(Isolate* isolate);
724 static ExternalReference transcendental_cache_array_address(Isolate* isolate); 732 static ExternalReference transcendental_cache_array_address(Isolate* isolate);
725 static ExternalReference delete_handle_scope_extensions(Isolate* isolate); 733 static ExternalReference delete_handle_scope_extensions(Isolate* isolate);
726 734
727 static ExternalReference get_date_field_function(Isolate* isolate); 735 static ExternalReference get_date_field_function(Isolate* isolate);
728 static ExternalReference date_cache_stamp(Isolate* isolate); 736 static ExternalReference date_cache_stamp(Isolate* isolate);
729 737
730 static ExternalReference get_make_code_young_function(Isolate* isolate); 738 static ExternalReference get_make_code_young_function(Isolate* isolate);
731 739
740 // New heap objects tracking support.
741 static ExternalReference record_object_allocation_function(Isolate* isolate);
742
732 // Deoptimization support. 743 // Deoptimization support.
733 static ExternalReference new_deoptimizer_function(Isolate* isolate); 744 static ExternalReference new_deoptimizer_function(Isolate* isolate);
734 static ExternalReference compute_output_frames_function(Isolate* isolate); 745 static ExternalReference compute_output_frames_function(Isolate* isolate);
735 746
736 // Log support. 747 // Log support.
737 static ExternalReference log_enter_external_function(Isolate* isolate); 748 static ExternalReference log_enter_external_function(Isolate* isolate);
738 static ExternalReference log_leave_external_function(Isolate* isolate); 749 static ExternalReference log_leave_external_function(Isolate* isolate);
739 750
740 // Static data in the keyed lookup cache. 751 // Static data in the keyed lookup cache.
741 static ExternalReference keyed_lookup_cache_keys(Isolate* isolate); 752 static ExternalReference keyed_lookup_cache_keys(Isolate* isolate);
(...skipping 327 matching lines...) Expand 10 before | Expand all | Expand 10 after
1069 public: 1080 public:
1070 NullCallWrapper() { } 1081 NullCallWrapper() { }
1071 virtual ~NullCallWrapper() { } 1082 virtual ~NullCallWrapper() { }
1072 virtual void BeforeCall(int call_size) const { } 1083 virtual void BeforeCall(int call_size) const { }
1073 virtual void AfterCall() const { } 1084 virtual void AfterCall() const { }
1074 }; 1085 };
1075 1086
1076 } } // namespace v8::internal 1087 } } // namespace v8::internal
1077 1088
1078 #endif // V8_ASSEMBLER_H_ 1089 #endif // V8_ASSEMBLER_H_
OLDNEW
« no previous file with comments | « src/api.cc ('k') | src/assembler.cc » ('j') | test/cctest/cctest.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698