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); }