diff -r caf5eb7dd4a7 -r 882756847a04 hotspot/src/share/vm/opto/compile.hpp --- a/hotspot/src/share/vm/opto/compile.hpp Fri Aug 31 16:39:35 2012 -0700 +++ b/hotspot/src/share/vm/opto/compile.hpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1997, 2012, 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 @@ -141,36 +141,51 @@ }; struct AliasCacheEntry { const TypePtr* _adr_type; int _index; }; // simple duple type enum { - trapHistLength = methodDataOopDesc::_trap_hist_limit + trapHistLength = MethodData::_trap_hist_limit }; // Constant entry of the constant table. class Constant { private: BasicType _type; + union { jvalue _value; + Metadata* _metadata; + } _v; int _offset; // offset of this constant (in bytes) relative to the constant table base. float _freq; bool _can_be_reused; // true (default) if the value can be shared with other users. public: - Constant() : _type(T_ILLEGAL), _offset(-1), _freq(0.0f), _can_be_reused(true) { _value.l = 0; } + Constant() : _type(T_ILLEGAL), _offset(-1), _freq(0.0f), _can_be_reused(true) { _v._value.l = 0; } Constant(BasicType type, jvalue value, float freq = 0.0f, bool can_be_reused = true) : _type(type), - _value(value), _offset(-1), _freq(freq), _can_be_reused(can_be_reused) - {} + { + assert(type != T_METADATA, "wrong constructor"); + _v._value = value; + } + Constant(Metadata* metadata, bool can_be_reused = true) : + _type(T_METADATA), + _offset(-1), + _freq(0.0f), + _can_be_reused(can_be_reused) + { + _v._metadata = metadata; + } bool operator==(const Constant& other); BasicType type() const { return _type; } - jlong get_jlong() const { return _value.j; } - jfloat get_jfloat() const { return _value.f; } - jdouble get_jdouble() const { return _value.d; } - jobject get_jobject() const { return _value.l; } + jlong get_jlong() const { return _v._value.j; } + jfloat get_jfloat() const { return _v._value.f; } + jdouble get_jdouble() const { return _v._value.d; } + jobject get_jobject() const { return _v._value.l; } + + Metadata* get_metadata() const { return _v._metadata; } int offset() const { return _offset; } void set_offset(int offset) { _offset = offset; } @@ -219,6 +234,7 @@ void add(Constant& con); Constant add(MachConstantNode* n, BasicType type, jvalue value); + Constant add(Metadata* metadata); Constant add(MachConstantNode* n, MachOper* oper); Constant add(MachConstantNode* n, jfloat f) { jvalue value; value.f = f; @@ -270,7 +286,7 @@ bool _do_scheduling; // True if we intend to do scheduling bool _do_freq_based_layout; // True if we intend to do frequency based block layout bool _do_count_invocations; // True if we generate code to count invocations - bool _do_method_data_update; // True if we generate code to update methodDataOops + bool _do_method_data_update; // True if we generate code to update MethodData*s int _AliasLevel; // Locally-adjusted version of AliasLevel flag. bool _print_assembly; // True if we should dump assembly code for this compilation #ifndef PRODUCT @@ -896,9 +912,6 @@ // graph is strongly connected from root in both directions. void verify_graph_edges(bool no_dead_code = false) PRODUCT_RETURN; - // Print bytecodes, including the scope inlining tree - void print_codes(); - // End-of-run dumps. static void print_statistics() PRODUCT_RETURN;