Mercurial > hg > truffle
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(); |