Modified: trunk/Source/_javascript_Core/ChangeLog (205327 => 205328)
--- trunk/Source/_javascript_Core/ChangeLog 2016-09-01 23:43:39 UTC (rev 205327)
+++ trunk/Source/_javascript_Core/ChangeLog 2016-09-02 01:01:29 UTC (rev 205328)
@@ -1,3 +1,17 @@
+2016-09-01 JF Bastien <[email protected]>
+
+ jsc: provide printErr()
+ https://bugs.webkit.org/show_bug.cgi?id=161513
+
+ Reviewed by Mark Lam.
+
+ * jsc.cpp:
+ (GlobalObject::finishCreation):
+ (printInternal): renamed from functionPrint, add error checking
+ (functionPrintStdOut): punt to printInternal
+ (functionPrintStdErr): punt to printInternal
+ (functionPrint): Deleted.
+
2016-09-01 Mark Lam <[email protected]>
Move some JSObject and JSArray inline functions to their respective Inlines.h files.
Modified: trunk/Source/_javascript_Core/jsc.cpp (205327 => 205328)
--- trunk/Source/_javascript_Core/jsc.cpp 2016-09-01 23:43:39 UTC (rev 205327)
+++ trunk/Source/_javascript_Core/jsc.cpp 2016-09-02 01:01:29 UTC (rev 205328)
@@ -578,7 +578,8 @@
static EncodedJSValue JSC_HOST_CALL functionCreateSimpleObject(ExecState*);
static EncodedJSValue JSC_HOST_CALL functionGetHiddenValue(ExecState*);
static EncodedJSValue JSC_HOST_CALL functionSetHiddenValue(ExecState*);
-static EncodedJSValue JSC_HOST_CALL functionPrint(ExecState*);
+static EncodedJSValue JSC_HOST_CALL functionPrintStdOut(ExecState*);
+static EncodedJSValue JSC_HOST_CALL functionPrintStdErr(ExecState*);
static EncodedJSValue JSC_HOST_CALL functionDebug(ExecState*);
static EncodedJSValue JSC_HOST_CALL functionDescribe(ExecState*);
static EncodedJSValue JSC_HOST_CALL functionDescribeArray(ExecState*);
@@ -779,7 +780,8 @@
addFunction(vm, "debug", functionDebug, 1);
addFunction(vm, "describe", functionDescribe, 1);
addFunction(vm, "describeArray", functionDescribeArray, 1);
- addFunction(vm, "print", functionPrint, 1);
+ addFunction(vm, "print", functionPrintStdOut, 1);
+ addFunction(vm, "printErr", functionPrintStdErr, 1);
addFunction(vm, "quit", functionQuit, 0);
addFunction(vm, "abort", functionAbort, 0);
addFunction(vm, "gc", functionGCAndSweep, 0);
@@ -1152,7 +1154,7 @@
}
-EncodedJSValue JSC_HOST_CALL functionPrint(ExecState* exec)
+static EncodedJSValue printInternal(ExecState* exec, FILE* out)
{
if (test262AsyncTest) {
JSValue value = exec->argument(0);
@@ -1163,16 +1165,22 @@
for (unsigned i = 0; i < exec->argumentCount(); ++i) {
if (i)
- putchar(' ');
+ if (EOF == fputc(' ', out))
+ goto fail;
- printf("%s", exec->uncheckedArgument(i).toString(exec)->view(exec).get().utf8().data());
+ if (fprintf(out, "%s", exec->uncheckedArgument(i).toString(exec)->view(exec).get().utf8().data()) < 0)
+ goto fail;
}
- putchar('\n');
- fflush(stdout);
+ fputc('\n', out);
+fail:
+ fflush(out);
return JSValue::encode(jsUndefined());
}
+EncodedJSValue JSC_HOST_CALL functionPrintStdOut(ExecState* exec) { return printInternal(exec, stdout); }
+EncodedJSValue JSC_HOST_CALL functionPrintStdErr(ExecState* exec) { return printInternal(exec, stderr); }
+
#ifndef NDEBUG
EncodedJSValue JSC_HOST_CALL functionDumpCallFrame(ExecState* exec)
{