comparison src/share/vm/prims/methodHandles.cpp @ 2088:8d0b933dda2d

7007377: JSR 292 MethodHandlesTest.testCastFailure fails on SPARC with -Xcomp +DeoptimizeALot Reviewed-by: kvn, jrose
author twisti
date Wed, 22 Dec 2010 02:02:53 -0800
parents f2da85a9b08e
children d810e9a3fc33
comparison
equal deleted inserted replaced
2087:352765ed11a1 2088:8d0b933dda2d
109 109
110 110
111 //------------------------------------------------------------------------------ 111 //------------------------------------------------------------------------------
112 // MethodHandles::generate_adapters 112 // MethodHandles::generate_adapters
113 // 113 //
114 void MethodHandles::generate_adapters() { 114 void MethodHandles::generate_adapters(TRAPS) {
115 if (!EnableMethodHandles || SystemDictionary::MethodHandle_klass() == NULL) return; 115 if (!EnableMethodHandles || SystemDictionary::MethodHandle_klass() == NULL) return;
116 116
117 assert(_adapter_code == NULL, "generate only once"); 117 assert(_adapter_code == NULL, "generate only once");
118 118
119 ResourceMark rm; 119 ResourceMark rm;
121 _adapter_code = MethodHandlesAdapterBlob::create(_adapter_code_size); 121 _adapter_code = MethodHandlesAdapterBlob::create(_adapter_code_size);
122 if (_adapter_code == NULL) 122 if (_adapter_code == NULL)
123 vm_exit_out_of_memory(_adapter_code_size, "CodeCache: no room for MethodHandles adapters"); 123 vm_exit_out_of_memory(_adapter_code_size, "CodeCache: no room for MethodHandles adapters");
124 CodeBuffer code(_adapter_code); 124 CodeBuffer code(_adapter_code);
125 MethodHandlesAdapterGenerator g(&code); 125 MethodHandlesAdapterGenerator g(&code);
126 g.generate(); 126 g.generate(CHECK);
127 } 127 }
128 128
129 129
130 //------------------------------------------------------------------------------ 130 //------------------------------------------------------------------------------
131 // MethodHandlesAdapterGenerator::generate 131 // MethodHandlesAdapterGenerator::generate
132 // 132 //
133 void MethodHandlesAdapterGenerator::generate() { 133 void MethodHandlesAdapterGenerator::generate(TRAPS) {
134 // Generate generic method handle adapters. 134 // Generate generic method handle adapters.
135 for (MethodHandles::EntryKind ek = MethodHandles::_EK_FIRST; 135 for (MethodHandles::EntryKind ek = MethodHandles::_EK_FIRST;
136 ek < MethodHandles::_EK_LIMIT; 136 ek < MethodHandles::_EK_LIMIT;
137 ek = MethodHandles::EntryKind(1 + (int)ek)) { 137 ek = MethodHandles::EntryKind(1 + (int)ek)) {
138 StubCodeMark mark(this, "MethodHandle", MethodHandles::entry_name(ek)); 138 StubCodeMark mark(this, "MethodHandle", MethodHandles::entry_name(ek));
139 MethodHandles::generate_method_handle_stub(_masm, ek); 139 MethodHandles::generate_method_handle_stub(_masm, ek, CHECK);
140 } 140 }
141 } 141 }
142 142
143 143
144 void MethodHandles::set_enabled(bool z) { 144 void MethodHandles::set_enabled(bool z) {
2643 env->ExceptionClear(); 2643 env->ExceptionClear();
2644 } else { 2644 } else {
2645 MethodHandles::set_enabled(true); 2645 MethodHandles::set_enabled(true);
2646 } 2646 }
2647 } 2647 }
2648
2649 // Generate method handles adapters if enabled.
2650 if (MethodHandles::enabled()) {
2651 MethodHandles::generate_adapters(CHECK);
2652 }
2648 } 2653 }
2649 JVM_END 2654 JVM_END