Mercurial > hg > truffle
comparison src/share/vm/opto/runtime.cpp @ 14460:8a9bb7821e28
Merge
author | kvn |
---|---|
date | Wed, 19 Feb 2014 12:08:49 -0800 |
parents | 63a4eb8bcd23 abec000618bf |
children | d8041d695d19 |
comparison
equal
deleted
inserted
replaced
14360:e8ef156f0bc9 | 14460:8a9bb7821e28 |
---|---|
81 # include "adfiles/ad_zero.hpp" | 81 # include "adfiles/ad_zero.hpp" |
82 #endif | 82 #endif |
83 #ifdef TARGET_ARCH_MODEL_arm | 83 #ifdef TARGET_ARCH_MODEL_arm |
84 # include "adfiles/ad_arm.hpp" | 84 # include "adfiles/ad_arm.hpp" |
85 #endif | 85 #endif |
86 #ifdef TARGET_ARCH_MODEL_ppc | 86 #ifdef TARGET_ARCH_MODEL_ppc_32 |
87 # include "adfiles/ad_ppc.hpp" | 87 # include "adfiles/ad_ppc_32.hpp" |
88 #endif | |
89 #ifdef TARGET_ARCH_MODEL_ppc_64 | |
90 # include "adfiles/ad_ppc_64.hpp" | |
88 #endif | 91 #endif |
89 | 92 |
90 | 93 |
91 // For debugging purposes: | 94 // For debugging purposes: |
92 // To force FullGCALot inside a runtime function, add the following two lines | 95 // To force FullGCALot inside a runtime function, add the following two lines |
790 return make_arraycopy_Type(ac_generic); | 793 return make_arraycopy_Type(ac_generic); |
791 } | 794 } |
792 | 795 |
793 | 796 |
794 const TypeFunc* OptoRuntime::array_fill_Type() { | 797 const TypeFunc* OptoRuntime::array_fill_Type() { |
798 const Type** fields; | |
799 int argp = TypeFunc::Parms; | |
800 if (CCallingConventionRequiresIntsAsLongs) { | |
795 // create input type (domain): pointer, int, size_t | 801 // create input type (domain): pointer, int, size_t |
796 const Type** fields = TypeTuple::fields(3 LP64_ONLY( + 1)); | 802 fields = TypeTuple::fields(3 LP64_ONLY( + 2)); |
797 int argp = TypeFunc::Parms; | 803 fields[argp++] = TypePtr::NOTNULL; |
798 fields[argp++] = TypePtr::NOTNULL; | 804 fields[argp++] = TypeLong::LONG; |
799 fields[argp++] = TypeInt::INT; | 805 fields[argp++] = Type::HALF; |
806 } else { | |
807 // create input type (domain): pointer, int, size_t | |
808 fields = TypeTuple::fields(3 LP64_ONLY( + 1)); | |
809 fields[argp++] = TypePtr::NOTNULL; | |
810 fields[argp++] = TypeInt::INT; | |
811 } | |
800 fields[argp++] = TypeX_X; // size in whatevers (size_t) | 812 fields[argp++] = TypeX_X; // size in whatevers (size_t) |
801 LP64_ONLY(fields[argp++] = Type::HALF); // other half of long length | 813 LP64_ONLY(fields[argp++] = Type::HALF); // other half of long length |
802 const TypeTuple *domain = TypeTuple::make(argp, fields); | 814 const TypeTuple *domain = TypeTuple::make(argp, fields); |
803 | 815 |
804 // create result type | 816 // create result type |
1044 // Adjust the pc back to the original throwing pc | 1056 // Adjust the pc back to the original throwing pc |
1045 pc = deoptee.pc(); | 1057 pc = deoptee.pc(); |
1046 } | 1058 } |
1047 | 1059 |
1048 // If we are forcing an unwind because of stack overflow then deopt is | 1060 // If we are forcing an unwind because of stack overflow then deopt is |
1049 // irrelevant sice we are throwing the frame away anyway. | 1061 // irrelevant since we are throwing the frame away anyway. |
1050 | 1062 |
1051 if (deopting && !force_unwind) { | 1063 if (deopting && !force_unwind) { |
1052 handler_address = SharedRuntime::deopt_blob()->unpack_with_exception(); | 1064 handler_address = SharedRuntime::deopt_blob()->unpack_with_exception(); |
1053 } else { | 1065 } else { |
1054 | 1066 |
1087 // If there is a compiled exception handler in this method, we will continue there; | 1099 // If there is a compiled exception handler in this method, we will continue there; |
1088 // otherwise we will unwind the stack and continue at the caller of top frame method | 1100 // otherwise we will unwind the stack and continue at the caller of top frame method |
1089 // Note we enter without the usual JRT wrapper. We will call a helper routine that | 1101 // Note we enter without the usual JRT wrapper. We will call a helper routine that |
1090 // will do the normal VM entry. We do it this way so that we can see if the nmethod | 1102 // will do the normal VM entry. We do it this way so that we can see if the nmethod |
1091 // we looked up the handler for has been deoptimized in the meantime. If it has been | 1103 // we looked up the handler for has been deoptimized in the meantime. If it has been |
1092 // we must not use the handler and instread return the deopt blob. | 1104 // we must not use the handler and instead return the deopt blob. |
1093 address OptoRuntime::handle_exception_C(JavaThread* thread) { | 1105 address OptoRuntime::handle_exception_C(JavaThread* thread) { |
1094 // | 1106 // |
1095 // We are in Java not VM and in debug mode we have a NoHandleMark | 1107 // We are in Java not VM and in debug mode we have a NoHandleMark |
1096 // | 1108 // |
1097 #ifndef PRODUCT | 1109 #ifndef PRODUCT |