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