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:
parent
8cc083d523
commit
395206b1df
16
src/d8.cc
16
src/d8.cc
@ -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"),
|
||||||
|
1
src/d8.h
1
src/d8.h
@ -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);
|
||||||
|
Loading…
Reference in New Issue
Block a user