3038 NOT_PRODUCT(_tracer.offset_plus_k_7(n, _invar, _negate_invar, _offset);)
3039 return true;
3040 }
3041 }
3042 if (opc == Op_SubI) {
3043 if (n->in(2)->is_Con() && invariant(n->in(1))) {
3044 _negate_invar = negate;
3045 _invar = n->in(1);
3046 _offset += !negate ? -(n->in(2)->get_int()) : n->in(2)->get_int();
3047 NOT_PRODUCT(_tracer.offset_plus_k_8(n, _invar, _negate_invar, _offset);)
3048 return true;
3049 } else if (n->in(1)->is_Con() && invariant(n->in(2))) {
3050 _offset += negate ? -(n->in(1)->get_int()) : n->in(1)->get_int();
3051 _negate_invar = !negate;
3052 _invar = n->in(2);
3053 NOT_PRODUCT(_tracer.offset_plus_k_9(n, _invar, _negate_invar, _offset);)
3054 return true;
3055 }
3056 }
3057 if (invariant(n)) {
3058 _negate_invar = negate;
3059 _invar = n;
3060 NOT_PRODUCT(_tracer.offset_plus_k_10(n, _invar, _negate_invar, _offset);)
3061 return true;
3062 }
3063
3064 NOT_PRODUCT(_tracer.offset_plus_k_11(n);)
3065 return false;
3066 }
3067
3068 //----------------------------print------------------------
3069 void SWPointer::print() {
3070 #ifndef PRODUCT
3071 tty->print("base: %d adr: %d scale: %d offset: %d invar: %c%d\n",
3072 _base != NULL ? _base->_idx : 0,
3073 _adr != NULL ? _adr->_idx : 0,
3074 _scale, _offset,
3075 _negate_invar?'-':'+',
3076 _invar != NULL ? _invar->_idx : 0);
3077 #endif
|
3038 NOT_PRODUCT(_tracer.offset_plus_k_7(n, _invar, _negate_invar, _offset);)
3039 return true;
3040 }
3041 }
3042 if (opc == Op_SubI) {
3043 if (n->in(2)->is_Con() && invariant(n->in(1))) {
3044 _negate_invar = negate;
3045 _invar = n->in(1);
3046 _offset += !negate ? -(n->in(2)->get_int()) : n->in(2)->get_int();
3047 NOT_PRODUCT(_tracer.offset_plus_k_8(n, _invar, _negate_invar, _offset);)
3048 return true;
3049 } else if (n->in(1)->is_Con() && invariant(n->in(2))) {
3050 _offset += negate ? -(n->in(1)->get_int()) : n->in(1)->get_int();
3051 _negate_invar = !negate;
3052 _invar = n->in(2);
3053 NOT_PRODUCT(_tracer.offset_plus_k_9(n, _invar, _negate_invar, _offset);)
3054 return true;
3055 }
3056 }
3057 if (invariant(n)) {
3058 if (opc == Op_ConvI2L) {
3059 n = n->in(1);
3060 }
3061 _negate_invar = negate;
3062 _invar = n;
3063 NOT_PRODUCT(_tracer.offset_plus_k_10(n, _invar, _negate_invar, _offset);)
3064 return true;
3065 }
3066
3067 NOT_PRODUCT(_tracer.offset_plus_k_11(n);)
3068 return false;
3069 }
3070
3071 //----------------------------print------------------------
3072 void SWPointer::print() {
3073 #ifndef PRODUCT
3074 tty->print("base: %d adr: %d scale: %d offset: %d invar: %c%d\n",
3075 _base != NULL ? _base->_idx : 0,
3076 _adr != NULL ? _adr->_idx : 0,
3077 _scale, _offset,
3078 _negate_invar?'-':'+',
3079 _invar != NULL ? _invar->_idx : 0);
3080 #endif
|