Add a write() command to d8. This is the same as the print() command, with the

exception that it does not add a new-line to the end. This half of what is
required to make the Debian Language Shootout code work correctly:
http://code.google.com/p/v8/issues/detail?id=354

BUG=354


git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
christian.plesner.hansen@gmail.com 2009-08-12 11:52:22 +00:00
parent 8cc083d523
commit 395206b1df
2 changed files with 12 additions and 5 deletions

View File

@ -146,19 +146,22 @@ bool Shell::ExecuteString(Handle<String> source,
Handle<Value> Shell::Print(const Arguments& args) { Handle<Value> Shell::Print(const Arguments& args) {
bool first = true; Handle<Value> val = Write(args);
printf("\n");
return val;
}
Handle<Value> Shell::Write(const Arguments& args) {
for (int i = 0; i < args.Length(); i++) { for (int i = 0; i < args.Length(); i++) {
HandleScope handle_scope; HandleScope handle_scope;
if (first) { if (i != 0) {
first = false;
} else {
printf(" "); printf(" ");
} }
v8::String::Utf8Value str(args[i]); v8::String::Utf8Value str(args[i]);
const char* cstr = ToCString(str); const char* cstr = ToCString(str);
printf("%s", cstr); printf("%s", cstr);
} }
printf("\n");
return Undefined(); return Undefined();
} }
@ -399,6 +402,7 @@ void Shell::Initialize() {
HandleScope scope; HandleScope scope;
Handle<ObjectTemplate> global_template = ObjectTemplate::New(); Handle<ObjectTemplate> global_template = ObjectTemplate::New();
global_template->Set(String::New("print"), FunctionTemplate::New(Print)); global_template->Set(String::New("print"), FunctionTemplate::New(Print));
global_template->Set(String::New("write"), FunctionTemplate::New(Write));
global_template->Set(String::New("read"), FunctionTemplate::New(Read)); global_template->Set(String::New("read"), FunctionTemplate::New(Read));
global_template->Set(String::New("load"), FunctionTemplate::New(Load)); global_template->Set(String::New("load"), FunctionTemplate::New(Load));
global_template->Set(String::New("quit"), FunctionTemplate::New(Quit)); global_template->Set(String::New("quit"), FunctionTemplate::New(Quit));
@ -588,6 +592,8 @@ void ShellThread::Run() {
Handle<ObjectTemplate> global_template = ObjectTemplate::New(); Handle<ObjectTemplate> global_template = ObjectTemplate::New();
global_template->Set(String::New("print"), global_template->Set(String::New("print"),
FunctionTemplate::New(Shell::Print)); FunctionTemplate::New(Shell::Print));
global_template->Set(String::New("write"),
FunctionTemplate::New(Shell::Write));
global_template->Set(String::New("read"), global_template->Set(String::New("read"),
FunctionTemplate::New(Shell::Read)); FunctionTemplate::New(Shell::Read));
global_template->Set(String::New("load"), global_template->Set(String::New("load"),

View File

@ -138,6 +138,7 @@ class Shell: public i::AllStatic {
#endif #endif
static Handle<Value> Print(const Arguments& args); static Handle<Value> Print(const Arguments& args);
static Handle<Value> Write(const Arguments& args);
static Handle<Value> Yield(const Arguments& args); static Handle<Value> Yield(const Arguments& args);
static Handle<Value> Quit(const Arguments& args); static Handle<Value> Quit(const Arguments& args);
static Handle<Value> Version(const Arguments& args); static Handle<Value> Version(const Arguments& args);