Mercurial > hg > truffle
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(); |