equal
deleted
inserted
replaced
1137 ciConstant c = box->field_value(ik->nonstatic_field_at(0)); |
1137 ciConstant c = box->field_value(ik->nonstatic_field_at(0)); |
1138 BasicType bt = c.basic_type(); |
1138 BasicType bt = c.basic_type(); |
1139 // Only integer types have boxing cache. |
1139 // Only integer types have boxing cache. |
1140 assert(bt == T_BOOLEAN || bt == T_CHAR || |
1140 assert(bt == T_BOOLEAN || bt == T_CHAR || |
1141 bt == T_BYTE || bt == T_SHORT || |
1141 bt == T_BYTE || bt == T_SHORT || |
1142 bt == T_INT || bt == T_LONG, err_msg_res("wrong type = %s", type2name(bt))); |
1142 bt == T_INT || bt == T_LONG, "wrong type = %s", type2name(bt)); |
1143 jlong cache_low = (bt == T_LONG) ? c.as_long() : c.as_int(); |
1143 jlong cache_low = (bt == T_LONG) ? c.as_long() : c.as_int(); |
1144 if (cache_low != (int)cache_low) { |
1144 if (cache_low != (int)cache_low) { |
1145 return NULL; // should not happen since cache is array indexed by value |
1145 return NULL; // should not happen since cache is array indexed by value |
1146 } |
1146 } |
1147 jlong offset = arrayOopDesc::base_offset_in_bytes(T_OBJECT) - (cache_low << shift); |
1147 jlong offset = arrayOopDesc::base_offset_in_bytes(T_OBJECT) - (cache_low << shift); |
2392 assert(Opcode() == st->Opcode() || |
2392 assert(Opcode() == st->Opcode() || |
2393 st->Opcode() == Op_StoreVector || |
2393 st->Opcode() == Op_StoreVector || |
2394 Opcode() == Op_StoreVector || |
2394 Opcode() == Op_StoreVector || |
2395 phase->C->get_alias_index(adr_type()) == Compile::AliasIdxRaw || |
2395 phase->C->get_alias_index(adr_type()) == Compile::AliasIdxRaw || |
2396 (Opcode() == Op_StoreL && st->Opcode() == Op_StoreI), // expanded ClearArrayNode |
2396 (Opcode() == Op_StoreL && st->Opcode() == Op_StoreI), // expanded ClearArrayNode |
2397 err_msg_res("no mismatched stores, except on raw memory: %s %s", NodeClassNames[Opcode()], NodeClassNames[st->Opcode()])); |
2397 "no mismatched stores, except on raw memory: %s %s", NodeClassNames[Opcode()], NodeClassNames[st->Opcode()]); |
2398 |
2398 |
2399 if (st->in(MemNode::Address)->eqv_uncast(address) && |
2399 if (st->in(MemNode::Address)->eqv_uncast(address) && |
2400 st->as_Store()->memory_size() <= this->memory_size()) { |
2400 st->as_Store()->memory_size() <= this->memory_size()) { |
2401 Node* use = st->raw_out(0); |
2401 Node* use = st->raw_out(0); |
2402 phase->igvn_rehash_node_delayed(use); |
2402 phase->igvn_rehash_node_delayed(use); |
3287 // after the InitializeNode. We check the control of the |
3287 // after the InitializeNode. We check the control of the |
3288 // object/array that is loaded from. If it's the same as |
3288 // object/array that is loaded from. If it's the same as |
3289 // the store control then we cannot capture the store. |
3289 // the store control then we cannot capture the store. |
3290 assert(!n->is_Store(), "2 stores to same slice on same control?"); |
3290 assert(!n->is_Store(), "2 stores to same slice on same control?"); |
3291 Node* base = other_adr; |
3291 Node* base = other_adr; |
3292 assert(base->is_AddP(), err_msg_res("should be addp but is %s", base->Name())); |
3292 assert(base->is_AddP(), "should be addp but is %s", base->Name()); |
3293 base = base->in(AddPNode::Base); |
3293 base = base->in(AddPNode::Base); |
3294 if (base != NULL) { |
3294 if (base != NULL) { |
3295 base = base->uncast(); |
3295 base = base->uncast(); |
3296 if (base->is_Proj() && base->in(0) == alloc) { |
3296 if (base->is_Proj() && base->in(0) == alloc) { |
3297 failed = true; |
3297 failed = true; |