hotspot/src/share/vm/opto/memnode.cpp
changeset 33105 294e48b4f704
parent 32573 e0c433df24e0
child 33129 e0bcbb5015b3
equal deleted inserted replaced
33104:a7c0f60a1294 33105:294e48b4f704
  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;