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 }