aboutsummaryrefslogtreecommitdiff
path: root/gcc/java
AgeCommit message (Collapse)AuthorFilesLines
2002-12-28cpp.texi, [...]: Use @copying.Joseph Myers2-45/+35
gcc: * doc/cpp.texi, doc/gcc.texi, doc/gccint.texi, doc/install.texi: Use @copying. gcc/ada: * gnat_rm.texi, gnat_ug.texi: Use @copying. * gnat_ug_unx.texi, gnat_ug_vms.texi, gnat_ug_vxw.texi, gnat_ug_wnt.texi: Regenerate. gcc/f: * g77.texi: Use @copying. gcc/java: * gcj.texi: Use @copying. gcc/treelang: * treelang.texi: Use @copying. libstdc++-v3: * docs/html/17_intro/porting.texi: Use @copying. * docs/html/17_intro/porting.html: Regenerate. From-SVN: r60587
2002-12-28gjavah.c (print_name_for_stub_or_jni): Adjust call to print_cxx_classname.Mark Mitchell2-7/+18
* gjavah.c (print_name_for_stub_or_jni): Adjust call to print_cxx_classname. (print_cxx_classname): Add add_scope parameter. (print_class_decls): Do not emit a semicolon after the extern "Java" block. (process_file): Adjust calls to print_cxx_classname. From-SVN: r60555
2002-12-23gcj.texi: Include Cover Texts in man page.Joseph Myers2-0/+7
gcc/java: * gcj.texi: Include Cover Texts in man page. fastjar: * fastjar.texi: Include Cover Texts in man page. From-SVN: r60451
2002-12-23class.c (build_static_field_ref): Check FIELD_FINAL.Jeff Sturm7-17/+38
* class.c (build_static_field_ref): Check FIELD_FINAL. * constants.c (alloc_class_constant): Use TYPE_CPOOL_DATA_REF instead of current_constant_pool_data_ref. * java-tree.h (current_constant_pool_data_ref): Undefine. (JTI_CURRENT_CONSTANT_POOL_DATA_REF): Remove. * jcf-parse.c (init_outgoing_cpool): Don't initialize current_constant_pool_data_ref. * except.c (prepare_eh_table_type ): Use DECL_NAME of class type, not build_internal_class_name. * parse.y (patch_incomplete_class_ref): Always emit `class$' method. Use it when class ref isn't certain to be compiled. From-SVN: r60448
2002-12-23gcc-common.texi: Define DEVELOPMENT.Joseph Myers3-8/+12
* doc/include/gcc-common.texi: Define DEVELOPMENT. ada: * gnat_rm.texi: Include gcc-common.texi. Use GCC version number only. * Make-lang.in ($(srcdir)/ada/gnat_ug_unx.info, $(srcdir)/ada/gnat_ug_vms.info, $(srcdir)/ada/gnat_ug_vxw.info, $(srcdir)/ada/gnat_ug_wnt.info, $(srcdir)/ada/gnat_rm.info, ada/gnat_ug_unx.dvi, ada/gnat_ug_vms.dvi, ada/gnat_ug_vxw.dvi, ada/gnat_ug_wnt.dvi, ada/gnat_rm.dvi): Depend on $(srcdir)/doc/include/gcc-common.texi. f: * root.texi: Include gcc-common.texi. * bugs.texi, news.texi: Don't include root.texi as part of full manual. * g77.texi: Update for use of gcc-common.texi. * Make-lang.in ($(srcdir)/f/g77.info, f/g77.dvi): Depend on $(srcdir)/doc/include/gcc-common.texi. java: * gcj.texi: Include gcc-common.texi. * Make-lang.in ($(srcdir)/java/gcj.info, java/gcj.dvi): Depend on $(srcdir)/doc/include/gcc-common.texi. treelang: * treelang.texi: Include gcc-common.texi. * Make-lang.in ($(srcdir)/treelang/treelang.info, treelang.dvi): Depend on gcc-common.texi. Add other missing dependencies. (treelang.dvi): Use texi2dvi. From-SVN: r60446
2002-12-22gcj.texi (Limitations): Add note about org.xml.sax and org.w3c.dom.Anthony Green2-0/+16
2002-12-22 Anthony Green <green@redhat.com> * gcj.texi (Limitations): Add note about org.xml.sax and org.w3c.dom. From-SVN: r60411
2002-12-20re PR java/8955 (switch case statement causes gcj to throw segmentation fault)Tom Tromey2-2/+12
* jcf-write.c (generate_bytecode_insns) [SWITCH_EXPR]: Handle case where minimum case value is Integer.MIN_VALUE. Fixes PR java/8955. From-SVN: r60372
2002-12-19re PR libgcj/8945 (StringTokenizer)Andrew Haley2-1/+10
2002-12-18 Andrew Haley <aph@redhat.com> * parse.y (patch_invoke): Force evaluation order when `check' is set. For PR libgcj/8945. From-SVN: r60290
2002-12-16gcc-common.texi: Change version number to 3.4.Mark Mitchell2-1/+5
* doc/include/gcc-common.texi: Change version number to 3.4. * gcj.texi: Change version number to 3.4. * root.texi: Change version number to 3.4. From-SVN: r60183
2002-12-16Merge basic-improvements-branch to trunkZack Weinberg30-68/+149
From-SVN: r60174
2002-12-06parse.y (source_end_java_method): Remove custom encoding of line numbers for ↵Ranjit Mathew2-0/+8
a function decl before passing it to... 2002-12-05 Ranjit Mathew <rmathew@hotmail.com> Andrew Haley <aph@redhat.com> * parse.y (source_end_java_method): Remove custom encoding of line numbers for a function decl before passing it to the back end. Co-Authored-By: Andrew Haley <aph@redhat.com> From-SVN: r59892
2002-12-03natClassLoader.cc (_Jv_PrepareCompiledClass): Call _Jv_PushClass.Andrew Haley3-0/+7
2002-12-03 Andrew Haley <aph@redhat.com> * java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Call _Jv_PushClass. (_Jv_InitNewClassFields): Set protectionDomain and chain = NULL. (_Jv_PopClass): New. (_Jv_PushClass): New. * java/lang/natClass.cc (forName (jstring)): Use a StackTrace to discover the ClassLoader of our caller. (_Jv_CheckArrayStore): Don't check that a class is assignment compatible with Object. * java/lang/natVMTHrowable.cc: Delete. * gnu/gcj/runtime/StackTrace.java: New, partly copied from java.lang.VMThrowable. (StackTrace(), StackTrace(int)): New constructors. (classAt, methodAt, update, methodAtAddress): New methods. (map): New field. * java/lang/VMThrowable.java: Use StackTrace instead of natVMTHrowable. * java/lang/Class.h (getClassLoaderInternal): New. (class Class): Be friendly with _Jv_PopClass and _Jv_PushClass. Be friendly with gnu::gcj::runtime::StackTrace. (Object.chain): New field. * include/java-interp.h (class _Jv_InterpMethod): Be friendly with gnu::gcj::runtime::StackTrace. * prims.cc (_Jv_NewObjectArray): Use getClassLoaderInternal() instead of getClassLoader(). * verify.cc (class _Jv_BytecodeVerifier): Likewise. java::lang::VMThrowable. * Makefile.am (core_java_source_files): Add MethodRef.java, StackTrace.java. (nat_source_files): Remove natVMThrowable.cc; add natStackTrace.cc. * Makefile.in: Rebuild. 2002-12-03 Andrew Haley <aph@redhat.com> * class.c (make_class_data): New field, "chain". * decl.c (java_init_decl_processing): Likewise. From-SVN: r59769
2002-12-02For PR java/8740:Tom Tromey2-36/+63
* parse.y (do_resolve_class): Handle qualified name via recursion. From-SVN: r59728
2002-11-28* decl.c (java_init_decl_processing): Use `LL' on 64-bit constant.Kaveh R. Ghazi2-1/+5
From-SVN: r59594
2002-11-25jcf-reader.c: Don't expand JCF_readu4 inside the expansion of JCF_SKIP.Diego Novillo2-1/+8
* jcf-reader.c: Don't expand JCF_readu4 inside the expansion of JCF_SKIP. From-SVN: r59459
2002-11-22re PR java/8676 (ICE in generate_bytecode_conditional at jcf-write.c:1359)Tom Tromey2-0/+10
* parse.y (patch_binop): Cast right hand side of shift expression to `int'. Fixes PR java/8676. From-SVN: r59390
2002-11-22jcf-write.c (write_classfile): Remove target class file...Ranjit Mathew2-0/+16
2002-11-22 Ranjit Mathew <rmathew@hotmail.com> Andrew Haley <aph@redhat.com> * gcc/java/jcf-write.c (write_classfile): Remove target class file, if it exists, before renaming the temporary class file to it. Co-Authored-By: Andrew Haley <aph@redhat.com> From-SVN: r59386
2002-11-19gcc.c (The Specs Language): Document spec functions.Jason Thorpe2-0/+10
* gcc.c (The Specs Language): Document spec functions. (static_spec_functions, lookup_spec_function) (eval_spec_function, handle_spec_function) (if_exists_spec_function, alloc_args): New. (execute): Abort if processing_spec_function is true. (do_spec_1): Hand off spec to handle_spec_function if %: is encountered. If processing_spec_function is true, end any pending argument when the end of the string is reached. (main): Use alloc_args to allocate the initial argument vector. * gcc.h (struct spec_function): New. (lang_specific_spec_functions): New extern. * config/netbsd-elf.h (STARTFILE_SPEC): Add if-exists(crti%O%s). (ENDFILE_SPEC): Add if-exists(crtn%O%s). * config/alpha/netbsd.h (ENDFILE_SPEC): Likewise. * doc/invoke.texi: Document spec functions. * cppspec.c (lang_specific_spec_functions): New. * gccspec.c: Likewise. * g++spec.c (lang_specific_spec_functions): New. * g77spec.c (lang_specific_spec_functions): New. * jvspec.c (lang_specific_spec_functions): New. From-SVN: r59241
2002-11-18re PR java/7912 (invalid verification error for arrays)Tom Tromey6-16/+44
Fix for PR java/7912: * expr.c (can_widen_reference_to): Allow cast of array to Cloneable or Serializable. * java-tree.h (java_lang_cloneable_identifier_node): Declare. (java_io_serializable_identifier_node): Likewise. * parse.y (java_lang_cloneable, java_io_serializable): Removed. (valid_ref_assignconv_cast_p): Use new identifier nodes. * lex.c (java_init_lex): Don't initialize java_lang_cloneable and java_io_serializable. * decl.c (java_init_decl_processing): Initialize java_lang_cloneable_identifier_node and java_io_serializable_identifier_node. (java_lang_cloneable_identifier_node): New global. (java_io_serializable_identifier_node): Likewise. From-SVN: r59227
2002-11-18buffer.c: Remove unnecessary casts.Jens-Michael Hoffmann15-62/+73
2002-11-14 Jens-Michael Hoffmann <jensmh@gmx.de> * buffer.c: Remove unnecessary casts. * check-init.c: Likewise. * class.c: Likewise. * constants.c: Likewise. * decl.c: Likewise. * except.c: Likewise. * gjavah.c: Likewise. * jcf-io.c: Likewise. * jcf-parse.c: Likewise. * jcf-path.c: Likewise. * jvspec.c: Likewise. * lang.c: Likewise. * lex.c: Likewise. * verify.c: Likewise. From-SVN: r59224
2002-11-06gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in a JNI header.Tom Tromey2-1/+9
* gjavah.c (print_stub_or_jni): Include JNIEXPORT and JNICALL in a JNI header. From-SVN: r58867
2002-11-06re PR java/6388 (Integer.MIN_VALUE == 0x80000000 optimized to false on powerpc)Tom Tromey5-42/+67
Fix for PR java/6388. * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while. * java-tree.h (enum java_tree_index): New values JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE. (decimal_int_max, decimal_long_max): New defines. * lex.c (yylex): Rewrote range checking. Sign extend literals. (error_if_numeric_overflow): Rewrote range checking. * decl.c (java_init_decl_processing): Initialize decimal_int_max, decimal_long_max. From-SVN: r58843
2002-11-02* java-tree.h: Move JV_STATE_ERROR before JV_STATE_DONE.Tom Tromey2-2/+5
From-SVN: r58762
2002-11-02re PR java/8415 (reflection bug: exception info for Method)Tom Tromey2-1/+6
* class.c (make_method_value): Put class name, not signature, into `throws' field. For PR java/8415. From-SVN: r58758
2002-11-02Reverted erroneous checkinTom Tromey5-61/+42
From-SVN: r58756
2002-11-02re PR java/6388 (Integer.MIN_VALUE == 0x80000000 optimized to false on powerpc)Tom Tromey5-42/+61
Fix for PR java/6388. * lex.h (JAVA_INTEGRAL_RANGE_ERROR): Wrap in do...while. * java-tree.h (enum java_tree_index): New values JTI_DECIMAL_INT_MAX_NODE, JTI_DECIMAL_LONG_MAX_NODE. (decimal_int_max, decimal_long_max): New defines. * lex.c (yylex): Rewrote range checking. Sign extend literals. (error_if_numeric_overflow): Rewrote range checking. * decl.c (java_init_decl_processing): Initialize decimal_int_max, decimal_long_max. From-SVN: r58755
2002-10-25gcj.texi (Invoking gij): Document --showversion.Tom Tromey2-2/+10
* gcj.texi (Invoking gij): Document --showversion. (Standard Properties): java.library.path now set. From-SVN: r58519
2002-10-23re PR java/8296 (gcjh generates incorrect JNI header)Tom Tromey2-1/+7
* gjavah.c (decode_signature_piece): In JNI mode, print `jobjectArray' when array depth is nonzero. Fixes PR java/8296. From-SVN: r58474
2002-10-21parse.y (patch_invoke): Call force_evaluation_order on a static arg list.Andrew Haley3-1/+131
2002-10-15 Andrew Haley <aph@redhat.com> * parse.y (patch_invoke): Call force_evaluation_order on a static arg list. (resolve_qualified_expression_name): Call force_evaluation_order on a arg list that is part of a Qualified Expression Name. * lang.c (dump_compound_expr): New. (java_dump_tree): New. From-SVN: r58369
2002-10-20gcj.texi: Added item describing the GCJ runtime property "gnu.gcj.progname".Ranjit Mathew2-0/+8
2002-10-20 Ranjit Mathew <rmathew@hotmail.com> * gcj.texi: Added item describing the GCJ runtime property "gnu.gcj.progname". From-SVN: r58342
2002-10-15* jcf-parse.c (get_constant): Fix type warning.Richard Henderson2-1/+5
From-SVN: r58186
2002-10-15java-tree.h (java_inlining_merge_static_initializers): Declare.Andrew Haley2-0/+7
2002-10-15 Andrew Haley <aph@redhat.com> * java-tree.h (java_inlining_merge_static_initializers): Declare. (java_inlining_map_static_initializers): Declare. From-SVN: r58163
2002-10-14tree-inline.c (remap_block): All local class initialization flags go in the ↵Andrew Haley2-6/+130
outermost scope. 2002-10-14 Andrew Haley <aph@redhat.com> * tree-inline.c (remap_block): All local class initialization flags go in the outermost scope. (expand_call_inline): Call java_inlining_map_static_initializers. (expand_call_inline): Call java_inlining_merge_static_initializers. * java/lang.c (merge_init_test_initialization): New. (java_inlining_merge_static_initializers): New. (inline_init_test_initialization): New. (java_inlining_map_static_initializers): New. * tree-inline.c (expand_call_inline): Convert retvar to expected type. From-SVN: r58129
2002-10-11* gcj.texi (Compatibility): Add Limitations and Extensions section.Mark Wielaard2-4/+40
From-SVN: r58067
2002-10-11decl.c (typename_hash): Use htab_hash_pointer.Kaveh R. Ghazi2-1/+5
cp: * decl.c (typename_hash): Use htab_hash_pointer. gcc: * fold-const.c (size_htab_hash): Use htab_hash_pointer. * function.c (insns_for_mem_hash): Likewise. * varasm.c (STRHASH): Likewise. java: * class.c (JAVA_TREEHASHHASH_H): Use htab_hash_pointer. From-SVN: r58036
2002-10-09* parse.y (merge_string_cste): Add parentheses around & within |.Kaveh R. Ghazi2-1/+5
From-SVN: r57991
2002-10-08re PR java/8003 (gcj segfaults on simple java line of code)Tom Tromey2-6/+6
* parse.y (variable_declarator_id): Simplify error path for array declarator error. For PR java/8003. From-SVN: r57934
2002-10-08system.h (GCCBUGURL): Delete.Zack Weinberg4-9/+14
* system.h (GCCBUGURL): Delete. * version.c (bug_report_url): New. Add commentary about modifying both these strings in modified distributions. * version.h: Declare bug_report_url. * diagnostic.c, gcc.c, gcov.c, java/gjavah.c, java/jcf-dump.c, java/jv-scan.c: Globally replace GCCBUGURL with bug_report_url. From-SVN: r57932
2002-10-08parse.y (attach_init_test_initialization_flags): Check for error_mark_node.Andrew Haley2-2/+10
2002-10-08 Andrew Haley <aph@redhat.com> * parse.y (attach_init_test_initialization_flags): Check for error_mark_node. From-SVN: r57928
2002-10-08Fix string concatenation bug.Anthony Green2-2/+17
From-SVN: r57912
2002-10-04gcj.texi (Standard properties): Change default of java.awt.toolkit to ↵Michael Koch2-1/+6
gnu.awt.gtk.GtkToolkit. 2002-10-03 Michael Koch <konqueror@gmx.de> * gcj.texi (Standard properties): Change default of java.awt.toolkit to gnu.awt.gtk.GtkToolkit. From-SVN: r57819
2002-10-02re PR rtl-optimization/6627 (-fno-align-functions regression from 2.95)Roger Sayle2-0/+14
PR optimization/6627 * toplev.c (force_align_functions_log): New global variable. * flags.h (force_align_functions_log): Add extern prototype. * varasm.c (assemble_start_function): Use it to force minimum function alignment. * config/i386/i386.h (FUNCTION_BOUNDARY): Set the correct minimum function alignment to one byte. (TARGET_PTRMEMFUNC_VBIT_LOCATION): Store the virtual bit in the least significant bit of vtable member function pointers. * tree.h (enum ptrmemfunc_vbit_where_t): Move definition to here from cp/cp-tree.h. * cp/cp-tree.h (enum ptrmemfunc_vbit_where_t): Delete definition from here, and move it to tree.h. * cp/decl.c (cxx_init_decl_processing): If storing the vbit in function pointers, ensure that force_align_functions_log is atleast one. * java/lang.c (java_init): If storing the vbit in function pointers, ensure that force_align_functions_log is atleast one to aid compatability with g++ vtables. From-SVN: r57745
2002-10-01jcf-dump.c (print_constant, [...]): Don't fall foul of type-based aliasing.Nathan Sidwell2-3/+16
* jcf-dump.c (print_constant, case CONSTANT_float): Don't fall foul of type-based aliasing. From-SVN: r57699
2002-09-30Fix docsAnthony Green2-1/+4
From-SVN: r57655
2002-09-30Add -fno-assert flag.Anthony Green8-5/+52
From-SVN: r57649
2002-09-27expr.c (build_java_array_length_access): Check for null pointer.Andrew Haley2-6/+29
2002-09-26 Andrew Haley <aph@redhat.com> * expr.c (build_java_array_length_access): Check for null pointer. * expr.c (expand_java_arrayload): Likewise. From-SVN: r57591
2002-09-21jcf-parse.c (get_constant): Decode from IEEE no matter what the target format.Richard Henderson2-30/+27
* jcf-parse.c (get_constant): Decode from IEEE no matter what the target format. From-SVN: r57389
2002-09-21ChangeLog: Follow spelling conventions.Kazu Hirata12-55/+70
* ChangeLog: Follow spelling conventions. * class.c: Likewise. * decl.c: Likewise. * expr.c: Likewise. * gjavah.c: Likewise. * java-tree.h: Likewise. * jcf-dump.c: Likewise. * jcf-parse.c: Likewise. * jvspec.c: Likewise. * lang.c: Likewise. * mangle.c: Likewise. * parse.y: Likewise. From-SVN: r57378
2002-09-17re PR java/7950 (jc1 parses files ending in 0x0d incorrectly)Tom Tromey2-1/+6
* lex.c (java_read_unicode_collapsing_terminators): Handle case where \r appears at EOF. Fixes PR java/7950. From-SVN: r57258
2002-09-16Index: gcc/ChangeLogGeoffrey Keating2-1/+6
2002-09-12 Geoffrey Keating <geoffk@apple.com> * ggc-common.c (ggc_mark_rtx_children_1): Update for changed name mangling. The following changes are merged from pch-branch: * doc/gty.texi (GTY Options): Document %a. * gengtype.c (do_scalar_typedef): New function. (process_gc_options): Handle `length' option. (set_gc_used_type): A pointer to an array of structures doesn't qualify as a pointer to a structure. (output_escaped_param): Add `%a' escape. (write_gc_structure_fields): Allow 'desc' on array of unions. (main): Define `uint8', `jword' and `JCF_u2' as scalars; use do_scalar_typedef. * gengtype.c (enum rtx_code): Make global. (rtx_format): Make global. (rtx_next): New. (gen_rtx_next): New. (write_rtx_next): New. (adjust_field_rtx_def): Skip fields marked by chain_next. (open_base_files): Delete redundant prototype. (write_enum_defn): New. (output_mangled_typename): Correct abort call. (write_gc_marker_routine_for_structure): Handle chain_next and chain_prev options. (finish_root_table): Don't output redundant \n. (main): Call gen_rtx_next, write_rtx_next, write_enum_defn. * c-tree.h (union lang_tree_node): Add chain_next option. * gengtype.h (NUM_PARAM): New definition. (struct type): For TYPE_PARAM_STRUCT, allow multiple parameters. * gengtype.c (find_param_structure): New. (adjust_field_type): Handle param<n>_is option. (process_gc_options): Detect use_params option. Update callers. (set_gc_used_type): Add 'param' parameter, update callers. Handle 'use_params' option. (open_base_files): Add splay-tree.h to list of files included. (output_mangled_typename): New. (write_gc_structure_fields): Update 'param' parameter to support multiple parameters. Change name mangling. Allow parameterized fields to have an apparent scalar type. Handle param<n>_is options, use_param option. (write_gc_marker_routine_for_structure): Update for change to name mangling. Better guess the output file for parameterized types. (write_gc_types): Update for change to name mangling. (write_gc_root): Update for change to name mangling. Handle (ignore) param<n>_is options. * doc/gty.texi (GTY Options): Add description of param<n>_is options, use_params option. * ggc.h (ggc_mark_rtx): Update for changed name mangling. * gengtype-lex.l: Produce token for param<n>_is. * gengtype-yacc.y: Parse param<n>_is. * gengtype.c (adjust_field_tree_exp): Don't name a variable 'rindex'. * rtl.c: Update comment describing rtx_format. * rtl.h (union rtunion): Separate definition and typedef. (struct rtx_def): Use gengtype to mark. * Makefile.in (gengtype.o): Also depend on rtl.def. * ggc.h (ggc_mark_rtx_children): Delete prototype. (ggc_mark_rtx): Change to alias of gengtype-generated routine. * ggc-common.c (ggc_mark_rtx_children): Delete. (ggc_mark_rtx_children_1): Delete. (gt_ggc_m_rtx_def): Delete. * gengtype.c (adjust_field_rtx_def): New. (adjust_field_type): Call adjust_field_rtx_def. (write_gc_structure_fields): Add 'default' case to switch if none is specified; remove unused code. * tree.h (struct tree_exp): Update for change to meaning of special. * gengtype.c (adjust_field_tree_exp): New function. (adjust_field_type): Handle `tree_exp' special here. (write_gc_structure_fields): Don't handle `tree_exp' special here. Handle new `dot' option. * gengtype.h: Make `info' a pointer-to-const. * gengtype-yacc.y (yacc_ids): Use xasprintf. * gengtype.c (write_gc_structure_fields): Remove implementation of `always' option, add `default' option. * doc/gty.texi (GTY Options): Remove documentation of `always', add `default'. Index: gcc/cp/ChangeLog 2002-09-12 Geoffrey Keating <geoffk@apple.com> * cp-tree.h (union lang_tree_node): Add chain_next option. Index: gcc/f/ChangeLog 2002-09-12 Geoffrey Keating <geoffk@apple.com> * com.c (union lang_tree_node): Add chain_next option. Index: gcc/java/ChangeLog 2002-09-12 Geoffrey Keating <geoffk@apple.com> * java-tree.h (union lang_tree_node): Add chain_next option. From-SVN: r57206