1443 CodeStub* stub() const { return _stub; }
1444
1445 void change_block(BlockBegin* b);
1446 void change_ublock(BlockBegin* b);
1447 void negate_cond();
1448
1449 virtual void emit_code(LIR_Assembler* masm);
1450 virtual LIR_OpBranch* as_OpBranch() { return this; }
1451 virtual void print_instr(outputStream* out) const PRODUCT_RETURN;
1452 };
1453
1454 class LIR_OpShenandoahWriteBarrier : public LIR_Op1 {
1455 friend class LIR_OpVisitState;
1456
1457 private:
1458 bool _need_null_check;
1459
1460 public:
1461 LIR_OpShenandoahWriteBarrier(LIR_Opr obj, LIR_Opr result, CodeEmitInfo* info, bool need_null_check)
1462 : LIR_Op1(lir_shenandoah_wb, obj, result, T_OBJECT, lir_patch_none, info), _need_null_check(need_null_check) {
1463 assert(UseShenandoahGC && (ShenandoahWriteBarrier || ShenandoahStoreValWriteBarrier || ShenandoahStoreValEnqueueBarrier), "should be enabled");
1464 }
1465 bool need_null_check() const { return _need_null_check; }
1466 virtual void emit_code(LIR_Assembler* masm);
1467 virtual LIR_OpShenandoahWriteBarrier* as_OpShenandoahWriteBarrier() { return this; }
1468 virtual void print_instr(outputStream* out) const PRODUCT_RETURN;
1469
1470 };
1471
1472 class ConversionStub;
1473
1474 class LIR_OpConvert: public LIR_Op1 {
1475 friend class LIR_OpVisitState;
1476
1477 private:
1478 Bytecodes::Code _bytecode;
1479 ConversionStub* _stub;
1480
1481 public:
1482 LIR_OpConvert(Bytecodes::Code code, LIR_Opr opr, LIR_Opr result, ConversionStub* stub)
1483 : LIR_Op1(lir_convert, opr, result)
|
1443 CodeStub* stub() const { return _stub; }
1444
1445 void change_block(BlockBegin* b);
1446 void change_ublock(BlockBegin* b);
1447 void negate_cond();
1448
1449 virtual void emit_code(LIR_Assembler* masm);
1450 virtual LIR_OpBranch* as_OpBranch() { return this; }
1451 virtual void print_instr(outputStream* out) const PRODUCT_RETURN;
1452 };
1453
1454 class LIR_OpShenandoahWriteBarrier : public LIR_Op1 {
1455 friend class LIR_OpVisitState;
1456
1457 private:
1458 bool _need_null_check;
1459
1460 public:
1461 LIR_OpShenandoahWriteBarrier(LIR_Opr obj, LIR_Opr result, CodeEmitInfo* info, bool need_null_check)
1462 : LIR_Op1(lir_shenandoah_wb, obj, result, T_OBJECT, lir_patch_none, info), _need_null_check(need_null_check) {
1463 assert(UseShenandoahGC && (ShenandoahWriteBarrier || ShenandoahStoreValEnqueueBarrier), "should be enabled");
1464 }
1465 bool need_null_check() const { return _need_null_check; }
1466 virtual void emit_code(LIR_Assembler* masm);
1467 virtual LIR_OpShenandoahWriteBarrier* as_OpShenandoahWriteBarrier() { return this; }
1468 virtual void print_instr(outputStream* out) const PRODUCT_RETURN;
1469
1470 };
1471
1472 class ConversionStub;
1473
1474 class LIR_OpConvert: public LIR_Op1 {
1475 friend class LIR_OpVisitState;
1476
1477 private:
1478 Bytecodes::Code _bytecode;
1479 ConversionStub* _stub;
1480
1481 public:
1482 LIR_OpConvert(Bytecodes::Code code, LIR_Opr opr, LIR_Opr result, ConversionStub* stub)
1483 : LIR_Op1(lir_convert, opr, result)
|