13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_OOPS_METHODDATAOOP_HPP
26 #define SHARE_VM_OOPS_METHODDATAOOP_HPP
27
28 #include "interpreter/bytecodes.hpp"
29 #include "memory/universe.hpp"
30 #include "oops/method.hpp"
31 #include "oops/oop.hpp"
32 #include "runtime/orderAccess.hpp"
33 #if INCLUDE_JVMCI
34 #include "jvmci/jvmci_globals.hpp"
35 #endif
36
37 class BytecodeStream;
38 class KlassSizeStats;
39
40 // The MethodData object collects counts and other profile information
41 // during zeroth-tier (interpretive) and first-tier execution.
42 // The profile is used later by compilation heuristics. Some heuristics
43 // enable use of aggressive (or "heroic") optimizations. An aggressive
44 // optimization often has a down-side, a corner case that it handles
45 // poorly, but which is thought to be rare. The profile provides
46 // evidence of this rarity for a given method or even BCI. It allows
47 // the compiler to back out of the optimization at places where it
48 // has historically been a poor choice. Other heuristics try to use
49 // specific information gathered about types observed at a given site.
50 //
51 // All data in the profile is approximate. It is expected to be accurate
52 // on the whole, but the system expects occasional inaccuraces, due to
|
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 *
23 */
24
25 #ifndef SHARE_VM_OOPS_METHODDATAOOP_HPP
26 #define SHARE_VM_OOPS_METHODDATAOOP_HPP
27
28 #include "interpreter/bytecodes.hpp"
29 #include "memory/universe.hpp"
30 #include "oops/method.hpp"
31 #include "oops/oop.hpp"
32 #include "runtime/orderAccess.hpp"
33 #include "utilities/align.hpp"
34 #if INCLUDE_JVMCI
35 #include "jvmci/jvmci_globals.hpp"
36 #endif
37
38 class BytecodeStream;
39 class KlassSizeStats;
40
41 // The MethodData object collects counts and other profile information
42 // during zeroth-tier (interpretive) and first-tier execution.
43 // The profile is used later by compilation heuristics. Some heuristics
44 // enable use of aggressive (or "heroic") optimizations. An aggressive
45 // optimization often has a down-side, a corner case that it handles
46 // poorly, but which is thought to be rare. The profile provides
47 // evidence of this rarity for a given method or even BCI. It allows
48 // the compiler to back out of the optimization at places where it
49 // has historically been a poor choice. Other heuristics try to use
50 // specific information gathered about types observed at a given site.
51 //
52 // All data in the profile is approximate. It is expected to be accurate
53 // on the whole, but the system expects occasional inaccuraces, due to
|