446 dump();
447 #endif
448 ShouldNotCallThis();
449 }
450
451 virtual const RegMask &in_RegMask(uint idx) const {
452 if (idx == mach_constant_base_node_input())
453 return MachConstantBaseNode::static_out_RegMask();
454 return MachNode::in_RegMask(idx);
455 }
456
457 // Input edge of MachConstantBaseNode.
458 virtual uint mach_constant_base_node_input() const { return req() - 1; }
459
460 int constant_offset();
461 int constant_offset() const { return ((MachConstantNode*) this)->constant_offset(); }
462 // Unchecked version to avoid assertions in debug output.
463 int constant_offset_unchecked() const;
464 };
465
466 //------------------------------MachUEPNode-----------------------------------
467 // Machine Unvalidated Entry Point Node
468 class MachUEPNode : public MachIdealNode {
469 public:
470 MachUEPNode( ) {}
471 virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
472 virtual uint size(PhaseRegAlloc *ra_) const;
473
474 #ifndef PRODUCT
475 virtual const char *Name() const { return "Unvalidated-Entry-Point"; }
476 virtual void format( PhaseRegAlloc *, outputStream *st ) const;
477 #endif
478 };
479
480 //------------------------------MachPrologNode--------------------------------
481 // Machine function Prolog Node
482 class MachPrologNode : public MachIdealNode {
483 public:
484 MachPrologNode( ) {}
485 virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
486 virtual uint size(PhaseRegAlloc *ra_) const;
487 virtual int reloc() const;
488
489 #ifndef PRODUCT
490 virtual const char *Name() const { return "Prolog"; }
491 virtual void format( PhaseRegAlloc *, outputStream *st ) const;
492 #endif
493 };
494
495 //------------------------------MachEpilogNode--------------------------------
496 // Machine function Epilog Node
497 class MachEpilogNode : public MachIdealNode {
498 public:
499 MachEpilogNode(bool do_poll = false) : _do_polling(do_poll) {}
500 virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
501 virtual uint size(PhaseRegAlloc *ra_) const;
502 virtual int reloc() const;
503 virtual const Pipeline *pipeline() const;
504
505 private:
506 bool _do_polling;
507
508 public:
|
446 dump();
447 #endif
448 ShouldNotCallThis();
449 }
450
451 virtual const RegMask &in_RegMask(uint idx) const {
452 if (idx == mach_constant_base_node_input())
453 return MachConstantBaseNode::static_out_RegMask();
454 return MachNode::in_RegMask(idx);
455 }
456
457 // Input edge of MachConstantBaseNode.
458 virtual uint mach_constant_base_node_input() const { return req() - 1; }
459
460 int constant_offset();
461 int constant_offset() const { return ((MachConstantNode*) this)->constant_offset(); }
462 // Unchecked version to avoid assertions in debug output.
463 int constant_offset_unchecked() const;
464 };
465
466 //------------------------------MachVVEPNode-----------------------------------
467 // Machine Verified Value Type Entry Point Node
468 class MachVVEPNode : public MachIdealNode {
469 public:
470 MachVVEPNode(Label* verified_entry) : _verified_entry(verified_entry) {}
471 virtual void emit(CodeBuffer& cbuf, PhaseRegAlloc* ra_) const;
472 virtual uint size(PhaseRegAlloc* ra_) const;
473
474 #ifndef PRODUCT
475 virtual const char* Name() const { return "Verified ValueType Entry-Point"; }
476 virtual void format(PhaseRegAlloc*, outputStream* st) const;
477 #endif
478 private:
479 Label* _verified_entry;
480 };
481
482 //------------------------------MachUEPNode-----------------------------------
483 // Machine Unvalidated Entry Point Node
484 class MachUEPNode : public MachIdealNode {
485 public:
486 MachUEPNode( ) {}
487 virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
488 virtual uint size(PhaseRegAlloc *ra_) const;
489
490 #ifndef PRODUCT
491 virtual const char *Name() const { return "Unvalidated-Entry-Point"; }
492 virtual void format( PhaseRegAlloc *, outputStream *st ) const;
493 #endif
494 };
495
496 //------------------------------MachPrologNode--------------------------------
497 // Machine function Prolog Node
498 class MachPrologNode : public MachIdealNode {
499 public:
500 MachPrologNode(Label* verified_entry) : _verified_entry(verified_entry) {
501 init_class_id(Class_MachProlog);
502 }
503 virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
504 virtual uint size(PhaseRegAlloc *ra_) const;
505 virtual int reloc() const;
506
507 Label* _verified_entry;
508 #ifndef PRODUCT
509 virtual const char *Name() const { return "Prolog"; }
510 virtual void format( PhaseRegAlloc *, outputStream *st ) const;
511 #endif
512 };
513
514 //------------------------------MachEpilogNode--------------------------------
515 // Machine function Epilog Node
516 class MachEpilogNode : public MachIdealNode {
517 public:
518 MachEpilogNode(bool do_poll = false) : _do_polling(do_poll) {}
519 virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const;
520 virtual uint size(PhaseRegAlloc *ra_) const;
521 virtual int reloc() const;
522 virtual const Pipeline *pipeline() const;
523
524 private:
525 bool _do_polling;
526
527 public:
|