1.1 --- a/src/share/vm/ci/bcEscapeAnalyzer.cpp Mon Aug 19 17:36:36 2019 +0200 1.2 +++ b/src/share/vm/ci/bcEscapeAnalyzer.cpp Mon Mar 11 11:42:57 2019 +0100 1.3 @@ -1170,45 +1170,43 @@ 1.4 } 1.5 } 1.6 1.7 -bool BCEscapeAnalyzer::do_analysis() { 1.8 +void BCEscapeAnalyzer::do_analysis() { 1.9 Arena* arena = CURRENT_ENV->arena(); 1.10 // identify basic blocks 1.11 _methodBlocks = _method->get_method_blocks(); 1.12 1.13 iterate_blocks(arena); 1.14 - // TEMPORARY 1.15 - return true; 1.16 } 1.17 1.18 vmIntrinsics::ID BCEscapeAnalyzer::known_intrinsic() { 1.19 vmIntrinsics::ID iid = method()->intrinsic_id(); 1.20 - 1.21 if (iid == vmIntrinsics::_getClass || 1.22 iid == vmIntrinsics::_fillInStackTrace || 1.23 - iid == vmIntrinsics::_hashCode) 1.24 + iid == vmIntrinsics::_hashCode) { 1.25 return iid; 1.26 - else 1.27 + } else { 1.28 return vmIntrinsics::_none; 1.29 + } 1.30 } 1.31 1.32 -bool BCEscapeAnalyzer::compute_escape_for_intrinsic(vmIntrinsics::ID iid) { 1.33 +void BCEscapeAnalyzer::compute_escape_for_intrinsic(vmIntrinsics::ID iid) { 1.34 ArgumentMap arg; 1.35 arg.clear(); 1.36 switch (iid) { 1.37 - case vmIntrinsics::_getClass: 1.38 - _return_local = false; 1.39 - break; 1.40 - case vmIntrinsics::_fillInStackTrace: 1.41 - arg.set(0); // 'this' 1.42 - set_returned(arg); 1.43 - break; 1.44 - case vmIntrinsics::_hashCode: 1.45 - // initialized state is correct 1.46 - break; 1.47 + case vmIntrinsics::_getClass: 1.48 + _return_local = false; 1.49 + _return_allocated = false; 1.50 + break; 1.51 + case vmIntrinsics::_fillInStackTrace: 1.52 + arg.set(0); // 'this' 1.53 + set_returned(arg); 1.54 + break; 1.55 + case vmIntrinsics::_hashCode: 1.56 + // initialized state is correct 1.57 + break; 1.58 default: 1.59 assert(false, "unexpected intrinsic"); 1.60 } 1.61 - return true; 1.62 } 1.63 1.64 void BCEscapeAnalyzer::initialize() { 1.65 @@ -1279,7 +1277,7 @@ 1.66 vmIntrinsics::ID iid = known_intrinsic(); 1.67 1.68 // check if method can be analyzed 1.69 - if (iid == vmIntrinsics::_none && (method()->is_abstract() || method()->is_native() || !method()->holder()->is_initialized() 1.70 + if (iid == vmIntrinsics::_none && (method()->is_abstract() || method()->is_native() || !method()->holder()->is_initialized() 1.71 || _level > MaxBCEAEstimateLevel 1.72 || method()->code_size() > MaxBCEAEstimateSize)) { 1.73 if (BCEATraceLevel >= 1) { 1.74 @@ -1312,8 +1310,6 @@ 1.75 tty->print_cr(" (%d bytes)", method()->code_size()); 1.76 } 1.77 1.78 - bool success; 1.79 - 1.80 initialize(); 1.81 1.82 // Do not scan method if it has no object parameters and 1.83 @@ -1329,9 +1325,9 @@ 1.84 } 1.85 1.86 if (iid != vmIntrinsics::_none) 1.87 - success = compute_escape_for_intrinsic(iid); 1.88 + compute_escape_for_intrinsic(iid); 1.89 else { 1.90 - success = do_analysis(); 1.91 + do_analysis(); 1.92 } 1.93 1.94 // don't store interprocedural escape information if it introduces