From 3e1ce863e302b17f5496aacbfff63a710f58cd1d Mon Sep 17 00:00:00 2001
From: Ryan Hunt <rhunt@eqrion.net>
Date: Fri, 10 Apr 2020 21:28:21 +0000
Subject: [PATCH] Bug 1624524 - Only compile wasmTextToBinary and
 wasmCodeOffsets in JS Shell. r=bbouvier

This commit moves the implementation of the wasmTextToBinary and wasmCodeOffets
functions to the JS shell.

Before this change, the implementation was in wasm/rust/. This commit moves the
implementation to js/rust, which is only compiled for the JS shell. The C++
bindings for the rust code is moved to the shell/ directory.

Differential Revision: https://phabricator.services.mozilla.com/D68650

--HG--
rename : js/src/wasm/rust/src/lib.rs => js/src/rust/wasm.rs
rename : js/src/wasm/WasmTesting.cpp => js/src/shell/WasmTesting.cpp
rename : js/src/wasm/WasmTesting.h => js/src/shell/WasmTesting.h
extra : moz-landing-system : lando
---
 Cargo.lock                                    |  11 +-
 js/src/builtin/TestingFunctions.cpp           |  94 ----------------
 js/src/rust/Cargo.toml                        |   2 +
 js/src/rust/lib.rs                            |   5 +
 js/src/rust/shared/Cargo.toml                 |   1 -
 js/src/rust/shared/lib.rs                     |   2 -
 js/src/{wasm/rust/src/lib.rs => rust/wasm.rs} |   0
 js/src/{wasm => shell}/WasmTesting.cpp        |   2 +-
 js/src/{wasm => shell}/WasmTesting.h          |   6 +-
 js/src/shell/js.cpp                           |  94 ++++++++++++++++
 js/src/shell/moz.build                        |   3 +-
 js/src/wasm/moz.build                         |   1 -
 js/src/wasm/rust/Cargo.toml                   |  13 ---
 third_party/rust/nom/.cargo-checksum.json     |   2 +-
 third_party/rust/nom/.travis.yml              | 101 ------------------
 15 files changed, 110 insertions(+), 227 deletions(-)
 rename js/src/{wasm/rust/src/lib.rs => rust/wasm.rs} (100%)
 rename js/src/{wasm => shell}/WasmTesting.cpp (98%)
 rename js/src/{wasm => shell}/WasmTesting.h (95%)
 delete mode 100644 js/src/wasm/rust/Cargo.toml
 delete mode 100644 third_party/rust/nom/.travis.yml

diff --git a/Cargo.lock b/Cargo.lock
index 96b3abd119b1c..6c0a34071c796 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -2152,6 +2152,8 @@ version = "0.1.0"
 dependencies = [
  "jsrust_shared",
  "mozglue-static",
+ "wasmparser 0.48.2",
+ "wat",
 ]
 
 [[package]]
@@ -2164,7 +2166,6 @@ dependencies = [
  "mozglue-static",
  "mozilla-central-workspace-hack",
  "smoosh",
- "wasm-rust",
 ]
 
 [[package]]
@@ -4896,14 +4897,6 @@ dependencies = [
  "urlencoding",
 ]
 
-[[package]]
-name = "wasm-rust"
-version = "0.1.0"
-dependencies = [
- "wasmparser 0.48.2",
- "wat",
-]
-
 [[package]]
 name = "wasmparser"
 version = "0.48.2"
diff --git a/js/src/builtin/TestingFunctions.cpp b/js/src/builtin/TestingFunctions.cpp
index 28e49120df6a0..6ffd39c205872 100644
--- a/js/src/builtin/TestingFunctions.cpp
+++ b/js/src/builtin/TestingFunctions.cpp
@@ -93,7 +93,6 @@
 #include "wasm/WasmJS.h"
 #include "wasm/WasmModule.h"
 #include "wasm/WasmSignalHandlers.h"
-#include "wasm/WasmTesting.h"
 #include "wasm/WasmTypes.h"
 
 #include "debugger/DebugAPI-inl.h"
@@ -899,90 +898,6 @@ static bool WasmIonDisabledByFeatures(JSContext* cx, unsigned argc, Value* vp) {
   return true;
 }
 
-static bool WasmTextToBinary(JSContext* cx, unsigned argc, Value* vp) {
-  CallArgs args = CallArgsFromVp(argc, vp);
-  RootedObject callee(cx, &args.callee());
-
-  if (!args.requireAtLeast(cx, "wasmTextToBinary", 1)) {
-    return false;
-  }
-
-  if (!args[0].isString()) {
-    ReportUsageErrorASCII(cx, callee, "First argument must be a String");
-    return false;
-  }
-
-  size_t textLen = args[0].toString()->length();
-
-  AutoStableStringChars twoByteChars(cx);
-  if (!twoByteChars.initTwoByte(cx, args[0].toString())) {
-    return false;
-  }
-
-  wasm::Bytes bytes;
-  UniqueChars error;
-  if (!wasm::TextToBinary(twoByteChars.twoByteChars(), textLen, &bytes,
-                          &error)) {
-    JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_WASM_TEXT_FAIL,
-                             error.get() ? error.get() : "out of memory");
-    return false;
-  }
-
-  RootedObject binary(cx, JS_NewUint8Array(cx, bytes.length()));
-  if (!binary) {
-    return false;
-  }
-
-  memcpy(binary->as<TypedArrayObject>().dataPointerUnshared(), bytes.begin(),
-         bytes.length());
-
-  args.rval().setObject(*binary);
-  return true;
-}
-
-static bool WasmCodeOffsets(JSContext* cx, unsigned argc, Value* vp) {
-  CallArgs args = CallArgsFromVp(argc, vp);
-  RootedObject callee(cx, &args.callee());
-
-  if (!args.requireAtLeast(cx, "wasmCodeOffsets", 1)) {
-    return false;
-  }
-
-  if (!args.get(0).isObject()) {
-    JS_ReportErrorASCII(cx, "argument is not an object");
-    return false;
-  }
-
-  SharedMem<uint8_t*> bytes;
-  size_t byteLength;
-
-  JSObject* bufferObject = &args[0].toObject();
-  JSObject* unwrappedBufferObject = CheckedUnwrapStatic(bufferObject);
-  if (!unwrappedBufferObject ||
-      !IsBufferSource(unwrappedBufferObject, &bytes, &byteLength)) {
-    JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr,
-                             JSMSG_WASM_BAD_BUF_ARG);
-    return false;
-  }
-
-  wasm::Uint32Vector offsets;
-  wasm::CodeOffsets(bytes.unwrap(), byteLength, &offsets);
-
-  RootedObject jsOffsets(cx, JS::NewArrayObject(cx, offsets.length()));
-  if (!jsOffsets) {
-    return false;
-  }
-  for (size_t i = 0; i < offsets.length(); i++) {
-    uint32_t offset = offsets[i];
-    RootedValue offsetVal(cx, NumberValue(offset));
-    if (!JS_SetElement(cx, jsOffsets, i, offsetVal)) {
-      return false;
-    }
-  }
-  args.rval().setObject(*jsOffsets);
-  return true;
-}
-
 static bool ConvertToTier(JSContext* cx, HandleValue value,
                           const wasm::Code& code, wasm::Tier* tier) {
   RootedString option(cx, JS::ToString(cx, value));
@@ -6702,15 +6617,6 @@ gc::ZealModeHelpText),
 "  from being used then this returns a truthy string describing the features that\n."
 "  are disabling it.  Otherwise it returns false."),
 
