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 |