hotspot/src/share/vm/c1/c1_Instruction.hpp
changeset 28954 7dda6c26cc98
parent 24933 c16c7a4ac386
child 33633 8a83967eb351
equal deleted inserted replaced
28952:7fe008f8f88c 28954:7dda6c26cc98
     1 /*
     1 /*
     2  * Copyright (c) 1999, 2013, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1999, 2015, Oracle and/or its affiliates. All rights reserved.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     4  *
     4  *
     5  * This code is free software; you can redistribute it and/or modify it
     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
     6  * under the terms of the GNU General Public License version 2 only, as
     7  * published by the Free Software Foundation.
     7  * published by the Free Software Foundation.
   101 class       UnsafePutRaw;
   101 class       UnsafePutRaw;
   102 class     UnsafeObjectOp;
   102 class     UnsafeObjectOp;
   103 class       UnsafeGetObject;
   103 class       UnsafeGetObject;
   104 class       UnsafePutObject;
   104 class       UnsafePutObject;
   105 class         UnsafeGetAndSetObject;
   105 class         UnsafeGetAndSetObject;
   106 class       UnsafePrefetch;
       
   107 class         UnsafePrefetchRead;
       
   108 class         UnsafePrefetchWrite;
       
   109 class   ProfileCall;
   106 class   ProfileCall;
   110 class   ProfileReturnType;
   107 class   ProfileReturnType;
   111 class   ProfileInvoke;
   108 class   ProfileInvoke;
   112 class   RuntimeCall;
   109 class   RuntimeCall;
   113 class   MemBar;
   110 class   MemBar;
   207   virtual void do_UnsafeGetRaw   (UnsafeGetRaw*    x) = 0;
   204   virtual void do_UnsafeGetRaw   (UnsafeGetRaw*    x) = 0;
   208   virtual void do_UnsafePutRaw   (UnsafePutRaw*    x) = 0;
   205   virtual void do_UnsafePutRaw   (UnsafePutRaw*    x) = 0;
   209   virtual void do_UnsafeGetObject(UnsafeGetObject* x) = 0;
   206   virtual void do_UnsafeGetObject(UnsafeGetObject* x) = 0;
   210   virtual void do_UnsafePutObject(UnsafePutObject* x) = 0;
   207   virtual void do_UnsafePutObject(UnsafePutObject* x) = 0;
   211   virtual void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) = 0;
   208   virtual void do_UnsafeGetAndSetObject(UnsafeGetAndSetObject* x) = 0;
   212   virtual void do_UnsafePrefetchRead (UnsafePrefetchRead*  x) = 0;
       
   213   virtual void do_UnsafePrefetchWrite(UnsafePrefetchWrite* x) = 0;
       
   214   virtual void do_ProfileCall    (ProfileCall*     x) = 0;
   209   virtual void do_ProfileCall    (ProfileCall*     x) = 0;
   215   virtual void do_ProfileReturnType (ProfileReturnType*  x) = 0;
   210   virtual void do_ProfileReturnType (ProfileReturnType*  x) = 0;
   216   virtual void do_ProfileInvoke  (ProfileInvoke*   x) = 0;
   211   virtual void do_ProfileInvoke  (ProfileInvoke*   x) = 0;
   217   virtual void do_RuntimeCall    (RuntimeCall*     x) = 0;
   212   virtual void do_RuntimeCall    (RuntimeCall*     x) = 0;
   218   virtual void do_MemBar         (MemBar*          x) = 0;
   213   virtual void do_MemBar         (MemBar*          x) = 0;
  2440   // generic
  2435   // generic
  2441   virtual void input_values_do(ValueVisitor* f)   { UnsafeObjectOp::input_values_do(f);
  2436   virtual void input_values_do(ValueVisitor* f)   { UnsafeObjectOp::input_values_do(f);
  2442                                                    f->visit(&_value); }
  2437                                                    f->visit(&_value); }
  2443 };
  2438 };
  2444 
  2439 
  2445 BASE(UnsafePrefetch, UnsafeObjectOp)
       
  2446  public:
       
  2447   UnsafePrefetch(Value object, Value offset)
       
  2448   : UnsafeObjectOp(T_VOID, object, offset, false, false)
       
  2449   {
       
  2450   }
       
  2451 };
       
  2452 
       
  2453 
       
  2454 LEAF(UnsafePrefetchRead, UnsafePrefetch)
       
  2455  public:
       
  2456   UnsafePrefetchRead(Value object, Value offset)
       
  2457   : UnsafePrefetch(object, offset)
       
  2458   {
       
  2459     ASSERT_VALUES
       
  2460   }
       
  2461 };
       
  2462 
       
  2463 
       
  2464 LEAF(UnsafePrefetchWrite, UnsafePrefetch)
       
  2465  public:
       
  2466   UnsafePrefetchWrite(Value object, Value offset)
       
  2467   : UnsafePrefetch(object, offset)
       
  2468   {
       
  2469     ASSERT_VALUES
       
  2470   }
       
  2471 };
       
  2472 
       
  2473 LEAF(ProfileCall, Instruction)
  2440 LEAF(ProfileCall, Instruction)
  2474  private:
  2441  private:
  2475   ciMethod*        _method;
  2442   ciMethod*        _method;
  2476   int              _bci_of_invoke;
  2443   int              _bci_of_invoke;
  2477   ciMethod*        _callee;         // the method that is called at the given bci
  2444   ciMethod*        _callee;         // the method that is called at the given bci