< prev index next >
src/share/vm/c1/c1_Runtime1.hpp
Print this page
rev 12906 : [mq]: gc_interface
@@ -66,22 +66,25 @@
stub(deoptimize) \
stub(access_field_patching) \
stub(load_klass_patching) \
stub(load_mirror_patching) \
stub(load_appendix_patching) \
- stub(g1_pre_barrier_slow) \
- stub(g1_post_barrier_slow) \
stub(fpu2long_stub) \
stub(counter_overflow) \
stub(predicate_failed_trap) \
last_entry(number_of_ids)
#define DECLARE_STUB_ID(x) x ## _id ,
#define DECLARE_LAST_STUB_ID(x) x
#define STUB_NAME(x) #x " Runtime1 stub",
#define LAST_STUB_NAME(x) #x " Runtime1 stub"
+class StubAssemblerCodeGenClosure: public Closure {
+ public:
+ virtual OopMapSet* generate_code(StubAssembler* sasm) = 0;
+};
+
class Runtime1: public AllStatic {
friend class VMStructs;
friend class ArrayCopyStub;
public:
@@ -94,11 +97,10 @@
static int _resolve_invoke_cnt;
static int _handle_wrong_method_cnt;
static int _ic_miss_cnt;
static int _generic_arraycopy_cnt;
static int _primitive_arraycopy_cnt;
- static int _oop_arraycopy_cnt;
static int _generic_arraycopystub_cnt;
static int _arraycopy_slowcase_cnt;
static int _arraycopy_checkcast_cnt;
static int _arraycopy_checkcast_attempt_cnt;
static int _new_type_array_slowcase_cnt;
@@ -121,12 +123,15 @@
private:
static CodeBlob* _blobs[number_of_ids];
static const char* _blob_names[];
// stub generation
+ public:
+ static CodeBlob* generate_blob(BufferBlob* buffer_blob, int stub_id, const char* name, bool expect_oop_map, StubAssemblerCodeGenClosure *cl);
static void generate_blob_for(BufferBlob* blob, StubID id);
static OopMapSet* generate_code_for(StubID id, StubAssembler* sasm);
+ private:
static OopMapSet* generate_exception_throw(StubAssembler* sasm, address target, bool has_argument);
static OopMapSet* generate_handle_exception(StubID id, StubAssembler* sasm);
static void generate_unwind_exception(StubAssembler *sasm);
static OopMapSet* generate_patching(StubAssembler* sasm, address target);
@@ -188,11 +193,10 @@
#endif
// directly accessible leaf routine
static int arraycopy(oopDesc* src, int src_pos, oopDesc* dst, int dst_pos, int length);
static void primitive_arraycopy(HeapWord* src, HeapWord* dst, int length);
- static void oop_arraycopy(HeapWord* src, HeapWord* dst, int length);
static int is_instance_of(oopDesc* mirror, oopDesc* obj);
static void predicate_failed_trap(JavaThread* thread);
static void print_statistics() PRODUCT_RETURN;
< prev index next >