Mercurial > hg > graal-compiler
comparison src/share/vm/c1x/c1x_VMExits.cpp @ 1413:1ecc8f0aad00
Draft implementation of HotSpot CRI / first method compiling without exception.
author | Thomas Wuerthinger <thomas.wuerthinger@gmail.com> |
---|---|
date | Tue, 18 May 2010 17:43:37 +0200 |
parents | b30a2cd5e3a2 |
children | e1a275dbc8cd |
comparison
equal
deleted
inserted
replaced
1412:9195b99c841b | 1413:1ecc8f0aad00 |
---|---|
29 | 29 |
30 KlassHandle &VMExits::vmExitsKlass() { | 30 KlassHandle &VMExits::vmExitsKlass() { |
31 | 31 |
32 if (_vmExitsKlass.is_null()) { | 32 if (_vmExitsKlass.is_null()) { |
33 Handle nullh; | 33 Handle nullh; |
34 _vmExitsKlass = SystemDictionary::resolve_or_null(vmSymbols::com_sun_hotspot_c1x_VMExits(), nullh, nullh, Thread::current()); | 34 _vmExitsKlass = SystemDictionary::resolve_or_null(vmSymbols::com_sun_hotspot_c1x_VMExits(), SystemDictionary::java_system_loader(), nullh, Thread::current()); |
35 if (_vmExitsKlass.is_null()) { | 35 if (_vmExitsKlass.is_null()) { |
36 fatal("Could not find class com.sun.hotspot.c1x.VMExits"); | 36 fatal("Could not find class com.sun.hotspot.c1x.VMExits"); |
37 } | 37 } |
38 } | 38 } |
39 return _vmExitsKlass; | 39 return _vmExitsKlass; |
56 tty->print_cr("exc pending"); | 56 tty->print_cr("exc pending"); |
57 } | 57 } |
58 return (oop)result.get_jobject(); | 58 return (oop)result.get_jobject(); |
59 } | 59 } |
60 | 60 |
61 oop VMExits::createRiField(klassOop k, int index) { | 61 oop VMExits::createRiField(oop field_holder, symbolOop field_name, oop field_type, int index) { |
62 JavaValue result(T_OBJECT); | 62 JavaValue result(T_OBJECT); |
63 JavaCallArguments args; | 63 JavaCallArguments args; |
64 args.push_oop(k); | 64 args.push_oop(field_holder); |
65 args.push_oop(field_name); | |
66 args.push_oop(field_type); | |
65 args.push_int(index); | 67 args.push_int(index); |
66 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiField_name(), vmSymbols::createRiField_signature(), &args, Thread::current()); | 68 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiField_name(), vmSymbols::createRiField_signature(), &args, Thread::current()); |
67 return (oop)result.get_jobject(); | 69 return (oop)result.get_jobject(); |
68 } | 70 } |
69 | 71 |
73 args.push_oop(k); | 75 args.push_oop(k); |
74 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiType_name(), vmSymbols::createRiType_signature(), &args, Thread::current()); | 76 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiType_name(), vmSymbols::createRiType_signature(), &args, Thread::current()); |
75 return (oop)result.get_jobject(); | 77 return (oop)result.get_jobject(); |
76 } | 78 } |
77 | 79 |
80 oop VMExits::createRiTypePrimitive(int basic_type) { | |
81 JavaValue result(T_OBJECT); | |
82 JavaCallArguments args; | |
83 args.push_int(basic_type); | |
84 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiTypePrimitive_name(), vmSymbols::createRiTypePrimitive_signature(), &args, Thread::current()); | |
85 return (oop)result.get_jobject(); | |
86 } | |
87 | |
88 oop VMExits::createRiTypeUnresolved(symbolOop name, klassOop accessor) { | |
89 JavaValue result(T_OBJECT); | |
90 JavaCallArguments args; | |
91 args.push_oop(name); | |
92 args.push_oop(accessor); | |
93 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiTypeUnresolved_name(), vmSymbols::createRiTypeUnresolved_signature(), &args, Thread::current()); | |
94 return (oop)result.get_jobject(); | |
95 } | |
96 | |
78 oop VMExits::createRiConstantPool(constantPoolOop cp) { | 97 oop VMExits::createRiConstantPool(constantPoolOop cp) { |
79 JavaValue result(T_OBJECT); | 98 JavaValue result(T_OBJECT); |
80 JavaCallArguments args; | 99 JavaCallArguments args; |
81 args.push_oop(cp); | 100 args.push_oop(cp); |
82 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiConstantPool_name(), vmSymbols::createRiConstantPool_signature(), &args, Thread::current()); | 101 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiConstantPool_name(), vmSymbols::createRiConstantPool_signature(), &args, Thread::current()); |
83 return (oop)result.get_jobject(); | 102 return (oop)result.get_jobject(); |
84 } | 103 } |
104 | |
105 oop VMExits::createRiSignature(symbolOop symbol) { | |
106 JavaValue result(T_OBJECT); | |
107 JavaCallArguments args; | |
108 args.push_oop(symbol); | |
109 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiSignature_name(), vmSymbols::createRiSignature_signature(), &args, Thread::current()); | |
110 return (oop)result.get_jobject(); | |
111 } | |
112 | |
113 oop VMExits::createCiConstantInt(jint value) { | |
114 JavaValue result(T_OBJECT); | |
115 JavaCallArguments args; | |
116 args.push_int(value); | |
117 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createCiConstantInt_name(), vmSymbols::createCiConstantInt_signature(), &args, Thread::current()); | |
118 return (oop)result.get_jobject(); | |
119 | |
120 } | |
121 | |
122 oop VMExits::createCiConstantLong(jlong value) { | |
123 JavaValue result(T_OBJECT); | |
124 JavaCallArguments args; | |
125 args.push_long(value); | |
126 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createCiConstantLong_name(), vmSymbols::createCiConstantLong_signature(), &args, Thread::current()); | |
127 return (oop)result.get_jobject(); | |
128 | |
129 } | |
130 | |
131 oop VMExits::createCiConstantFloat(jfloat value) { | |
132 JavaValue result(T_OBJECT); | |
133 JavaCallArguments args; | |
134 args.push_float(value); | |
135 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createCiConstantFloat_name(), vmSymbols::createCiConstantFloat_signature(), &args, Thread::current()); | |
136 return (oop)result.get_jobject(); | |
137 | |
138 } | |
139 | |
140 oop VMExits::createCiConstantDouble(jdouble value) { | |
141 JavaValue result(T_OBJECT); | |
142 JavaCallArguments args; | |
143 args.push_double(value); | |
144 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createCiConstantDouble_name(), vmSymbols::createCiConstantDouble_signature(), &args, Thread::current()); | |
145 return (oop)result.get_jobject(); | |
146 } | |
147 | |
148 oop VMExits::createCiConstantObject(oop value) { | |
149 JavaValue result(T_OBJECT); | |
150 JavaCallArguments args; | |
151 args.push_oop(value); | |
152 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createCiConstantObject_name(), vmSymbols::createCiConstantObject_signature(), &args, Thread::current()); | |
153 return (oop)result.get_jobject(); | |
154 } |