-    JS_FN_HELP("wasmTextToBinary", WasmTextToBinary, 1, 0,
-"wasmTextToBinary(str)",
-"  Translates the given text wasm module into its binary encoding."),
-
-    JS_FN_HELP("wasmCodeOffsets", WasmCodeOffsets, 1, 0,
-"wasmCodeOffsets(binary)",
-"  Decodes the given wasm binary to find the offsets of every instruction in the"
-"  code section."),
-
     JS_FN_HELP("wasmExtractCode", WasmExtractCode, 1, 0,
 "wasmExtractCode(module[, tier])",
 "  Extracts generated machine code from WebAssembly.Module.  The tier is a string,\n"
diff --git a/js/src/rust/Cargo.toml b/js/src/rust/Cargo.toml
index 5ae614125ec2c..4094a71c15fef 100644
--- a/js/src/rust/Cargo.toml
+++ b/js/src/rust/Cargo.toml
@@ -20,3 +20,5 @@ smoosh = ['jsrust_shared/smoosh']
 jsrust_shared = { path = "./shared" }
 # Workaround for https://github.com/rust-lang/rust/issues/58393
 mozglue-static = { path = "../../../mozglue/static/rust" }
+wat = { version = "1.0.14" }
+wasmparser = { version = "0.48.2" }
diff --git a/js/src/rust/lib.rs b/js/src/rust/lib.rs
index e90fb547eae24..69840a5a28ca7 100644
--- a/js/src/rust/lib.rs
+++ b/js/src/rust/lib.rs
@@ -12,4 +12,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+
 extern crate jsrust_shared;
+extern crate wat;
+extern crate wasmparser;
+
+mod wasm;
diff --git a/js/src/rust/shared/Cargo.toml b/js/src/rust/shared/Cargo.toml
index 06c7e3fff8a81..e80f88d615cf6 100644
--- a/js/src/rust/shared/Cargo.toml
+++ b/js/src/rust/shared/Cargo.toml
@@ -13,7 +13,6 @@ baldrdash = { path = "../../wasm/cranelift", optional = true }
 encoding_c = "0.9.5"
 encoding_c_mem = "0.2.4"
 smoosh = { path = "../../frontend/smoosh", optional = true }
-wasm-rust = { path = "../../wasm/rust" }
 mozilla-central-workspace-hack = { path = "../../../../build/workspace-hack" }
 mozglue-static = { path = "../../../../mozglue/static/rust" }
 
diff --git a/js/src/rust/shared/lib.rs b/js/src/rust/shared/lib.rs
index 0eccfe5e66c34..31a3d5c53aec7 100644
--- a/js/src/rust/shared/lib.rs
+++ b/js/src/rust/shared/lib.rs
@@ -21,5 +21,3 @@ extern crate mozglue_static;
 
 #[cfg(feature = "smoosh")]
 extern crate smoosh;
-
-extern crate wasm_rust;
diff --git a/js/src/wasm/rust/src/lib.rs b/js/src/rust/wasm.rs
similarity index 100%
rename from js/src/wasm/rust/src/lib.rs
rename to js/src/rust/wasm.rs
diff --git a/js/src/wasm/WasmTesting.cpp b/js/src/shell/WasmTesting.cpp
similarity index 98%
rename from js/src/wasm/WasmTesting.cpp
rename to js/src/shell/WasmTesting.cpp
index 1f1a3b5c9a701..dcbbe7f4a073c 100644
--- a/js/src/wasm/WasmTesting.cpp
+++ b/js/src/shell/WasmTesting.cpp
@@ -16,7 +16,7 @@
  * limitations under the License.
  */
 
-#include "wasm/WasmTesting.h"
+#include "shell/WasmTesting.h"
 
 #include <inttypes.h>
 #include <stdbool.h>
diff --git a/js/src/wasm/WasmTesting.h b/js/src/shell/WasmTesting.h
similarity index 95%
rename from js/src/wasm/WasmTesting.h
rename to js/src/shell/WasmTesting.h
index 595652f9e5769..fc6fc88118c2b 100644
--- a/js/src/wasm/WasmTesting.h
+++ b/js/src/shell/WasmTesting.h
@@ -16,8 +16,8 @@
  * limitations under the License.
  */
 
-#ifndef wasm_testing_h
-#define wasm_testing_h
+#ifndef shell_wasm_h
+#define shell_wasm_h
 
 #include "wasm/WasmTypes.h"
 
@@ -43,4 +43,4 @@ extern void CodeOffsets(const uint8_t* bytes, size_t bytesLen,
 }  // namespace wasm
 }  // namespace js
 
-#endif  // wasm_testing_h
+#endif  // shell_wasm_h
diff --git a/js/src/shell/js.cpp b/js/src/shell/js.cpp
index 7123dddce961f..1baf591905ae4 100644
--- a/js/src/shell/js.cpp
+++ b/js/src/shell/js.cpp
@@ -118,6 +118,7 @@
 #include "shell/jsoptparse.h"
 #include "shell/jsshell.h"
 #include "shell/OSObject.h"
+#include "shell/WasmTesting.h"
 #include "threading/ConditionVariable.h"
 #include "threading/ExclusiveData.h"
 #include "threading/LockGuard.h"
@@ -8221,6 +8222,90 @@ static bool SetARMHwCapFlags(JSContext* cx, unsigned argc, Value* vp) {
   return true;
 }
 
