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

Unified Diff: src/runtime-profiler.cc

Issue 10265008: Revert r11425 because of V8 benchmark performance regression. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/objects-inl.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/runtime-profiler.cc
diff --git a/src/runtime-profiler.cc b/src/runtime-profiler.cc
index 33481d45b9ab607f59fde6dd4c3e078de7cec507..568e48e412c03f4151f6fb9ae30323efd0a0182b 100644
--- a/src/runtime-profiler.cc
+++ b/src/runtime-profiler.cc
@@ -65,17 +65,11 @@ static const int kSizeLimit = 1500;
// Number of times a function has to be seen on the stack before it is
// optimized.
static const int kProfilerTicksBeforeOptimization = 2;
-// If the function optimization was disabled due to high deoptimization count,
-// but the function is hot and has been seen on the stack this number of times,
-// then we try to reenable optimization for this function.
-static const int kProfilerTicksBeforeReenablingOptimization = 250;
// If a function does not have enough type info (according to
// FLAG_type_info_threshold), but has seen a huge number of ticks,
// optimize it as it is.
static const int kTicksWhenNotEnoughTypeInfo = 100;
// We only have one byte to store the number of ticks.
-STATIC_ASSERT(kProfilerTicksBeforeOptimization < 256);
-STATIC_ASSERT(kProfilerTicksBeforeReenablingOptimization < 256);
STATIC_ASSERT(kTicksWhenNotEnoughTypeInfo < 256);
// Maximum size in bytes of generated code for a function to be optimized
@@ -269,8 +263,7 @@ void RuntimeProfiler::OptimizeNow() {
}
}
- SharedFunctionInfo* shared = function->shared();
- Code* shared_code = shared->code();
+ Code* shared_code = function->shared()->code();
if (shared_code->kind() != Code::FUNCTION) continue;
if (function->IsMarkedForLazyRecompilation()) {
@@ -280,31 +273,19 @@ void RuntimeProfiler::OptimizeNow() {
shared_code->set_allow_osr_at_loop_nesting_level(new_nesting);
}
+ // Do not record non-optimizable functions.
+ if (!function->IsOptimizable()) continue;
+ if (function->shared()->optimization_disabled()) continue;
+
// Only record top-level code on top of the execution stack and
// avoid optimizing excessively large scripts since top-level code
// will be executed only once.
const int kMaxToplevelSourceSize = 10 * 1024;
- if (shared->is_toplevel() &&
- (frame_count > 1 || shared->SourceSize() > kMaxToplevelSourceSize)) {
- continue;
- }
-
- // Do not record non-optimizable functions.
- if (shared->optimization_disabled()) {
- if (shared->opt_count() >= Compiler::kDefaultMaxOptCount) {
- // If optimization was disabled due to many deoptimizations,
- // then check if the function is hot and try to reenable optimization.
- int ticks = shared_code->profiler_ticks();
- if (ticks >= kProfilerTicksBeforeReenablingOptimization) {
- shared_code->set_profiler_ticks(0);
- shared->TryReenableOptimization();
- } else {
- shared_code->set_profiler_ticks(ticks + 1);
- }
- }
+ if (function->shared()->is_toplevel()
+ && (frame_count > 1
+ || function->shared()->SourceSize() > kMaxToplevelSourceSize)) {
continue;
}
- if (!function->IsOptimizable()) continue;
if (FLAG_watch_ic_patching) {
int ticks = shared_code->profiler_ticks();
@@ -328,7 +309,7 @@ void RuntimeProfiler::OptimizeNow() {
}
}
} else if (!any_ic_changed_ &&
- shared_code->instruction_size() < kMaxSizeEarlyOpt) {
+ shared_code->instruction_size() < kMaxSizeEarlyOpt) {
// If no IC was patched since the last tick and this function is very
// small, optimistically optimize it now.
Optimize(function, "small function");
@@ -338,7 +319,7 @@ void RuntimeProfiler::OptimizeNow() {
} else { // !FLAG_watch_ic_patching
samples[sample_count++] = function;
- int function_size = shared->SourceSize();
+ int function_size = function->shared()->SourceSize();
int threshold_size_factor = (function_size > kSizeLimit)
? sampler_threshold_size_factor_
: 1;
« no previous file with comments | « src/objects-inl.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698