JDK-6493180 : C2 Error: SoftMatchFailure is not allowed
  • Type: Bug
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: 7
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • OS: solaris_9
  • CPU: sparc
  • Submitted: 2006-11-13
  • Updated: 2010-04-03
  • Resolved: 2006-12-02
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 6 JDK 7 Other
6u4Fixed 7Fixed hs10Fixed
Related Reports
Relates :  
Description
C2 failed the next test on all platforms after the putback:

20061017011246.steved.escape_analysis1_ws

test: nsk/regression/b4755490

foundation% !g
gamma -cp /net/gtee.sfbay/export/gtee2.0/suites/6.0/vm/bin/classes -Xcomp -XX:Co
mpileThreshold=100 b4755490
VM option 'CompileThreshold=100'
No matching rule for:
--N: o398       Binary  === _ o99 o100  [[o181  57 ]]
_Binary_eRegL_eRegL  360  _Binary_eRegL_eRegL
_Binary_eADXRegL_eBCXRegL  360  _Binary_eADXRegL_eBCXRegL

   --N: o99     ConL    === o0  [[o414 o415 o398 o413 o412 o411 o410 o409 o408 o
407 o406 o405 o404 o403 o402 o401 o400 o399 ]]  #long:1
   IMML  20  IMML
   IMML_127  10  IMML_127
   IMML32  20  IMML32
   EREGL  200  loadConL
   EADXREGL  200  loadConL
   EBCXREGL  200  loadConL
   EADXREGL_LOW_ONLY  270  loadConL_low_only
   STACKSLOTL  400  storeSSL

   --N: o100    ConL    === o0  [[o414 o415 o398 o413 o412 o411 o410 o409 o408 o
407 o406 o405 o404 o403 o402 o401 o400 o399 ]]  #long:0
   IMML  20  IMML
   IMML0  10  IMML0
   IMML_127  10  IMML_127
   IMML32  20  IMML32
   EREGL  160  loadConL0
   EADXREGL  160  loadConL0
   EBCXREGL  160  loadConL0
   EADXREGL_LOW_ONLY  270  loadConL_low_only
   STACKSLOTL  360  storeSSL

# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/matcher.hpp:359
#
# An unexpected error has been detected by Java Runtime Environment:
#
#  Internal Error (/net/prt-solx86-q1-2/PrtBuildDir/workspace/src/share/vm/opto/matcher.hpp, 359), pid=26277, tid=11
#
# Java VM: Java HotSpot(TM) Server VM (20061017011246.steved.escape_analysis1_ws-debug compiled mode)
#
# Error: SoftMatchFailure is not allowed except in product
# An error report file with more information is saved as hs_err_pid26277.log
#
# If you would like to submit a bug report, please visit:
#   http://java.sun.com/webapps/bugreport/crash.jsp
#
Current thread is 11
Dumping core ...
Abort


[t@32 l@34]: print n->dump(2)
o99     ConL    === o0  [[o415 o416 o399 o414 o413 o412 o411 o410 o409 o408 o407 o406 o405 o404 o403 o402 o401 o400 ]]  #long:1
o100    ConL    === o0  [[o415 o416 o399 o414 o413 o412 o411 o410 o409 o408 o407 o406 o405 o404 o403 o402 o401 o400 ]]  #long:0
o399    Binary  === _ o99 o100  [[o182  58 ]]

[t@32 l@34]: print n->dump(-2)
o399    Binary  === _ o99 o100  [[o182  58 ]]
o182    StoreLConditional       === o190 o185 o284 o399  [[o181  57 ]]
 58     StoreLConditional       ===  49  59  60 o399  [[]]  !jvms: b4755490::run @ bci:22

[t@32 l@34]: where
  [1] report_fatal(file_name = 0xfef7cfcf "/net/jaberwocky/export/home2/work/6488532/src/share/vm/opto/matcher.hpp", line_no = 359, message = 0xfef7d017 "SoftMatchFailure is not allowed except in product"), line 214 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/utilities/debug.cpp"
  [2] Matcher::soft_match_failure(), line 359 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/opto/matcher.hpp"
  [3] Matcher::match_tree(this = 0xb5500740, n = 0x138408), line 1105 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/opto/matcher.cpp"
  [4] Matcher::xform(this = 0xb5500740, n = 0x138408, max_stack = 417), line 753 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/opto/matcher.cpp"
  [5] Matcher::match(this = 0xb5500740), line 251 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/opto/matcher.cpp"
  [6] Compile::Code_Gen(this = 0xb5501188), line 1463 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/opto/compile.cpp"
  [7] Compile::Compile(this = 0xb5501188, ci_env = 0xb5501744, compiler = 0x2d3428, target = 0x5c87c0, osr_bci = 7, subsume_loads = true), line 512 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/opto/compile.cpp"
  [8] C2Compiler::compile_method(this = 0x2d3428, env = 0xb5501744, target = 0x5c87c0, entry_bci = 7), line 28 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/opto/c2compiler.cpp"
  [9] CompileBroker::invoke_compiler_on_method(task = 0x2eecd8), line 1535 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/compiler/compileBroker.cpp"
  [10] CompileBroker::compiler_thread_loop(), line 1387 in "/net/jaberwocky/export/home2/work/6488532/src/share/vm/compiler/compileBroker.cpp"
  [11] compiler_thread_entry(thread = 0x2eb000, __the_thread__ = 0x2eb000), line

Comments
SUGGESTED FIX Webrev: http://analemma.sfbay.sun.com/net/prt-archiver.sfbay/data/archived_workspaces/main/c2_baseline/2006/20061114103955.kvn.6493180/workspace/webrevs/webrev-2006.11.14/index.html
15-11-2006

EVALUATION In the changes for 6474965 StoreLConditionalNode class was not modified to be the subclass of LoadStoreNode class (the same way as StorePConditionalNode was done). The method ideal_reg() was moved to LoadStoreNode class leaving StoreLConditionalNode with default Node::ideal_reg() {return 0;}. In matcher during call find_shared() the method ideal_reg() is used to check unmatchable nodes. This is why matcher doesn't match StoreLConditionalNode.
14-11-2006

SUGGESTED FIX Make StoreLConditionalNode class as subclass of LoadStoreNode class.
14-11-2006