Closed Bug 94567 Opened 23 years ago Closed 23 years ago

Avoid js_strlen() call in js_NewStringCopyZ()

Categories

(Core :: JavaScript Engine, defect, P3)

x86
Windows 2000
defect

Tracking

()

VERIFIED FIXED
mozilla0.9.4

People

(Reporter: bernard.alleysson, Assigned: brendan)

Details

(Keywords: js1.5, perf)

from jsstr.c rev 3.48

2298 JSString *
2299 js_NewStringCopyZ(JSContext *cx, const jschar *s, uintN gcflag)
2300 {
2301 size_t n, m;
2302 jschar *news;
2303 JSString *str;
2304 
2305 n = js_strlen(s);
2306 m = (n + 1) * sizeof(jschar);
2307 news = (jschar *) JS_malloc(cx, m);
2308 if (!news)
2309 return NULL;
2310 memcpy(news, s, m);
2311 str = js_NewString(cx, news, js_strlen(news), gcflag);
2312 if (!str)
2313 JS_free(cx, news);
2314 return str;
2315 }

it seems that js_strlen(news) == js_strlen(s) == n since news is a copy of s

so the patch would be to replace 
2311 str = js_NewString(cx, news, js_strlen(news), gcflag);
by
2311 str = js_NewString(cx, news, n, gcflag);

this will save a call to js_strlen

I know this is very little time but why waste cycles for that ?
Keywords: perf
cc'ing Brendan on this one -
Status: UNCONFIRMED → NEW
Ever confirmed: true
Dunno how that happened -- thanks for pointing it out.

/be
Assignee: rogerl → brendan
Keywords: js1.5, mozilla0.9.4
Priority: -- → P3
Target Milestone: --- → mozilla0.9.4
r=shaver on the patch proposed by Bernard.
sr=brendan@mozilla.org, and I checked in bernard's patch -- thanks!

/be
Status: NEW → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Verified -
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.