There are a few remaining uses of custom JS function classes that should be converted to use the new static function based PrototypeFunction class. The uniformity should help when making further optimizations of the function architecture.
Created attachment 18490 [details] patch
Created attachment 18491 [details] perhaps easier to review with No WS changes
Comment on attachment 18490 [details] patch 104 if (args.size() > 0) 105 b = args[0]->toBoolean(exec); 106 else 107 b = false; I know this is not new code, but the check of args.size is entirely unnecessary because undefined already turns into false. 116 if (args.isEmpty()) 117 return jsBoolean(false); 122118 return jsBoolean(args[0]->toBoolean(exec)); /* TODO: optimize for bool case */ Here too. 48 // Functions 49 JSValue* booleanProtoFuncToString(ExecState*, JSObject*, const List&); 50 JSValue* booleanProtoFuncValueOf(ExecState*, JSObject*, const List&); 49 // Functions 50 JSValue* numberProtoFuncToString(ExecState*, JSObject*, const List&); 51 JSValue* numberProtoFuncToLocaleString(ExecState*, JSObject*, const List&); 52 JSValue* numberProtoFuncValueOf(ExecState*, JSObject*, const List&); 53 JSValue* numberProtoFuncToFixed(ExecState*, JSObject*, const List&); 54 JSValue* numberProtoFuncToExponential(ExecState*, JSObject*, const List&); 55 JSValue* numberProtoFuncToPrecision(ExecState*, JSObject*, const List&); 39 JSValue* regExpProtoFuncTest(ExecState*, JSObject*, const List&); 40 JSValue* regExpProtoFuncExec(ExecState*, JSObject*, const List&); 41 JSValue* regExpProtoFuncCompile(ExecState*, JSObject*, const List&); 42 JSValue* regExpProtoFuncToString(ExecState*, JSObject*, const List&); These need not be declared in the headers. I suggest the functions be given internal linkage. 830 JSValue* globalFuncUnEscape(ExecState* exec, JSObject*, const List& args) This should not have a capital "E". The word "unescape" is a single word. 159 double parseIntOverflow(const char* s, int length, int radix); Please omit the "s" here. 91 UString pattern = args.isEmpty() ? UString("") : arg0->toString(exec); In the future we should investigate if this can be changed to arg0->isUndefined() instead of args.isEmpty(). r=me
Landed in r29588.