< prev index next >

src/hotspot/share/c1/c1_ValueMap.cpp

Print this page

        

*** 263,311 **** class ShortLoopOptimizer : public ValueNumberingVisitor { private: GlobalValueNumbering* _gvn; BlockList _loop_blocks; bool _too_complicated_loop; ! bool _has_field_store[T_ARRAY + 1]; ! bool _has_indexed_store[T_ARRAY + 1]; // simplified access to methods of GlobalValueNumbering ValueMap* current_map() { return _gvn->current_map(); } ValueMap* value_map_of(BlockBegin* block) { return _gvn->value_map_of(block); } // implementation for abstract methods of ValueNumberingVisitor void kill_memory() { _too_complicated_loop = true; } void kill_field(ciField* field, bool all_offsets) { current_map()->kill_field(field, all_offsets); ! assert(field->type()->basic_type() >= 0 && field->type()->basic_type() <= T_ARRAY, "Invalid type"); _has_field_store[field->type()->basic_type()] = true; } void kill_array(ValueType* type) { current_map()->kill_array(type); ! BasicType basic_type = as_BasicType(type); assert(basic_type >= 0 && basic_type <= T_ARRAY, "Invalid type"); _has_indexed_store[basic_type] = true; } public: ShortLoopOptimizer(GlobalValueNumbering* gvn) : _gvn(gvn) , _loop_blocks(ValueMapMaxLoopSize) , _too_complicated_loop(false) { ! for (int i=0; i<= T_ARRAY; i++){ _has_field_store[i] = false; _has_indexed_store[i] = false; } } bool has_field_store(BasicType type) { ! assert(type >= 0 && type <= T_ARRAY, "Invalid type"); return _has_field_store[type]; } bool has_indexed_store(BasicType type) { ! assert(type >= 0 && type <= T_ARRAY, "Invalid type"); return _has_indexed_store[type]; } bool process(BlockBegin* loop_header); }; --- 263,311 ---- class ShortLoopOptimizer : public ValueNumberingVisitor { private: GlobalValueNumbering* _gvn; BlockList _loop_blocks; bool _too_complicated_loop; ! bool _has_field_store[T_VOID]; ! bool _has_indexed_store[T_VOID]; // simplified access to methods of GlobalValueNumbering ValueMap* current_map() { return _gvn->current_map(); } ValueMap* value_map_of(BlockBegin* block) { return _gvn->value_map_of(block); } // implementation for abstract methods of ValueNumberingVisitor void kill_memory() { _too_complicated_loop = true; } void kill_field(ciField* field, bool all_offsets) { current_map()->kill_field(field, all_offsets); ! assert(field->type()->basic_type() >= 0 && field->type()->basic_type() < T_VOID, "Invalid type"); _has_field_store[field->type()->basic_type()] = true; } void kill_array(ValueType* type) { current_map()->kill_array(type); ! BasicType basic_type = as_BasicType(type); assert(basic_type >= 0 && basic_type < T_VOID, "Invalid type"); _has_indexed_store[basic_type] = true; } public: ShortLoopOptimizer(GlobalValueNumbering* gvn) : _gvn(gvn) , _loop_blocks(ValueMapMaxLoopSize) , _too_complicated_loop(false) { ! for (int i = 0; i < T_VOID; i++) { _has_field_store[i] = false; _has_indexed_store[i] = false; } } bool has_field_store(BasicType type) { ! assert(type >= 0 && type < T_VOID, "Invalid type"); return _has_field_store[type]; } bool has_indexed_store(BasicType type) { ! assert(type >= 0 && type < T_VOID, "Invalid type"); return _has_indexed_store[type]; } bool process(BlockBegin* loop_header); };
< prev index next >