JDK-8035605 : Expand functionality of PredictedIntrinsicGenerator
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2014-02-21
  • Updated: 2015-01-21
  • Resolved: 2014-06-10
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 8 JDK 9
8u40Fixed 9 b20Fixed
Related Reports
Relates :  
Description
Some intrinsic may need to check several classes in predicate for which intrinsic should be generated.
The mechanism of intrinsic_foo_predicate() and intrinsic_foo() was designed only to check one class so that you don't need class check in intrinsic_foo().
But for several classes you have to check instanceOf for all of them in both intrinsic_foo_predicate() and intrinsic_foo().
We need to expand this functionality to do something like next in PredictedIntrinsicGenerator::generate():

  int klass_cnt = intrinsic_foo_klass_count();
  Node* result_region = new Region(klass_cnt+1);
  for (int i = 0; i < klass_cnt; i++) {
    false_control = intrinsic_foo_predicate(i);
    intrinsic_foo(i);
    result_region->set_req(i, control());
    set_control(false_control);
  }
  generate_normal_compile()
  result_region->set_req(klass_cnt, control());
  set_control(result_region);