Reviewers: Kasper Lund,

Description:
Enable --trace when --multipass is on.  Bugfix in bailout condition.
All V8 and (ia32) mozilla tests pass with --multipass on, failures now
count as regressions.


Please review this at http://codereview.chromium.org/159698

SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/

Affected files:
   M     src/arm/cfg-arm.cc
   M     src/cfg.cc
   M     src/ia32/cfg-ia32.cc
   M     src/x64/cfg-x64.cc


Index: src/ia32/cfg-ia32.cc
===================================================================
--- src/ia32/cfg-ia32.cc        (revision 2596)
+++ src/ia32/cfg-ia32.cc        (working copy)
@@ -65,6 +65,9 @@
          __ push(eax);
        }
      }
+    if (FLAG_trace) {
+      __ CallRuntime(Runtime::kTraceEnter, 0);
+    }
      if (FLAG_check_stack) {
        ExternalReference stack_limit =
            ExternalReference::address_of_stack_guard_limit();
@@ -87,6 +90,10 @@
    ASSERT(!is_marked());
    is_marked_ = true;
    Comment cmnt(masm, "[ ExitNode");
+  if (FLAG_trace) {
+    __ push(eax);
+    __ CallRuntime(Runtime::kTraceExit, 1);
+  }
    __ RecordJSReturn();
    __ mov(esp, ebp);
    __ pop(ebp);
Index: src/cfg.cc
===================================================================
--- src/cfg.cc  (revision 2596)
+++ src/cfg.cc  (working copy)
@@ -68,8 +68,9 @@
    if (cfg == NULL) {
      BAILOUT("unsupported statement type");
    }
-
-  ASSERT(!cfg->has_exit());  // Return on all paths.
+  if (cfg->has_exit()) {
+    BAILOUT("control path without explicit return");
+  }
    cfg->PrependEntryNode(fun);
    return cfg;
  }
Index: src/x64/cfg-x64.cc
===================================================================
--- src/x64/cfg-x64.cc  (revision 2596)
+++ src/x64/cfg-x64.cc  (working copy)
@@ -67,6 +67,9 @@
          __ push(kScratchRegister);
        }
      }
+    if (FLAG_trace) {
+      __ CallRuntime(Runtime::kTraceEnter, 0);
+    }
      if (FLAG_check_stack) {
        ExternalReference stack_limit =
            ExternalReference::address_of_stack_guard_limit();
@@ -91,6 +94,10 @@
    is_marked_ = true;

    Comment cmnt(masm, "[ ExitNode");
+  if (FLAG_trace) {
+    __ push(rax);
+    __ CallRuntime(Runtime::kTraceExit, 1);
+  }
    __ RecordJSReturn();
    __ movq(rsp, rbp);
    __ pop(rbp);
Index: src/arm/cfg-arm.cc
===================================================================
--- src/arm/cfg-arm.cc  (revision 2596)
+++ src/arm/cfg-arm.cc  (working copy)
@@ -62,6 +62,9 @@
          __ push(ip);
        }
      }
+    if (FLAG_trace) {
+      __ CallRuntime(Runtime::kTraceEnter, 0);
+    }
      if (FLAG_check_stack) {
        StackCheckStub stub;
        __ CallStub(&stub);
@@ -75,6 +78,10 @@
    ASSERT(!is_marked());
    is_marked_ = true;
    Comment cmnt(masm, "[ ExitNode");
+  if (FLAG_trace) {
+    __ push(r0);
+    __ CallRuntime(Runtime::kTraceExit, 1);
+  }
    __ mov(sp, fp);
    __ ldm(ia_w, sp, fp.bit() | lr.bit());
    __ add(sp, sp, Operand((parameter_count_ + 1) * kPointerSize));



--~--~---------~--~----~------------~-------~--~----~
v8-dev mailing list
[email protected]
http://groups.google.com/group/v8-dev
-~----------~----~----~----~------~----~------~--~---

Reply via email to