Mercurial > hg > graal-jvmci-8
comparison src/share/vm/compiler/oopMap.hpp @ 14988:82ff6c8c8f6e
Increase maximum allocatable spill area by factor of 2.
author | Thomas Wuerthinger <thomas.wuerthinger@oracle.com> |
---|---|
date | Sat, 05 Apr 2014 19:11:07 +0200 |
parents | b8f261ba79c6 |
children | d86b226e331a |
comparison
equal
deleted
inserted
replaced
14987:3b318ba935d5 | 14988:82ff6c8c8f6e |
---|---|
52 void set_value(int value) { _value = value; } | 52 void set_value(int value) { _value = value; } |
53 short _content_reg; | 53 short _content_reg; |
54 | 54 |
55 public: | 55 public: |
56 // Constants | 56 // Constants |
57 enum { type_bits = 5, | 57 enum { type_bits = 4, |
58 register_bits = BitsPerShort - type_bits }; | 58 register_bits = BitsPerShort - type_bits }; |
59 | 59 |
60 enum { type_shift = 0, | 60 enum { type_shift = 0, |
61 register_shift = type_bits }; | 61 register_shift = type_bits }; |
62 | 62 |
66 register_mask_in_place = register_mask << register_shift }; | 66 register_mask_in_place = register_mask << register_shift }; |
67 | 67 |
68 enum oop_types { // must fit in type_bits | 68 enum oop_types { // must fit in type_bits |
69 unused_value =0, // powers of 2, for masking OopMapStream | 69 unused_value =0, // powers of 2, for masking OopMapStream |
70 oop_value = 1, | 70 oop_value = 1, |
71 value_value = 2, | 71 narrowoop_value = 2, |
72 narrowoop_value = 4, | 72 callee_saved_value = 4, |
73 callee_saved_value = 8, | 73 derived_oop_value= 8 }; |
74 derived_oop_value= 16 }; | |
75 | 74 |
76 // Constructors | 75 // Constructors |
77 OopMapValue () { set_value(0); set_content_reg(VMRegImpl::Bad()); } | 76 OopMapValue () { set_value(0); set_content_reg(VMRegImpl::Bad()); } |
78 OopMapValue (VMReg reg, oop_types t) { set_reg_type(reg,t); } | 77 OopMapValue (VMReg reg, oop_types t) { set_reg_type(reg,t); } |
79 OopMapValue (VMReg reg, oop_types t, VMReg reg2) { set_reg_type(reg,t); set_content_reg(reg2); } | 78 OopMapValue (VMReg reg, oop_types t, VMReg reg2) { set_reg_type(reg,t); set_content_reg(reg2); } |
94 } | 93 } |
95 } | 94 } |
96 | 95 |
97 // Querying | 96 // Querying |
98 bool is_oop() { return mask_bits(value(), type_mask_in_place) == oop_value; } | 97 bool is_oop() { return mask_bits(value(), type_mask_in_place) == oop_value; } |
99 bool is_value() { return mask_bits(value(), type_mask_in_place) == value_value; } | |
100 bool is_narrowoop() { return mask_bits(value(), type_mask_in_place) == narrowoop_value; } | 98 bool is_narrowoop() { return mask_bits(value(), type_mask_in_place) == narrowoop_value; } |
101 bool is_callee_saved() { return mask_bits(value(), type_mask_in_place) == callee_saved_value; } | 99 bool is_callee_saved() { return mask_bits(value(), type_mask_in_place) == callee_saved_value; } |
102 bool is_derived_oop() { return mask_bits(value(), type_mask_in_place) == derived_oop_value; } | 100 bool is_derived_oop() { return mask_bits(value(), type_mask_in_place) == derived_oop_value; } |
103 | 101 |
104 void set_oop() { set_value((value() & register_mask_in_place) | oop_value); } | 102 void set_oop() { set_value((value() & register_mask_in_place) | oop_value); } |
105 void set_value() { set_value((value() & register_mask_in_place) | value_value); } | |
106 void set_narrowoop() { set_value((value() & register_mask_in_place) | narrowoop_value); } | 103 void set_narrowoop() { set_value((value() & register_mask_in_place) | narrowoop_value); } |
107 void set_callee_saved() { set_value((value() & register_mask_in_place) | callee_saved_value); } | 104 void set_callee_saved() { set_value((value() & register_mask_in_place) | callee_saved_value); } |
108 void set_derived_oop() { set_value((value() & register_mask_in_place) | derived_oop_value); } | 105 void set_derived_oop() { set_value((value() & register_mask_in_place) | derived_oop_value); } |
109 | 106 |
110 VMReg reg() const { return VMRegImpl::as_VMReg(mask_bits(value(), register_mask_in_place) >> register_shift); } | 107 VMReg reg() const { return VMRegImpl::as_VMReg(mask_bits(value(), register_mask_in_place) >> register_shift); } |