text: /* This Source Code Form is subject to the terms of the Mozilla Public
   * License, v. 2.0. If a copy of the MPL was not distributed with this
   * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
  
  // ES6 draft rev34 (2015/02/20) 21.2.5.3 get RegExp.prototype.flags
  function RegExpFlagsGetter() {
      // Steps 1-2.
      var R = this;
      if (!IsObject(R))
          ThrowTypeError(JSMSG_NOT_NONNULL_OBJECT, R === null ? "null" : typeof R);
  
      // Step 3.
      var result = "";
  
      // Steps 4-6.
      if (R.global)
          result += "g";
  
      // Steps 7-9.
      if (R.ignoreCase)
          result += "i";
  
      // Steps 10-12.
      if (R.multiline)
          result += "m";
  
      // Steps 13-15.
      // TODO: Uncomment these steps when bug 1135377 is fixed.
      // if (R.unicode)
      //     result += "u";
  
      // Steps 16-18.
      if (R.sticky)
          result += "y";
  
      // Step 19.
      return result;
  }
  
  // ES6 draft rc1 21.2.5.14.
  function RegExpToString()
  {
      // Steps 1-2.
      var R = this;
      if (!IsObject(R))
          ThrowTypeError(JSMSG_NOT_NONNULL_OBJECT, R === null ? "null" : typeof R);
  
      // Steps 3-4.
      var pattern = R.source;
  
      // Steps 5-6.
      var flags = R.flags;
  
      // Step 7.
      return '/' + pattern + '/' + flags;
  }
  