src/share/vm/opto/cfgnode.cpp

changeset 682
02a35ad4adf8
parent 670
9c2ecc2ffb12
child 802
194b8e3a2fc4
     1.1 --- a/src/share/vm/opto/cfgnode.cpp	Wed Jul 16 10:08:57 2008 -0700
     1.2 +++ b/src/share/vm/opto/cfgnode.cpp	Wed Jul 16 16:04:39 2008 -0700
     1.3 @@ -713,7 +713,9 @@
     1.4    assert(type() == Type::MEMORY &&
     1.5           (t == TypePtr::BOTTOM || t == TypeRawPtr::BOTTOM ||
     1.6            t->isa_oopptr() && !t->is_oopptr()->is_known_instance() &&
     1.7 -          t->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop),
     1.8 +          t->is_oopptr()->cast_to_exactness(true)
     1.9 +           ->is_oopptr()->cast_to_ptr_type(t_oop->ptr())
    1.10 +           ->is_oopptr()->cast_to_instance_id(t_oop->instance_id()) == t_oop),
    1.11           "bottom or raw memory required");
    1.12  
    1.13    // Check if an appropriate node already exists.
    1.14 @@ -1089,6 +1091,8 @@
    1.15      if (rc == NULL || phase->type(rc) == Type::TOP)
    1.16        continue;                 // ignore unreachable control path
    1.17      Node* n = in(i);
    1.18 +    if (n == NULL)
    1.19 +      continue;
    1.20      Node* un = n->uncast();
    1.21      if (un == NULL || un == this || phase->type(un) == Type::TOP) {
    1.22        continue; // ignore if top, or in(i) and "this" are in a data cycle

mercurial