whole_func_string: function RegExpConstructor(pattern, flags) {
    var newtarget = new.target;
    var pattern_is_regexp = IsRegExp(pattern);
  
    if (IS_UNDEFINED(newtarget)) {
      newtarget = GlobalRegExp;
  
      // ES6 section 21.2.3.1 step 3.b
      if (pattern_is_regexp && IS_UNDEFINED(flags) &&
          pattern.constructor === newtarget) {
        return pattern;
      }
    }
  
    if (IS_REGEXP(pattern)) {
      if (IS_UNDEFINED(flags)) flags = PatternFlags(pattern);
      pattern = REGEXP_SOURCE(pattern);
  
    } else if (pattern_is_regexp) {
      var input_pattern = pattern;
      pattern = pattern.source;
      if (IS_UNDEFINED(flags)) flags = input_pattern.flags;
    }
  
    var object = %_NewObject(GlobalRegExp, newtarget);
    return RegExpInitialize(object, pattern, flags);
  }
func_code_string: function RegExpConstructor(pattern, flags) {
    var newtarget = new.target;
    var pattern_is_regexp = IsRegExp(pattern);
  
    if (IS_UNDEFINED(newtarget)) {
      newtarget = GlobalRegExp;
  
      // ES6 section 21.2.3.1 step 3.b
      if (pattern_is_regexp && IS_UNDEFINED(flags) &&
          pattern.constructor === newtarget) {
        return pattern;
      }
    }
  
    if (IS_REGEXP(pattern)) {
      if (IS_UNDEFINED(flags)) flags = PatternFlags(pattern);
      pattern = REGEXP_SOURCE(pattern);
  
    } else if (pattern_is_regexp) {
      var input_pattern = pattern;
      pattern = pattern.source;
      if (IS_UNDEFINED(flags)) flags = input_pattern.flags;
    }
  
    var object = %_NewObject(GlobalRegExp, newtarget);
    return RegExpInitialize(object, pattern, flags);
  }
func_documentation_string: ES#sec-regexp-pattern-flags RegExp ( pattern, flags )