| Index: src/factory.h
|
| diff --git a/src/factory.h b/src/factory.h
|
| index 107cbfd1ceb8488cef9cd5f65ecac41f2ccc5975..a473a4a6e6cef1860df9d8655dd26124139f0c6b 100644
|
| --- a/src/factory.h
|
| +++ b/src/factory.h
|
| @@ -388,6 +388,20 @@ class Factory V8_FINAL {
|
|
|
| Handle<JSProxy> NewJSProxy(Handle<Object> handler, Handle<Object> prototype);
|
|
|
| + // Reinitialize a JSReceiver into an (empty) JS object of respective type and
|
| + // size, but keeping the original prototype. The receiver must have at least
|
| + // the size of the new object. The object is reinitialized and behaves as an
|
| + // object that has been freshly allocated.
|
| + void ReinitializeJSReceiver(
|
| + Handle<JSReceiver> object, InstanceType type, int size);
|
| +
|
| + // Reinitialize an JSGlobalProxy based on a constructor. The object
|
| + // must have the same size as objects allocated using the
|
| + // constructor. The object is reinitialized and behaves as an
|
| + // object that has been freshly allocated using the constructor.
|
| + void ReinitializeJSGlobalProxy(Handle<JSGlobalProxy> global,
|
| + Handle<JSFunction> constructor);
|
| +
|
| // Change the type of the argument into a JS object/function and reinitialize.
|
| void BecomeJSObject(Handle<JSReceiver> object);
|
| void BecomeJSFunction(Handle<JSReceiver> object);
|
| @@ -395,22 +409,30 @@ class Factory V8_FINAL {
|
| Handle<JSFunction> NewFunction(Handle<String> name,
|
| Handle<Object> prototype);
|
|
|
| - Handle<JSFunction> NewFunctionWithoutPrototype(
|
| - Handle<String> name,
|
| - StrictMode strict_mode);
|
| -
|
| - Handle<JSFunction> NewFunction(Handle<Object> super, bool is_global);
|
| -
|
| - Handle<JSFunction> BaseNewFunctionFromSharedFunctionInfo(
|
| - Handle<SharedFunctionInfo> function_info,
|
| - Handle<Map> function_map,
|
| - PretenureFlag pretenure);
|
| -
|
| Handle<JSFunction> NewFunctionFromSharedFunctionInfo(
|
| Handle<SharedFunctionInfo> function_info,
|
| Handle<Context> context,
|
| PretenureFlag pretenure = TENURED);
|
|
|
| + Handle<JSFunction> NewFunction(Handle<String> name,
|
| + InstanceType type,
|
| + int instance_size,
|
| + Handle<Code> code,
|
| + bool force_initial_map);
|
| +
|
| + Handle<JSFunction> NewFunctionWithPrototype(Handle<String> name,
|
| + InstanceType type,
|
| + int instance_size,
|
| + Handle<JSObject> prototype,
|
| + Handle<Code> code,
|
| + bool force_initial_map);
|
| +
|
| + Handle<JSFunction> NewFunctionWithoutPrototype(Handle<String> name,
|
| + StrictMode strict_mode);
|
| +
|
| + Handle<JSFunction> NewFunctionWithoutPrototype(Handle<String> name,
|
| + Handle<Code> code);
|
| +
|
| // Create a serialized scope info.
|
| Handle<ScopeInfo> NewScopeInfo(int length);
|
|
|
| @@ -466,26 +488,6 @@ class Factory V8_FINAL {
|
| Vector< Handle<Object> > args);
|
|
|
|
|
| - Handle<JSFunction> NewFunction(Handle<String> name,
|
| - InstanceType type,
|
| - int instance_size,
|
| - Handle<Code> code,
|
| - bool force_initial_map);
|
| -
|
| - Handle<JSFunction> NewFunction(Handle<Map> function_map,
|
| - Handle<SharedFunctionInfo> shared, Handle<Object> prototype);
|
| -
|
| -
|
| - Handle<JSFunction> NewFunctionWithPrototype(Handle<String> name,
|
| - InstanceType type,
|
| - int instance_size,
|
| - Handle<JSObject> prototype,
|
| - Handle<Code> code,
|
| - bool force_initial_map);
|
| -
|
| - Handle<JSFunction> NewFunctionWithoutPrototype(Handle<String> name,
|
| - Handle<Code> code);
|
| -
|
| Handle<String> NumberToString(Handle<Object> number);
|
| Handle<String> Uint32ToString(uint32_t value);
|
|
|
| @@ -597,12 +599,31 @@ class Factory V8_FINAL {
|
| private:
|
| Isolate* isolate() { return reinterpret_cast<Isolate*>(this); }
|
|
|
| - Handle<JSFunction> NewFunctionHelper(Handle<String> name,
|
| - Handle<Object> prototype);
|
| + // Creates a heap object based on the map. The fields of the heap object are
|
| + // not initialized by New<>() functions. It's the responsibility of the caller
|
| + // to do that.
|
| + template<typename T>
|
| + Handle<T> New(Handle<Map> map, AllocationSpace space);
|
| +
|
| + template<typename T>
|
| + Handle<T> New(Handle<Map> map,
|
| + AllocationSpace space,
|
| + Handle<AllocationSite> allocation_site);
|
| +
|
| + // Initializes a function with a shared part and prototype.
|
| + // Note: this code was factored out of NewFunctionHelper such that
|
| + // other parts of the VM could use it. Specifically, a function that creates
|
| + // instances of type JS_FUNCTION_TYPE benefit from the use of this function.
|
| + inline void InitializeFunction(Handle<JSFunction> function,
|
| + Handle<SharedFunctionInfo> shared,
|
| + Handle<Object> prototype);
|
|
|
| - Handle<JSFunction> NewFunctionWithoutPrototypeHelper(
|
| - Handle<String> name,
|
| - StrictMode strict_mode);
|
| + // Creates a function initialized with a shared part.
|
| + inline Handle<JSFunction> NewFunctionHelper(
|
| + Handle<Map> function_map,
|
| + Handle<SharedFunctionInfo> shared,
|
| + Handle<Object> prototype,
|
| + PretenureFlag pretenure = TENURED);
|
|
|
| // Create a new map cache.
|
| Handle<MapCache> NewMapCache(int at_least_space_for);
|
|
|