Commit c9d391d8 authored by yangguo@chromium.org's avatar yangguo@chromium.org

Fix assertions wrt concurrent OSR.

R=ulan@chromium.org

Review URL: https://codereview.chromium.org/206473002

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@20130 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 8f48dbb7
...@@ -4859,6 +4859,12 @@ void BackEdgeTable::PatchAt(Code* unoptimized_code, ...@@ -4859,6 +4859,12 @@ void BackEdgeTable::PatchAt(Code* unoptimized_code,
Address branch_address = pc - 3 * kInstructionSize; Address branch_address = pc - 3 * kInstructionSize;
PatchingAssembler patcher(branch_address, 1); PatchingAssembler patcher(branch_address, 1);
ASSERT(Instruction::Cast(branch_address)
->IsNop(Assembler::INTERRUPT_CODE_NOP) ||
(Instruction::Cast(branch_address)->IsCondBranchImm() &&
Instruction::Cast(branch_address)->ImmPCOffset() ==
6 * kInstructionSize));
switch (target_state) { switch (target_state) {
case INTERRUPT: case INTERRUPT:
// <decrement profiling counter> // <decrement profiling counter>
...@@ -4868,8 +4874,6 @@ void BackEdgeTable::PatchAt(Code* unoptimized_code, ...@@ -4868,8 +4874,6 @@ void BackEdgeTable::PatchAt(Code* unoptimized_code,
// ... more instructions. // ... more instructions.
// ok-label // ok-label
// Jump offset is 6 instructions. // Jump offset is 6 instructions.
ASSERT(Instruction::Cast(branch_address)
->IsNop(Assembler::INTERRUPT_CODE_NOP));
patcher.b(6, pl); patcher.b(6, pl);
break; break;
case ON_STACK_REPLACEMENT: case ON_STACK_REPLACEMENT:
...@@ -4878,9 +4882,6 @@ void BackEdgeTable::PatchAt(Code* unoptimized_code, ...@@ -4878,9 +4882,6 @@ void BackEdgeTable::PatchAt(Code* unoptimized_code,
// .. .. .. .. mov x0, x0 (NOP) // .. .. .. .. mov x0, x0 (NOP)
// .. .. .. .. ldr x16, pc+<on-stack replacement address> // .. .. .. .. ldr x16, pc+<on-stack replacement address>
// .. .. .. .. blr x16 // .. .. .. .. blr x16
ASSERT(Instruction::Cast(branch_address)->IsCondBranchImm());
ASSERT(Instruction::Cast(branch_address)->ImmPCOffset() ==
6 * kInstructionSize);
patcher.nop(Assembler::INTERRUPT_CODE_NOP); patcher.nop(Assembler::INTERRUPT_CODE_NOP);
break; break;
} }
......
...@@ -25,7 +25,8 @@ ...@@ -25,7 +25,8 @@
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --allow-natives-syntax --noconcurrent-recompilation // Flags: --allow-natives-syntax
// Flags: --noconcurrent-recompilation --noconcurrent-osr
if (%IsConcurrentRecompilationSupported()) { if (%IsConcurrentRecompilationSupported()) {
print("Concurrent recompilation is turned on after all. Skipping this test."); print("Concurrent recompilation is turned on after all. Skipping this test.");
......
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
// Flags: --expose-debug-as debug --allow-natives-syntax // Flags: --expose-debug-as debug --allow-natives-syntax
// Flags: --block-concurrent-recompilation // Flags: --concurrent-recompilation --block-concurrent-recompilation
if (!%IsConcurrentRecompilationSupported()) { if (!%IsConcurrentRecompilationSupported()) {
print("Concurrent recompilation is disabled. Skipping this test."); print("Concurrent recompilation is disabled. Skipping this test.");
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment