Index: src/ic-inl.h |
diff --git a/src/ic-inl.h b/src/ic-inl.h |
index 56cea817600c29748fc0e9cd9e0037d3b70cd20d..877b091fad5682c9f3751fa16073c1771bfea6b3 100644 |
--- a/src/ic-inl.h |
+++ b/src/ic-inl.h |
@@ -1,4 +1,4 @@ |
-// Copyright 2011 the V8 project authors. All rights reserved. |
+// Copyright 2012 the V8 project authors. All rights reserved. |
// Redistribution and use in source and binary forms, with or without |
// modification, are permitted provided that the following conditions are |
// met: |
@@ -29,6 +29,8 @@ |
#define V8_IC_INL_H_ |
#include "ic.h" |
+ |
+#include "compiler.h" |
#include "debug.h" |
#include "macro-assembler.h" |
@@ -89,6 +91,23 @@ void IC::SetTargetAtAddress(Address address, Code* target) { |
Assembler::set_target_address_at(address, target->instruction_start()); |
target->GetHeap()->incremental_marking()->RecordCodeTargetPatch(address, |
target); |
+ if (FLAG_counting_profiler) { |
Erik Corry
2012/02/08 14:09:23
Suggested comment:
// We do not want to optimize
Jakob Kummerow
2012/02/08 15:24:08
Done.
|
+ Isolate::Current()->runtime_profiler()->NotifyICChanged(); |
+ StackFrameIterator it; |
+ if (it.done()) return; |
+ it.Advance(); |
+ static const int kStackFramesToMark = Compiler::kMaxInliningLevels - 1; |
+ for (int i = 0; i < kStackFramesToMark; ++i) { |
+ if (it.done()) return; |
+ StackFrame* raw_frame = it.frame(); |
+ if (raw_frame->is_java_script()) { |
+ JSFunction* function = |
+ JSFunction::cast(JavaScriptFrame::cast(raw_frame)->function()); |
+ function->shared()->set_profiler_ticks(0); |
+ } |
+ it.Advance(); |
+ } |
+ } |
} |