Index: src/factory.cc |
diff --git a/src/factory.cc b/src/factory.cc |
index 4d2c6b4ceaa8bcddcf796e033e98e507319da528..568fba72d3ea9299683ca9eec56483894fc155da 100644 |
--- a/src/factory.cc |
+++ b/src/factory.cc |
@@ -351,7 +351,12 @@ Handle<JSFunction> Factory::NewFunctionFromSharedFunctionInfo( |
Handle<Context> context, |
PretenureFlag pretenure) { |
Handle<JSFunction> result = BaseNewFunctionFromSharedFunctionInfo( |
- function_info, Top::function_map(), pretenure); |
+ function_info, |
+ function_info->strict_mode() |
+ ? Top::function_map_strict() |
+ : Top::function_map(), |
+ pretenure); |
+ |
result->set_context(*context); |
int number_of_literals = function_info->num_literals(); |
Handle<FixedArray> literals = |
@@ -826,6 +831,24 @@ Handle<JSFunction> Factory::NewFunctionWithoutPrototype(Handle<String> name) { |
} |
+Handle<JSFunction> Factory::NewFunctionWithoutPrototypeStrictHelper( |
+ Handle<String> name) { |
+ Handle<SharedFunctionInfo> function_share = NewSharedFunctionInfo(name); |
+ CALL_HEAP_FUNCTION(Heap::AllocateFunction( |
+ *Top::function_without_prototype_map_strict(), |
+ *function_share, |
+ *the_hole_value()), |
+ JSFunction); |
+} |
+ |
+ |
+Handle<JSFunction> Factory::NewFunctionWithoutPrototypeStrict( |
+ Handle<String> name) { |
+ Handle<JSFunction> fun = NewFunctionWithoutPrototypeStrictHelper(name); |
+ fun->set_context(Top::context()->global_context()); |
+ return fun; |
+} |
+ |
Handle<Object> Factory::ToObject(Handle<Object> object) { |
CALL_HEAP_FUNCTION(object->ToObject(), Object); |
} |