comparison src/share/vm/shark/sharkCacheDecache.cpp @ 7212:291ffc492eb6

Merge with http://hg.openjdk.java.net/hsx/hsx25/hotspot/
author Doug Simon <doug.simon@oracle.com>
date Fri, 14 Dec 2012 14:35:13 +0100
parents e522a00b91aa 2cd5e15048e6
children f78ac2ce44ef
comparison
equal deleted inserted replaced
7163:2ed8d74e5984 7212:291ffc492eb6
105 } 105 }
106 106
107 void SharkDecacher::process_method_slot(Value** value, int offset) { 107 void SharkDecacher::process_method_slot(Value** value, int offset) {
108 // Decache the method pointer 108 // Decache the method pointer
109 write_value_to_frame( 109 write_value_to_frame(
110 SharkType::Method*_type(), 110 SharkType::Method_type(),
111 *value, 111 *value,
112 offset); 112 offset);
113 113
114 oopmap()->set_oop(slot2reg(offset));
115 } 114 }
116 115
117 void SharkDecacher::process_pc_slot(int offset) { 116 void SharkDecacher::process_pc_slot(int offset) {
118 // Record the PC 117 // Record the PC
119 builder()->CreateStore( 118 builder()->CreateStore(
205 *value = read_value_from_frame(SharkType::oop_type(), offset); 204 *value = read_value_from_frame(SharkType::oop_type(), offset);
206 } 205 }
207 206
208 void SharkCacher::process_method_slot(Value** value, int offset) { 207 void SharkCacher::process_method_slot(Value** value, int offset) {
209 // Cache the method pointer 208 // Cache the method pointer
210 *value = read_value_from_frame(SharkType::Method*_type(), offset); 209 *value = read_value_from_frame(SharkType::Method_type(), offset);
211 } 210 }
212 211
213 void SharkFunctionEntryCacher::process_method_slot(Value** value, int offset) { 212 void SharkFunctionEntryCacher::process_method_slot(Value** value, int offset) {
214 // "Cache" the method pointer 213 // "Cache" the method pointer
215 *value = method(); 214 *value = method();
230 value->zero_checked()); 229 value->zero_checked());
231 } 230 }
232 } 231 }
233 232
234 Value* SharkOSREntryCacher::CreateAddressOfOSRBufEntry(int offset, 233 Value* SharkOSREntryCacher::CreateAddressOfOSRBufEntry(int offset,
235 const Type* type) { 234 Type* type) {
236 Value *result = builder()->CreateStructGEP(osr_buf(), offset); 235 Value *result = builder()->CreateStructGEP(osr_buf(), offset);
237 if (type != SharkType::intptr_type()) 236 if (type != SharkType::intptr_type())
238 result = builder()->CreateBitCast(result, PointerType::getUnqual(type)); 237 result = builder()->CreateBitCast(result, PointerType::getUnqual(type));
239 return result; 238 return result;
240 } 239 }
254 SharkType::to_stackType(value->basic_type()))), 253 SharkType::to_stackType(value->basic_type()))),
255 value->zero_checked()); 254 value->zero_checked());
256 } 255 }
257 } 256 }
258 257
259 void SharkDecacher::write_value_to_frame(const Type* type, 258 void SharkDecacher::write_value_to_frame(Type* type,
260 Value* value, 259 Value* value,
261 int offset) { 260 int offset) {
262 builder()->CreateStore(value, stack()->slot_addr(offset, type)); 261 builder()->CreateStore(value, stack()->slot_addr(offset, type));
263 } 262 }
264 263
265 Value* SharkCacher::read_value_from_frame(const Type* type, int offset) { 264 Value* SharkCacher::read_value_from_frame(Type* type, int offset) {
266 return builder()->CreateLoad(stack()->slot_addr(offset, type)); 265 return builder()->CreateLoad(stack()->slot_addr(offset, type));
267 } 266 }