Yes basically I am trying to instrument all creation of typed instances.
detect an constructor call and record it. for a specific piece of code.
For example
@detect function f(x::Int64)
y = Foo(x)
end
On Sunday, January 3, 2016 at 8:28:04 PM UTC-8, Jeffrey Sarnoff wrote:
>
> Are you trying to instrument all creation of typed instances?
>
> On Sunday, January 3, 2016 at 11:24:25 PM UTC-5, Jeffrey Sarnoff wrote:
>>
>> Do you want to create DB entries when other programmer's types are called?
>>
>> On Sunday, January 3, 2016 at 11:22:10 PM UTC-5, Julia Tylors wrote:
>>>
>>> But the you can't be doing this for every new type which is being
>>> defined by other programmers.
>>> So I need more general way. For every constructor of every type,
>>> That makes it a bit problematic.
>>> Thanks
>>>
>>>
>>>
>>> On Sunday, January 3, 2016 at 7:59:11 PM UTC-8, Jeffrey Sarnoff wrote:
>>>>
>>>> Hi Julia,
>>>>
>>>> The simplest way to do this is to make Foo a type and define its type
>>>> constructor to behave as you wish.
>>>>
>>>> type Foo
>>>> n::Float64
>>>> end
>>>>
>>>> function Foo(n::Float64)
>>>> record = createRecordForFooDB(n)
>>>> saveRecordInFooDB(record)
>>>> println("saved Foo($(n)) to DB")
>>>> end
>>>>
>>>>
>>>>
>>>> On Sunday, January 3, 2016 at 10:49:12 PM UTC-5, Julia Tylors wrote:
>>>>>
>>>>> Hi, my end goal is whenever a constructor call is made, I want to
>>>>> detect it and keep track of it by creating an object
>>>>>
>>>>> For example
>>>>> f = Foo(12)
>>>>> I want to detect this and create a record and save it to a db.
>>>>>
>>>>> Thanks
>>>>>
>>>>> On Sunday, January 3, 2016 at 6:58:49 PM UTC-8, Isaiah wrote:
>>>>>>
>>>>>> There is no AST-level distinction between a "constructor call" and a
>>>>>> "normal function call", see [1]. Look at the code in 'reflection.jl' to
>>>>>> see
>>>>>> how to determine the applicable method for a given name (which may be a
>>>>>> constructor). If that doesn't help, it would be helpful to clarify the
>>>>>> goal.
>>>>>>
>>>>>> For return statements, use `expand(a)` to convert the expression to
>>>>>> goto form, which should contain only explicit returns.
>>>>>>
>>>>>> [1] https://github.com/JuliaLang/julia/pull/8712
>>>>>>
>>>>>> On Sun, Jan 3, 2016 at 6:52 PM, Julia Tylors <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> I am planning to detect the constructor calls and return statement
>>>>>>> of a function
>>>>>>>
>>>>>>>
>>>>>>> a = quote begin
>>>>>>> x = Foo(12)
>>>>>>> y = 5 + 6
>>>>>>> f(x.val,y)
>>>>>>> x.val * y
>>>>>>> end
>>>>>>>
>>>>>>> a is an Expr, in this expression , I would like to detect the
>>>>>>> constructor calls (Foo(12)( and distinguish them from normal function
>>>>>>> calls(fx.val,y).
>>>>>>> and i also want to identify the return statement, (x.val*y). How can
>>>>>>> i do it programmatically?
>>>>>>>
>>>>>>> Thanks
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>