« Return to Thread: [rvm-research] to utilize methods in syscall

Re: [rvm-research] to utilize methods in syscall

by lltong :: Rate this Message:

Reply to Author | View in Thread

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

 « Return to Thread: [rvm-research] to utilize methods in syscall