Details

    • Type: Wish
    • Status: Closed
    • Priority: Medium
    • Resolution: Won't Fix
    • Affects Version/s: None
    • Fix Version/s: None
    • Component/s: Infrastructure: Build, MMTk
    • Labels:
      None

      Description

      Currently the root map is paged into memory and accessed using addresses [1]. There doesn't seem to be a good reason why the root map couldn't be represented using a byte array and held in the data image, which imo would be more in the spirit of a Java-in-Java VM. It would require allocating and creating the root map at the end of writing the boot image in memory and then having an extra copy of the root map into the boot image once it was computed. We already do a similar job for the boot record. It needs to be at the end of the image as we don't know its length.

      [1] http://jikesrvm.svn.sourceforge.net/viewvc/jikesrvm/rvmroot/trunk/MMTk/ext/vm/jikesrvm/org/jikesrvm/mm/mmtk/ScanBootImage.java?revision=14232&view=markup

        Attachments

          Activity

          Hide
          steveblackburn Steve Blackburn added a comment -

          As I said, feel free to change it if it is a high priority issue for you.

          Show
          steveblackburn Steve Blackburn added a comment - As I said, feel free to change it if it is a high priority issue for you.
          Hide
          steveblackburn Steve Blackburn added a comment -

          If you do do this, and as I understand it, your biggest objection is to the fact that it is not an object, then I suggest you keep the root map as a separately mmapable file and throw a header on the front (whcih will be trivial). Then you'll need to just ensure that it is accessed without array bounds checks (or read barrier, if we were ever to implement byte array read barriers)

          Show
          steveblackburn Steve Blackburn added a comment - If you do do this, and as I understand it, your biggest objection is to the fact that it is not an object, then I suggest you keep the root map as a separately mmapable file and throw a header on the front (whcih will be trivial). Then you'll need to just ensure that it is accessed without array bounds checks (or read barrier, if we were ever to implement byte array read barriers)
          Hide
          dgrove David Grove added a comment -

          looks to me like this is a won't fix, but feel free to re-open. (doing jira housecleaning...)

          Show
          dgrove David Grove added a comment - looks to me like this is a won't fix, but feel free to re-open. (doing jira housecleaning...)
          Hide
          ianrogers Ian Rogers added a comment -

          I feel the metacircularity of Jikes RVM is spoilt by the root map not being an object. We do have non-objects in the RVM, the results of mmap calls being the main example. I think long term we should aim to get the root map into the data image as I don't see it as distinct. The current approach is convenient.

          Show
          ianrogers Ian Rogers added a comment - I feel the metacircularity of Jikes RVM is spoilt by the root map not being an object. We do have non-objects in the RVM, the results of mmap calls being the main example. I think long term we should aim to get the root map into the data image as I don't see it as distinct. The current approach is convenient.
          Hide
          dgrove David Grove added a comment -

          It has different locality properties than the objects in the data segment. Even if it becomes an object, we should keep it separate segment.

          Show
          dgrove David Grove added a comment - It has different locality properties than the objects in the data segment. Even if it becomes an object, we should keep it separate segment.

            People

            • Assignee:
              Unassigned
              Reporter:
              ianrogers Ian Rogers
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: