comparison src/share/vm/c1x/c1x_VMExits.cpp @ 1414:e1a275dbc8cd

Executing a+b with C1X on HotSpot ;-) !
author Thomas Wuerthinger <thomas.wuerthinger@gmail.com>
date Tue, 18 May 2010 21:53:05 +0200
parents 1ecc8f0aad00
children 6223633ce7dd
comparison
equal deleted inserted replaced
1413:1ecc8f0aad00 1414:e1a275dbc8cd
27 27
28 KlassHandle VMExits::_vmExitsKlass; 28 KlassHandle VMExits::_vmExitsKlass;
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(), SystemDictionary::java_system_loader(), 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;
40 } 40 }
41 41
42 void VMExits::compileMethod(oop method, int entry_bci) { 42 void VMExits::compileMethod(oop method, int entry_bci) {
43 assert(method != NULL, "just checking");
43 JavaValue result(T_VOID); 44 JavaValue result(T_VOID);
44 JavaCallArguments args; 45 JavaCallArguments args;
45 args.push_oop(method); 46 args.push_oop(method);
46 args.push_int(entry_bci); 47 args.push_int(entry_bci);
47 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::compileMethod_name(), vmSymbols::compileMethod_signature(), &args, Thread::current()); 48 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::compileMethod_name(), vmSymbols::compileMethod_signature(), &args, Thread::current());
48 } 49 }
49 50
50 oop VMExits::createRiMethod(methodOop m) { 51 oop VMExits::createRiMethod(methodOop m) {
52 assert(m != NULL, "just checking");
51 JavaValue result(T_OBJECT); 53 JavaValue result(T_OBJECT);
52 JavaCallArguments args; 54 JavaCallArguments args;
53 args.push_oop(m); 55 args.push_oop(m);
54 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiMethod_name(), vmSymbols::createRiMethod_signature(), &args, Thread::current()); 56 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiMethod_name(), vmSymbols::createRiMethod_signature(), &args, Thread::current());
55 if(Thread::current()->pending_exception() != NULL) { 57 if(Thread::current()->pending_exception() != NULL) {
57 } 59 }
58 return (oop)result.get_jobject(); 60 return (oop)result.get_jobject();
59 } 61 }
60 62
61 oop VMExits::createRiField(oop field_holder, symbolOop field_name, oop field_type, int index) { 63 oop VMExits::createRiField(oop field_holder, symbolOop field_name, oop field_type, int index) {
64 assert(field_holder != NULL && field_name != NULL && field_type != NULL, "just checking");
62 JavaValue result(T_OBJECT); 65 JavaValue result(T_OBJECT);
63 JavaCallArguments args; 66 JavaCallArguments args;
64 args.push_oop(field_holder); 67 args.push_oop(field_holder);
65 args.push_oop(field_name); 68 args.push_oop(field_name);
66 args.push_oop(field_type); 69 args.push_oop(field_type);
68 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiField_name(), vmSymbols::createRiField_signature(), &args, Thread::current()); 71 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiField_name(), vmSymbols::createRiField_signature(), &args, Thread::current());
69 return (oop)result.get_jobject(); 72 return (oop)result.get_jobject();
70 } 73 }
71 74
72 oop VMExits::createRiType(klassOop k) { 75 oop VMExits::createRiType(klassOop k) {
76 assert(k != NULL, "just checking");
73 JavaValue result(T_OBJECT); 77 JavaValue result(T_OBJECT);
74 JavaCallArguments args; 78 JavaCallArguments args;
75 args.push_oop(k); 79 args.push_oop(k);
76 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiType_name(), vmSymbols::createRiType_signature(), &args, Thread::current()); 80 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiType_name(), vmSymbols::createRiType_signature(), &args, Thread::current());
77 return (oop)result.get_jobject(); 81 return (oop)result.get_jobject();
84 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiTypePrimitive_name(), vmSymbols::createRiTypePrimitive_signature(), &args, Thread::current()); 88 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiTypePrimitive_name(), vmSymbols::createRiTypePrimitive_signature(), &args, Thread::current());
85 return (oop)result.get_jobject(); 89 return (oop)result.get_jobject();
86 } 90 }
87 91
88 oop VMExits::createRiTypeUnresolved(symbolOop name, klassOop accessor) { 92 oop VMExits::createRiTypeUnresolved(symbolOop name, klassOop accessor) {
93 assert(name != NULL && accessor != NULL, "just checking");
89 JavaValue result(T_OBJECT); 94 JavaValue result(T_OBJECT);
90 JavaCallArguments args; 95 JavaCallArguments args;
91 args.push_oop(name); 96 args.push_oop(name);
92 args.push_oop(accessor); 97 args.push_oop(accessor);
93 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiTypeUnresolved_name(), vmSymbols::createRiTypeUnresolved_signature(), &args, Thread::current()); 98 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiTypeUnresolved_name(), vmSymbols::createRiTypeUnresolved_signature(), &args, Thread::current());
94 return (oop)result.get_jobject(); 99 return (oop)result.get_jobject();
95 } 100 }
96 101
97 oop VMExits::createRiConstantPool(constantPoolOop cp) { 102 oop VMExits::createRiConstantPool(constantPoolOop cp) {
103 assert(cp != NULL, "just checking");
98 JavaValue result(T_OBJECT); 104 JavaValue result(T_OBJECT);
99 JavaCallArguments args; 105 JavaCallArguments args;
100 args.push_oop(cp); 106 args.push_oop(cp);
101 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiConstantPool_name(), vmSymbols::createRiConstantPool_signature(), &args, Thread::current()); 107 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiConstantPool_name(), vmSymbols::createRiConstantPool_signature(), &args, Thread::current());
102 return (oop)result.get_jobject(); 108 return (oop)result.get_jobject();
103 } 109 }
104 110
105 oop VMExits::createRiSignature(symbolOop symbol) { 111 oop VMExits::createRiSignature(symbolOop symbol) {
112 assert(symbol != NULL, "just checking");
106 JavaValue result(T_OBJECT); 113 JavaValue result(T_OBJECT);
107 JavaCallArguments args; 114 JavaCallArguments args;
108 args.push_oop(symbol); 115 args.push_oop(symbol);
109 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiSignature_name(), vmSymbols::createRiSignature_signature(), &args, Thread::current()); 116 JavaCalls::call_static(&result, vmExitsKlass(), vmSymbols::createRiSignature_name(), vmSymbols::createRiSignature_signature(), &args, Thread::current());
110 return (oop)result.get_jobject(); 117 return (oop)result.get_jobject();