Index: src/accessors.cc |
=================================================================== |
--- src/accessors.cc (revision 9808) |
+++ src/accessors.cc (working copy) |
@@ -527,7 +527,9 @@ |
// correctly yet. Compile it now and return the right length. |
HandleScope scope; |
Handle<JSFunction> handle(function); |
- if (!CompileLazy(handle, KEEP_EXCEPTION)) return Failure::Exception(); |
+ if (!JSFunction::CompileLazy(handle, KEEP_EXCEPTION)) { |
+ return Failure::Exception(); |
+ } |
return Smi::FromInt(handle->shared()->length()); |
} else { |
return Smi::FromInt(function->shared()->length()); |
@@ -759,7 +761,12 @@ |
caller = potential_caller; |
potential_caller = it.next(); |
} |
- |
+ // If caller is bound, return null. This is compatible with JSC, and |
+ // allows us to make bound functions use the strict function map |
+ // and its associated throwing caller and arguments. |
+ if (caller->shared()->bound()) { |
+ return isolate->heap()->null_value(); |
+ } |
return CheckNonStrictCallerOrThrow(isolate, caller); |
} |