Chromium Code Reviews| Index: src/debug.cc |
| =================================================================== |
| --- src/debug.cc (revision 1683) |
| +++ src/debug.cc (working copy) |
| @@ -1161,15 +1161,18 @@ |
| // Don't allow step into functions in the native context. |
| if (function->context()->global() != Top::context()->builtins()) { |
| if (function->shared()->code() == |
|
Kasper Lund
2009/04/07 12:15:14
How about caching function->shared()->code() in a
|
| - Builtins::builtin(Builtins::FunctionApply)) { |
| - // Handle function.apply separately to flood the function to be called |
| - // and not the code for Builtins::FunctionApply. At the point of the |
| - // call IC to call Builtins::FunctionApply the expression stack has the |
| - // following content: |
| - // symbol "apply" |
| - // function apply was called on |
| - // receiver for apply (first parameter to apply) |
| - // arguments array for apply (second parameter to apply) |
| + Builtins::builtin(Builtins::FunctionApply) || |
| + function->shared()->code() == |
| + Builtins::builtin(Builtins::FunctionCall)) { |
| + // Handle function.apply and function.call separately to flood the |
| + // function to be called and not the code for Builtins::FunctionApply or |
| + // Builtins::FunctionCall. At the point of the call IC to call either |
| + // Builtins::FunctionApply or Builtins::FunctionCall the expression |
| + // stack has the following content: |
| + // symbol "apply" or "call" |
| + // function apply or call was called on |
| + // receiver for apply or call (first parameter to apply or call) |
| + // ... further arguments to apply or call. |
| JavaScriptFrameIterator it; |
| ASSERT(it.frame()->fp() == fp); |
| ASSERT(it.frame()->GetExpression(1)->IsJSFunction()); |