Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index 27c6f6dc2f67707d3497dbbf3fedc0c139f309ee..2f188f57b3f99ac9a44f6c19b3a554235e3e9cb8 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -1203,8 +1203,8 @@ Handle<JSFunction> Factory::NewFunction(Handle<Map> map, |
Handle<JSFunction> Factory::NewFunction(Handle<String> name, |
- MaybeHandle<Object> maybe_prototype, |
- MaybeHandle<Code> maybe_code) { |
+ MaybeHandle<Code> maybe_code, |
+ MaybeHandle<Object> maybe_prototype) { |
Handle<SharedFunctionInfo> info = NewSharedFunctionInfo(name); |
ASSERT(info->strict_mode() == SLOPPY); |
Handle<Code> code; |
@@ -1225,34 +1225,26 @@ Handle<JSFunction> Factory::NewFunction(Handle<String> name, |
Handle<JSFunction> Factory::NewFunction(Handle<String> name) { |
- return NewFunction(name, the_hole_value(), MaybeHandle<Code>()); |
+ return NewFunction(name, MaybeHandle<Code>(), the_hole_value()); |
} |
-Handle<JSFunction> Factory::NewFunction(MaybeHandle<Object> maybe_prototype, |
+Handle<JSFunction> Factory::NewFunction(Handle<Object> prototype, |
Handle<String> name, |
InstanceType type, |
int instance_size, |
Handle<Code> code) { |
// Allocate the function |
- Handle<JSFunction> function = NewFunction(name, maybe_prototype, code); |
- |
- if (!maybe_prototype.is_null() || |
- type != JS_OBJECT_TYPE || |
- instance_size != JSObject::kHeaderSize) { |
- Handle<Object> prototype = maybe_prototype.ToHandleChecked(); |
- Handle<Map> initial_map = NewMap( |
- type, instance_size, GetInitialFastElementsKind()); |
- if (prototype->IsTheHole() && !function->shared()->is_generator()) { |
- prototype = NewFunctionPrototype(function); |
- } |
- initial_map->set_prototype(*prototype); |
- function->set_initial_map(*initial_map); |
- initial_map->set_constructor(*function); |
- } else { |
- ASSERT(!function->has_initial_map()); |
- ASSERT(!function->has_prototype()); |
+ Handle<JSFunction> function = NewFunction(name, code, prototype); |
+ |
+ Handle<Map> initial_map = NewMap( |
+ type, instance_size, GetInitialFastElementsKind()); |
+ if (prototype->IsTheHole() && !function->shared()->is_generator()) { |
+ prototype = NewFunctionPrototype(function); |
} |
+ initial_map->set_prototype(*prototype); |
+ function->set_initial_map(*initial_map); |
+ initial_map->set_constructor(*function); |
return function; |
} |
@@ -2092,11 +2084,10 @@ Handle<JSFunction> Factory::CreateApiFunction( |
break; |
} |
- MaybeHandle<Object> maybe_prototype = prototype; |
- if (obj->remove_prototype()) maybe_prototype = MaybeHandle<Object>(); |
- |
- Handle<JSFunction> result = NewFunction( |
- maybe_prototype, Factory::empty_string(), type, instance_size, code); |
+ Handle<JSFunction> result = obj->remove_prototype() |
+ ? NewFunction(Factory::empty_string(), code) |
Igor Sheludko
2014/05/07 19:01:51
I think you can omit Function:: here and the line
|
+ : NewFunction(prototype, Factory::empty_string(), |
+ type, instance_size, code); |
result->shared()->set_length(obj->length()); |
Handle<Object> class_name(obj->class_name(), isolate()); |