Re: [rvm-research] Call-Site Information

Michael Bond <[email protected]> Sat, 11 Jun 2016 14:34:36 -0700
Newsgroups gmane.comp.java.jikes.rvm.devel
Message-ID <[email protected]>
Hi Shoaib,

It's hard to tell what exactly's going on or what your code changes are. 
Could you please provide more detail?

Cheers,
Mike

On 06/11/2016 12:31 AM, Shoaib Akram wrote:
> Sorry Mike. I dinÂ’t state my question clearly enough. For some 
> objects, the extra word in the MiscHeader I reserve for encoding the 
> site id is never modified. It is the same value with what I 
> initialized it with in MiscHeader.java. For others it is overwritten 
> by either the instrumentation in the baseline or the optimizing compiler.
>
>
>> On Jun 11, 2016, at 1:06 AM, Michael Bond 
>> <[email protected] <mailto:[email protected]>> wrote:
>>
>> Hi Shoaib,
>>
>> This sounds like the expected behavior: the value in an object's 
>> MiscHeader is preserved even after GC copies it. Are you wanting 
>> something else to happen? (If so, try modifying how copying in GC 
>> works; there are method that you can implement/modify called 
>> "postCopyAlloc" or something like that to modify what's in the 
>> MiscHeader.)
>>
>> If I'm missing the point, can you say what's the high-level thing 
>> you're trying to do? Maybe people on this list will have suggestions 
>> for what's the best way to do that.
>>
>> Cheers,
>> Mike
>>
>> On 06/10/2016 01:29 PM, Shoaib Akram wrote:
>>> Thanks Mike! I used the patch to encode the static allocation site 
>>> ids in the object header. I added instrumentation code to both the 
>>> baseline compiler and the optimizing compiler 
>>> (BaselineCompilerImpl.java and 
>>> opt/hir2lir/ExpandRuntimeServices.java), wherever new allocations 
>>> are being handled. But for some objects, the allocation site id in 
>>> MiscHeader at the end of the execution of programs is still the same 
>>> value I used during initialization. I understand this happening for 
>>> objects in the boot space But I don't see why this is happening to 
>>> objects in the mature and the large space. Am I missing something?
>>>
>>> On Wed, May 25, 2016 at 4:10 AM, Michael Bond 
>>> <[email protected] <mailto:[email protected]>> 
>>> wrote:
>>>
>>>     Hi Shoaib,
>>>
>>>     Yes, this is definitely possible. There are two different ways
>>>     to do it:
>>>
>>>     (1) Insert instrumentation at compile time that "knows" the
>>>     static allocation site. For example, during compile time, assign
>>>     a unique integer for every allocation site, and generate
>>>     instrumentation that writes that integer into the object header.
>>>
>>>     (2) Insert instrumentation at compile time that figures out the
>>>     allocation site at run time. It can do this by looking at the
>>>     frame pointer and compiled method ID as you say; it gets a
>>>     little bit complex with optimized code and inlining.
>>>
>>>     My group's patch for calling context profiling
>>>     (https://sourceforge.net/p/jikesrvm/research-archive/44/) has
>>>     code related to both approaches.
>>>
>>>     One gotcha: There's an issue in Jikes RVM (<=3.1.3, at least)
>>>     such that if the left-most word (by default, this'll be the
>>>     MiscHeader word) has the least-significant bit as 1 instead of
>>>     0, Jikes RVM will crash (at least with certain GCs?). You can
>>>     avoid this by making sure it's always 0 or by putting the
>>>     MiscHeader to the right of the TIB pointer; see our Octet patch
>>>     for an example of the latter
>>>     (https://sourceforge.net/p/jikesrvm/research-archive/43/).
>>>
>>>     Regarding your question about calling into Jikes RVM from MMTk:
>>>     this is definitely possible, but it's required to go through a
>>>     specific interface. See classes in org.mmtk.vm such as
>>>     org.mmtk.vm.Barriers (an abstract method that has a Jikes
>>>     RVM-specific implementation). You can add your own method to own
>>>     of the these classes; the method can access Jikes RVM stuff but
>>>     be called from MMTk.
>>>
>>>     Cheers,
>>>     Mike
>>>
>>>
>>>     On 05/24/2016 02:28 PM, Shoaib Akram wrote:
>>>>     Hi All,
>>>>
>>>>     Hello from PerformanceLab @ Ghent University in Belgium. I want
>>>>     to ask if there is support in JikesRVM to identify the
>>>>     call-site of an allocation. Suppose I have the code below:
>>>>
>>>>     1  public IntersectionState() {
>>>>     2       stack = new StackNode[MAX_STACK_SIZE * 2];
>>>>     3      for (int i = 0; i < stack.length; i++)
>>>>     4            stack[i] = new StackNode();
>>>>     5        rstack = new float[53 * 256];
>>>>     6    }
>>>>
>>>>     Each time a new object is allocated (line no. 4 above), I want
>>>>     to store the call-site information (line 4) in the header of
>>>>     the object. Is it possible to get the unique identity of the
>>>>     method and index within the method, where a new object is being
>>>>     allocated from?
>>>>
>>>>     There are some routines in runtime/Magic.java that let you get
>>>>     the current frame pointer or the id of the compiled method, but
>>>>     I am not sure if they usable from within MMTk(?) Does anyone
>>>>     know an an easy way to get the site information at allocation time?
>>>>
>>>>     Thanks in advance!
>>>>
>>>>     -- 
>>>>     *Shoaib Akram*
>>>>     *ELIS - Gent University*
>>>>     *Belgium*
>>>>
>>>>
>>>>     ------------------------------------------------------------------------------
>>>>     Mobile security can be enabling, not merely restricting. Employees who
>>>>     bring their own devices (BYOD) to work are irked by the imposition of MDM
>>>>     restrictions. Mobile Device Manager Plus allows you to control only the
>>>>     apps on BYO-devices by containerizing them, leaving personal data untouched!
>>>>     https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
>>>>
>>>>
>>>>     _______________________________________________
>>>>     Jikesrvm-researchers mailing list
>>>>     [email protected]
>>>>     <mailto:[email protected]>
>>>>     https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>
>>>
>>>     ------------------------------------------------------------------------------
>>>     Mobile security can be enabling, not merely restricting.
>>>     Employees who
>>>     bring their own devices (BYOD) to work are irked by the
>>>     imposition of MDM
>>>     restrictions. Mobile Device Manager Plus allows you to control
>>>     only the
>>>     apps on BYO-devices by containerizing them, leaving personal
>>>     data untouched!
>>>     https://ad.doubleclick.net/ddm/clk/304595813;131938128;j
>>>     _______________________________________________
>>>     Jikesrvm-researchers mailing list
>>>     [email protected]
>>>     <mailto:[email protected]>
>>>     https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>>
>>>
>>>
>>>
>>> -- 
>>> *Shoaib Akram*
>>> *ELIS - Gent University*
>>> *Belgium*
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
>>> patterns at an interface-level. Reveals which users, apps, and protocols are
>>> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
>>> J-Flow, sFlow and other flows. Make informed decisions using capacity
>>> planning reports.https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
>>>
>>>
>>> _______________________________________________
>>> Jikesrvm-researchers mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>>
>> ------------------------------------------------------------------------------
>> What NetFlow Analyzer can do for you? Monitors network bandwidth and 
>> traffic
>> patterns at an interface-level. Reveals which users, apps, and 
>> protocols are
>> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
>> J-Flow, sFlow and other flows. Make informed decisions using capacity
>> planning reports. 
>> https://ad.doubleclick.net/ddm/clk/305295220;132659582;e_______________________________________________
>> Jikesrvm-researchers mailing list
>> [email protected] 
>> <mailto:[email protected]>
>> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers
>
>
>
> ------------------------------------------------------------------------------
> What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
> patterns at an interface-level. Reveals which users, apps, and protocols are
> consuming the most bandwidth. Provides multi-vendor support for NetFlow,
> J-Flow, sFlow and other flows. Make informed decisions using capacity
> planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e
>
>
> _______________________________________________
> Jikesrvm-researchers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers

------------------------------------------------------------------------------
What NetFlow Analyzer can do for you? Monitors network bandwidth and traffic
patterns at an interface-level. Reveals which users, apps, and protocols are 
consuming the most bandwidth. Provides multi-vendor support for NetFlow, 
J-Flow, sFlow and other flows. Make informed decisions using capacity 
planning reports. https://ad.doubleclick.net/ddm/clk/305295220;132659582;e

_______________________________________________
Jikesrvm-researchers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers