Mercurial > hg > graal-jvmci-8
comparison src/share/vm/opto/type.cpp @ 1765:114e6b93e9e1
6980978: assert(mt == t->xmeet(this)) failed: meet not commutative
Summary: Fix code in TypeAryPtr::xmeet() for constant array.
Reviewed-by: never
author | kvn |
---|---|
date | Mon, 30 Aug 2010 11:02:53 -0700 |
parents | 14b92b91f460 |
children | f95d63e2154a |
comparison
equal
deleted
inserted
replaced
1764:14197af1010e | 1765:114e6b93e9e1 |
---|---|
3367 // This must fall to bottom, not (int[-128..65535])[int+]. | 3367 // This must fall to bottom, not (int[-128..65535])[int+]. |
3368 instance_id = InstanceBot; | 3368 instance_id = InstanceBot; |
3369 tary = TypeAry::make(Type::BOTTOM, tary->_size); | 3369 tary = TypeAry::make(Type::BOTTOM, tary->_size); |
3370 } | 3370 } |
3371 } | 3371 } |
3372 bool xk; | 3372 bool xk = false; |
3373 switch (tap->ptr()) { | 3373 switch (tap->ptr()) { |
3374 case AnyNull: | 3374 case AnyNull: |
3375 case TopPTR: | 3375 case TopPTR: |
3376 // Compute new klass on demand, do not use tap->_klass | 3376 // Compute new klass on demand, do not use tap->_klass |
3377 xk = (tap->_klass_is_exact | this->_klass_is_exact); | 3377 xk = (tap->_klass_is_exact | this->_klass_is_exact); |
3389 } | 3389 } |
3390 } else if( above_centerline(_ptr) ) { | 3390 } else if( above_centerline(_ptr) ) { |
3391 o = tap->const_oop(); | 3391 o = tap->const_oop(); |
3392 xk = true; | 3392 xk = true; |
3393 } else { | 3393 } else { |
3394 xk = this->_klass_is_exact; | 3394 // Only precise for identical arrays |
3395 xk = this->_klass_is_exact && (klass() == tap->klass()); | |
3395 } | 3396 } |
3396 return TypeAryPtr::make( ptr, o, tary, tap->_klass, xk, off, instance_id ); | 3397 return TypeAryPtr::make( ptr, o, tary, lazy_klass, xk, off, instance_id ); |
3397 } | 3398 } |
3398 case NotNull: | 3399 case NotNull: |
3399 case BotPTR: | 3400 case BotPTR: |
3400 // Compute new klass on demand, do not use tap->_klass | 3401 // Compute new klass on demand, do not use tap->_klass |
3401 if (above_centerline(this->_ptr)) | 3402 if (above_centerline(this->_ptr)) |