1262 LIR_Opr _length; 1263 LIR_Opr _tmp; 1264 ciArrayKlass* _expected_type; 1265 int _flags; 1266 1267 public: 1268 enum Flags { 1269 src_null_check = 1 << 0, 1270 dst_null_check = 1 << 1, 1271 src_pos_positive_check = 1 << 2, 1272 dst_pos_positive_check = 1 << 3, 1273 length_positive_check = 1 << 4, 1274 src_range_check = 1 << 5, 1275 dst_range_check = 1 << 6, 1276 type_check = 1 << 7, 1277 overlapping = 1 << 8, 1278 unaligned = 1 << 9, 1279 src_objarray = 1 << 10, 1280 dst_objarray = 1 << 11, 1281 always_slow_path = 1 << 12, 1282 src_flat_check = 1 << 13, 1283 dst_flat_check = 1 << 14, 1284 all_flags = (1 << 15) - 1 1285 }; 1286 1287 LIR_OpArrayCopy(LIR_Opr src, LIR_Opr src_pos, LIR_Opr dst, LIR_Opr dst_pos, LIR_Opr length, LIR_Opr tmp, 1288 ciArrayKlass* expected_type, int flags, CodeEmitInfo* info); 1289 1290 LIR_Opr src() const { return _src; } 1291 LIR_Opr src_pos() const { return _src_pos; } 1292 LIR_Opr dst() const { return _dst; } 1293 LIR_Opr dst_pos() const { return _dst_pos; } 1294 LIR_Opr length() const { return _length; } 1295 LIR_Opr tmp() const { return _tmp; } 1296 int flags() const { return _flags; } 1297 ciArrayKlass* expected_type() const { return _expected_type; } 1298 ArrayCopyStub* stub() const { return _stub; } 1299 1300 virtual void emit_code(LIR_Assembler* masm); 1301 virtual LIR_OpArrayCopy* as_OpArrayCopy() { return this; } 1302 void print_instr(outputStream* out) const PRODUCT_RETURN; 1303 }; | 1262 LIR_Opr _length; 1263 LIR_Opr _tmp; 1264 ciArrayKlass* _expected_type; 1265 int _flags; 1266 1267 public: 1268 enum Flags { 1269 src_null_check = 1 << 0, 1270 dst_null_check = 1 << 1, 1271 src_pos_positive_check = 1 << 2, 1272 dst_pos_positive_check = 1 << 3, 1273 length_positive_check = 1 << 4, 1274 src_range_check = 1 << 5, 1275 dst_range_check = 1 << 6, 1276 type_check = 1 << 7, 1277 overlapping = 1 << 8, 1278 unaligned = 1 << 9, 1279 src_objarray = 1 << 10, 1280 dst_objarray = 1 << 11, 1281 always_slow_path = 1 << 12, 1282 src_valuetype_check = 1 << 13, 1283 dst_valuetype_check = 1 << 14, 1284 all_flags = (1 << 15) - 1 1285 }; 1286 1287 LIR_OpArrayCopy(LIR_Opr src, LIR_Opr src_pos, LIR_Opr dst, LIR_Opr dst_pos, LIR_Opr length, LIR_Opr tmp, 1288 ciArrayKlass* expected_type, int flags, CodeEmitInfo* info); 1289 1290 LIR_Opr src() const { return _src; } 1291 LIR_Opr src_pos() const { return _src_pos; } 1292 LIR_Opr dst() const { return _dst; } 1293 LIR_Opr dst_pos() const { return _dst_pos; } 1294 LIR_Opr length() const { return _length; } 1295 LIR_Opr tmp() const { return _tmp; } 1296 int flags() const { return _flags; } 1297 ciArrayKlass* expected_type() const { return _expected_type; } 1298 ArrayCopyStub* stub() const { return _stub; } 1299 1300 virtual void emit_code(LIR_Assembler* masm); 1301 virtual LIR_OpArrayCopy* as_OpArrayCopy() { return this; } 1302 void print_instr(outputStream* out) const PRODUCT_RETURN; 1303 }; |