comparison src/share/vm/prims/methodHandles.hpp @ 4137:04b9a2566eec

Merge with hsx23/hotspot.
author Thomas Wuerthinger <thomas.wuerthinger@oracle.com>
date Sat, 17 Dec 2011 21:40:27 +0100
parents 393f4b789fd0
children 15d394228cfa
comparison
equal deleted inserted replaced
3737:9dc19b7d89a3 4137:04b9a2566eec
185 _adapter_opt_fold_4_ref, // process N=4 arguments, prepend a reference 185 _adapter_opt_fold_4_ref, // process N=4 arguments, prepend a reference
186 _adapter_opt_fold_5_ref, // process N=5 arguments, prepend a reference 186 _adapter_opt_fold_5_ref, // process N=5 arguments, prepend a reference
187 _adapter_opt_fold_FIRST = _adapter_opt_fold_ref, 187 _adapter_opt_fold_FIRST = _adapter_opt_fold_ref,
188 _adapter_opt_fold_LAST = _adapter_opt_fold_5_ref, 188 _adapter_opt_fold_LAST = _adapter_opt_fold_5_ref,
189 189
190 _adapter_opt_profiling,
191
190 _EK_LIMIT, 192 _EK_LIMIT,
191 _EK_FIRST = 0 193 _EK_FIRST = 0
192 }; 194 };
193 195
194 public: 196 public:
264 return _adapter_collect_args; 266 return _adapter_collect_args;
265 if (ek >= _adapter_opt_fold_FIRST && ek <= _adapter_opt_fold_LAST) 267 if (ek >= _adapter_opt_fold_FIRST && ek <= _adapter_opt_fold_LAST)
266 return _adapter_fold_args; 268 return _adapter_fold_args;
267 if (ek >= _adapter_opt_return_FIRST && ek <= _adapter_opt_return_LAST) 269 if (ek >= _adapter_opt_return_FIRST && ek <= _adapter_opt_return_LAST)
268 return _adapter_opt_return_any; 270 return _adapter_opt_return_any;
271 if (ek == _adapter_opt_profiling)
272 return _adapter_retype_only;
269 assert(false, "oob"); 273 assert(false, "oob");
270 return _EK_LIMIT; 274 return _EK_LIMIT;
271 } 275 }
272 276
273 static bool ek_supported(MethodHandles::EntryKind ek); 277 static bool ek_supported(MethodHandles::EntryKind ek);
509 if (dest == T_SHORT) return (BitsPerInt - BitsPerShort) | CONV_VMINFO_SIGN_FLAG; 513 if (dest == T_SHORT) return (BitsPerInt - BitsPerShort) | CONV_VMINFO_SIGN_FLAG;
510 return 0; // case T_INT 514 return 0; // case T_INT
511 } 515 }
512 // Here is the transformation the i2i adapter must perform: 516 // Here is the transformation the i2i adapter must perform:
513 static int truncate_subword_from_vminfo(jint value, int vminfo) { 517 static int truncate_subword_from_vminfo(jint value, int vminfo) {
514 jint tem = value << vminfo; 518 int shift = vminfo & ~CONV_VMINFO_SIGN_FLAG;
519 jint tem = value << shift;
515 if ((vminfo & CONV_VMINFO_SIGN_FLAG) != 0) { 520 if ((vminfo & CONV_VMINFO_SIGN_FLAG) != 0) {
516 return (jint)tem >> vminfo; 521 return (jint)tem >> shift;
517 } else { 522 } else {
518 return (juint)tem >> vminfo; 523 return (juint)tem >> shift;
519 } 524 }
520 } 525 }
521 526
522 static inline address from_compiled_entry(EntryKind ek); 527 static inline address from_compiled_entry(EntryKind ek);
523 static inline address from_interpreted_entry(EntryKind ek); 528 static inline address from_interpreted_entry(EntryKind ek);
580 // format of query to getConstant: 585 // format of query to getConstant:
581 GC_JVM_PUSH_LIMIT = 0, 586 GC_JVM_PUSH_LIMIT = 0,
582 GC_JVM_STACK_MOVE_UNIT = 1, 587 GC_JVM_STACK_MOVE_UNIT = 1,
583 GC_CONV_OP_IMPLEMENTED_MASK = 2, 588 GC_CONV_OP_IMPLEMENTED_MASK = 2,
584 GC_OP_ROT_ARGS_DOWN_LIMIT_BIAS = 3, 589 GC_OP_ROT_ARGS_DOWN_LIMIT_BIAS = 3,
590 GC_COUNT_GWT = 4,
585 591
586 // format of result from getTarget / encode_target: 592 // format of result from getTarget / encode_target:
587 ETF_HANDLE_OR_METHOD_NAME = 0, // all available data (immediate MH or method) 593 ETF_HANDLE_OR_METHOD_NAME = 0, // all available data (immediate MH or method)
588 ETF_DIRECT_HANDLE = 1, // ultimate method handle (will be a DMH, may be self) 594 ETF_DIRECT_HANDLE = 1, // ultimate method handle (will be a DMH, may be self)
589 ETF_METHOD_NAME = 2, // ultimate method as MemberName 595 ETF_METHOD_NAME = 2, // ultimate method as MemberName