hotspot/src/share/vm/ci/ciMethodData.hpp
Print this page
rev 611 : Merge
*** 1,10 ****
#ifdef USE_PRAGMA_IDENT_HDR
#pragma ident "@(#)ciMethodData.hpp 1.28 07/09/28 10:23:22 JVM"
#endif
/*
! * Copyright 2001-2007 Sun Microsystems, Inc. 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,10 ----
#ifdef USE_PRAGMA_IDENT_HDR
#pragma ident "@(#)ciMethodData.hpp 1.28 07/09/28 10:23:22 JVM"
#endif
/*
! * Copyright 2001-2008 Sun Microsystems, Inc. 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 31,40 ****
--- 31,41 ----
class ciReceiverTypeData;
class ciRetData;
class ciBranchData;
class ciArrayData;
class ciMultiBranchData;
+ class ciArgInfoData;
typedef ProfileData ciProfileData;
class ciBitData : public BitData {
public:
*** 122,131 ****
--- 123,137 ----
class ciMultiBranchData : public MultiBranchData {
public:
ciMultiBranchData(DataLayout* layout) : MultiBranchData(layout) {};
};
+ class ciArgInfoData : public ArgInfoData {
+ public:
+ ciArgInfoData(DataLayout* layout) : ArgInfoData(layout) {};
+ };
+
// ciMethodData
//
// This class represents a methodDataOop in the HotSpot virtual
// machine.
*** 164,176 ****
ciMethodData(methodDataHandle h_md);
ciMethodData();
// Accessors
! int data_size() { return _data_size; }
! int extra_data_size() { return _extra_data_size; }
! intptr_t * data() { return _data; }
methodDataOop get_methodDataOop() const {
if (handle() == NULL) return NULL;
methodDataOop mdo = (methodDataOop)get_oop();
assert(mdo != NULL, "illegal use of unloaded method data");
--- 170,182 ----
ciMethodData(methodDataHandle h_md);
ciMethodData();
// Accessors
! int data_size() const { return _data_size; }
! int extra_data_size() const { return _extra_data_size; }
! intptr_t * data() const { return _data; }
methodDataOop get_methodDataOop() const {
if (handle() == NULL) return NULL;
methodDataOop mdo = (methodDataOop)get_oop();
assert(mdo != NULL, "illegal use of unloaded method data");
*** 179,189 ****
const char* type_string() { return "ciMethodData"; }
void print_impl(outputStream* st);
! DataLayout* data_layout_at(int data_index) {
assert(data_index % sizeof(intptr_t) == 0, "unaligned");
return (DataLayout*) (((address)_data) + data_index);
}
bool out_of_bounds(int data_index) {
--- 185,195 ----
const char* type_string() { return "ciMethodData"; }
void print_impl(outputStream* st);
! DataLayout* data_layout_at(int data_index) const {
assert(data_index % sizeof(intptr_t) == 0, "unaligned");
return (DataLayout*) (((address)_data) + data_index);
}
bool out_of_bounds(int data_index) {
*** 208,217 ****
--- 214,225 ----
// What is the index of the first data entry?
int first_di() { return 0; }
+ ciArgInfoData *arg_info() const;
+
public:
bool is_method_data() { return true; }
bool is_empty() { return _state == empty_state; }
bool is_mature() { return _state == mature_state; }
*** 271,284 ****
--- 279,294 ----
bool eflag_set(methodDataOopDesc::EscapeFlag f) const;
void set_arg_local(int i);
void set_arg_stack(int i);
void set_arg_returned(int i);
+ void set_arg_modified(int arg, uint val);
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;
// 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)); }