< prev index next >

src/share/vm/opto/memnode.cpp

Print this page

        

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