| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "src/v8.h" | 5 #include "src/v8.h" |
| 6 | 6 |
| 7 #include "src/api.h" | 7 #include "src/api.h" |
| 8 #include "src/arguments.h" | 8 #include "src/arguments.h" |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
| (...skipping 1342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1353 int expressions_count = frame->ComputeExpressionsCount(); | 1353 int expressions_count = frame->ComputeExpressionsCount(); |
| 1354 DCHECK(expressions_count - 2 - call_function_arg_count >= 0); | 1354 DCHECK(expressions_count - 2 - call_function_arg_count >= 0); |
| 1355 Object* fun = frame->GetExpression( | 1355 Object* fun = frame->GetExpression( |
| 1356 expressions_count - 2 - call_function_arg_count); | 1356 expressions_count - 2 - call_function_arg_count); |
| 1357 | 1357 |
| 1358 // Flood the actual target of call/apply. | 1358 // Flood the actual target of call/apply. |
| 1359 if (fun->IsJSFunction()) { | 1359 if (fun->IsJSFunction()) { |
| 1360 Isolate* isolate = JSFunction::cast(fun)->GetIsolate(); | 1360 Isolate* isolate = JSFunction::cast(fun)->GetIsolate(); |
| 1361 Code* apply = isolate->builtins()->builtin(Builtins::kFunctionApply); | 1361 Code* apply = isolate->builtins()->builtin(Builtins::kFunctionApply); |
| 1362 Code* call = isolate->builtins()->builtin(Builtins::kFunctionCall); | 1362 Code* call = isolate->builtins()->builtin(Builtins::kFunctionCall); |
| 1363 // Find target function on the expression stack for expression like |
| 1364 // Function.call.call...apply(...) |
| 1365 int i = 1; |
| 1363 while (fun->IsJSFunction()) { | 1366 while (fun->IsJSFunction()) { |
| 1364 Code* code = JSFunction::cast(fun)->shared()->code(); | 1367 Code* code = JSFunction::cast(fun)->shared()->code(); |
| 1365 if (code != apply && code != call) break; | 1368 if (code != apply && code != call) break; |
| 1366 fun = frame->GetExpression( | 1369 DCHECK(expressions_count - i - call_function_arg_count >= 0); |
| 1367 expressions_count - 1 - call_function_arg_count); | 1370 fun = frame->GetExpression(expressions_count - i - |
| 1371 call_function_arg_count); |
| 1372 i -= 1; |
| 1368 } | 1373 } |
| 1369 } | 1374 } |
| 1370 | 1375 |
| 1371 if (fun->IsJSFunction()) { | 1376 if (fun->IsJSFunction()) { |
| 1372 Handle<JSFunction> js_function(JSFunction::cast(fun)); | 1377 Handle<JSFunction> js_function(JSFunction::cast(fun)); |
| 1373 FloodWithOneShotGeneric(js_function); | 1378 FloodWithOneShotGeneric(js_function); |
| 1374 } | 1379 } |
| 1375 } | 1380 } |
| 1376 | 1381 |
| 1377 // Fill the current function with one-shot break points even for step in on | 1382 // Fill the current function with one-shot break points even for step in on |
| (...skipping 1986 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3364 } | 3369 } |
| 3365 | 3370 |
| 3366 | 3371 |
| 3367 void LockingCommandMessageQueue::Clear() { | 3372 void LockingCommandMessageQueue::Clear() { |
| 3368 base::LockGuard<base::Mutex> lock_guard(&mutex_); | 3373 base::LockGuard<base::Mutex> lock_guard(&mutex_); |
| 3369 queue_.Clear(); | 3374 queue_.Clear(); |
| 3370 } | 3375 } |
| 3371 | 3376 |
| 3372 } // namespace internal | 3377 } // namespace internal |
| 3373 } // namespace v8 | 3378 } // namespace v8 |
| OLD | NEW |