--- a/hotspot/src/share/vm/ci/ciMethodData.cpp Thu Sep 02 11:40:02 2010 -0700
+++ b/hotspot/src/share/vm/ci/ciMethodData.cpp Fri Sep 03 17:51:07 2010 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2001, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
@@ -37,6 +37,8 @@
_data_size = 0;
_extra_data_size = 0;
_current_mileage = 0;
+ _invocation_counter = 0;
+ _backedge_counter = 0;
_state = empty_state;
_saw_free_extra_data = false;
// Set an initial hint. Don't use set_hint_di() because
@@ -56,6 +58,8 @@
_data_size = 0;
_extra_data_size = 0;
_current_mileage = 0;
+ _invocation_counter = 0;
+ _backedge_counter = 0;
_state = empty_state;
_saw_free_extra_data = false;
// Set an initial hint. Don't use set_hint_di() because
@@ -99,6 +103,8 @@
}
// Note: Extra data are all BitData, and do not need translation.
_current_mileage = methodDataOopDesc::mileage_of(mdo->method());
+ _invocation_counter = mdo->invocation_count();
+ _backedge_counter = mdo->backedge_count();
_state = mdo->is_mature()? mature_state: immature_state;
_eflags = mdo->eflags();
@@ -253,6 +259,23 @@
}
}
+void ciMethodData::set_compilation_stats(short loops, short blocks) {
+ VM_ENTRY_MARK;
+ methodDataOop mdo = get_methodDataOop();
+ if (mdo != NULL) {
+ mdo->set_num_loops(loops);
+ mdo->set_num_blocks(blocks);
+ }
+}
+
+void ciMethodData::set_would_profile(bool p) {
+ VM_ENTRY_MARK;
+ methodDataOop mdo = get_methodDataOop();
+ if (mdo != NULL) {
+ mdo->set_would_profile(p);
+ }
+}
+
bool ciMethodData::has_escape_info() {
return eflag_set(methodDataOopDesc::estimated);
}