src/share/vm/ci/bcEscapeAnalyzer.cpp

changeset 9736
940791dabea2
parent 7626
364f6c28effb
child 9756
2be326848943
     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

mercurial