< prev index next >
src/share/vm/code/codeBlob.hpp
Print this page
@@ -118,10 +118,11 @@
virtual bool is_safepoint_stub() const { return false; }
virtual bool is_adapter_blob() const { return false; }
virtual bool is_method_handles_adapter_blob() const { return false; }
virtual bool is_aot() const { return false; }
virtual bool is_compiled() const { return false; }
+ virtual bool is_buffered_value_type_blob() const { return false; }
inline bool is_compiled_by_c1() const { return _type == compiler_c1; };
inline bool is_compiled_by_c2() const { return _type == compiler_c2; };
inline bool is_compiled_by_jvmci() const { return _type == compiler_jvmci; };
inline bool is_compiled_by_shark() const { return _type == compiler_shark; };
@@ -358,10 +359,11 @@
class BufferBlob: public RuntimeBlob {
friend class VMStructs;
friend class AdapterBlob;
friend class MethodHandlesAdapterBlob;
+ friend class BufferedValueTypeBlob;
friend class WhiteBox;
private:
// Creation support
BufferBlob(const char* name, int size);
@@ -424,10 +426,30 @@
// Typing
virtual bool is_method_handles_adapter_blob() const { return true; }
};
+//----------------------------------------------------------------------------------------------------
+// BufferedValueTypeBlob : used for pack/unpack handlers
+
+class BufferedValueTypeBlob: public BufferBlob {
+private:
+ const int _pack_fields_off;
+ const int _unpack_fields_off;
+
+ BufferedValueTypeBlob(int size, CodeBuffer* cb, int pack_fields_off, int unpack_fields_off);
+
+public:
+ // Creation
+ static BufferedValueTypeBlob* create(CodeBuffer* cb, int pack_fields_off, int unpack_fields_off);
+
+ address pack_fields() const { return code_begin() + _pack_fields_off; }
+ address unpack_fields() const { return code_begin() + _unpack_fields_off; }
+
+ // Typing
+ virtual bool is_buffered_value_type_blob() const { return true; }
+};
//----------------------------------------------------------------------------------------------------
// RuntimeStub: describes stubs used by compiled code to call a (static) C++ runtime routine
class RuntimeStub: public RuntimeBlob {
< prev index next >