Index: src/runtime.cc |
diff --git a/src/runtime.cc b/src/runtime.cc |
index 03b15d4b0dcc38d41937315dc9bb59ebcad49642..9a4e00ed9eceb455184339c0f47701e785e4762c 100644 |
--- a/src/runtime.cc |
+++ b/src/runtime.cc |
@@ -9013,42 +9013,6 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StackGuard) { |
} |
-// NOTE: These PrintXXX functions are defined for all builds (not just |
-// DEBUG builds) because we may want to be able to trace function |
-// calls in all modes. |
-static void PrintString(String* str) { |
- // not uncommon to have empty strings |
- if (str->length() > 0) { |
- SmartArrayPointer<char> s = |
- str->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
- PrintF("%s", *s); |
- } |
-} |
- |
- |
-static void PrintObject(Object* obj) { |
- if (obj->IsSmi()) { |
- PrintF("%d", Smi::cast(obj)->value()); |
- } else if (obj->IsString() || obj->IsSymbol()) { |
- PrintString(String::cast(obj)); |
- } else if (obj->IsNumber()) { |
- PrintF("%g", obj->Number()); |
- } else if (obj->IsFailure()) { |
- PrintF("<failure>"); |
- } else if (obj->IsUndefined()) { |
- PrintF("<undefined>"); |
- } else if (obj->IsNull()) { |
- PrintF("<null>"); |
- } else if (obj->IsTrue()) { |
- PrintF("<true>"); |
- } else if (obj->IsFalse()) { |
- PrintF("<false>"); |
- } else { |
- PrintF("%p", reinterpret_cast<void*>(obj)); |
- } |
-} |
- |
- |
static int StackSize() { |
int n = 0; |
for (JavaScriptFrameIterator it; !it.done(); it.Advance()) n++; |
@@ -9067,38 +9031,33 @@ static void PrintTransition(Object* result) { |
} |
if (result == NULL) { |
- // constructor calls |
- JavaScriptFrameIterator it; |
- JavaScriptFrame* frame = it.frame(); |
- if (frame->IsConstructor()) PrintF("new "); |
- // function name |
- Object* fun = frame->function(); |
- if (fun->IsJSFunction()) { |
- PrintObject(JSFunction::cast(fun)->shared()->name()); |
- } else { |
- PrintObject(fun); |
- } |
- // function arguments |
- // (we are intentionally only printing the actually |
- // supplied parameters, not all parameters required) |
- PrintF("(this="); |
- PrintObject(frame->receiver()); |
- const int length = frame->ComputeParametersCount(); |
- for (int i = 0; i < length; i++) { |
- PrintF(", "); |
- PrintObject(frame->GetParameter(i)); |
- } |
- PrintF(") {\n"); |
- |
+ JavaScriptFrame::PrintTop(stdout, true, false); |
+ PrintF(" {\n"); |
} else { |
// function result |
PrintF("} -> "); |
- PrintObject(result); |
+ result->ShortPrint(); |
PrintF("\n"); |
} |
} |
+RUNTIME_FUNCTION(MaybeObject*, Runtime_TraceElementsKindTransition) { |
+ ASSERT(args.length() == 5); |
+ CONVERT_ARG_CHECKED(JSObject, obj, 0); |
+ CONVERT_SMI_ARG_CHECKED(from_kind, 1); |
+ CONVERT_ARG_CHECKED(FixedArrayBase, from_elements, 2); |
+ CONVERT_SMI_ARG_CHECKED(to_kind, 3); |
+ CONVERT_ARG_CHECKED(FixedArrayBase, to_elements, 4); |
+ NoHandleAllocation ha; |
+ PrintF("*"); |
+ obj->PrintElementsTransition(stdout, |
+ static_cast<ElementsKind>(from_kind), *from_elements, |
+ static_cast<ElementsKind>(to_kind), *to_elements); |
+ return isolate->heap()->undefined_value(); |
+} |
+ |
+ |
RUNTIME_FUNCTION(MaybeObject*, Runtime_TraceEnter) { |
ASSERT(args.length() == 0); |
NoHandleAllocation ha; |