comparison src/share/vm/graal/graalCodeInstaller.cpp @ 4181:319860ae697a

Simplify FrameMap: make offsets of spill slots and outgoing parameters independent so that they can be allocated at the same time, eliminating the separate phases. This makes the separate StackBlock unnecesary. Change CiStackSlot to use byte offsets instead of spill slot index. This makes CiTarget.spillSlotSize unnecessary.
author Christian Wimmer <Christian.Wimmer@Oracle.com>
date Mon, 02 Jan 2012 14:16:08 -0800
parents 79c91d220d73
children 5c80ccb80036
comparison
equal deleted inserted replaced
4180:383c1272cd1f 4181:319860ae697a
145 if (type == T_DOUBLE) { 145 if (type == T_DOUBLE) {
146 locationType = Location::dbl; 146 locationType = Location::dbl;
147 } else if (type == T_LONG) { 147 } else if (type == T_LONG) {
148 locationType = Location::lng; 148 locationType = Location::lng;
149 } 149 }
150 jint index = CiStackSlot::index(value); 150 jint offset = CiStackSlot::offset(value);
151 ScopeValue* value; 151 if (CiStackSlot::addFrameSize(value)) {
152 if (index >= 0) { 152 offset += total_frame_size;
153 value = new LocationValue(Location::new_stk_loc(locationType, index * HeapWordSize)); 153 }
154 } else { 154 ScopeValue* value = new LocationValue(Location::new_stk_loc(locationType, offset));
155 value = new LocationValue(Location::new_stk_loc(locationType, -((index + 1) * HeapWordSize) + total_frame_size));
156 }
157 if (type == T_DOUBLE || type == T_LONG) { 155 if (type == T_DOUBLE || type == T_LONG) {
158 second = value; 156 second = value;
159 } 157 }
160 return value; 158 return value;
161 } else if (value->is_a(CiConstant::klass())){ 159 } else if (value->is_a(CiConstant::klass())){