comparison src/share/vm/compiler/oopMap.hpp @ 244:524eca34ea76

6684714: Optimize EA Connection Graph build performance Summary: switch on EA by default, optimize Connection Graph construction Reviewed-by: rasbold, never
author kvn
date Thu, 03 Jul 2008 18:02:47 -0700
parents ba764ed4b6f2
children 4a4c365f777d
comparison
equal deleted inserted replaced
231:72c3e8693c9a 244:524eca34ea76
44 void set_value(int value) { _value = value; } 44 void set_value(int value) { _value = value; }
45 short _content_reg; 45 short _content_reg;
46 46
47 public: 47 public:
48 // Constants 48 // Constants
49 enum { type_bits = 6, 49 enum { type_bits = 5,
50 register_bits = BitsPerShort - type_bits }; 50 register_bits = BitsPerShort - type_bits };
51 51
52 enum { type_shift = 0, 52 enum { type_shift = 0,
53 register_shift = type_bits }; 53 register_shift = type_bits };
54 54
61 unused_value =0, // powers of 2, for masking OopMapStream 61 unused_value =0, // powers of 2, for masking OopMapStream
62 oop_value = 1, 62 oop_value = 1,
63 value_value = 2, 63 value_value = 2,
64 narrowoop_value = 4, 64 narrowoop_value = 4,
65 callee_saved_value = 8, 65 callee_saved_value = 8,
66 derived_oop_value= 16, 66 derived_oop_value= 16 };
67 stack_obj = 32 };
68 67
69 // Constructors 68 // Constructors
70 OopMapValue () { set_value(0); set_content_reg(VMRegImpl::Bad()); } 69 OopMapValue () { set_value(0); set_content_reg(VMRegImpl::Bad()); }
71 OopMapValue (VMReg reg, oop_types t) { set_reg_type(reg,t); } 70 OopMapValue (VMReg reg, oop_types t) { set_reg_type(reg,t); }
72 OopMapValue (VMReg reg, oop_types t, VMReg reg2) { set_reg_type(reg,t); set_content_reg(reg2); } 71 OopMapValue (VMReg reg, oop_types t, VMReg reg2) { set_reg_type(reg,t); set_content_reg(reg2); }
91 bool is_oop() { return mask_bits(value(), type_mask_in_place) == oop_value; } 90 bool is_oop() { return mask_bits(value(), type_mask_in_place) == oop_value; }
92 bool is_value() { return mask_bits(value(), type_mask_in_place) == value_value; } 91 bool is_value() { return mask_bits(value(), type_mask_in_place) == value_value; }
93 bool is_narrowoop() { return mask_bits(value(), type_mask_in_place) == narrowoop_value; } 92 bool is_narrowoop() { return mask_bits(value(), type_mask_in_place) == narrowoop_value; }
94 bool is_callee_saved() { return mask_bits(value(), type_mask_in_place) == callee_saved_value; } 93 bool is_callee_saved() { return mask_bits(value(), type_mask_in_place) == callee_saved_value; }
95 bool is_derived_oop() { return mask_bits(value(), type_mask_in_place) == derived_oop_value; } 94 bool is_derived_oop() { return mask_bits(value(), type_mask_in_place) == derived_oop_value; }
96 bool is_stack_obj() { return mask_bits(value(), type_mask_in_place) == stack_obj; }
97 95
98 void set_oop() { set_value((value() & register_mask_in_place) | oop_value); } 96 void set_oop() { set_value((value() & register_mask_in_place) | oop_value); }
99 void set_value() { set_value((value() & register_mask_in_place) | value_value); } 97 void set_value() { set_value((value() & register_mask_in_place) | value_value); }
100 void set_narrowoop() { set_value((value() & register_mask_in_place) | narrowoop_value); } 98 void set_narrowoop() { set_value((value() & register_mask_in_place) | narrowoop_value); }
101 void set_callee_saved() { set_value((value() & register_mask_in_place) | callee_saved_value); } 99 void set_callee_saved() { set_value((value() & register_mask_in_place) | callee_saved_value); }
102 void set_derived_oop() { set_value((value() & register_mask_in_place) | derived_oop_value); } 100 void set_derived_oop() { set_value((value() & register_mask_in_place) | derived_oop_value); }
103 void set_stack_obj() { set_value((value() & register_mask_in_place) | stack_obj); }
104 101
105 VMReg reg() const { return VMRegImpl::as_VMReg(mask_bits(value(), register_mask_in_place) >> register_shift); } 102 VMReg reg() const { return VMRegImpl::as_VMReg(mask_bits(value(), register_mask_in_place) >> register_shift); }
106 oop_types type() const { return (oop_types)mask_bits(value(), type_mask_in_place); } 103 oop_types type() const { return (oop_types)mask_bits(value(), type_mask_in_place); }
107 104
108 static bool legal_vm_reg_name(VMReg p) { 105 static bool legal_vm_reg_name(VMReg p) {
178 void set_value( VMReg local); 175 void set_value( VMReg local);
179 void set_narrowoop(VMReg local); 176 void set_narrowoop(VMReg local);
180 void set_dead ( VMReg local); 177 void set_dead ( VMReg local);
181 void set_callee_saved( VMReg local, VMReg caller_machine_register ); 178 void set_callee_saved( VMReg local, VMReg caller_machine_register );
182 void set_derived_oop ( VMReg local, VMReg derived_from_local_register ); 179 void set_derived_oop ( VMReg local, VMReg derived_from_local_register );
183 void set_stack_obj( VMReg local);
184 void set_xxx(VMReg reg, OopMapValue::oop_types x, VMReg optional); 180 void set_xxx(VMReg reg, OopMapValue::oop_types x, VMReg optional);
185 181
186 int heap_size() const; 182 int heap_size() const;
187 void copy_to(address addr); 183 void copy_to(address addr);
188 OopMap* deep_copy(); 184 OopMap* deep_copy();