Closed Bug 94570 Opened 23 years ago Closed 21 years ago

JS_ReportOutOfMemory() redundant

Categories

(Core :: JavaScript Engine, defect)

x86
Windows 2000
defect
Not set
trivial

Tracking

()

VERIFIED FIXED

People

(Reporter: bernard.alleysson, Assigned: rogerl)

References

Details

from jsregexp.c

static RENode *
374 NewRENode(CompilerState *state, REOp op, void *kid)
375 {
376 JSContext *cx;
377 RENode *ren;
378 379 cx = state->context;
380 ren = (RENode*) JS_malloc(cx, sizeof *ren);
381 if (!ren) {
382 JS_ReportOutOfMemory(cx);
383 return NULL;
384 }
385 ren->op = (uint8)op;
386 ren->flags = 0;
387 #ifdef DEBUG
388 ren->offset = gOffset++;
389 #endif
390 ren->next = NULL;
391 ren->kid = kid;
392 return ren;
393 }

the code
"
380 ren = (RENode*) JS_malloc(cx, sizeof *ren);
381 if (!ren) {
382 JS_ReportOutOfMemory(cx);
383 return NULL;
384 }
"

could be simplified as

"
ren = (RENode*) JS_malloc(cx, sizeof *ren);
if (!ren)
      return NULL;
"

because JS_ReportOutOfMemory() will be called by JS_malloc itself before return

all this in case of JS_malloc() failure wich is never likely to happen ... but
who knows :-)
Formally confirming bug for consideration. cc'ing Brendan in case he's 
interested in this one - 
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: JS_ReportOutOfMemory() redondant → JS_ReportOutOfMemory() redundant
I'll gladly r= a patch, but this is rogerl's code.

More significant, perhaps, is the number of small mallocs done to compile a
regexp.  It would be better to coalesce these somehow, using an arena perhaps,
and then copying (with pointer fixups) to the final malloc'd-to-tree-size piece
of memory.

/be
it looks like bug 85721's rewrite makes this obsolete.
Depends on: RegExpPerf
yes, fixed by patch for bug 85721:
http://lxr.mozilla.org/seamonkey/source/js/src/jsregexp.c#275
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
Bernard: thanks for reporting back on this. Marking Verified -
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.