src/share/vm/ci/ciMethodData.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/ci/ciMethodData.hpp Mon Oct 14 13:44:04 2013
--- new/src/share/vm/ci/ciMethodData.hpp Mon Oct 14 13:44:03 2013
*** 41,50 ****
--- 41,51 ----
class ciArrayData;
class ciMultiBranchData;
class ciArgInfoData;
class ciCallTypeData;
class ciVirtualCallTypeData;
+ class ciParametersTypeData;
typedef ProfileData ciProfileData;
class ciBitData : public BitData {
public:
*** 288,297 ****
--- 289,317 ----
class ciArgInfoData : public ArgInfoData {
public:
ciArgInfoData(DataLayout* layout) : ArgInfoData(layout) {};
};
+ class ciParametersTypeData : public ParametersTypeData {
+ public:
+ ciParametersTypeData(DataLayout* layout) : ParametersTypeData(layout) {}
+
+ virtual void translate_from(const ProfileData* data) {
+ parameters()->translate_type_data_from(data->as_ParametersTypeData()->parameters());
+ }
+
+ ciTypeStackSlotEntries* parameters() const { return (ciTypeStackSlotEntries*)ParametersTypeData::parameters(); }
+
+ ciKlass* valid_parameter_type(int i) const {
+ return parameters()->valid_type(i);
+ }
+
+ #ifndef PRODUCT
+ void print_data_on(outputStream* st) const;
+ #endif
+ };
+
// ciMethodData
//
// This class represents a MethodData* in the HotSpot virtual
// machine.
*** 333,342 ****
--- 353,364 ----
int _backedge_counter;
// Coherent snapshot of original header.
MethodData _orig;
+ DataLayout* _parameters;
+
ciMethodData(MethodData* md);
ciMethodData();
// Accessors
int data_size() const { return _data_size; }
*** 401,410 ****
--- 423,433 ----
// Again, this is used to determine if a method is trivial.
void set_compilation_stats(short loops, short blocks);
// If the compiler finds a profiled type that is known statically
// for sure, set it in the MethodData
void set_argument_type(int bci, int i, ciKlass* k);
+ void set_parameter_type(int i, ciKlass* k);
void set_return_type(int bci, ciKlass* k);
void load_data();
// Convert a dp (data pointer) to a di (data index).
*** 465,474 ****
--- 488,501 ----
bool is_arg_local(int i) const;
bool is_arg_stack(int i) const;
bool is_arg_returned(int i) const;
uint arg_modified(int arg) const;
+ ciParametersTypeData* parameters_type_data() const {
+ return _parameters != NULL ? new ciParametersTypeData(_parameters) : NULL;
+ }
+
// Code generation helper
ByteSize offset_of_slot(ciProfileData* data, ByteSize slot_offset_in_data);
int byte_offset_of_slot(ciProfileData* data, ByteSize slot_offset_in_data) { return in_bytes(offset_of_slot(data, slot_offset_in_data)); }
#ifndef PRODUCT
src/share/vm/ci/ciMethodData.hpp
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File