comparison src/share/vm/interpreter/invocationCounter.hpp @ 6972:bd7a7ce2e264

6830717: replay of compilations would help with debugging Summary: When java process crashed in compiler thread, repeat the compilation process will help finding root cause. This is done with using SA dump application class data and replay data from core dump, then use debug version of jvm to recompile the problematic java method. Reviewed-by: kvn, twisti, sspitsyn Contributed-by: yumin.qi@oracle.com
author minqi
date Mon, 12 Nov 2012 14:03:53 -0800
parents f95d63e2154a
children a9311ec68721 abe03600372a
comparison
equal deleted inserted replaced
6965:3be318ecfae5 6972:bd7a7ce2e264
1 /* 1 /*
2 * Copyright (c) 1997, 2010, Oracle and/or its affiliates. All rights reserved. 2 * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 * 4 *
5 * This code is free software; you can redistribute it and/or modify it 5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as 6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation. 7 * published by the Free Software Foundation.
38 // more significant bits. The counter is incremented before a method is activated and an 38 // more significant bits. The counter is incremented before a method is activated and an
39 // action is triggered when when count() > limit(). 39 // action is triggered when when count() > limit().
40 40
41 class InvocationCounter VALUE_OBJ_CLASS_SPEC { 41 class InvocationCounter VALUE_OBJ_CLASS_SPEC {
42 friend class VMStructs; 42 friend class VMStructs;
43 friend class ciReplay;
43 private: // bit no: |31 3| 2 | 1 0 | 44 private: // bit no: |31 3| 2 | 1 0 |
44 unsigned int _counter; // format: [count|carry|state] 45 unsigned int _counter; // format: [count|carry|state]
45 46
46 enum PrivateConstants { 47 enum PrivateConstants {
47 number_of_state_bits = 2, 48 number_of_state_bits = 2,
82 void set_state(State state); // sets state and initializes counter correspondingly 83 void set_state(State state); // sets state and initializes counter correspondingly
83 inline void set(State state, int count); // sets state and counter 84 inline void set(State state, int count); // sets state and counter
84 inline void decay(); // decay counter (divide by two) 85 inline void decay(); // decay counter (divide by two)
85 void set_carry(); // set the sticky carry bit 86 void set_carry(); // set the sticky carry bit
86 void set_carry_flag() { _counter |= carry_mask; } 87 void set_carry_flag() { _counter |= carry_mask; }
88
89 int raw_counter() { return _counter; }
87 90
88 // Accessors 91 // Accessors
89 State state() const { return (State)(_counter & state_mask); } 92 State state() const { return (State)(_counter & state_mask); }
90 bool carry() const { return (_counter & carry_mask) != 0; } 93 bool carry() const { return (_counter & carry_mask) != 0; }
91 int limit() const { return CompileThreshold; } 94 int limit() const { return CompileThreshold; }