< prev index next >

src/hotspot/share/opto/machnode.hpp

Print this page


   1 /*
   2  * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 981     init_class_id(Class_MachCallRuntime);
 982   }
 983   virtual int ret_addr_offset();
 984 #ifndef PRODUCT
 985   virtual void dump_spec(outputStream *st) const;
 986 #endif
 987 };
 988 
 989 class MachCallLeafNode: public MachCallRuntimeNode {
 990 public:
 991   MachCallLeafNode() : MachCallRuntimeNode() {
 992     init_class_id(Class_MachCallLeaf);
 993   }
 994 };
 995 
 996 //------------------------------MachHaltNode-----------------------------------
 997 // Machine-specific versions of halt nodes
 998 class MachHaltNode : public MachReturnNode {
 999 public:
1000   virtual JVMState* jvms() const;













1001 };
1002 
1003 
1004 //------------------------------MachTempNode-----------------------------------
1005 // Node used by the adlc to construct inputs to represent temporary registers
1006 class MachTempNode : public MachNode {
1007 private:
1008   MachOper *_opnd_array[1];
1009 
1010 public:
1011   virtual const RegMask &out_RegMask() const { return *_opnds[0]->in_RegMask(0); }
1012   virtual uint rule() const { return 9999999; }
1013   virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {}
1014 
1015   MachTempNode(MachOper* oper) {
1016     init_class_id(Class_MachTemp);
1017     _num_opnds = 1;
1018     _opnds = _opnd_array;
1019     add_req(NULL);
1020     _opnds[0] = oper;


   1 /*
   2  * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  *


 981     init_class_id(Class_MachCallRuntime);
 982   }
 983   virtual int ret_addr_offset();
 984 #ifndef PRODUCT
 985   virtual void dump_spec(outputStream *st) const;
 986 #endif
 987 };
 988 
 989 class MachCallLeafNode: public MachCallRuntimeNode {
 990 public:
 991   MachCallLeafNode() : MachCallRuntimeNode() {
 992     init_class_id(Class_MachCallLeaf);
 993   }
 994 };
 995 
 996 //------------------------------MachHaltNode-----------------------------------
 997 // Machine-specific versions of halt nodes
 998 class MachHaltNode : public MachReturnNode {
 999 public:
1000   virtual JVMState* jvms() const;
1001 };
1002 
1003 class MachMemBarNode : public MachNode {
1004   virtual uint size_of() const; // Size is bigger
1005 public:
1006   const TypePtr* _adr_type;     // memory effects of call or return
1007   MachMemBarNode() : MachNode() {
1008     init_class_id(Class_MachMemBar);
1009     _adr_type = TypePtr::BOTTOM; // the default: all of memory
1010   }
1011 
1012   void set_adr_type(const TypePtr* atp) { _adr_type = atp; }
1013   virtual const TypePtr *adr_type() const;
1014 };
1015 
1016 
1017 //------------------------------MachTempNode-----------------------------------
1018 // Node used by the adlc to construct inputs to represent temporary registers
1019 class MachTempNode : public MachNode {
1020 private:
1021   MachOper *_opnd_array[1];
1022 
1023 public:
1024   virtual const RegMask &out_RegMask() const { return *_opnds[0]->in_RegMask(0); }
1025   virtual uint rule() const { return 9999999; }
1026   virtual void emit(CodeBuffer &cbuf, PhaseRegAlloc *ra_) const {}
1027 
1028   MachTempNode(MachOper* oper) {
1029     init_class_id(Class_MachTemp);
1030     _num_opnds = 1;
1031     _opnds = _opnd_array;
1032     add_req(NULL);
1033     _opnds[0] = oper;


< prev index next >