Enable --trace when --multipass is on. Bugfix in bailout condition.
authorkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 31 Jul 2009 11:27:14 +0000 (11:27 +0000)
committerkmillikin@chromium.org <kmillikin@chromium.org@ce2b1a6d-e550-0410-aec6-3dcde31c8c00>
Fri, 31 Jul 2009 11:27:14 +0000 (11:27 +0000)
All V8 and (ia32) mozilla tests pass with --multipass on, failures now
count as regressions.

Review URL: http://codereview.chromium.org/159698

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@2598 ce2b1a6d-e550-0410-aec6-3dcde31c8c00

src/arm/cfg-arm.cc
src/cfg.cc
src/ia32/cfg-ia32.cc
src/x64/cfg-x64.cc

index 29de0a7..8d14b10 100644 (file)
@@ -62,6 +62,9 @@ void EntryNode::Compile(MacroAssembler* masm) {
         __ push(ip);
       }
     }
+    if (FLAG_trace) {
+      __ CallRuntime(Runtime::kTraceEnter, 0);
+    }
     if (FLAG_check_stack) {
       StackCheckStub stub;
       __ CallStub(&stub);
@@ -75,6 +78,10 @@ void ExitNode::Compile(MacroAssembler* masm) {
   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));
index d72707b..82fdbf6 100644 (file)
@@ -68,8 +68,9 @@ Cfg* Cfg::Build(FunctionLiteral* fun) {
   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 0a77160..97010cb 100644 (file)
@@ -65,6 +65,9 @@ void EntryNode::Compile(MacroAssembler* masm) {
         __ 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 @@ void ExitNode::Compile(MacroAssembler* masm) {
   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 afa0c70..6d16a7d 100644 (file)
@@ -67,6 +67,9 @@ void EntryNode::Compile(MacroAssembler* masm) {
         __ 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 @@ void ExitNode::Compile(MacroAssembler* masm) {
   is_marked_ = true;
 
   Comment cmnt(masm, "[ ExitNode");
+  if (FLAG_trace) {
+    __ push(rax);
+    __ CallRuntime(Runtime::kTraceExit, 1);
+  }
   __ RecordJSReturn();
   __ movq(rsp, rbp);
   __ pop(rbp);