Merge V8 5.2.361.47  DO NOT MERGE

https://chromium.googlesource.com/v8/v8/+/5.2.361.47

FPIIM-449

Change-Id: Ibec421b85a9b88cb3a432ada642e469fe7e78346
(cherry picked from commit bcf72ee8e3b26f1d0726869c7ddb3921c68b09a8)
diff --git a/test/fuzzer/fuzzer-support.cc b/test/fuzzer/fuzzer-support.cc
index cf3ee8c..5df0bd8 100644
--- a/test/fuzzer/fuzzer-support.cc
+++ b/test/fuzzer/fuzzer-support.cc
@@ -10,6 +10,8 @@
 
 #include "include/libplatform/libplatform.h"
 
+#include "src/flags.h"
+
 namespace v8_fuzzer {
 
 namespace {
@@ -36,6 +38,7 @@
 };
 
 FuzzerSupport::FuzzerSupport(int* argc, char*** argv) {
+  v8::internal::FLAG_expose_gc = true;
   v8::V8::SetFlagsFromCommandLine(argc, *argv, true);
   v8::V8::InitializeICU();
   v8::V8::InitializeExternalStartupData((*argv)[0]);
@@ -65,6 +68,7 @@
     context_.Reset();
   }
 
+  isolate_->LowMemoryNotification();
   isolate_->Dispose();
   isolate_ = nullptr;
 
diff --git a/test/fuzzer/fuzzer.gyp b/test/fuzzer/fuzzer.gyp
index 6e15a90..b125ec2 100644
--- a/test/fuzzer/fuzzer.gyp
+++ b/test/fuzzer/fuzzer.gyp
@@ -6,7 +6,7 @@
   'variables': {
     'v8_code': 1,
   },
-  'includes': ['../../build/toolchain.gypi', '../../build/features.gypi'],
+  'includes': ['../../gypfiles/toolchain.gypi', '../../gypfiles/features.gypi'],
   'targets': [
     {
       'target_name': 'json_fuzzer',
@@ -142,7 +142,7 @@
       'target_name': 'fuzzer_support',
       'type': 'static_library',
       'dependencies': [
-        '../../tools/gyp/v8.gyp:v8_libplatform',
+        '../../src/v8.gyp:v8_libplatform',
       ],
       'include_dirs': [
         '../..',
@@ -155,9 +155,9 @@
         ['component=="shared_library"', {
           # fuzzers can't be built against a shared library, so we need to
           # depend on the underlying static target in that case.
-          'dependencies': ['../../tools/gyp/v8.gyp:v8_maybe_snapshot'],
+          'dependencies': ['../../src/v8.gyp:v8_maybe_snapshot'],
         }, {
-          'dependencies': ['../../tools/gyp/v8.gyp:v8'],
+          'dependencies': ['../../src/v8.gyp:v8'],
         }],
       ],
     },
@@ -174,7 +174,7 @@
             'regexp_fuzzer',
           ],
           'includes': [
-            '../../build/isolate.gypi',
+            '../../gypfiles/isolate.gypi',
           ],
           'sources': [
             'fuzzer.isolate',
diff --git a/test/fuzzer/json.cc b/test/fuzzer/json.cc
index f20e9b9..121939b 100644
--- a/test/fuzzer/json.cc
+++ b/test/fuzzer/json.cc
@@ -26,6 +26,8 @@
     return 0;
   }
 
-  v8::JSON::Parse(isolate, source).IsEmpty();
+  v8::JSON::Parse(support->GetContext(), source).IsEmpty();
+  isolate->RequestGarbageCollectionForTesting(
+      v8::Isolate::kFullGarbageCollection);
   return 0;
 }
diff --git a/test/fuzzer/parser.cc b/test/fuzzer/parser.cc
index be70b43..4035ade 100644
--- a/test/fuzzer/parser.cc
+++ b/test/fuzzer/parser.cc
@@ -38,5 +38,7 @@
   info.set_global();
   v8::internal::Parser parser(&info);
   parser.Parse(&info);
+  isolate->RequestGarbageCollectionForTesting(
+      v8::Isolate::kFullGarbageCollection);
   return 0;
 }
diff --git a/test/fuzzer/regexp.cc b/test/fuzzer/regexp.cc
index eb51da8..64c03ae 100644
--- a/test/fuzzer/regexp.cc
+++ b/test/fuzzer/regexp.cc
@@ -71,5 +71,7 @@
     Test(isolate, regexp, source, results_array);
   }
 
+  isolate->RequestGarbageCollectionForTesting(
+      v8::Isolate::kFullGarbageCollection);
   return 0;
 }