> 
> Are you sure you would call the above piece of code as __implicit__ setting
> of cache and tbe entry variables? In this case, the local variable has been
> __explicitly__ passed in the call to the trigger function.
> 
> To me 'X is implicit' means that the programmer does not need to write 'X'
> in the protocol file for the compiler. For example, currently trigger function
> implicitly passes the state of the address as a parameter.
> 
> Such code is possible, my only concern is that once the variable is set, it
> cannot be used again on the left hand side of the assignment operator.
> 
> Entry local_var := getL1ICacheEntry(in_msg.LineAddress)
> /* Do some thing*/
> local_var := getL1DCacheEntry(in_msg.LineAddress)
> 
> This SLICC code will not generate correct C++ code, since we assume that a
> pointer variable can only be used in its dereferenced form, except when
> passed on as a parameter in a function call.
> 

Yeah, I think we were confusing each other before because implicit was meaning 
different things.  When I said implicitly passes the cache entry, I meant that 
relative to the actions, not the trigger function.  As you mentioned, the input 
state is an implicit parameter to the trigger function, but the address is an 
explicit parameter to the trigger function and an implicit parameter to the 
actions.  You were thinking the former and we were thinking the latter.  Now I 
think we are on the same page.

Actually I was thinking that we only dereference the cache_entry pointer when 
we reference a member of the class.  I haven't thought this all the way 
through, but is that possible?  Then such an assignment would work.

Brad


_______________________________________________
m5-dev mailing list
m5-dev@m5sim.org
http://m5sim.org/mailman/listinfo/m5-dev

Reply via email to