From b92254dcad4a0298b01db0f8d8def8105f4f0e4b Mon Sep 17 00:00:00 2001 From: Yorick Peterse Date: Thu, 6 Nov 2014 18:04:02 +0100 Subject: [PATCH] Trace String and Array allocations. --- vm/builtin/array.cpp | 6 ++++++ vm/builtin/string.cpp | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/vm/builtin/array.cpp b/vm/builtin/array.cpp index 3a251b19e7..86a3bba83d 100644 --- a/vm/builtin/array.cpp +++ b/vm/builtin/array.cpp @@ -9,6 +9,9 @@ #include "object_utils.hpp" #include "ontology.hpp" +#include "call_frame.hpp" +#include "dtrace/dtrace.h" + /* Implementation certain Array methods. These methods are just * the ones the VM requires, not the entire set of all Array methods. * This includes methods required to implement certain Array @@ -52,6 +55,9 @@ namespace rubinius { Array* Array::allocate(STATE, Object* self) { Array* ary = Array::create(state, 0); ary->klass(state, as(self)); + + RUBINIUS_OBJECT_ALLOCATE_HOOK(state, ary, state->vm()->saved_call_frame()) + return ary; } diff --git a/vm/builtin/string.cpp b/vm/builtin/string.cpp index 427239213d..0e44f84a41 100644 --- a/vm/builtin/string.cpp +++ b/vm/builtin/string.cpp @@ -27,6 +27,9 @@ #include "util/random.h" #include "missing/string.h" +#include "call_frame.hpp" +#include "dtrace/dtrace.h" + #include #include #include @@ -61,6 +64,9 @@ namespace rubinius { String* String::allocate(STATE, Object* self) { String* str = state->new_object(G(string)); str->klass(state, as(self)); + + RUBINIUS_OBJECT_ALLOCATE_HOOK(state, str, state->vm()->saved_call_frame()); + return str; }