| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 168 if (FLAG_trace_osr) { | 168 if (FLAG_trace_osr) { |
| 169 PrintF("[patching stack checks in "); | 169 PrintF("[patching stack checks in "); |
| 170 function->PrintName(); | 170 function->PrintName(); |
| 171 PrintF(" for on-stack replacement]\n"); | 171 PrintF(" for on-stack replacement]\n"); |
| 172 } | 172 } |
| 173 | 173 |
| 174 // Get the stack check stub code object to match against. We aren't | 174 // Get the stack check stub code object to match against. We aren't |
| 175 // prepared to generate it, but we don't expect to have to. | 175 // prepared to generate it, but we don't expect to have to. |
| 176 bool found_code = false; | 176 bool found_code = false; |
| 177 Code* stack_check_code = NULL; | 177 Code* stack_check_code = NULL; |
| 178 #if defined(V8_TARGET_ARCH_IA32) || \ | |
| 179 defined(V8_TARGET_ARCH_ARM) || \ | |
| 180 defined(V8_TARGET_ARCH_MIPS) | |
| 181 if (FLAG_count_based_interrupts) { | 178 if (FLAG_count_based_interrupts) { |
| 182 InterruptStub interrupt_stub; | 179 InterruptStub interrupt_stub; |
| 183 found_code = interrupt_stub.FindCodeInCache(&stack_check_code); | 180 found_code = interrupt_stub.FindCodeInCache(&stack_check_code); |
| 184 } else // NOLINT | 181 } else // NOLINT |
| 185 #endif | |
| 186 { // NOLINT | 182 { // NOLINT |
| 187 StackCheckStub check_stub; | 183 StackCheckStub check_stub; |
| 188 found_code = check_stub.FindCodeInCache(&stack_check_code); | 184 found_code = check_stub.FindCodeInCache(&stack_check_code); |
| 189 } | 185 } |
| 190 if (found_code) { | 186 if (found_code) { |
| 191 Code* replacement_code = | 187 Code* replacement_code = |
| 192 isolate_->builtins()->builtin(Builtins::kOnStackReplacement); | 188 isolate_->builtins()->builtin(Builtins::kOnStackReplacement); |
| 193 Code* unoptimized_code = shared->code(); | 189 Code* unoptimized_code = shared->code(); |
| 194 Deoptimizer::PatchStackCheckCode(unoptimized_code, | 190 Deoptimizer::PatchStackCheckCode(unoptimized_code, |
| 195 stack_check_code, | 191 stack_check_code, |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 346 // this as part of collecting them because this will interfere with | 342 // this as part of collecting them because this will interfere with |
| 347 // the sample lookup in case of recursive functions. | 343 // the sample lookup in case of recursive functions. |
| 348 for (int i = 0; i < sample_count; i++) { | 344 for (int i = 0; i < sample_count; i++) { |
| 349 AddSample(samples[i], kSamplerFrameWeight[i]); | 345 AddSample(samples[i], kSamplerFrameWeight[i]); |
| 350 } | 346 } |
| 351 } | 347 } |
| 352 } | 348 } |
| 353 | 349 |
| 354 | 350 |
| 355 void RuntimeProfiler::NotifyTick() { | 351 void RuntimeProfiler::NotifyTick() { |
| 356 #if defined(V8_TARGET_ARCH_IA32) || \ | |
| 357 defined(V8_TARGET_ARCH_ARM) || \ | |
| 358 defined(V8_TARGET_ARCH_MIPS) | |
| 359 if (FLAG_count_based_interrupts) return; | 352 if (FLAG_count_based_interrupts) return; |
| 360 #endif | |
| 361 isolate_->stack_guard()->RequestRuntimeProfilerTick(); | 353 isolate_->stack_guard()->RequestRuntimeProfilerTick(); |
| 362 } | 354 } |
| 363 | 355 |
| 364 | 356 |
| 365 void RuntimeProfiler::SetUp() { | 357 void RuntimeProfiler::SetUp() { |
| 366 ASSERT(has_been_globally_set_up_); | 358 ASSERT(has_been_globally_set_up_); |
| 367 if (!FLAG_watch_ic_patching) { | 359 if (!FLAG_watch_ic_patching) { |
| 368 ClearSampleBuffer(); | 360 ClearSampleBuffer(); |
| 369 } | 361 } |
| 370 // If the ticker hasn't already started, make sure to do so to get | 362 // If the ticker hasn't already started, make sure to do so to get |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 478 | 470 |
| 479 bool RuntimeProfilerRateLimiter::SuspendIfNecessary() { | 471 bool RuntimeProfilerRateLimiter::SuspendIfNecessary() { |
| 480 if (!RuntimeProfiler::IsSomeIsolateInJS()) { | 472 if (!RuntimeProfiler::IsSomeIsolateInJS()) { |
| 481 return RuntimeProfiler::WaitForSomeIsolateToEnterJS(); | 473 return RuntimeProfiler::WaitForSomeIsolateToEnterJS(); |
| 482 } | 474 } |
| 483 return false; | 475 return false; |
| 484 } | 476 } |
| 485 | 477 |
| 486 | 478 |
| 487 } } // namespace v8::internal | 479 } } // namespace v8::internal |
| OLD | NEW |