comparison src/cpu/x86/vm/methodHandles_x86.cpp @ 2357:8033953d67ff

7012648: move JSR 292 to package java.lang.invoke and adjust names Summary: package and class renaming only; delete unused methods and classes Reviewed-by: twisti
author jrose
date Fri, 11 Mar 2011 22:34:57 -0800
parents 1b4e6a5d98e0
children 2e038ad0c1d0
comparison
equal deleted inserted replaced
2356:72dee110246f 2357:8033953d67ff
123 tem = rax_mtype; // in case there is another indirection 123 tem = rax_mtype; // in case there is another indirection
124 } 124 }
125 } 125 }
126 126
127 // given the MethodType, find out where the MH argument is buried 127 // given the MethodType, find out where the MH argument is buried
128 __ load_heap_oop(rdx_temp, Address(rax_mtype, __ delayed_value(java_dyn_MethodType::form_offset_in_bytes, rdi_temp))); 128 __ load_heap_oop(rdx_temp, Address(rax_mtype, __ delayed_value(java_lang_invoke_MethodType::form_offset_in_bytes, rdi_temp)));
129 Register rdx_vmslots = rdx_temp; 129 Register rdx_vmslots = rdx_temp;
130 __ movl(rdx_vmslots, Address(rdx_temp, __ delayed_value(java_dyn_MethodTypeForm::vmslots_offset_in_bytes, rdi_temp))); 130 __ movl(rdx_vmslots, Address(rdx_temp, __ delayed_value(java_lang_invoke_MethodTypeForm::vmslots_offset_in_bytes, rdi_temp)));
131 __ movptr(rcx_recv, __ argument_address(rdx_vmslots)); 131 __ movptr(rcx_recv, __ argument_address(rdx_vmslots));
132 132
133 trace_method_handle(_masm, "invokeExact"); 133 trace_method_handle(_masm, "invokeExact");
134 134
135 __ check_method_handle_type(rax_mtype, rcx_recv, rdi_temp, wrong_method_type); 135 __ check_method_handle_type(rax_mtype, rcx_recv, rdi_temp, wrong_method_type);
152 __ lea(rcx_argslot, __ argument_address(rdx_vmslots, 1)); 152 __ lea(rcx_argslot, __ argument_address(rdx_vmslots, 1));
153 insert_arg_slots(_masm, 2 * stack_move_unit(), _INSERT_REF_MASK, 153 insert_arg_slots(_masm, 2 * stack_move_unit(), _INSERT_REF_MASK,
154 rcx_argslot, rbx_temp, rdx_temp); 154 rcx_argslot, rbx_temp, rdx_temp);
155 155
156 // load up an adapter from the calling type (Java weaves this) 156 // load up an adapter from the calling type (Java weaves this)
157 __ load_heap_oop(rdx_temp, Address(rax_mtype, __ delayed_value(java_dyn_MethodType::form_offset_in_bytes, rdi_temp))); 157 __ load_heap_oop(rdx_temp, Address(rax_mtype, __ delayed_value(java_lang_invoke_MethodType::form_offset_in_bytes, rdi_temp)));
158 Register rdx_adapter = rdx_temp; 158 Register rdx_adapter = rdx_temp;
159 // __ load_heap_oop(rdx_adapter, Address(rdx_temp, java_dyn_MethodTypeForm::genericInvoker_offset_in_bytes())); 159 // __ load_heap_oop(rdx_adapter, Address(rdx_temp, java_lang_invoke_MethodTypeForm::genericInvoker_offset_in_bytes()));
160 // deal with old JDK versions: 160 // deal with old JDK versions:
161 __ lea(rdi_temp, Address(rdx_temp, __ delayed_value(java_dyn_MethodTypeForm::genericInvoker_offset_in_bytes, rdi_temp))); 161 __ lea(rdi_temp, Address(rdx_temp, __ delayed_value(java_lang_invoke_MethodTypeForm::genericInvoker_offset_in_bytes, rdi_temp)));
162 __ cmpptr(rdi_temp, rdx_temp); 162 __ cmpptr(rdi_temp, rdx_temp);
163 Label sorry_no_invoke_generic; 163 Label sorry_no_invoke_generic;
164 __ jcc(Assembler::below, sorry_no_invoke_generic); 164 __ jcc(Assembler::below, sorry_no_invoke_generic);
165 165
166 __ load_heap_oop(rdx_adapter, Address(rdi_temp, 0)); 166 __ load_heap_oop(rdx_adapter, Address(rdi_temp, 0));
369 } 369 }
370 #endif //PRODUCT 370 #endif //PRODUCT
371 371
372 // which conversion op types are implemented here? 372 // which conversion op types are implemented here?
373 int MethodHandles::adapter_conversion_ops_supported_mask() { 373 int MethodHandles::adapter_conversion_ops_supported_mask() {
374 return ((1<<sun_dyn_AdapterMethodHandle::OP_RETYPE_ONLY) 374 return ((1<<java_lang_invoke_AdapterMethodHandle::OP_RETYPE_ONLY)
375 |(1<<sun_dyn_AdapterMethodHandle::OP_RETYPE_RAW) 375 |(1<<java_lang_invoke_AdapterMethodHandle::OP_RETYPE_RAW)
376 |(1<<sun_dyn_AdapterMethodHandle::OP_CHECK_CAST) 376 |(1<<java_lang_invoke_AdapterMethodHandle::OP_CHECK_CAST)
377 |(1<<sun_dyn_AdapterMethodHandle::OP_PRIM_TO_PRIM) 377 |(1<<java_lang_invoke_AdapterMethodHandle::OP_PRIM_TO_PRIM)
378 |(1<<sun_dyn_AdapterMethodHandle::OP_REF_TO_PRIM) 378 |(1<<java_lang_invoke_AdapterMethodHandle::OP_REF_TO_PRIM)
379 |(1<<sun_dyn_AdapterMethodHandle::OP_SWAP_ARGS) 379 |(1<<java_lang_invoke_AdapterMethodHandle::OP_SWAP_ARGS)
380 |(1<<sun_dyn_AdapterMethodHandle::OP_ROT_ARGS) 380 |(1<<java_lang_invoke_AdapterMethodHandle::OP_ROT_ARGS)
381 |(1<<sun_dyn_AdapterMethodHandle::OP_DUP_ARGS) 381 |(1<<java_lang_invoke_AdapterMethodHandle::OP_DUP_ARGS)
382 |(1<<sun_dyn_AdapterMethodHandle::OP_DROP_ARGS) 382 |(1<<java_lang_invoke_AdapterMethodHandle::OP_DROP_ARGS)
383 //|(1<<sun_dyn_AdapterMethodHandle::OP_SPREAD_ARGS) //BUG! 383 //|(1<<java_lang_invoke_AdapterMethodHandle::OP_SPREAD_ARGS) //BUG!
384 ); 384 );
385 // FIXME: MethodHandlesTest gets a crash if we enable OP_SPREAD_ARGS. 385 // FIXME: MethodHandlesTest gets a crash if we enable OP_SPREAD_ARGS.
386 } 386 }
387 387
388 //------------------------------------------------------------------------------ 388 //------------------------------------------------------------------------------
413 const Register rarg0_code = LP64_ONLY(j_rarg0) NOT_LP64(rcx); 413 const Register rarg0_code = LP64_ONLY(j_rarg0) NOT_LP64(rcx);
414 const Register rarg1_actual = LP64_ONLY(j_rarg1) NOT_LP64(rdx); 414 const Register rarg1_actual = LP64_ONLY(j_rarg1) NOT_LP64(rdx);
415 const Register rarg2_required = LP64_ONLY(j_rarg2) NOT_LP64(rdi); 415 const Register rarg2_required = LP64_ONLY(j_rarg2) NOT_LP64(rdi);
416 assert_different_registers(rarg0_code, rarg1_actual, rarg2_required, saved_last_sp); 416 assert_different_registers(rarg0_code, rarg1_actual, rarg2_required, saved_last_sp);
417 417
418 guarantee(java_dyn_MethodHandle::vmentry_offset_in_bytes() != 0, "must have offsets"); 418 guarantee(java_lang_invoke_MethodHandle::vmentry_offset_in_bytes() != 0, "must have offsets");
419 419
420 // some handy addresses 420 // some handy addresses
421 Address rbx_method_fie( rbx, methodOopDesc::from_interpreted_offset() ); 421 Address rbx_method_fie( rbx, methodOopDesc::from_interpreted_offset() );
422 Address rbx_method_fce( rbx, methodOopDesc::from_compiled_offset() ); 422 Address rbx_method_fce( rbx, methodOopDesc::from_compiled_offset() );
423 423
424 Address rcx_mh_vmtarget( rcx_recv, java_dyn_MethodHandle::vmtarget_offset_in_bytes() ); 424 Address rcx_mh_vmtarget( rcx_recv, java_lang_invoke_MethodHandle::vmtarget_offset_in_bytes() );
425 Address rcx_dmh_vmindex( rcx_recv, sun_dyn_DirectMethodHandle::vmindex_offset_in_bytes() ); 425 Address rcx_dmh_vmindex( rcx_recv, java_lang_invoke_DirectMethodHandle::vmindex_offset_in_bytes() );
426 426
427 Address rcx_bmh_vmargslot( rcx_recv, sun_dyn_BoundMethodHandle::vmargslot_offset_in_bytes() ); 427 Address rcx_bmh_vmargslot( rcx_recv, java_lang_invoke_BoundMethodHandle::vmargslot_offset_in_bytes() );
428 Address rcx_bmh_argument( rcx_recv, sun_dyn_BoundMethodHandle::argument_offset_in_bytes() ); 428 Address rcx_bmh_argument( rcx_recv, java_lang_invoke_BoundMethodHandle::argument_offset_in_bytes() );
429 429
430 Address rcx_amh_vmargslot( rcx_recv, sun_dyn_AdapterMethodHandle::vmargslot_offset_in_bytes() ); 430 Address rcx_amh_vmargslot( rcx_recv, java_lang_invoke_AdapterMethodHandle::vmargslot_offset_in_bytes() );
431 Address rcx_amh_argument( rcx_recv, sun_dyn_AdapterMethodHandle::argument_offset_in_bytes() ); 431 Address rcx_amh_argument( rcx_recv, java_lang_invoke_AdapterMethodHandle::argument_offset_in_bytes() );
432 Address rcx_amh_conversion( rcx_recv, sun_dyn_AdapterMethodHandle::conversion_offset_in_bytes() ); 432 Address rcx_amh_conversion( rcx_recv, java_lang_invoke_AdapterMethodHandle::conversion_offset_in_bytes() );
433 Address vmarg; // __ argument_address(vmargslot) 433 Address vmarg; // __ argument_address(vmargslot)
434 434
435 const int java_mirror_offset = klassOopDesc::klass_part_offset_in_bytes() + Klass::java_mirror_offset_in_bytes(); 435 const int java_mirror_offset = klassOopDesc::klass_part_offset_in_bytes() + Klass::java_mirror_offset_in_bytes();
436 436
437 if (have_entry(ek)) { 437 if (have_entry(ek)) {
458 __ pop(rdi_pc); // caller PC 458 __ pop(rdi_pc); // caller PC
459 __ mov(rsp, saved_last_sp); // cut the stack back to where the caller started 459 __ mov(rsp, saved_last_sp); // cut the stack back to where the caller started
460 460
461 Register rbx_method = rbx_temp; 461 Register rbx_method = rbx_temp;
462 Label L_no_method; 462 Label L_no_method;
463 // FIXME: fill in _raise_exception_method with a suitable sun.dyn method 463 // FIXME: fill in _raise_exception_method with a suitable java.lang.invoke method
464 __ movptr(rbx_method, ExternalAddress((address) &_raise_exception_method)); 464 __ movptr(rbx_method, ExternalAddress((address) &_raise_exception_method));
465 __ testptr(rbx_method, rbx_method); 465 __ testptr(rbx_method, rbx_method);
466 __ jccb(Assembler::zero, L_no_method); 466 __ jccb(Assembler::zero, L_no_method);
467 467
468 const int jobject_oop_offset = 0; 468 const int jobject_oop_offset = 0;