comparison src/share/vm/c1/c1_Runtime1.hpp @ 1429:abc670a709dc

* -XX:TraceC1X=0...5 controls the native c1x tracing * -Dc1x.debug=true turns on the logging proxies and lots of log output on the java side * provide more information about types to the compiler (type hierarchy, etc) * provide exception handler tables to the compiler * add exception handlers to the nmethod * correct implementation of ExceptionObject * exception handling/unwinding entry points * modified versions of handle/unwind exception stubs using standard calling conventions * exception throwing * implicit null pointer exception, implicit div by 0 exception * arraystore/classcast/arrayindex exceptions * checkcast implementation * newarray, anewarray, multinewarray implementation * correct new instance initialization * access to java class mirrors (for ldc) * unresolved methods * class resolving - class patching (asssembly prototype copying)
author Lukas Stadler <lukas.stadler@oracle.com>
date Tue, 31 Aug 2010 22:13:30 -0700
parents 37f87013dfd8
children 72cfb36c6bb2
comparison
equal deleted inserted replaced
1428:695451afc619 1429:abc670a709dc
58 stub(jvmti_exception_throw) \ 58 stub(jvmti_exception_throw) \
59 stub(g1_pre_barrier_slow) \ 59 stub(g1_pre_barrier_slow) \
60 stub(g1_post_barrier_slow) \ 60 stub(g1_post_barrier_slow) \
61 stub(fpu2long_stub) \ 61 stub(fpu2long_stub) \
62 stub(counter_overflow) \ 62 stub(counter_overflow) \
63 stub(c1x_unwind_exception_call) \
64 stub(c1x_handle_exception) \
65 stub(c1x_global_implicit_null) \
66 stub(c1x_throw_div0_exception) \
67 stub(c1x_slow_subtype_check) \
63 last_entry(number_of_ids) 68 last_entry(number_of_ids)
64 69
65 #define DECLARE_STUB_ID(x) x ## _id , 70 #define DECLARE_STUB_ID(x) x ## _id ,
66 #define DECLARE_LAST_STUB_ID(x) x 71 #define DECLARE_LAST_STUB_ID(x) x
67 #define STUB_NAME(x) #x " Runtime1 stub", 72 #define STUB_NAME(x) #x " Runtime1 stub",
122 // stub generation 127 // stub generation
123 static void generate_blob_for(StubID id); 128 static void generate_blob_for(StubID id);
124 static OopMapSet* generate_code_for(StubID id, StubAssembler* masm); 129 static OopMapSet* generate_code_for(StubID id, StubAssembler* masm);
125 static OopMapSet* generate_exception_throw(StubAssembler* sasm, address target, bool has_argument); 130 static OopMapSet* generate_exception_throw(StubAssembler* sasm, address target, bool has_argument);
126 static void generate_handle_exception(StubAssembler *sasm, OopMapSet* oop_maps, OopMap* oop_map, bool ignore_fpu_registers = false); 131 static void generate_handle_exception(StubAssembler *sasm, OopMapSet* oop_maps, OopMap* oop_map, bool ignore_fpu_registers = false);
132 static void c1x_generate_handle_exception(StubAssembler *sasm, OopMapSet* oop_maps, OopMap* oop_map);
127 static void generate_unwind_exception(StubAssembler *sasm); 133 static void generate_unwind_exception(StubAssembler *sasm);
128 static OopMapSet* generate_patching(StubAssembler* sasm, address target); 134 static OopMapSet* generate_patching(StubAssembler* sasm, address target);
129 135
130 static OopMapSet* generate_stub_call(StubAssembler* sasm, Register result, address entry, 136 static OopMapSet* generate_stub_call(StubAssembler* sasm, Register result, address entry,
131 Register arg1 = noreg, Register arg2 = noreg, Register arg3 = noreg); 137 Register arg1 = noreg, Register arg2 = noreg, Register arg3 = noreg);