Chromium Code Reviews| Index: src/factory.cc | 
| diff --git a/src/factory.cc b/src/factory.cc | 
| index 9ba48ee5024fa1cb3a59c85864ff88604e8339b0..e48e4b5e31f7116990d80d78f7e0b51d31904130 100644 | 
| --- a/src/factory.cc | 
| +++ b/src/factory.cc | 
| @@ -242,6 +242,50 @@ Handle<String> Factory::NewExternalStringFromTwoByte( | 
| } | 
| +static Handle<JSValue> AllocateJSValue(Isolate* isolate, | 
| + JSFunction* constructor) { | 
| + CALL_HEAP_FUNCTION( | 
| + isolate, | 
| + isolate->heap()->AllocateJSObject(constructor), | 
| 
 
Vyacheslav Egorov (Chromium)
2011/07/12 20:38:12
constructor will be "dead variable" if GC happens.
 
zarko
2011/07/12 21:42:06
Done.
 
 | 
| + JSValue); | 
| +} | 
| + | 
| + | 
| +static Handle<Object> CreateJSValue(Isolate* isolate, | 
| + JSFunction* constructor, | 
| + Handle<Object> value) { | 
| + Handle<JSValue> raw_value = AllocateJSValue(isolate, constructor); | 
| + if (!raw_value.is_null()) { | 
| + raw_value->set_value(*value); | 
| + } | 
| + return raw_value; | 
| +} | 
| + | 
| + | 
| +Handle<Object> Factory::NewBoxedString(Handle<String> value) { | 
| + return CreateJSValue(isolate(), | 
| + isolate()->global_context()->string_function(), | 
| + value); | 
| +} | 
| + | 
| + | 
| +Handle<Object> Factory::NewBoxedBoolean(bool value) { | 
| + Handle<Object> boolean(value ? isolate()->heap()->true_value() | 
| + : isolate()->heap()->false_value()); | 
| + return CreateJSValue(isolate(), | 
| + isolate()->global_context()->boolean_function(), | 
| + boolean); | 
| +} | 
| + | 
| + | 
| +Handle<Object> Factory::NewBoxedNumber(double value) { | 
| + Handle<Object> number = NewNumber(value); | 
| + return CreateJSValue(isolate(), | 
| + isolate()->global_context()->number_function(), | 
| + number); | 
| +} | 
| + | 
| + | 
| Handle<Context> Factory::NewGlobalContext() { | 
| CALL_HEAP_FUNCTION( | 
| isolate(), |