interpret.cc (continue1): Implement explicit dispatch table.

* interpret.cc (continue1): Implement explicit dispatch table.
	insn_target: Explicit interpreter switch table.
	SAVE_PC: New macro, moves pc saving code into instructions that
	require so.
	NEXT_INSN: New macro, replaces `goto next_insn' in all insns.
	PC_REGISTER_ASM: New macro.
	INLINE_SWITCH: New macro.  Constrols dispatching strategy.
	opcode: Remove local variable.
	{i,l,f,d}{load,store}_{0,1,2,3}: Expand definitions.
	(POKEI): Use _Jv_word.
	(iinc): Use _Jv_word.
	(dupx): Change reference argument (sp) to pointer.
	(jvdump): Remove

	* interpret.cc: Remove instruction timing instrumentation.

	* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Changed
	comment.  Don't use _Jv_ClassNameSamePackage.

	* gnu/gcj/util/path/{SearchPath,ZipFileEntry,DirectoryPathEntry,
	URLPathEntry, CacheEntry}: Removed.

	* Makefile.am (ordinary_java_source_files): Remove gnu/gcj/util/path
	package.
	(.java.lo): Rule removed.

	* Makefile.in: Rebuilt.

From-SVN: r28777
This commit is contained in:
Kresten Krab Thorup 1999-08-20 13:40:35 +02:00 committed by Kresten Krab Thorup
parent ad69db4af5
commit f7b4fb110a
6 changed files with 962 additions and 730 deletions

View File

@ -1,3 +1,33 @@
1999-08-20 Kresten Krab Thorup <krab@samam.daimi.au.dk>
* interpret.cc (continue1): Implement explicit dispatch table.
insn_target: Explicit interpreter switch table.
SAVE_PC: New macro, moves pc saving code into instructions that
require so.
NEXT_INSN: New macro, replaces `goto next_insn' in all insns.
PC_REGISTER_ASM: New macro.
INLINE_SWITCH: New macro. Constrols dispatching strategy.
opcode: Remove local variable.
{i,l,f,d}{load,store}_{0,1,2,3}: Expand definitions.
(POKEI): Use _Jv_word.
(iinc): Use _Jv_word.
(dupx): Change reference argument (sp) to pointer.
(jvdump): Remove
* interpret.cc: Remove instruction timing instrumentation.
* java/lang/natClassLoader.cc (_Jv_PrepareCompiledClass): Changed
comment. Don't use _Jv_ClassNameSamePackage.
* gnu/gcj/util/path/{SearchPath,ZipFileEntry,DirectoryPathEntry,
URLPathEntry, CacheEntry}: Removed.
* Makefile.am (ordinary_java_source_files): Remove gnu/gcj/util/path
package.
(.java.lo): Rule removed.
* Makefile.in: Rebuilt.
1999-08-19 Tom Tromey <tromey@cygnus.com>
* java/lang/natThread.cc (class locker): New class.

View File

@ -161,9 +161,6 @@ SUFFIXES = .class .java .h
.class.lo:
$(GCJCOMPILE) -o $@ $<
.java.lo:
$(GCJCOMPILE) -o $@ $<
## This is GNU make specific. For the .o files in subdirs, use a
## special rule. The standard automake rule can't be overridden (this
## is a bug in automake), and it also won't put the .o files into
@ -484,12 +481,6 @@ built_java_source_files = java/lang/ConcreteProcess.java
ordinary_java_source_files = $(convert_source_files) \
gnu/gcj/runtime/MethodInvocation.java \
gnu/gcj/runtime/VMClassLoader.java \
gnu/gcj/util/path/SearchPath.java \
gnu/gcj/util/path/PathEntry.java \
gnu/gcj/util/path/DirectoryPathEntry.java \
gnu/gcj/util/path/ZipPathEntry.java \
gnu/gcj/util/path/URLPathEntry.java \
gnu/gcj/util/path/CacheEntry.java \
gnu/gcj/text/BaseBreakIterator.java \
gnu/gcj/text/CharacterBreakIterator.java \
gnu/gcj/text/LineBreakIterator.java \

View File

