comparison src/share/vm/c1x/c1x_Compiler.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 695451afc619
children efba53f86c4f
comparison
equal deleted inserted replaced
1428:695451afc619 1429:abc670a709dc
24 24
25 class C1XCompiler : public AbstractCompiler { 25 class C1XCompiler : public AbstractCompiler {
26 26
27 private: 27 private:
28 28
29 bool _initialized; 29 bool _initialized;
30
31 static C1XCompiler* _instance;
30 32
31 public: 33 public:
32 34
33 C1XCompiler() { _initialized = false; } 35 C1XCompiler();
36
37 static C1XCompiler* instance() { return _instance; }
38
34 39
35 virtual const char* name() { return "C1X"; } 40 virtual const char* name() { return "C1X"; }
36 41
37 // Native / OSR not supported 42 // Native / OSR not supported
38 virtual bool supports_native() { return false; } 43 virtual bool supports_native() { return false; }
52 virtual void print_timers(); 57 virtual void print_timers();
53 58
54 static oop get_RiType(ciType *klass, klassOop accessor, TRAPS); 59 static oop get_RiType(ciType *klass, klassOop accessor, TRAPS);
55 static oop get_RiField(ciField *ciField, TRAPS); 60 static oop get_RiField(ciField *ciField, TRAPS);
56 61
57 /* 62 static oop createHotSpotTypeResolved(KlassHandle klass, Handle name, TRAPS);
58 static oop get_RiMethod(ciMethod *ciMethod, TRAPS); 63
59 static oop get_RiType(klassOop klass, TRAPS);
60 static oop get_RiMethod(methodOop method, TRAPS);
61 static oop get_unresolved_RiType(oop klass, klassOop accessingType, TRAPS);
62 static oop get_RiConstantPool(constantPoolOop cpOop, TRAPS);
63 */
64 }; 64 };
65 65
66 // Tracing macros 66 // Tracing macros
67 67
68 #define IF_TRACE_C1X_1 if (TraceC1X >= 1) 68 #define IF_TRACE_C1X_1 if (TraceC1X >= 1)
69 #define IF_TRACE_C1X_2 if (TraceC1X >= 2) 69 #define IF_TRACE_C1X_2 if (TraceC1X >= 2)
70 #define IF_TRACE_C1X_3 if (TraceC1X >= 3) 70 #define IF_TRACE_C1X_3 if (TraceC1X >= 3)
71 #define IF_TRACE_C1X_4 if (TraceC1X >= 4) 71 #define IF_TRACE_C1X_4 if (TraceC1X >= 4)
72 #define IF_TRACE_C1X_5 if (TraceC1X >= 5) 72 #define IF_TRACE_C1X_5 if (TraceC1X >= 5)
73 73
74 #define TRACE_C1X_1 if (TraceC1X >= 1) tty->print("TraceC1X-1: "); if (TraceC1X >= 1) tty->print_cr 74 // using commas to keep one-instruction semantics
75 #define TRACE_C1X_2 if (TraceC1X >= 2) tty->print(" TraceC1X-2: "); if (TraceC1X >= 2) tty->print_cr 75 #define TRACE_C1X_1 if (TraceC1X >= 1 && (tty->print("TraceC1X-1: "), true)) tty->print_cr
76 #define TRACE_C1X_3 if (TraceC1X >= 3) tty->print(" TraceC1X-3: "); if (TraceC1X >= 3) tty->print_cr 76 #define TRACE_C1X_2 if (TraceC1X >= 2 && (tty->print(" TraceC1X-2: "), true)) tty->print_cr
77 #define TRACE_C1X_4 if (TraceC1X >= 4) tty->print(" TraceC1X-4: "); if (TraceC1X >= 4) tty->print_cr 77 #define TRACE_C1X_3 if (TraceC1X >= 3 && (tty->print(" TraceC1X-3: "), true)) tty->print_cr
78 #define TRACE_C1X_5 if (TraceC1X >= 5) tty->print(" TraceC1X-5: "); if (TraceC1X >= 5) tty->print_cr 78 #define TRACE_C1X_4 if (TraceC1X >= 4 && (tty->print(" TraceC1X-4: "), true)) tty->print_cr
79 #define TRACE_C1X_5 if (TraceC1X >= 5 && (tty->print(" TraceC1X-5: "), true)) tty->print_cr
79 80
80 81
81 82