src/share/vm/code/codeBlob.hpp

Print this page




   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  *
  23  */
  24 








  25 // CodeBlob - superclass for all entries in the CodeCache.
  26 //
  27 // Suptypes are:
  28 //   nmethod            : Compiled Java methods (include method that calls to native code)
  29 //   RuntimeStub        : Call to VM runtime methods
  30 //   DeoptimizationBlob : Used for deoptimizatation
  31 //   ExceptionBlob      : Used for stack unrolling
  32 //   SafepointBlob      : Used to handle illegal instruction exceptions
  33 //
  34 //
  35 // Layout:
  36 //   - header
  37 //   - relocation
  38 //   - content space
  39 //     - instruction space
  40 //   - data space
  41 class DeoptimizationBlob;
  42 
  43 class CodeBlob VALUE_OBJ_CLASS_SPEC {
  44 


 482     OopMapSet*  oop_maps,
 483     int         frame_size
 484   );
 485 
 486   void* operator new(size_t s, unsigned size);
 487 
 488  public:
 489   // Creation
 490   static SafepointBlob* create(
 491     CodeBuffer* cb,
 492     OopMapSet*  oop_maps,
 493     int         frame_size
 494   );
 495 
 496   // GC for args
 497   void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f)  { /* nothing to do */ }
 498 
 499   // Typing
 500   bool is_safepoint_stub() const                 { return true; }
 501 };




   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  *
  23  */
  24 
  25 #ifndef SHARE_VM_CODE_CODEBLOB_HPP
  26 #define SHARE_VM_CODE_CODEBLOB_HPP
  27 
  28 #include "asm/codeBuffer.hpp"
  29 #include "compiler/oopMap.hpp"
  30 #include "runtime/frame.hpp"
  31 #include "runtime/handles.hpp"
  32 
  33 // CodeBlob - superclass for all entries in the CodeCache.
  34 //
  35 // Suptypes are:
  36 //   nmethod            : Compiled Java methods (include method that calls to native code)
  37 //   RuntimeStub        : Call to VM runtime methods
  38 //   DeoptimizationBlob : Used for deoptimizatation
  39 //   ExceptionBlob      : Used for stack unrolling
  40 //   SafepointBlob      : Used to handle illegal instruction exceptions
  41 //
  42 //
  43 // Layout:
  44 //   - header
  45 //   - relocation
  46 //   - content space
  47 //     - instruction space
  48 //   - data space
  49 class DeoptimizationBlob;
  50 
  51 class CodeBlob VALUE_OBJ_CLASS_SPEC {
  52 


 490     OopMapSet*  oop_maps,
 491     int         frame_size
 492   );
 493 
 494   void* operator new(size_t s, unsigned size);
 495 
 496  public:
 497   // Creation
 498   static SafepointBlob* create(
 499     CodeBuffer* cb,
 500     OopMapSet*  oop_maps,
 501     int         frame_size
 502   );
 503 
 504   // GC for args
 505   void preserve_callee_argument_oops(frame fr, const RegisterMap* reg_map, OopClosure* f)  { /* nothing to do */ }
 506 
 507   // Typing
 508   bool is_safepoint_stub() const                 { return true; }
 509 };
 510 
 511 #endif // SHARE_VM_CODE_CODEBLOB_HPP