+static bool WasmTextToBinary(JSContext* cx, unsigned argc, Value* vp) {
+  CallArgs args = CallArgsFromVp(argc, vp);
+  RootedObject callee(cx, &args.callee());
+
+  if (!args.requireAtLeast(cx, "wasmTextToBinary", 1)) {
+    return false;
+  }
+
+  if (!args[0].isString()) {
+    ReportUsageErrorASCII(cx, callee, "First argument must be a String");
+    return false;
+  }
+
+  size_t textLen = args[0].toString()->length();
+
+  AutoStableStringChars twoByteChars(cx);
+  if (!twoByteChars.initTwoByte(cx, args[0].toString())) {
+    return false;
+  }
+
+  wasm::Bytes bytes;
+  UniqueChars error;
+  if (!wasm::TextToBinary(twoByteChars.twoByteChars(), textLen, &bytes,
+                          &error)) {
+    JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr, JSMSG_WASM_TEXT_FAIL,
+                             error.get() ? error.get() : "out of memory");
+    return false;
+  }
+
+  RootedObject binary(cx, JS_NewUint8Array(cx, bytes.length()));
+  if (!binary) {
+    return false;
+  }
+
+  memcpy(binary->as<TypedArrayObject>().dataPointerUnshared(), bytes.begin(),
+         bytes.length());
+
+  args.rval().setObject(*binary);
+  return true;
+}
+
+static bool WasmCodeOffsets(JSContext* cx, unsigned argc, Value* vp) {
+  CallArgs args = CallArgsFromVp(argc, vp);
+  RootedObject callee(cx, &args.callee());
+
+  if (!args.requireAtLeast(cx, "wasmCodeOffsets", 1)) {
+    return false;
+  }
+
+  if (!args.get(0).isObject()) {
+    JS_ReportErrorASCII(cx, "argument is not an object");
+    return false;
+  }
+
+  SharedMem<uint8_t*> bytes;
+  size_t byteLength;
+
+  JSObject* bufferObject = &args[0].toObject();
+  JSObject* unwrappedBufferObject = CheckedUnwrapStatic(bufferObject);
+  if (!unwrappedBufferObject ||
+      !IsBufferSource(unwrappedBufferObject, &bytes, &byteLength)) {
+    JS_ReportErrorNumberUTF8(cx, GetErrorMessage, nullptr,
+                             JSMSG_WASM_BAD_BUF_ARG);
+    return false;
+  }
+
+  wasm::Uint32Vector offsets;
+  wasm::CodeOffsets(bytes.unwrap(), byteLength, &offsets);
+
+  RootedObject jsOffsets(cx, JS::NewArrayObject(cx, offsets.length()));
+  if (!jsOffsets) {
+    return false;
+  }
+  for (size_t i = 0; i < offsets.length(); i++) {
+    uint32_t offset = offsets[i];
+    RootedValue offsetVal(cx, NumberValue(offset));
+    if (!JS_SetElement(cx, jsOffsets, i, offsetVal)) {
+      return false;
+    }
+  }
+  args.rval().setObject(*jsOffsets);
+  return true;
+}
+
 #ifndef __AFL_HAVE_MANUAL_CONTROL
 #  define __AFL_LOOP(x) true
 #endif
@@ -9225,6 +9310,15 @@ JS_FN_HELP("parseBin", BinParse, 1, 0,
 "  wasm::Module into bytes, and deserialize those bytes in the current\n"
 "  process, returning the resulting WebAssembly.Module."),
 
+    JS_FN_HELP("wasmTextToBinary", WasmTextToBinary, 1, 0,
+"wasmTextToBinary(str)",
+"  Translates the given text wasm module into its binary encoding."),
+
+    JS_FN_HELP("wasmCodeOffsets", WasmCodeOffsets, 1, 0,
+"wasmCodeOffsets(binary)",
+"  Decodes the given wasm binary to find the offsets of every instruction in the"
+"  code section."),
+
     JS_FN_HELP("transplantableObject", TransplantableObject, 0, 0,
 "transplantableObject([options])",
 "  Returns the pair {object, transplant}. |object| is an object which can be\n"
diff --git a/js/src/shell/moz.build b/js/src/shell/moz.build
index be6cea093c8bb..7940924876749 100644
--- a/js/src/shell/moz.build
+++ b/js/src/shell/moz.build
@@ -19,7 +19,8 @@ UNIFIED_SOURCES += [
     'js.cpp',
     'jsoptparse.cpp',
     'jsshell.cpp',
-    'OSObject.cpp'
+    'OSObject.cpp',
+    'WasmTesting.cpp'
 ]
 
 if CONFIG['FUZZING_INTERFACES']:
diff --git a/js/src/wasm/moz.build b/js/src/wasm/moz.build
index 9cba04c1aa6cb..66cd41a2a262b 100644
--- a/js/src/wasm/moz.build
+++ b/js/src/wasm/moz.build
@@ -40,7 +40,6 @@ UNIFIED_SOURCES += [
     'WasmSignalHandlers.cpp',
     'WasmStubs.cpp',
     'WasmTable.cpp',
-    'WasmTesting.cpp',
     'WasmTypes.cpp',
     'WasmValidate.cpp'
 ]
diff --git a/js/src/wasm/rust/Cargo.toml b/js/src/wasm/rust/Cargo.toml
deleted file mode 100644
index 83293dfb85088..0000000000000
--- a/js/src/wasm/rust/Cargo.toml
+++ /dev/null
@@ -1,13 +0,0 @@
-[package]
-name = "wasm-rust"
-version = "0.1.0"
-authors = ["The Spidermonkey developers"]
-edition = "2018"
-
-[lib]
-crate-type = ["rlib"]
-name = "wasm_rust"
-
-[dependencies]
-wat = { version = "1.0.14" }
-wasmparser = { version = "0.48.2" }
diff --git a/third_party/rust/nom/.cargo-checksum.json b/third_party/rust/nom/.cargo-checksum.json
index b236aa3bb55cd..262350f0269c1 100644
--- a/third_party/rust/nom/.cargo-checksum.json
+++ b/third_party/rust/nom/.cargo-checksum.json
@@ -1 +1 @@
-{"files":{".travis.yml":"124c5613de02fe2088a7410a7057b0e0ed49dcbc8509704b690de98e83b289e0","CHANGELOG.md":"f4015ae48bb8f7c672c4fdf1ca4bdde5910f1b423ddc12e9fe80395911759d3e","Cargo.lock":"d7985e783bf7275009ab524f13aac37adc7291838a1956e1f092413ff3b8ea04","Cargo.toml":"72afa6607971579c7009dff34b6b334d4893b1a9f1983cd80364c5e318e4ec2b","LICENSE":"4dbda04344456f09a7a588140455413a9ac59b6b26a1ef7cdf9c800c012d87f0","build.rs":"fd66799ca3bd6a83b10f18a62e6ffc3b1ac94074fe65de4e4c1c447bf71d6ebb","src/bits/complete.rs":"8a60ae4cd6aaf32cb232b598b1a3dda7858c619944ba12ebdb01a31c75243293","src/bits/macros.rs":"8d9ba23f237b4fc01e3b2106002d0f6d59930a42f34d80662c61e0057dfb4a5b","src/bits/mod.rs":"4ca0148b4ef2de4e88796da7831eaa5c4fcbc5515a101eae1b0bc4853c80b5e7","src/bits/streaming.rs":"7c587808476edee57caeccca7dccd744bdfdbb13ae1156400fb4961980fa325d","src/branch/macros.rs":"8b885185725c16369d90954fed8450070bcd4bf8ae7de1df1bb46bb378450d71","src/branch/mod.rs":"d0c871ad7b74428ddccef445a10254249c3907528005a00275e8eb6516255f2f","src/bytes/complete.rs":"107f776885161e48a596962925d2b1628f20fd4bbe5b3777bb34ec175b97e280","src/bytes/macros.rs":"914a821761bbf49f04425068b7426bdd60394e8cc30e7c2193160b16e06c266f","src/bytes/mod.rs":"577231e6e6bd51726a877a73292d8f1c626f6b32ebe4a57943acaed8a8a2975d","src/bytes/streaming.rs":"4b2e577e6057fda932d1edc2ebe53c5df71a21417a304b35d5230dd7221411f3","src/character/complete.rs":"bb80656f3405eca79ba93c674cae7cd296733d784928e5c45754ee27963b7325","src/character/macros.rs":"f330ab60d469802b1664dcbbccd4bfe3e1ca87b348e92609ef34e25b4d475983","src/character/mod.rs":"9f520d535a88849726eac8648aa5c8b86193ab2f3a984d63c8371b846cc0b72c","src/character/streaming.rs":"9be7051951e8d0a54e294542baaf115aeb6efb818521f045386cd3a1777ca6a0","src/combinator/macros.rs":"df9ba1157bda21313a9c23826baeefd99f54e92c47d60c8dbb25697fe4d52686","src/combinator/mod.rs":"d1b2073683be1c9c4a06d1d3764ac789027ad7401ec726805d1505c1ad8ab1fd","src/error.rs":"ef7feb06b9689aa2f4b11a367b6f7058df8fd151b673c7482edd6600e55e38da","src/internal.rs":"c4029b0e32d41eb6407e517f3102a41a3a80a6a69df4767008ac5656b28d7ab0","src/lib.rs":"f01cdc23cc17201f978796d2d80fb6bba5a9b81ffb4653286e1e53f904079911","src/methods.rs":"56099c30123e92f9f6bacb16017f29fcdbc6546afbf0f80cf4951d2d8093ba83","src/multi/macros.rs":"01d15ae913921bd1ed0ff579a868ea39a314a866e6b5a365ef6b448a75f9b3a8","src/multi/mod.rs":"342c30e0c601558c867df215f7094bc9e43534a7793f2e8b19c114fe07cfea41","src/number/complete.rs":"560dfb2ffbbfe7fe276389b60eec2d717fec20eab68cc72d10d87ff6e2195352","src/number/macros.rs":"e614ee142658c126902a466f29ef250a77016fa126b8dfd59db0c6657a0ef205","src/number/mod.rs":"e432c317ee839a2f928cd0e8e583acadb165ed84fb649e681688a0fcd84b0a75","src/number/streaming.rs":"4c6fbce64e0d535f69d2c928314e1d0a019480db5a09e4f47a654a2e8fd56e8c","src/regexp.rs":"ac6fc61c2e7b629e6786638b44d63d15139c50f9d6a38acd044e4c2b3a699e08","src/sequence/macros.rs":"0e72871cdb2f1bf804f7f637def117c8e531f78cc7da5a6a0e343f0dbfb04271","src/sequence/mod.rs":"ec34b969462703252c4f00c27a03928c9580da612c71b7100e0902190a633ab9","src/str.rs":"fcae4d6f2f7bc921cafe3d0ce682d0566618cbe5f3b3e4b51ca34d11cb0e3e93","src/traits.rs":"2a84c3aa40f1cf78e0149e344da8b85486f7b6c0ddff8f23689bccce0def2260","src/util.rs":"bcedca3c88ac24f11f73e836efd8fe00014562163cc3d43d0cec9d726a4687c3","src/whitespace.rs":"53bddd9d559dc7793effcb828f9c196a7f098338edb0877940d1246834761308","tests/arithmetic.rs":"c57bc547110e498e7bddc973a94202f22356bc525fed55dac4f03daf16eb54f7","tests/arithmetic_ast.rs":"8fbc4c5d8850fa1cf0a16f97e8718d5427b2657f12ca4a0b3b6c1b47fd9e67d4","tests/blockbuf-arithmetic.rs":"099fdf75da97ae032006d8c82ea2207265c5161a08d1370e1ddddb01e73afaf4","tests/css.rs":"b13466eb6a0831f98ede83ffdd752ba821f7d03db724fd92b5bfbc0b9f804a65","tests/custom_errors.rs":"3d2511f8a8d0eb20d9efc19f29ae4ab34389bdd33214a421989d0c47b540b7fd","tests/escaped.rs":"03ecb10828472e4de2ace05a12cb49997b47a113b6a3b0eea3d56bc2bafd8446","tests/float.rs":"92947cc112a6b865f5e19d80edbf300ddc0d0ca4b4e4543eda15337b5c60eedf","tests/inference.rs":"fe476d1367fce9f0baf82295dc037c79321ededf12b9bcc0c5acdc7cefff4720","tests/ini.rs":"04ebf3ead0008974b3bedc387e889bab5942efd0c9c8563fe47e056a9b90bbab","tests/ini_str.rs":"2831a4ee26b37734dba8862cc2972a3a1433abf4fcab253b6cf4fb43f120301d","tests/issues.rs":"142c8d206089b04cf2fd0cbd90f87421ded435ce300516c029294b056354e00f","tests/json.rs":"25476ec2daca19295f5f99b621eecc859a5db5789ac35be381eaf8703a70bce8","tests/mp4.rs":"d0e61bfc93ff40676ca7e9d7813a5ad7c73b1db874599d8f3ea784115bfcab87","tests/multiline.rs":"6a5321cb53c7f88778fa100499533abfa602bada7a6b1d0fbba7ef77b9c110f5","tests/named_args.rs":"bd8095c3abc6fb806c9181c6025c0111d1e7f3b7269ea89ae122bf3bb8ed7e7d","tests/overflow.rs":"d1d6d8ce9b34ed47b42a5f7250ce711805a397691dc6cad3cc8945ec230da161","tests/reborrow_fold.rs":"9328deafc2143c2a2d1a0be86e2448b644cffcb5f0935c8b24eb469f1f9477c0","tests/test1.rs":"06fc9e52638f16bfc3ef69cd26b927e0cf55706d6f132ab7c0f1072208475853"},"package":"0b471253da97532da4b61552249c521e01e736071f71c1a4f7ebbfbf0a06aad6"}
\ No newline at end of file
+{"files":{"CHANGELOG.md":"f4015ae48bb8f7c672c4fdf1ca4bdde5910f1b423ddc12e9fe80395911759d3e","Cargo.lock":"d7985e783bf7275009ab524f13aac37adc7291838a1956e1f092413ff3b8ea04","Cargo.toml":"72afa6607971579c7009dff34b6b334d4893b1a9f1983cd80364c5e318e4ec2b","LICENSE":"4dbda04344456f09a7a588140455413a9ac59b6b26a1ef7cdf9c800c012d87f0","build.rs":"fd66799ca3bd6a83b10f18a62e6ffc3b1ac94074fe65de4e4c1c447bf71d6ebb","src/bits/complete.rs":"8a60ae4cd6aaf32cb232b598b1a3dda7858c619944ba12ebdb01a31c75243293","src/bits/macros.rs":"8d9ba23f237b4fc01e3b2106002d0f6d59930a42f34d80662c61e0057dfb4a5b","src/bits/mod.rs":"4ca0148b4ef2de4e88796da7831eaa5c4fcbc5515a101eae1b0bc4853c80b5e7","src/bits/streaming.rs":"7c587808476edee57caeccca7dccd744bdfdbb13ae1156400fb4961980fa325d","src/branch/macros.rs":"8b885185725c16369d90954fed8450070bcd4bf8ae7de1df1bb46bb378450d71","src/branch/mod.rs":"d0c871ad7b74428ddccef445a10254249c3907528005a00275e8eb6516255f2f","src/bytes/complete.rs":"107f776885161e48a596962925d2b1628f20fd4bbe5b3777bb34ec175b97e280","src/bytes/macros.rs":"914a821761bbf49f04425068b7426bdd60394e8cc30e7c2193160b16e06c266f","src/bytes/mod.rs":"577231e6e6bd51726a877a73292d8f1c626f6b32ebe4a57943acaed8a8a2975d","src/bytes/streaming.rs":"4b2e577e6057fda932d1edc2ebe53c5df71a21417a304b35d5230dd7221411f3","src/character/complete.rs":"bb80656f3405eca79ba93c674cae7cd296733d784928e5c45754ee27963b7325","src/character/macros.rs":"f330ab60d469802b1664dcbbccd4bfe3e1ca87b348e92609ef34e25b4d475983","src/character/mod.rs":"9f520d535a88849726eac8648aa5c8b86193ab2f3a984d63c8371b846cc0b72c","src/character/streaming.rs":"9be7051951e8d0a54e294542baaf115aeb6efb818521f045386cd3a1777ca6a0","src/combinator/macros.rs":"df9ba1157bda21313a9c23826baeefd99f54e92c47d60c8dbb25697fe4d52686","src/combinator/mod.rs":"d1b2073683be1c9c4a06d1d3764ac789027ad7401ec726805d1505c1ad8ab1fd","src/error.rs":"ef7feb06b9689aa2f4b11a367b6f7058df8fd151b673c7482edd6600e55e38da","src/internal.rs":"c4029b0e32d41eb6407e517f3102a41a3a80a6a69df4767008ac5656b28d7ab0","src/lib.rs":"f01cdc23cc17201f978796d2d80fb6bba5a9b81ffb4653286e1e53f904079911","src/methods.rs":"56099c30123e92f9f6bacb16017f29fcdbc6546afbf0f80cf4951d2d8093ba83","src/multi/macros.rs":"01d15ae913921bd1ed0ff579a868ea39a314a866e6b5a365ef6b448a75f9b3a8","src/multi/mod.rs":"342c30e0c601558c867df215f7094bc9e43534a7793f2e8b19c114fe07cfea41","src/number/complete.rs":"560dfb2ffbbfe7fe276389b60eec2d717fec20eab68cc72d10d87ff6e2195352","src/number/macros.rs":"e614ee142658c126902a466f29ef250a77016fa126b8dfd59db0c6657a0ef205","src/number/mod.rs":"e432c317ee839a2f928cd0e8e583acadb165ed84fb649e681688a0fcd84b0a75","src/number/streaming.rs":"4c6fbce64e0d535f69d2c928314e1d0a019480db5a09e4f47a654a2e8fd56e8c","src/regexp.rs":"ac6fc61c2e7b629e6786638b44d63d15139c50f9d6a38acd044e4c2b3a699e08","src/sequence/macros.rs":"0e72871cdb2f1bf804f7f637def117c8e531f78cc7da5a6a0e343f0dbfb04271","src/sequence/mod.rs":"ec34b969462703252c4f00c27a03928c9580da612c71b7100e0902190a633ab9","src/str.rs":"fcae4d6f2f7bc921cafe3d0ce682d0566618cbe5f3b3e4b51ca34d11cb0e3e93","src/traits.rs":"2a84c3aa40f1cf78e0149e344da8b85486f7b6c0ddff8f23689bccce0def2260","src/util.rs":"bcedca3c88ac24f11f73e836efd8fe00014562163cc3d43d0cec9d726a4687c3","src/whitespace.rs":"53bddd9d559dc7793effcb828f9c196a7f098338edb0877940d1246834761308","tests/arithmetic.rs":"c57bc547110e498e7bddc973a94202f22356bc525fed55dac4f03daf16eb54f7","tests/arithmetic_ast.rs":"8fbc4c5d8850fa1cf0a16f97e8718d5427b2657f12ca4a0b3b6c1b47fd9e67d4","tests/blockbuf-arithmetic.rs":"099fdf75da97ae032006d8c82ea2207265c5161a08d1370e1ddddb01e73afaf4","tests/css.rs":"b13466eb6a0831f98ede83ffdd752ba821f7d03db724fd92b5bfbc0b9f804a65","tests/custom_errors.rs":"3d2511f8a8d0eb20d9efc19f29ae4ab34389bdd33214a421989d0c47b540b7fd","tests/escaped.rs":"03ecb10828472e4de2ace05a12cb49997b47a113b6a3b0eea3d56bc2bafd8446","tests/float.rs":"92947cc112a6b865f5e19d80edbf300ddc0d0ca4b4e4543eda15337b5c60eedf","tests/inference.rs":"fe476d1367fce9f0baf82295dc037c79321ededf12b9bcc0c5acdc7cefff4720","tests/ini.rs":"04ebf3ead0008974b3bedc387e889bab5942efd0c9c8563fe47e056a9b90bbab","tests/ini_str.rs":"2831a4ee26b37734dba8862cc2972a3a1433abf4fcab253b6cf4fb43f120301d","tests/issues.rs":"142c8d206089b04cf2fd0cbd90f87421ded435ce300516c029294b056354e00f","tests/json.rs":"25476ec2daca19295f5f99b621eecc859a5db5789ac35be381eaf8703a70bce8","tests/mp4.rs":"d0e61bfc93ff40676ca7e9d7813a5ad7c73b1db874599d8f3ea784115bfcab87","tests/multiline.rs":"6a5321cb53c7f88778fa100499533abfa602bada7a6b1d0fbba7ef77b9c110f5","tests/named_args.rs":"bd8095c3abc6fb806c9181c6025c0111d1e7f3b7269ea89ae122bf3bb8ed7e7d","tests/overflow.rs":"d1d6d8ce9b34ed47b42a5f7250ce711805a397691dc6cad3cc8945ec230da161","tests/reborrow_fold.rs":"9328deafc2143c2a2d1a0be86e2448b644cffcb5f0935c8b24eb469f1f9477c0","tests/test1.rs":"06fc9e52638f16bfc3ef69cd26b927e0cf55706d6f132ab7c0f1072208475853"},"package":"0b471253da97532da4b61552249c521e01e736071f71c1a4f7ebbfbf0a06aad6"}
\ No newline at end of file
diff --git a/third_party/rust/nom/.travis.yml b/third_party/rust/nom/.travis.yml
deleted file mode 100644
index e18b14079ddde..0000000000000
--- a/third_party/rust/nom/.travis.yml
+++ /dev/null
@@ -1,101 +0,0 @@
-language: rust
-# sudo is required to enable kcov to use the personality syscall
-sudo: required
-dist: trusty
-cache: cargo
-
-rust:
-  - nightly
-  - beta
-  - stable
-  - 1.31.0
-
-env:
-  matrix:
-    - FEATURES='--features "regexp regexp_macros"'
-
-before_script:
-  - eval git pull --rebase https://github.com/Geal/nom master
-  - eval git log --pretty=oneline HEAD~5..HEAD
-
-matrix:
-  include:
-    - rust: nightly
-      env: FEATURES='--no-default-features'
-    - rust: nightly
-      env: FEATURES='--no-default-features --features "alloc"'
-    - rust: stable
-      env: FEATURES=''
-    - rust: nightly
-      env: DOC_FEATURES='--features "std lexical regexp regexp_macros" --no-default-features'
-      before_script:
-        - export PATH=$HOME/.cargo/bin:$PATH
-      script:
-        - eval cargo doc --verbose $DOC_FEATURES
-    - rust: nightly
-      env: FEATURES=''
-      before_script:
-        - export PATH=$HOME/.cargo/bin:$PATH
-        - cargo install cargo-update   || echo "cargo-update already installed"
-        - cargo install cargo-travis   || echo "cargo-travis already installed"
-        - cargo install-update -a
-        - mkdir -p target/kcov-master
-      script:
-        cargo coveralls --verbose --all-features
-  allow_failures:
-    - rust: stable
-      env: FEATURES=''
-      before_script:
-        - export PATH=$HOME/.cargo/bin:$PATH
-        - rustup component add rustfmt-preview
-      script:
-        - eval cargo fmt -- --write-mode=diff
-
-notifications:
-  webhooks:
-    urls:
-      - https://webhooks.gitter.im/e/9c035a194ac4fd4cc061
-    on_success: change
-    on_failure: always
-    on_start: false
-
-
-addons:
-  apt:
-    packages:
-      - libcurl4-openssl-dev
-      - libelf-dev
-      - libdw-dev
-      - binutils-dev
-      - cmake
-    sources:
-      - kalakris-cmake
-
-cache:
-  directories:
-    - /home/travis/.cargo
-
-before_cache:
-  - rm -rf /home/travis/.cargo/registry
-
-script:
-  - eval cargo build --verbose $FEATURES
-  - eval cargo test --verbose $FEATURES
-
-after_success: |
-  case "$TRAVIS_RUST_VERSION" in
-    nightly)
-      if [ "${TRAVIS_PULL_REQUEST_BRANCH:-$TRAVIS_BRANCH}" != "master" ]; then
-        git fetch &&
-        git checkout master &&
-        cargo bench --verbose
-      fi
-
-      if [ "$FEATURES" == '--features "regexp regexp_macros"' ]; then
-        cargo bench --verbose
-      fi
-      ;;
-
-    *)
-      ;;
-  esac
-- 
GitLab