changeset 16669:ac6cbf6570dd

Merge.
author Doug Simon <doug.simon@oracle.com>
date Thu, 31 Jul 2014 18:47:10 +0200
parents f1d1ec9bcf24 (diff) 90c97a4bd2da (current diff)
children 4ae1d1ed5cc1
files
diffstat 3 files changed, 31 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/mxtool/mx.py	Thu Jul 31 16:35:17 2014 +0200
+++ b/mxtool/mx.py	Thu Jul 31 18:47:10 2014 +0200
@@ -76,12 +76,18 @@
         self.excludedDependencies = excludedDependencies
         self.distDependencies = distDependencies
 
-    def sorted_deps(self, includeLibs=False):
+    def sorted_deps(self, includeLibs=False, transitive=False):
+        deps = []
+        if transitive:
+            for depDist in [distribution(name) for name in self.distDependencies]:
+                for d in depDist.sorted_deps(includeLibs=includeLibs, transitive=True):
+                    if d not in deps:
+                        deps.append(d)
         try:
             excl = [dependency(d) for d in self.excludedDependencies]
         except SystemExit as e:
             abort('invalid excluded dependency for {} distribution: {}'.format(self.name, e))
-        return [d for d in sorted_deps(self.deps, includeLibs=includeLibs) if d not in excl]
+        return deps + [d for d in sorted_deps(self.deps, includeLibs=includeLibs) if d not in excl]
 
     def __str__(self):
         return self.name
@@ -3486,7 +3492,8 @@
     _zip_files(libFiles, suite.dir, configLibsZip)
 
     # Create an Eclipse project for each distribution that will create/update the archive
-    # for the distribution whenever any project of the distribution is updated.
+    # for the distribution whenever any (transitively) dependent project of the
+    # distribution is updated.
     for dist in suite.dists:
         if hasattr(dist, 'subDir'):
             projectDir = join(suite.dir, dist.subDir, dist.name + '.dist')
@@ -3494,7 +3501,7 @@
             projectDir = join(suite.dir, dist.name + '.dist')
         if not exists(projectDir):
             os.makedirs(projectDir)
-        distProjects = [d for d in dist.sorted_deps() if d.isProject()]
+        distProjects = [d for d in dist.sorted_deps(transitive=True) if d.isProject()]
         relevantResources = []
         for p in distProjects:
             for srcDir in p.source_dirs():
@@ -3512,7 +3519,7 @@
         out.close('projects')
         out.open('buildSpec')
         dist.dir = projectDir
-        dist.javaCompliance = max([p.javaCompliance for p in distProjects] + [JavaCompliance('1.8')])
+        dist.javaCompliance = max([p.javaCompliance for p in distProjects])
         _genEclipseBuilder(out, dist, 'Create' + dist.name + 'Dist', 'archive @' + dist.name, relevantResources=relevantResources, logToFile=True, refresh=False, async=True)
         out.close('buildSpec')
         out.open('natures')
--- a/src/gpu/hsail/vm/gpu_hsail_Tlab.hpp	Thu Jul 31 16:35:17 2014 +0200
+++ b/src/gpu/hsail/vm/gpu_hsail_Tlab.hpp	Thu Jul 31 18:47:10 2014 +0200
@@ -138,6 +138,12 @@
       HSAILTlabInfo* pTlabInfo = &_tlab_infos_pool_start[i];
       _cur_tlab_infos[i] = pTlabInfo;
       pTlabInfo->initialize(tlab->start(), tlab->top(), tlab->end(), donorThread, this);
+
+      // reset the real tlab fields to zero so we are sure the thread doesn't use it
+      tlab->set_start(NULL);
+      tlab->set_top(NULL);
+      tlab->set_pf_top(NULL);
+      tlab->set_end(NULL);
     }
   }
 
@@ -182,6 +188,16 @@
           tlabInfo->_top = tlabInfo->last_good_top();
         }
 
+        // if the donor thread allocated anything while we were running
+        // we will retire its tlab before overwriting with our new one
+        if (tlab->top() != NULL) {
+          if (TraceGPUInteraction) {
+            tty->print("Donor Thread allocated new tlab");
+            printTlabInfoFromThread(tlab);
+          }
+          tlab->make_parsable(true);
+        }
+
         // fill the donor thread tlab with the tlabInfo information
         // we do this even if it will get overwritten by a later tlabinfo
         // because it helps with tlab statistics for that donor thread
--- a/src/share/vm/memory/threadLocalAllocBuffer.hpp	Thu Jul 31 16:35:17 2014 +0200
+++ b/src/share/vm/memory/threadLocalAllocBuffer.hpp	Thu Jul 31 18:47:10 2014 +0200
@@ -38,6 +38,9 @@
 //            used to make it available for such multiplexing.
 class ThreadLocalAllocBuffer: public CHeapObj<mtThread> {
   friend class VMStructs;
+#ifdef GRAAL
+  friend class HSAILAllocationInfo;
+#endif
 private:
   HeapWord* _start;                              // address of TLAB
   HeapWord* _top;                                // address after last allocation