image build time by creating a 'space'. Have a look at the spaces
classes into classes within the org.mmtk.utility.heap package. Have a
memory. If you have some special initialization that is required you
> Daniel Frampton wrote:
>> Spaces are allocated by global plan classes.
>> MMTk/src/org/mmtk/plan/Plan.java is the base class.
>>
>> It seems that the 'right' thing to do is to wait for for MMTk to mmap
>> memory in the space, and then use syscalls after (or instead) to set
>> the 'special attributes'.
>>
> there comes the problem. These "special attributes" concern with cache
> and hardware counters, which can in no way be seen by rvm, thus I wrote
> the corresponding codes in C/C++.
>> In any case there is no way you can use vmRequest at runtime, which is
>> the only time you can use syscalls. vmRequest is for the bootimage
>> build-time partitioning of the space.
>>
> I understand the errors prompted by the rvm now. Then if I want to map
> the special memory space, I need to setup this memory space at the
> boot-image build time?
> Could you briefly describe the process of initializing heap region or
> give me any references?
> Thanks.
>
>> Cheers,
>> Daniel.
>>
>> On Fri, Jun 19, 2009 at 5:38 PM, Liangliang Tong<
lltong@...> wrote:
>>
>>> Dear Robin,
>>> Using a custom function, I can create an address space with special
>>> attributes. Now I want to use this address chunk as the nursery space of
>>> a generational collector.
>>> I originally, as described in the first mail, want to use the sysCalls
>>> and VMRequest class. That is, to build the custom function into the
>>> sysCalls, and use the vmRequest.create(Address address, Extent extent)
>>> method to map the special address space into the nursery. It doesn't
>>> work, as you see.
>>> Then, I am wondering, are there any other ways that I can resort to?
>>> Thanks.
>>>
>>> Regards,
>>> Liangliang
>>>
>>> Robin Garner wrote:
>>>
>>>> Liangliang Tong wrote:
>>>>
>>>>
>>>>> Dear Robin,
>>>>>
>>>>> Thanks for your reply.
>>>>> I am just taking sysMalloc as an example, the actual method I called is
>>>>> another custom allocation function implemented by myself. This function
>>>>> applies special characteristics to the allocated memory chunk, which I
>>>>> hope to use as a nursery space. Rawpagespace does not help.
>>>>> In this case, what am I supposed to do in order to achieve my target?
>>>>> Thanks.
>>>>>
>>>>>
>>>>>
>>>> I'm not sure I understand what your target is - perhaps you could use a
>>>> better example ?
>>>>
>>>> I've outlined the steps you need to follow in order to make an arbitrary
>>>> syscall (and for more details, follow a method like 'dzmmap' through the
>>>> interface).
>>>>
>>>> If you want to implement a new allocator (at the object level), then
>>>> what you want to do is sub-class Space and Allocator for the global and
>>>> thread-local components of the allocator. If you want to change how a
>>>> Space acquires pages from the OS, then you should create a new
>>>> PageResource and define or modify a sub-class of Space that uses it.
>>>>
>>>> If you need more explanation, please tell us in more detail what it is
>>>> you're trying to do.
>>>>
>>>> Regards,
>>>> Robin
>>>>
>>>>
>>>>> Regards,
>>>>> Liangliang
>>>>>
>>>>> Robin Garner wrote:
>>>>>
>>>>>
>>>>>
>>>>>> Liangliang Tong wrote:
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>> Dear all,
>>>>>>>
>>>>>>> In org.mmtk.plan.generational.Gen.java, I want to modify the vmRequest
>>>>>>> to request for an explicit region of memory, like the following:
>>>>>>> private static final VMRequest vmRequest =
>>>>>>> VMRequest.create(sysCall.sysMalloc(1 << 20), Extent.fromIntSignExtend(1
>>>>>>> << 20));
>>>>>>> correspondingly I add a new import statement:
>>>>>>> import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>>
>>>>>>> Yet when I complied the generational copy plan, it prompts these errors:
>>>>>>> compile-mmtk:
>>>>>>> [javac] Compiling 1 source file to
>>>>>>> /home/lltong/jikesrvm/target/mmtk/classes
>>>>>>> [javac]
>>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:33:
>>>>>>> package org.jikesrvm.runtime does not exist
>>>>>>> [javac] import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>> [javac] ^
>>>>>>> [javac]
>>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:33:
>>>>>>> static import only from classes and interfaces
>>>>>>> [javac] import static org.jikesrvm.runtime.SysCall.sysCall;
>>>>>>> [javac] ^
>>>>>>> [javac]
>>>>>>> /home/lltong/jikesrvm/MMTk/src/org/mmtk/plan/crgenerational/CRGen.java:91:
>>>>>>> cannot find symbol
>>>>>>> [javac] symbol : variable sysCall
>>>>>>> [javac] location: class org.mmtk.plan.crgenerational.CRGen
>>>>>>>
>>>>>>> Why should this happen? Thanks in advance.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>> Hi Liangliang,
>>>>>>
>>>>>> As far as I can see, you are trying to request a 1MB chunk of memory,
>>>>>> and you don't care where in the heap it is. Is this right ?
>>>>>>
>>>>>>
>>>>>> MMTk uses the 'Space' class to abstract over various ways to allocate
>>>>>> memory. If you simply want a 1MB chunk of raw memory, then you can do
>>>>>>
>>>>>> RawPageSpace mySpace = new RawPageSpace("mySpace", Integer.MAX_VALUE,
>>>>>> VMRequest.create());
>>>>>> Address chunkAddr = mySpace.acquire(1<<(20-LOG_BYTES_IN_PAGE));
>>>>>>
>>>>>> If you're using memory as storage for your collector, you should
>>>>>> probably allocate it in the existing metaDataSpace. If you're
>>>>>> allocating it to give to the mutator, you should probably define a new
>>>>>> space for it.
>>>>>>
>>>>>> Note that a VMRequest is simply a way to communicate your virtual memory
>>>>>> layout requirements to the Space class, and passing it a chunk of
>>>>>> 'malloc'ed memory doesn't make a great deal of sense. In fact MMTk
>>>>>> itself generally takes the place of 'malloc' in the virtual machine.
>>>>>>
>>>>>>
>>>>>> The reason you can't directly call sysMalloc from MMTk is that MMTk
>>>>>> separates itself from JikesRVM (and its various other host environments)
>>>>>> via the org.mmtk.vm package (the VM interface). In order to call a new
>>>>>> method on the JikesRVM side of the fence you need to:
>>>>>>
>>>>>> - Choose an interface class to host the method (eg org.mmtk.vm.Memory)
>>>>>> - Add an abstract method to the interface class
>>>>>> - Add a concrete method to the implementation on the VM side of the
>>>>>> fence (for JikesRVM that is org.jikesrvm.mm.mmtk, in the
>>>>>> MMTk/ext/vm/jikesrvm directory)
>>>>>>
>>>>>> but I think it would generally be a bad idea for you to allocate memory
>>>>>> for JikesRVM using sysMalloc.
>>>>>>
>>>>>> Regards,
>>>>>> Robin
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------------------
>>>>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>>>>> Check out the new simplified licensing option that enables unlimited
>>>>>> royalty-free distribution of the report engine for externally facing
>>>>>> server and web deployment.
>>>>>>
http://p.sf.net/sfu/businessobjects>>>>>> _______________________________________________
>>>>>> Jikesrvm-researchers mailing list
>>>>>>
Jikesrvm-researchers@...
>>>>>>
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>> ------------------------------------------------------------------------------
>>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>>> Check out the new simplified licensing option that enables unlimited
>>>> royalty-free distribution of the report engine for externally facing
>>>> server and web deployment.
>>>>
http://p.sf.net/sfu/businessobjects>>>> _______________________________________________
>>>> Jikesrvm-researchers mailing list
>>>>
Jikesrvm-researchers@...
>>>>
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers>>>>
>>>>
>>>>
>>> --
>>> Regards,
>>> Liangliang Tong
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Crystal Reports - New Free Runtime and 30 Day Trial
>>> Check out the new simplified licensing option that enables unlimited
>>> royalty-free distribution of the report engine for externally facing
>>> server and web deployment.
>>>
http://p.sf.net/sfu/businessobjects>>> _______________________________________________
>>> Jikesrvm-researchers mailing list
>>>
Jikesrvm-researchers@...
>>>
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers>>>
>>>
>>
>> ------------------------------------------------------------------------------
>> Crystal Reports - New Free Runtime and 30 Day Trial
>> Check out the new simplified licensing option that enables unlimited
>> royalty-free distribution of the report engine for externally facing
>> server and web deployment.
>>
http://p.sf.net/sfu/businessobjects>> _______________________________________________
>> Jikesrvm-researchers mailing list
>>
Jikesrvm-researchers@...
>>
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers>>
>>
>
>
> --
> Regards,
> Liangliang Tong
>
>
> ------------------------------------------------------------------------------
> Crystal Reports - New Free Runtime and 30 Day Trial
> Check out the new simplified licensing option that enables unlimited
> royalty-free distribution of the report engine for externally facing
> server and web deployment.
>
http://p.sf.net/sfu/businessobjects> _______________________________________________
> Jikesrvm-researchers mailing list
>
Jikesrvm-researchers@...
>
https://lists.sourceforge.net/lists/listinfo/jikesrvm-researchers>
Portland, OR, June 17-19. Two days of sessions, one day of unconference: $250.
Need another reason to go? 24-hour hacker lounge. Register today!