In the last week I wasted a lost of time for not turly understand others’ codes. And I wanna make a self-criticism.
At the beginning of the tasks OpFromGraph.c_code()
, Fred pointed to me a few commits which he thought might be and majorly implemented make_thunk()
method. “This is wired, why he provided codes of other method?”, I thought. With only a glance of the codes and some confusions, I turned to CLinker
and gof.Op
.
I thought this might be a simple mission, which wasn’t. The biggest problem was my misunderstand of CLinker
– I thought it is something like PerformLinker
and VM_Likner
, called by orig_func()
and linking the whole graph. But the truth is CLinker
did not serve the fgraph, but the node. In gof.Op.make_thunk()
, if op_use_c_code
is true, it will call make_c_thunk()
and use CLinker
to generate a C code and link the storage. And then return a ret
(what’s a ret
?)
So there’s two equivalence ways to impelemnt c_code()
, to make an Op
faster. One is the way I took – implementing serious of C code method of Op
, so that Op
can return C code accords to fgraph. In this way I need to generate C code fitst. And then I need to break apart those code while ensuring they can be compiled after being resembled by CLinker
. This require a thorough understand of CLinker
. Yes I can only get the basic idea. Therefore I stucked.
The other way is override the make_thunk()
(or make_c_thunk
)method, which is Fred’s way. This is much easier. Because we do not need to seperate the codes, it is generated in a whole and independently. We don’t link the cthunk with storage until it’s generated(really?), which save a lot of problem and make full use of CLinker
’s ability.
Fred already gave me a workable code. I only need to improve it a bit. But my ignorant lead me into another way.Therefoer I decide to post this blog to remind me that everytime before I take a step, I need to full understand what I’m going to do and how I’m going to accomlish it, as well as suggestion from others. Otherwise, the more effort I make, I more resoureces I waste. Also, ask question when confused.
Shame on me this time.