JDK-7194647 : JSR 292: GraphKit::compute_stack_effects needs to be aware of appendix and MemberName arguments
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: compiler
  • Affected Version: hs23,hs24
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2012-08-28
  • Updated: 2023-07-21
  • Resolved: 2023-07-21
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.
Other
hs25Resolved
Related Reports
Duplicate :  
Description
GraphKit::compute_stack_effects is called from various places including uncommon_trap.  uncommon_traps are used during parsing but also in intrinsics.  The difference between these two is that during parsing uncommon traps related to invokes should behave as happening in the caller while for intrinsics they are in the callee.

For call sites which have an appendix argument or a MemberName argument this impose a problem:  the argument count is different in the caller and the callee.

In a debug build we get asserts like:

$ jruby -J-XX:+ShowMessageBoxOnError -J-showversion --server -J-Xcomp -J-XX:+DeoptimizeRandom -J-XX:-TieredCompilation -J-XX:-VerifyDependencies test/test_respond_to.rb
java version "1.8.0-ea"
Java(TM) SE Runtime Environment (build 1.8.0-ea-b53)
Java HotSpot(TM) Server VM (build 24.0-b22-internal-fastdebug, compiled mode)

# To suppress the following error report, specify this argument
# after -XX: or in .hotspotrc:  SuppressErrorAt=/graphKit.cpp:1869
==============================================================================
Unexpected Error
------------------------------------------------------------------------------
Internal Error at graphKit.cpp:1869, pid=14392, tid=3429886832
assert(sp() >= inputs) failed: must have enough JVMS stack to execute

Do you want to debug the problem?

To debug, run 'gdb /proc/14392/exe 14392'; then switch to thread -865080464 (0xcc6feb70)
Enter 'yes' to launch gdb automatically (PATH must include gdb)
Otherwise, press RETURN to abort...
==============================================================================

Comments
RULE jruby/JRubyTest#bench.bench_full_startup Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#bench.bench_nsieve Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#bench.bench_richards Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#bench.bench_nsieve Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#bench.bench_richards Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.rubicon.test_case Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.rubicon.test_catch_throw Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.rubicon.test_if_unless Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.rubicon.test_methods Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.rubicon.test_nil_class Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.rubicon.test_numeric Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.rubicon.test_object Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Array.instance.tc_fetch Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Bignum.instance.tc_abs Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Bignum.instance.tc_eql Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Bignum.instance.tc_equality Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Bignum.instance.tc_quo Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Bignum.instance.tc_to_f Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Float.instance.tc_ceil Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Marshal.class.tc_constants Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Math.class.tc_constants Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Module.instance.tc_name Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.NilClass.instance.tc_to_a Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.NilClass.instance.tc_to_f Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.NilClass.instance.tc_to_i Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.NilClass.instance.tc_to_s Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.NilClass.instance.tc_xor Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Numeric.instance.tc_abs Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Object.instance.tc_class Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Object.instance.tc_object_id Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Range.instance.tc_eql Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Range.instance.tc_equal Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.String.instance.tc_to_f Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby.core.Time.class.tc_new Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby1.8.ruby.test_call Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby1.8.ruby.test_case Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby1.8.ruby.test_condition Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby1.8.ruby.test_ifunless Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.ruby1.8.ruby.test_struct Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.testJRUBY3155 Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.testJavaIntegration Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.testLoops Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.testMethods Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.testVariableAndMethod Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_bignum Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_fixnum_1_9 Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_frame_self Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_jar_file Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_java_wrapper_deadlock Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_RULE jruby_4084 Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_RULE jruby_core_ext Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_method Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_no_stack_trace_stomp Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_null_channel Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_unicode_paths Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_jruby_4084 Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute RULE jruby/JRubyTest#test.test_jruby_core_ext Crash assert(sp() >= inputs) failed: must have enough JVMS stack to execute
01-11-2012

EVALUATION This is tightly coupled to 7172640 and might become a duplicate of it, eventually.
11-09-2012