Mercurial > hg > graal-compiler
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 |