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 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "src/code-factory.h" | 9 #include "src/code-factory.h" |
10 #include "src/code-stubs.h" | 10 #include "src/code-stubs.h" |
(...skipping 391 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
402 #endif | 402 #endif |
403 | 403 |
404 | 404 |
405 void FullCodeGenerator::EmitProfilingCounterReset() { | 405 void FullCodeGenerator::EmitProfilingCounterReset() { |
406 Assembler::BlockConstPoolScope block_const_pool(masm_); | 406 Assembler::BlockConstPoolScope block_const_pool(masm_); |
407 PredictableCodeSizeScope predictable_code_size_scope( | 407 PredictableCodeSizeScope predictable_code_size_scope( |
408 masm_, kProfileCounterResetSequenceLength); | 408 masm_, kProfileCounterResetSequenceLength); |
409 Label start; | 409 Label start; |
410 __ bind(&start); | 410 __ bind(&start); |
411 int reset_value = FLAG_interrupt_budget; | 411 int reset_value = FLAG_interrupt_budget; |
412 if (info_->is_debug()) { | |
413 // Detect debug break requests as soon as possible. | |
414 reset_value = FLAG_interrupt_budget >> 4; | |
415 } | |
416 __ mov(r2, Operand(profiling_counter_)); | 412 __ mov(r2, Operand(profiling_counter_)); |
417 // The mov instruction above can be either 1 to 3 (for ARMv7) or 1 to 5 | 413 // The mov instruction above can be either 1 to 3 (for ARMv7) or 1 to 5 |
418 // instructions (for ARMv6) depending upon whether it is an extended constant | 414 // instructions (for ARMv6) depending upon whether it is an extended constant |
419 // pool - insert nop to compensate. | 415 // pool - insert nop to compensate. |
420 int expected_instr_count = | 416 int expected_instr_count = |
421 (kProfileCounterResetSequenceLength / Assembler::kInstrSize) - 2; | 417 (kProfileCounterResetSequenceLength / Assembler::kInstrSize) - 2; |
422 DCHECK(masm_->InstructionsGeneratedSince(&start) <= expected_instr_count); | 418 DCHECK(masm_->InstructionsGeneratedSince(&start) <= expected_instr_count); |
423 while (masm_->InstructionsGeneratedSince(&start) != expected_instr_count) { | 419 while (masm_->InstructionsGeneratedSince(&start) != expected_instr_count) { |
424 __ nop(); | 420 __ nop(); |
425 } | 421 } |
(...skipping 5043 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5469 DCHECK(interrupt_address == | 5465 DCHECK(interrupt_address == |
5470 isolate->builtins()->OsrAfterStackCheck()->entry()); | 5466 isolate->builtins()->OsrAfterStackCheck()->entry()); |
5471 return OSR_AFTER_STACK_CHECK; | 5467 return OSR_AFTER_STACK_CHECK; |
5472 } | 5468 } |
5473 | 5469 |
5474 | 5470 |
5475 } // namespace internal | 5471 } // namespace internal |
5476 } // namespace v8 | 5472 } // namespace v8 |
5477 | 5473 |
5478 #endif // V8_TARGET_ARCH_ARM | 5474 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |