src/share/vm/opto/cfgnode.cpp

changeset 656
1e026f8da827
parent 619
65fe2bd88839
child 658
1dd146f17531
     1.1 --- a/src/share/vm/opto/cfgnode.cpp	Mon Jun 23 18:21:18 2008 -0700
     1.2 +++ b/src/share/vm/opto/cfgnode.cpp	Tue Jun 24 10:43:29 2008 -0700
     1.3 @@ -854,7 +854,8 @@
     1.4    // Until we have harmony between classes and interfaces in the type
     1.5    // lattice, we must tread carefully around phis which implicitly
     1.6    // convert the one to the other.
     1.7 -  const TypeInstPtr* ttip = _type->isa_narrowoop() ? _type->isa_narrowoop()->make_oopptr()->isa_instptr() :_type->isa_instptr();
     1.8 +  const TypePtr* ttp = _type->make_ptr();
     1.9 +  const TypeInstPtr* ttip = (ttp != NULL) ? ttp->isa_instptr() : NULL;
    1.10    bool is_intf = false;
    1.11    if (ttip != NULL) {
    1.12      ciKlass* k = ttip->klass();
    1.13 @@ -873,7 +874,8 @@
    1.14        // of all the input types.  The lattice is not distributive in
    1.15        // such cases.  Ward off asserts in type.cpp by refusing to do
    1.16        // meets between interfaces and proper classes.
    1.17 -      const TypeInstPtr* tiip = ti->isa_narrowoop() ? ti->is_narrowoop()->make_oopptr()->isa_instptr() : ti->isa_instptr();
    1.18 +      const TypePtr* tip = ti->make_ptr();
    1.19 +      const TypeInstPtr* tiip = (tip != NULL) ? tip->isa_instptr() : NULL;
    1.20        if (tiip) {
    1.21          bool ti_is_intf = false;
    1.22          ciKlass* k = tiip->klass();
    1.23 @@ -930,13 +932,14 @@
    1.24      // class-typed Phi and an interface flows in, it's possible that the meet &
    1.25      // join report an interface back out.  This isn't possible but happens
    1.26      // because the type system doesn't interact well with interfaces.
    1.27 -    const TypeInstPtr *jtip = jt->isa_narrowoop() ? jt->isa_narrowoop()->make_oopptr()->isa_instptr() : jt->isa_instptr();
    1.28 +    const TypePtr *jtp = jt->make_ptr();
    1.29 +    const TypeInstPtr *jtip = (jtp != NULL) ? jtp->isa_instptr() : NULL;
    1.30      if( jtip && ttip ) {
    1.31        if( jtip->is_loaded() &&  jtip->klass()->is_interface() &&
    1.32            ttip->is_loaded() && !ttip->klass()->is_interface() ) {
    1.33          // Happens in a CTW of rt.jar, 320-341, no extra flags
    1.34          assert(ft == ttip->cast_to_ptr_type(jtip->ptr()) ||
    1.35 -               ft->isa_narrowoop() && ft->isa_narrowoop()->make_oopptr() == ttip->cast_to_ptr_type(jtip->ptr()), "");
    1.36 +               ft->isa_narrowoop() && ft->make_ptr() == ttip->cast_to_ptr_type(jtip->ptr()), "");
    1.37          jt = ft;
    1.38        }
    1.39      }

mercurial