Hi Gildas,
On Wed, 31 Jul 2002, Gildas Bazin wrote:
> yes, if I use aegisvm foo.bar I will have the following error:
> resolve.c:303: failed assertion: thread != 0 && classname != 0 &&
> j_utf8_is_class_name(classname)
> because j_utf8_scan_qualified_name() doesn't deal with J_ASCII_period.
>
> The fix to j_utf8_scan_java_simple_class_name() is also needed if you want
> to pass test names to mauve as foo/bar/foobar instead of foo.bar.foobar.
The functions in utf8.h/c have precise meaning, and I don't think they
are the cause of the problem. In theory, we should be able to say:
aegisvm foo.bar
to invoke the main method in class bar of package foo. We should also
be able to say:
aegisvm foo\$bar
to invoke the main method of foo's inner class bar. The first, as you
have pointed out, is broken, while the second seems to work okay. I
looked again, and find that in aegisvm.c I have actually forgotten to
convert the command line Java class name into its internal form. Also, in
the native implementation of Class.define() I have used the wrong
predicate to test the validity of the classname argument. Attached is
the fix I just committed. Thanks for pointing out the problem.
Philip
--
Philip W. L. Fong pw...@us...
The Aegis VM Project http://aegisvm.sourceforge.net
The Aegis VM Project is an on-going effort to implement a lightweight,
secure JVM. It will eventually feature a modular architecture, Proof
Linking, that supports pluggable verification modules.
|