@ -298,12 +298,6 @@ built_java_source_files = java/lang/ConcreteProcess.java
ordinary_java_source_files = $(convert_source_files) \
gnu/gcj/runtime/MethodInvocation.java \
gnu/gcj/runtime/VMClassLoader.java \
gnu/gcj/util/path/SearchPath.java \
gnu/gcj/util/path/PathEntry.java \
gnu/gcj/util/path/DirectoryPathEntry.java \
gnu/gcj/util/path/ZipPathEntry.java \
gnu/gcj/util/path/URLPathEntry.java \
gnu/gcj/util/path/CacheEntry.java \
gnu/gcj/text/BaseBreakIterator.java \
gnu/gcj/text/CharacterBreakIterator.java \
gnu/gcj/text/LineBreakIterator.java \
@ -746,13 +740,7 @@ DEP_FILES = .deps/boehm.P .deps/defineclass.P .deps/dtoa.P \
.deps/gnu/gcj/text/LocaleData_en_US.P \
.deps/gnu/gcj/text/SentenceBreakIterator.P \
.deps/gnu/gcj/text/WordBreakIterator.P \
.deps/gnu/gcj/util/EnumerationChain.P \
.deps/gnu/gcj/util/path/CacheEntry.P \
.deps/gnu/gcj/util/path/DirectoryPathEntry.P \
.deps/gnu/gcj/util/path/PathEntry.P \
.deps/gnu/gcj/util/path/SearchPath.P \
.deps/gnu/gcj/util/path/URLPathEntry.P \
.deps/gnu/gcj/util/path/ZipPathEntry.P .deps/interpret.P \
.deps/gnu/gcj/util/EnumerationChain.P .deps/interpret.P \
.deps/java/io/BufferedInputStream.P \
.deps/java/io/BufferedOutputStream.P .deps/java/io/BufferedReader.P \
.deps/java/io/BufferedWriter.P .deps/java/io/ByteArrayInputStream.P \
@ -1087,25 +1075,6 @@ gnu/gcj/runtime/MethodInvocation.lo: \
.deps/gnu/gcj/runtime/.dirstamp
gnu/gcj/runtime/VMClassLoader.lo: gnu/gcj/runtime/VMClassLoader.java \
gnu/gcj/runtime/.dirstamp .deps/gnu/gcj/runtime/.dirstamp
gnu/gcj/util/path/.dirstamp:
@$(mkinstalldirs) gnu/gcj/util/path
@: > gnu/gcj/util/path/.dirstamp
.deps/gnu/gcj/util/path/.dirstamp:
@$(mkinstalldirs) .deps/gnu/gcj/util/path
@: > .deps/gnu/gcj/util/path/.dirstamp
gnu/gcj/util/path/SearchPath.lo: gnu/gcj/util/path/SearchPath.java \
gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp
gnu/gcj/util/path/PathEntry.lo: gnu/gcj/util/path/PathEntry.java \
gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp
gnu/gcj/util/path/DirectoryPathEntry.lo: \
gnu/gcj/util/path/DirectoryPathEntry.java \
gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp
gnu/gcj/util/path/ZipPathEntry.lo: gnu/gcj/util/path/ZipPathEntry.java \
gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp
gnu/gcj/util/path/URLPathEntry.lo: gnu/gcj/util/path/URLPathEntry.java \
gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp
gnu/gcj/util/path/CacheEntry.lo: gnu/gcj/util/path/CacheEntry.java \
gnu/gcj/util/path/.dirstamp .deps/gnu/gcj/util/path/.dirstamp
gnu/gcj/text/.dirstamp:
@$(mkinstalldirs) gnu/gcj/text
@: > gnu/gcj/text/.dirstamp
@ -2214,9 +2183,6 @@ clean-local:
.class.lo:
$(GCJCOMPILE) -o $@ $<
.java.lo:
$(GCJCOMPILE) -o $@ $<
$(nat_files): %.lo: %.cc
$(LTCXXCOMPILE) -c -o $@ $<

View File

@ -215,32 +215,30 @@ static const int op_jsr_w = 0xc9;
static const int op_putfield_1 = 0xca;
static const int op_putfield_2 = 0xcb;
static const int op_putfield_4 = 0xcd;
static const int op_putfield_8 = 0xce;
static const int op_putfield_a = 0xcf;
static const int op_putfield_4 = 0xcc;
static const int op_putfield_8 = 0xcd;
static const int op_putfield_a = 0xce;
static const int op_putstatic_1 = 0xd0;
static const int op_putstatic_2 = 0xd1;
static const int op_putstatic_4 = 0xd2;
static const int op_putstatic_8 = 0xd3;
static const int op_putstatic_a = 0xd4;
static const int op_putstatic_1 = 0xcf;
static const int op_putstatic_2 = 0xd0;
static const int op_putstatic_4 = 0xd1;
static const int op_putstatic_8 = 0xd2;
static const int op_putstatic_a = 0xd3;
static const int op_getfield_1 = 0xd5;
static const int op_getfield_2s = 0xd6;
static const int op_getfield_2u = 0xd7;
static const int op_getfield_4 = 0xd8;
static const int op_getfield_8 = 0xd9;
static const int op_getfield_a = 0xda;
static const int op_getfield_1 = 0xd4;
static const int op_getfield_2s = 0xd5;
static const int op_getfield_2u = 0xd6;
static const int op_getfield_4 = 0xd7;
static const int op_getfield_8 = 0xd8;
static const int op_getfield_a = 0xd9;
static const int op_getstatic_1 = 0xda;
static const int op_getstatic_2s = 0xdb;
static const int op_getstatic_2u = 0xdc;
static const int op_getstatic_4 = 0xdd;
static const int op_getstatic_8 = 0xde;
static const int op_getstatic_a = 0xdf;
static const int op_getstatic_1 = 0xdb;
static const int op_getstatic_2s = 0xdc;
static const int op_getstatic_2u = 0xdd;
static const int op_getstatic_4 = 0xde;
static const int op_getstatic_8 = 0xdf;
static const int op_getstatic_a = 0xe0;
static const int op_invokefinal = 0xe1;
static const int op_invokevtable = 0xe2;

File diff suppressed because it is too large Load Diff

View File

@ -220,9 +220,9 @@ static const int ALL_FLAGS = 0x7FF;
/** This function does class-preparation for compiled classes.
NOTE: This function replicates functionality from
NOTE: It contains replicated functionality from
_Jv_ResolvePoolEntry, and this is intentional, since that function
is
lives in resolve.cc which is entirely conditionally compiled.
*/
void
_Jv_PrepareCompiledClass(jclass klass)
@ -253,17 +253,8 @@ _Jv_PrepareCompiledClass(jclass klass)
JvThrow (new java::lang::ClassNotFoundException (str));
}
if ((found->accflags & PUBLIC) == PUBLIC
|| (_Jv_ClassNameSamePackage (found->name,
klass->name)))
{
pool->data[index].clazz = found;
pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
}
else
{
JvThrow (new java::lang::IllegalAccessError (found->getName()));
}
pool->data[index].clazz = found;
pool->tags[index] |= JV_CONSTANT_ResolvedFlag;
}
else if (pool->tags[index] == JV_CONSTANT_String)