logo       

Re: java.lang.String.replaceFirst from IBM VM throws NPE: msg#00924

java.harmony.devel

Subject: Re: java.lang.String.replaceFirst from IBM VM throws NPE

But the way, how it affects the performance? java.lang.String is the most
used class and even such simple operations will cause loading of full regex
package.

On 2/21/06, Oliver Deakin <oliver.deakin@xxxxxxxxxxxxxx> wrote:
>
> Hi Alexey,
>
> Looking in there (these calls can also be seen if
> the test is run within a debugger), we see that the replaceFirst(String,
> String) implementation is:
>
> public String replaceFirst(String expr, String substitute) {
> return Pattern.compile(expr).matcher(this).replaceFirst(substitute);
> }
>
> Unfortunately the implementation of Pattern at
> modules/regex/src/main/java/java/util/regex/Pattern.java is only a stub
> (as HARMONY-39 has not yet been accepted into the Harmony SVN
> repository) and as such just returns null. Thus when we try to
> dereference the return from Pattern.compile(expr) we receive a
> NullPointerException. Once the regex in HARMONY-39 is moved into SVN
> this should go away.
>
>
> As a sideline, I think we should be able to move String.java out of
> kernel entirely anyway. We already have an implementation at
> modules/kernel/src/main/java/java/lang/String.java, and the only VM
> specific code in String is the intern() method. This method could simply
> be redirected to call VM.intern(String), a class which is within kernel,
> and then String.java can be moved into LUNI. It also means that the VM
> writer(s) need not implement the rest of the String class unnecessarily.
> Sound good?
>
>
> Alexey Petrenko wrote:
> > We got problem with Harmony on IBM VM on Windows.
> > java.lang.String.replaceFirst throws NPE.
> >
> > Here is the testcase:
> > public class Test {
> > public static void main(String args[]) {
> > String xx = "test";
> > xx = xx.replaceFirst("t","z");
> > }
> > }
> >
> > Here is the stack trace:
> > C:\Work\Harmony\Sources\Harmony\deploy\jre\bin>java Test
> > Exception in thread "main" java.lang.NullPointerException
> > at java.lang.String.replaceFirst(String.java:1642)
> > at Test.main(Test.java:4)
> >
> > Since IBM VM is not an OpenSource I can not check java.lang.String for
> > the cause of this problem :(
> >
> > Can we ask IBM guys somehow to fix this issue?
> >
> > --
> > Alexey A. Petrenko
> > Intel Middleware Products Division
> >
>
> --
> Oliver Deakin
> IBM United Kingdom Limited
>
>


--
Sergey Soldatov
Intel Middleware Products Division
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise