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