Commit 075516bc by Per Bothner Committed by Per Bothner

jcf-parse.c (read_class): If class is from .class or .zip file and it's already been read...


	* jcf-parse.c (read_class):  If class is from .class or .zip file
	and it's already been read, don't push/pop parser context.

From-SVN: r42407
parent 4694cec2
2001-05-21 Per Bothner <per@bothner.com>
* jcf-parse.c (read_class): If class is from .class or .zip file
and it's already been read, don't push/pop parser context.
2001-05-18 Per Bothner <per@bothner.com> 2001-05-18 Per Bothner <per@bothner.com>
* jvspec.c (lang_specific_pre_link): Re-arrange the linker * jvspec.c (lang_specific_pre_link): Re-arrange the linker
......
...@@ -558,7 +558,6 @@ read_class (name) ...@@ -558,7 +558,6 @@ read_class (name)
tree save_current_class = current_class; tree save_current_class = current_class;
const char *save_input_filename = input_filename; const char *save_input_filename = input_filename;
JCF *save_current_jcf = current_jcf; JCF *save_current_jcf = current_jcf;
int generate;
if ((icv = IDENTIFIER_CLASS_VALUE (name)) != NULL_TREE) if ((icv = IDENTIFIER_CLASS_VALUE (name)) != NULL_TREE)
{ {
...@@ -579,14 +578,15 @@ read_class (name) ...@@ -579,14 +578,15 @@ read_class (name)
current_jcf = jcf; current_jcf = jcf;
java_parser_context_save_global ();
java_push_parser_context ();
if (current_jcf->java_source) if (current_jcf->java_source)
{ {
const char *filename = current_jcf->filename; const char *filename = current_jcf->filename;
tree file; tree file;
FILE *finput; FILE *finput;
int generate;
java_parser_context_save_global ();
java_push_parser_context ();
BUILD_FILENAME_IDENTIFIER_NODE (file, filename); BUILD_FILENAME_IDENTIFIER_NODE (file, filename);
generate = IS_A_COMMAND_LINE_FILENAME_P (file); generate = IS_A_COMMAND_LINE_FILENAME_P (file);
if (wfl_operator == NULL_TREE) if (wfl_operator == NULL_TREE)
...@@ -605,24 +605,28 @@ read_class (name) ...@@ -605,24 +605,28 @@ read_class (name)
fatal_io_error ("can't close %s", input_filename); fatal_io_error ("can't close %s", input_filename);
} }
JCF_FINISH (current_jcf); JCF_FINISH (current_jcf);
java_pop_parser_context (generate);
java_parser_context_restore_global ();
} }
else else
{ {
input_filename = current_jcf->filename;
current_class = class;
if (class == NULL_TREE || ! CLASS_PARSED_P (class)) if (class == NULL_TREE || ! CLASS_PARSED_P (class))
{ {
java_parser_context_save_global ();
java_push_parser_context ();
current_class = class;
input_filename = current_jcf->filename;
if (JCF_SEEN_IN_ZIP (current_jcf)) if (JCF_SEEN_IN_ZIP (current_jcf))
read_zip_member(current_jcf, read_zip_member(current_jcf,
current_jcf->zipd, current_jcf->zipd->zipf); current_jcf->zipd, current_jcf->zipd->zipf);
jcf_parse (current_jcf); jcf_parse (current_jcf);
class = current_class;
java_pop_parser_context (0);
java_parser_context_restore_global ();
} }
layout_class (current_class); layout_class (class);
load_inner_classes (current_class); load_inner_classes (class);
generate = 0;
} }
java_pop_parser_context (generate);
java_parser_context_restore_global ();
current_class = save_current_class; current_class = save_current_class;
input_filename = save_input_filename; input_filename = save_input_filename;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment