< prev index next >

src/hotspot/share/c1/c1_LIRGenerator.cpp

Print this page

        

*** 1544,1554 **** void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { assert(x->is_pinned(),""); bool needs_range_check = x->compute_needs_range_check(); bool use_length = x->length() != NULL; ! bool obj_store = x->elt_type() == T_ARRAY || x->elt_type() == T_OBJECT; bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL || !get_jobject_constant(x->value())->is_null_object() || x->should_profile()); LIRItem array(x->array(), this); --- 1544,1554 ---- void LIRGenerator::do_StoreIndexed(StoreIndexed* x) { assert(x->is_pinned(),""); bool needs_range_check = x->compute_needs_range_check(); bool use_length = x->length() != NULL; ! bool obj_store = is_reference_type(x->elt_type()); bool needs_store_check = obj_store && (x->value()->as_Constant() == NULL || !get_jobject_constant(x->value())->is_null_object() || x->should_profile()); LIRItem array(x->array(), this);
*** 2161,2171 **** decorators |= MO_SEQ_CST; } if (type == T_BOOLEAN) { decorators |= C1_MASK_BOOLEAN; } ! if (type == T_ARRAY || type == T_OBJECT) { decorators |= ON_UNKNOWN_OOP_REF; } LIR_Opr result = rlock_result(x, type); access_load_at(decorators, type, --- 2161,2171 ---- decorators |= MO_SEQ_CST; } if (type == T_BOOLEAN) { decorators |= C1_MASK_BOOLEAN; } ! if (is_reference_type(type)) { decorators |= ON_UNKNOWN_OOP_REF; } LIR_Opr result = rlock_result(x, type); access_load_at(decorators, type,
*** 2188,2198 **** off.load_item(); set_no_result(x); DecoratorSet decorators = IN_HEAP | C1_UNSAFE_ACCESS; ! if (type == T_ARRAY || type == T_OBJECT) { decorators |= ON_UNKNOWN_OOP_REF; } if (x->is_volatile()) { decorators |= MO_SEQ_CST; } --- 2188,2198 ---- off.load_item(); set_no_result(x); DecoratorSet decorators = IN_HEAP | C1_UNSAFE_ACCESS; ! if (is_reference_type(type)) { decorators |= ON_UNKNOWN_OOP_REF; } if (x->is_volatile()) { decorators |= MO_SEQ_CST; }
*** 2205,2215 **** LIRItem off(x->offset(), this); LIRItem value(x->value(), this); DecoratorSet decorators = IN_HEAP | C1_UNSAFE_ACCESS | MO_SEQ_CST; ! if (type == T_ARRAY || type == T_OBJECT) { decorators |= ON_UNKNOWN_OOP_REF; } LIR_Opr result; if (x->is_add()) { --- 2205,2215 ---- LIRItem off(x->offset(), this); LIRItem value(x->value(), this); DecoratorSet decorators = IN_HEAP | C1_UNSAFE_ACCESS | MO_SEQ_CST; ! if (is_reference_type(type)) { decorators |= ON_UNKNOWN_OOP_REF; } LIR_Opr result; if (x->is_add()) {
*** 2598,2608 **** LIR_Opr mdp = LIR_OprFact::illegalOpr; for (int java_index = 0, i = 0, j = 0; j < parameters_type_data->number_of_parameters(); i++) { LIR_Opr src = args->at(i); assert(!src->is_illegal(), "check"); BasicType t = src->type(); ! if (t == T_OBJECT || t == T_ARRAY) { intptr_t profiled_k = parameters->type(j); Local* local = x->state()->local_at(java_index)->as_Local(); ciKlass* exact = profile_type(md, md->byte_offset_of_slot(parameters_type_data, ParametersTypeData::type_offset(0)), in_bytes(ParametersTypeData::type_offset(j)) - in_bytes(ParametersTypeData::type_offset(0)), profiled_k, local, mdp, false, local->declared_type()->as_klass(), NULL); --- 2598,2608 ---- LIR_Opr mdp = LIR_OprFact::illegalOpr; for (int java_index = 0, i = 0, j = 0; j < parameters_type_data->number_of_parameters(); i++) { LIR_Opr src = args->at(i); assert(!src->is_illegal(), "check"); BasicType t = src->type(); ! if (is_reference_type(t)) { intptr_t profiled_k = parameters->type(j); Local* local = x->state()->local_at(java_index)->as_Local(); ciKlass* exact = profile_type(md, md->byte_offset_of_slot(parameters_type_data, ParametersTypeData::type_offset(0)), in_bytes(ParametersTypeData::type_offset(j)) - in_bytes(ParametersTypeData::type_offset(0)), profiled_k, local, mdp, false, local->declared_type()->as_klass(), NULL);
< prev index next >