Mercurial > hg > truffle
comparison src/share/vm/opto/runtime.cpp @ 17812:a7d4d4655766
Merge
author | kvn |
---|---|
date | Wed, 26 Mar 2014 18:21:05 -0700 |
parents | 62c54fcc0a35 |
children | 03214612e77e |
comparison
equal
deleted
inserted
replaced
17789:6b207d038106 | 17812:a7d4d4655766 |
---|---|
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 |
791 return make_arraycopy_Type(ac_generic); | 794 return make_arraycopy_Type(ac_generic); |
792 } | 795 } |
793 | 796 |
794 | 797 |
795 const TypeFunc* OptoRuntime::array_fill_Type() { | 798 const TypeFunc* OptoRuntime::array_fill_Type() { |
799 const Type** fields; | |
800 int argp = TypeFunc::Parms; | |
801 if (CCallingConventionRequiresIntsAsLongs) { | |
796 // create input type (domain): pointer, int, size_t | 802 // create input type (domain): pointer, int, size_t |
797 const Type** fields = TypeTuple::fields(3 LP64_ONLY( + 1)); | 803 fields = TypeTuple::fields(3 LP64_ONLY( + 2)); |
798 int argp = TypeFunc::Parms; | 804 fields[argp++] = TypePtr::NOTNULL; |
799 fields[argp++] = TypePtr::NOTNULL; | 805 fields[argp++] = TypeLong::LONG; |
800 fields[argp++] = TypeInt::INT; | 806 fields[argp++] = Type::HALF; |
807 } else { | |
808 // create input type (domain): pointer, int, size_t | |
809 fields = TypeTuple::fields(3 LP64_ONLY( + 1)); | |
810 fields[argp++] = TypePtr::NOTNULL; | |
811 fields[argp++] = TypeInt::INT; | |
812 } | |
801 fields[argp++] = TypeX_X; // size in whatevers (size_t) | 813 fields[argp++] = TypeX_X; // size in whatevers (size_t) |
802 LP64_ONLY(fields[argp++] = Type::HALF); // other half of long length | 814 LP64_ONLY(fields[argp++] = Type::HALF); // other half of long length |
803 const TypeTuple *domain = TypeTuple::make(argp, fields); | 815 const TypeTuple *domain = TypeTuple::make(argp, fields); |
804 | 816 |
805 // create result type | 817 // create result type |
1045 // Adjust the pc back to the original throwing pc | 1057 // Adjust the pc back to the original throwing pc |
1046 pc = deoptee.pc(); | 1058 pc = deoptee.pc(); |
1047 } | 1059 } |
1048 | 1060 |
1049 // If we are forcing an unwind because of stack overflow then deopt is | 1061 // If we are forcing an unwind because of stack overflow then deopt is |
1050 // irrelevant sice we are throwing the frame away anyway. | 1062 // irrelevant since we are throwing the frame away anyway. |
1051 | 1063 |
1052 if (deopting && !force_unwind) { | 1064 if (deopting && !force_unwind) { |
1053 handler_address = SharedRuntime::deopt_blob()->unpack_with_exception(); | 1065 handler_address = SharedRuntime::deopt_blob()->unpack_with_exception(); |
1054 } else { | 1066 } else { |
1055 | 1067 |
1088 // If there is a compiled exception handler in this method, we will continue there; | 1100 // If there is a compiled exception handler in this method, we will continue there; |
1089 // otherwise we will unwind the stack and continue at the caller of top frame method | 1101 // otherwise we will unwind the stack and continue at the caller of top frame method |
1090 // Note we enter without the usual JRT wrapper. We will call a helper routine that | 1102 // Note we enter without the usual JRT wrapper. We will call a helper routine that |
1091 // will do the normal VM entry. We do it this way so that we can see if the nmethod | 1103 // will do the normal VM entry. We do it this way so that we can see if the nmethod |
1092 // we looked up the handler for has been deoptimized in the meantime. If it has been | 1104 // we looked up the handler for has been deoptimized in the meantime. If it has been |
1093 // we must not use the handler and instread return the deopt blob. | 1105 // we must not use the handler and instead return the deopt blob. |
1094 address OptoRuntime::handle_exception_C(JavaThread* thread) { | 1106 address OptoRuntime::handle_exception_C(JavaThread* thread) { |
1095 // | 1107 // |
1096 // We are in Java not VM and in debug mode we have a NoHandleMark | 1108 // We are in Java not VM and in debug mode we have a NoHandleMark |
1097 // | 1109 // |
1098 #ifndef PRODUCT | 1110 #ifndef PRODUCT |