* src/vm/jit/parse.c (parse): New unresolved reference scheme: Data structures
authoredwin <none@none>
Wed, 12 Apr 2006 20:06:23 +0000 (20:06 +0000)
committeredwin <none@none>
Wed, 12 Apr 2006 20:06:23 +0000 (20:06 +0000)
commit75fb66eac46896517c0277b07e69b14f0f385956
treefe3ee0d088bde58cbfae040cca45706b881c6539
parentd743f4cd9eaba4f6b1ba93c2ede95958d6497819
* src/vm/jit/parse.c (parse): New unresolved reference scheme: Data structures
for unresolved fields/methods are only created if really needed. Otherwise
a lazy resolving is done on-the-fly. This reduced compile time by over 10% for
SpecJVM98 and eclipse.

* src/vm/resolve.c (resolve_subtype_check): Added.
(resolve_lazy_subtype_checks): Likewise.
(resolve_and_check_subtype_set): Use resolve_subtype_check. Return
resolve_result_t instead of bool. Removed `checked` argument.
(resolve_class): Use resolve_subtype_check.
(resolve_field_verifier_checks): Added.
(resolve_field_lazy): Added.
(resolve_field): Use resolve_field_verifier_checks.
(resolve_method_invokespecial_lookup): Added.
(resolve_method_verifier_checks): Added.
(resolve_method_lazy): Added.
(resolve_method): Use resolve_method_invokespecial_lookup and
resolve_method_verifier_checks.
(constrain_unresolved_method): Adapted to new unresolved reference scheme.
(constrain_unresolved_field): Likewise.
(unresolved_field_debug_dump): Likewise.
(unresolved_method_debug_dump): Likewise.

* src/vm/jit/patcher.h (intrp_patcher_get_putstatic_clinit): Added.

* src/vm/jit/intrp/intrp.h (vm_Cell2afi): Added.
(vm_afi2Cell): Likewise.
(printarg_afi): Added.
(vim boilerplate): Added.
(Changes): Added my name.

* src/vm/jit/intrp/patcher.c (intrp_patcher_get_putstatic_clinit): Added.

* src/vm/jit/intrp/disass.c (printarg_afi): Added.
(Changes): Added my name.
(vim boilerplate): Added.

* src/vm/jit/intrp/java.vmg (GETSTATIC_CELL, GETSTATIC_INT, GETSTATIC_FLOAT)
(GETSTATIC_LONG, PUTSTATIC_CELL, PUTSTATIC_INT, PUTSTATIC_FLOAT)
(PUTSTATIC_LONG, GETFIELD_CELL, GETFIELD_INT, GETFIELD_FLOAT)
(GETFIELD_LONG, PUTFIELD_CELL, PUTFIELD_INT, PUTFIELD_FLOAT)
(PUTFIELD_LONG): Now take a fieldinfo instead of an unresolved_field.
(INVOKEVIRTUAL, INVOKESTATIC, INVOKESPECIAL, INVOKEINTERFACE): Now take
a methodinfo instead of an unresolved_method.
(PATCHER_GETSTATIC_CLINIT_INT, PATCHER_GETSTATIC_CLINIT_FLOAT)
(PATCHER_GETSTATIC_CLINIT_LONG, PATCHER_GETSTATIC_CLINIT_CELL): Added.
(PATCHER_PUTSTATIC_CLINIT_INT, PATCHER_PUTSTATIC_CLINIT_FLOAT)
(PATCHER_PUTSTATIC_CLINIT_LONG, PATCHER_PUTSTATIC_CLINIT_CELL): Added.

* src/vm/jit/allocator/simplereg.c (allocate_scratch_registers):
Use INSTRUCTION_GET_METHODDESC to get method descriptor.

* src/vm/jit/stack.c (stack_analyse): Ported to new unresolved reference
scheme.
(stack_show_icmd): Likewise.

* src/vm/jit/verify/typecheck.c (verify_invocation): Ported to new unresolved
reference scheme.
(verify_basic_block): Likewise.

* src/vm/jit/powerpc/codegen.c (codegen): Ported to new unresolved reference
scheme.

* src/vm/jit/alpha/codegen.c (codegen): Ported to new unresolved reference
scheme.

* src/vm/jit/mips/codegen.c (codegen): Ported to new unresolved reference
scheme.

* src/vm/jit/i386/codegen.c (codegen): Ported to new unresolved reference
scheme.

* src/vm/jit/x86_64/codegen.c (codegen): Ported to new unresolved reference
scheme.

* src/vm/jit/intrp/codegen.c (codegen): Ported to new unresolved reference
scheme.
(Changes): Added my name.

* src/vm/jit/intrp/codegen.h (vim boilerplate): Added.
17 files changed:
src/vm/jit/allocator/simplereg.c
src/vm/jit/alpha/codegen.c
src/vm/jit/i386/codegen.c
src/vm/jit/intrp/codegen.c
src/vm/jit/intrp/codegen.h
src/vm/jit/intrp/disass.c
src/vm/jit/intrp/intrp.h
src/vm/jit/intrp/java.vmg
src/vm/jit/intrp/patcher.c
src/vm/jit/mips/codegen.c
src/vm/jit/parse.c
src/vm/jit/patcher.h
src/vm/jit/powerpc/codegen.c
src/vm/jit/stack.c
src/vm/jit/verify/typecheck.c
src/vm/jit/x86_64/codegen.c
src/vm/resolve.c