Bug 1522284 - ARM64: record when JitCode is storing nursery pointers. r=sstangl
authorNicolas B. Pierron <nicolas.b.pierron@nbp.name>
Fri, 25 Jan 2019 23:28:23 +0000
changeset 455590 611a26ed535b152e907eea2bd573fb3ae413e737
parent 455589 bd47fa49ab016d585f759b50249d2a393d760443
child 455591 475d0d3f9d248a004f65d7f33c5e3df3cdbecf1b
push id35453
push userrmaries@mozilla.com
push dateMon, 28 Jan 2019 21:44:32 +0000
treeherdermozilla-central@5f877600f76f [default view] [failures only]
perfherder[talos] [build metrics] [platform microbench] (compared to previous push)
reviewerssstangl
bugs1522284
milestone66.0a1
first release with
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
last release without
nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
Bug 1522284 - ARM64: record when JitCode is storing nursery pointers. r=sstangl Differential Revision: https://phabricator.services.mozilla.com/D17655
js/src/jit/arm64/MacroAssembler-arm64.h
--- a/js/src/jit/arm64/MacroAssembler-arm64.h
+++ b/js/src/jit/arm64/MacroAssembler-arm64.h
@@ -1837,16 +1837,19 @@ class MacroAssemblerCompat : public vixl
     BufferOffset offset = b(label, Always);
     CodeOffset ret(offset.getOffset());
     return ret;
   }
 
   // load: offset to the load instruction obtained by movePatchablePtr().
   void writeDataRelocation(ImmGCPtr ptr, BufferOffset load) {
     if (ptr.value) {
+      if (gc::IsInsideNursery(ptr.value)) {
+        embedsNurseryPointers_ = true;
+      }
       dataRelocations_.writeUnsigned(load.getOffset());
     }
   }
   void writeDataRelocation(const Value& val, BufferOffset load) {
     if (val.isGCThing()) {
       gc::Cell* cell = val.toGCThing();
       if (cell && gc::IsInsideNursery(cell)) {
         embedsNurseryPointers_ = true;