comparison src/cpu/sparc/vm/methodHandles_sparc.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 3ef1a1866a60
comparison
equal deleted inserted replaced
2356:72dee110246f 2357:8033953d67ff
110 tem = O0_mtype; // in case there is another indirection 110 tem = O0_mtype; // in case there is another indirection
111 } 111 }
112 } 112 }
113 113
114 // given the MethodType, find out where the MH argument is buried 114 // given the MethodType, find out where the MH argument is buried
115 __ load_heap_oop(Address(O0_mtype, __ delayed_value(java_dyn_MethodType::form_offset_in_bytes, O1_scratch)), O4_argslot); 115 __ load_heap_oop(Address(O0_mtype, __ delayed_value(java_lang_invoke_MethodType::form_offset_in_bytes, O1_scratch)), O4_argslot);
116 __ ldsw( Address(O4_argslot, __ delayed_value(java_dyn_MethodTypeForm::vmslots_offset_in_bytes, O1_scratch)), O4_argslot); 116 __ ldsw( Address(O4_argslot, __ delayed_value(java_lang_invoke_MethodTypeForm::vmslots_offset_in_bytes, O1_scratch)), O4_argslot);
117 __ add(Gargs, __ argument_offset(O4_argslot, 1), O4_argbase); 117 __ add(Gargs, __ argument_offset(O4_argslot, 1), O4_argbase);
118 // Note: argument_address uses its input as a scratch register! 118 // Note: argument_address uses its input as a scratch register!
119 __ ld_ptr(Address(O4_argbase, -Interpreter::stackElementSize), G3_method_handle); 119 __ ld_ptr(Address(O4_argbase, -Interpreter::stackElementSize), G3_method_handle);
120 120
121 trace_method_handle(_masm, "invokeExact"); 121 trace_method_handle(_masm, "invokeExact");
139 // make room on the stack for another pointer: 139 // make room on the stack for another pointer:
140 insert_arg_slots(_masm, 2 * stack_move_unit(), _INSERT_REF_MASK, O4_argbase, O1_scratch, O2_scratch, O3_scratch); 140 insert_arg_slots(_masm, 2 * stack_move_unit(), _INSERT_REF_MASK, O4_argbase, O1_scratch, O2_scratch, O3_scratch);
141 // load up an adapter from the calling type (Java weaves this) 141 // load up an adapter from the calling type (Java weaves this)
142 Register O2_form = O2_scratch; 142 Register O2_form = O2_scratch;
143 Register O3_adapter = O3_scratch; 143 Register O3_adapter = O3_scratch;
144 __ load_heap_oop(Address(O0_mtype, __ delayed_value(java_dyn_MethodType::form_offset_in_bytes, O1_scratch)), O2_form); 144 __ load_heap_oop(Address(O0_mtype, __ delayed_value(java_lang_invoke_MethodType::form_offset_in_bytes, O1_scratch)), O2_form);
145 // load_heap_oop(Address(O2_form, __ delayed_value(java_dyn_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter); 145 // load_heap_oop(Address(O2_form, __ delayed_value(java_lang_invoke_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter);
146 // deal with old JDK versions: 146 // deal with old JDK versions:
147 __ add( Address(O2_form, __ delayed_value(java_dyn_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter); 147 __ add( Address(O2_form, __ delayed_value(java_lang_invoke_MethodTypeForm::genericInvoker_offset_in_bytes, O1_scratch)), O3_adapter);
148 __ cmp(O3_adapter, O2_form); 148 __ cmp(O3_adapter, O2_form);
149 Label sorry_no_invoke_generic; 149 Label sorry_no_invoke_generic;
150 __ brx(Assembler::lessUnsigned, false, Assembler::pn, sorry_no_invoke_generic); 150 __ brx(Assembler::lessUnsigned, false, Assembler::pn, sorry_no_invoke_generic);
151 __ delayed()->nop(); 151 __ delayed()->nop();
152 152
374 } 374 }
375 #endif // PRODUCT 375 #endif // PRODUCT
376 376
377 // which conversion op types are implemented here? 377 // which conversion op types are implemented here?
378 int MethodHandles::adapter_conversion_ops_supported_mask() { 378 int MethodHandles::adapter_conversion_ops_supported_mask() {
379 return ((1<<sun_dyn_AdapterMethodHandle::OP_RETYPE_ONLY) 379 return ((1<<java_lang_invoke_AdapterMethodHandle::OP_RETYPE_ONLY)
380 |(1<<sun_dyn_AdapterMethodHandle::OP_RETYPE_RAW) 380 |(1<<java_lang_invoke_AdapterMethodHandle::OP_RETYPE_RAW)
381 |(1<<sun_dyn_AdapterMethodHandle::OP_CHECK_CAST) 381 |(1<<java_lang_invoke_AdapterMethodHandle::OP_CHECK_CAST)
382 |(1<<sun_dyn_AdapterMethodHandle::OP_PRIM_TO_PRIM) 382 |(1<<java_lang_invoke_AdapterMethodHandle::OP_PRIM_TO_PRIM)
383 |(1<<sun_dyn_AdapterMethodHandle::OP_REF_TO_PRIM) 383 |(1<<java_lang_invoke_AdapterMethodHandle::OP_REF_TO_PRIM)
384 |(1<<sun_dyn_AdapterMethodHandle::OP_SWAP_ARGS) 384 |(1<<java_lang_invoke_AdapterMethodHandle::OP_SWAP_ARGS)
385 |(1<<sun_dyn_AdapterMethodHandle::OP_ROT_ARGS) 385 |(1<<java_lang_invoke_AdapterMethodHandle::OP_ROT_ARGS)
386 |(1<<sun_dyn_AdapterMethodHandle::OP_DUP_ARGS) 386 |(1<<java_lang_invoke_AdapterMethodHandle::OP_DUP_ARGS)
387 |(1<<sun_dyn_AdapterMethodHandle::OP_DROP_ARGS) 387 |(1<<java_lang_invoke_AdapterMethodHandle::OP_DROP_ARGS)
388 //|(1<<sun_dyn_AdapterMethodHandle::OP_SPREAD_ARGS) //BUG! 388 //|(1<<java_lang_invoke_AdapterMethodHandle::OP_SPREAD_ARGS) //BUG!
389 ); 389 );
390 // FIXME: MethodHandlesTest gets a crash if we enable OP_SPREAD_ARGS. 390 // FIXME: MethodHandlesTest gets a crash if we enable OP_SPREAD_ARGS.
391 } 391 }
392 392
393 //------------------------------------------------------------------------------ 393 //------------------------------------------------------------------------------
411 // Argument registers for _raise_exception. 411 // Argument registers for _raise_exception.
412 const Register O0_code = O0; 412 const Register O0_code = O0;
413 const Register O1_actual = O1; 413 const Register O1_actual = O1;
414 const Register O2_required = O2; 414 const Register O2_required = O2;
415 415
416 guarantee(java_dyn_MethodHandle::vmentry_offset_in_bytes() != 0, "must have offsets"); 416 guarantee(java_lang_invoke_MethodHandle::vmentry_offset_in_bytes() != 0, "must have offsets");
417 417
418 // Some handy addresses: 418 // Some handy addresses:
419 Address G5_method_fie( G5_method, in_bytes(methodOopDesc::from_interpreted_offset())); 419 Address G5_method_fie( G5_method, in_bytes(methodOopDesc::from_interpreted_offset()));
420 Address G5_method_fce( G5_method, in_bytes(methodOopDesc::from_compiled_offset())); 420 Address G5_method_fce( G5_method, in_bytes(methodOopDesc::from_compiled_offset()));
421 421
422 Address G3_mh_vmtarget( G3_method_handle, java_dyn_MethodHandle::vmtarget_offset_in_bytes()); 422 Address G3_mh_vmtarget( G3_method_handle, java_lang_invoke_MethodHandle::vmtarget_offset_in_bytes());
423 423
424 Address G3_dmh_vmindex( G3_method_handle, sun_dyn_DirectMethodHandle::vmindex_offset_in_bytes()); 424 Address G3_dmh_vmindex( G3_method_handle, java_lang_invoke_DirectMethodHandle::vmindex_offset_in_bytes());
425 425
426 Address G3_bmh_vmargslot( G3_method_handle, sun_dyn_BoundMethodHandle::vmargslot_offset_in_bytes()); 426 Address G3_bmh_vmargslot( G3_method_handle, java_lang_invoke_BoundMethodHandle::vmargslot_offset_in_bytes());
427 Address G3_bmh_argument( G3_method_handle, sun_dyn_BoundMethodHandle::argument_offset_in_bytes()); 427 Address G3_bmh_argument( G3_method_handle, java_lang_invoke_BoundMethodHandle::argument_offset_in_bytes());
428 428
429 Address G3_amh_vmargslot( G3_method_handle, sun_dyn_AdapterMethodHandle::vmargslot_offset_in_bytes()); 429 Address G3_amh_vmargslot( G3_method_handle, java_lang_invoke_AdapterMethodHandle::vmargslot_offset_in_bytes());
430 Address G3_amh_argument ( G3_method_handle, sun_dyn_AdapterMethodHandle::argument_offset_in_bytes()); 430 Address G3_amh_argument ( G3_method_handle, java_lang_invoke_AdapterMethodHandle::argument_offset_in_bytes());
431 Address G3_amh_conversion(G3_method_handle, sun_dyn_AdapterMethodHandle::conversion_offset_in_bytes()); 431 Address G3_amh_conversion(G3_method_handle, java_lang_invoke_AdapterMethodHandle::conversion_offset_in_bytes());
432 432
433 const int java_mirror_offset = klassOopDesc::klass_part_offset_in_bytes() + Klass::java_mirror_offset_in_bytes(); 433 const int java_mirror_offset = klassOopDesc::klass_part_offset_in_bytes() + Klass::java_mirror_offset_in_bytes();
434 434
435 if (have_entry(ek)) { 435 if (have_entry(ek)) {
436 __ nop(); // empty stubs make SG sick 436 __ nop(); // empty stubs make SG sick
451 assert(raise_exception_method()->from_compiled_entry(), "method must be linked"); 451 assert(raise_exception_method()->from_compiled_entry(), "method must be linked");
452 452
453 __ mov(O5_savedSP, SP); // Cut the stack back to where the caller started. 453 __ mov(O5_savedSP, SP); // Cut the stack back to where the caller started.
454 454
455 Label L_no_method; 455 Label L_no_method;
456 // FIXME: fill in _raise_exception_method with a suitable sun.dyn method 456 // FIXME: fill in _raise_exception_method with a suitable java.lang.invoke method
457 __ set(AddressLiteral((address) &_raise_exception_method), G5_method); 457 __ set(AddressLiteral((address) &_raise_exception_method), G5_method);
458 __ ld_ptr(Address(G5_method, 0), G5_method); 458 __ ld_ptr(Address(G5_method, 0), G5_method);
459 __ tst(G5_method); 459 __ tst(G5_method);
460 __ brx(Assembler::zero, false, Assembler::pn, L_no_method); 460 __ brx(Assembler::zero, false, Assembler::pn, L_no_method);
461 __ delayed()->nop(); 461 __ delayed()->nop();