github.com/spotify/syslog-redirector-golang@v0.0.0-20140320174030-4859f03d829a/src/pkg/runtime/zstring_linux_amd64.c (about)

     1  // auto generated by go tool dist
     2  // goos=linux goarch=amd64
     3  
     4  #include "runtime.h"
     5  #include "arch_GOARCH.h"
     6  #include "malloc.h"
     7  #include "race.h"
     8  #include "../../cmd/ld/textflag.h"
     9  
    10  #line 12 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    11  String runtime·emptystring; 
    12  #line 14 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    13  #pragma textflag NOSPLIT 
    14  intgo 
    15  runtime·findnull ( byte *s ) 
    16  { 
    17  intgo l; 
    18  #line 20 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    19  if ( s == nil ) 
    20  return 0; 
    21  for ( l=0; s[l]!=0; l++ ) 
    22  ; 
    23  return l; 
    24  } 
    25  #line 27 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    26  intgo 
    27  runtime·findnullw ( uint16 *s ) 
    28  { 
    29  intgo l; 
    30  #line 32 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    31  if ( s == nil ) 
    32  return 0; 
    33  for ( l=0; s[l]!=0; l++ ) 
    34  ; 
    35  return l; 
    36  } 
    37  #line 39 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    38  uintptr runtime·maxstring = 256; 
    39  #line 41 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    40  static String 
    41  gostringsize ( intgo l ) 
    42  { 
    43  String s; 
    44  uintptr ms; 
    45  #line 47 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    46  if ( l == 0 ) 
    47  return runtime·emptystring; 
    48  #line 50 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    49  s.str = runtime·mallocgc ( l+1 , 0 , FlagNoScan|FlagNoZero ) ; 
    50  s.len = l; 
    51  s.str[l] = 0; 
    52  for ( ;; ) { 
    53  ms = runtime·maxstring; 
    54  if ( ( uintptr ) l <= ms || runtime·casp ( ( void** ) &runtime·maxstring , ( void* ) ms , ( void* ) l ) ) 
    55  break; 
    56  } 
    57  return s; 
    58  } 
    59  #line 61 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    60  String 
    61  runtime·gostring ( byte *str ) 
    62  { 
    63  intgo l; 
    64  String s; 
    65  #line 67 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    66  l = runtime·findnull ( str ) ; 
    67  s = gostringsize ( l ) ; 
    68  runtime·memmove ( s.str , str , l ) ; 
    69  return s; 
    70  } 
    71  #line 73 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    72  String 
    73  runtime·gostringn ( byte *str , intgo l ) 
    74  { 
    75  String s; 
    76  #line 78 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    77  s = gostringsize ( l ) ; 
    78  runtime·memmove ( s.str , str , l ) ; 
    79  return s; 
    80  } 
    81  #line 83 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    82  Slice 
    83  runtime·gobytes ( byte *p , intgo n ) 
    84  { 
    85  Slice sl; 
    86  #line 88 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    87  sl.array = runtime·mallocgc ( n , 0 , FlagNoScan|FlagNoZero ) ; 
    88  sl.len = n; 
    89  sl.cap = n; 
    90  runtime·memmove ( sl.array , p , n ) ; 
    91  return sl; 
    92  } 
    93  #line 95 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    94  String 
    95  runtime·gostringnocopy ( byte *str ) 
    96  { 
    97  String s; 
    98  #line 100 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
    99  s.str = str; 
   100  s.len = runtime·findnull ( str ) ; 
   101  return s; 
   102  } 
   103  #line 105 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   104  void 
   105  runtime·cstringToGo ( byte *str , String s ) 
   106  { 
   107  s = runtime·gostringnocopy ( str ) ; 
   108  FLUSH ( &s ) ; 
   109  } 
   110  #line 112 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   111  String 
   112  runtime·gostringw ( uint16 *str ) 
   113  { 
   114  intgo n1 , n2 , i; 
   115  byte buf[8]; 
   116  String s; 
   117  #line 119 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   118  n1 = 0; 
   119  for ( i=0; str[i]; i++ ) 
   120  n1 += runtime·runetochar ( buf , str[i] ) ; 
   121  s = gostringsize ( n1+4 ) ; 
   122  n2 = 0; 
   123  for ( i=0; str[i]; i++ ) { 
   124  #line 126 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   125  if ( n2 >= n1 ) 
   126  break; 
   127  n2 += runtime·runetochar ( s.str+n2 , str[i] ) ; 
   128  } 
   129  s.len = n2; 
   130  s.str[s.len] = 0; 
   131  return s; 
   132  } 
   133  #line 135 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   134  String 
   135  runtime·catstring ( String s1 , String s2 ) 
   136  { 
   137  String s3; 
   138  #line 140 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   139  if ( s1.len == 0 ) 
   140  return s2; 
   141  if ( s2.len == 0 ) 
   142  return s1; 
   143  #line 145 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   144  s3 = gostringsize ( s1.len + s2.len ) ; 
   145  runtime·memmove ( s3.str , s1.str , s1.len ) ; 
   146  runtime·memmove ( s3.str+s1.len , s2.str , s2.len ) ; 
   147  return s3; 
   148  } 
   149  #line 151 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   150  static String 
   151  concatstring ( intgo n , String *s ) 
   152  { 
   153  intgo i , l , count; 
   154  String out; 
   155  #line 157 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   156  l = 0; 
   157  count = 0; 
   158  for ( i=0; i<n; i++ ) { 
   159  if ( l + s[i].len < l ) 
   160  runtime·throw ( "string concatenation too long" ) ; 
   161  l += s[i].len; 
   162  if ( s[i].len > 0 ) { 
   163  count++; 
   164  out = s[i]; 
   165  } 
   166  } 
   167  if ( count == 0 ) 
   168  return runtime·emptystring; 
   169  if ( count == 1 ) 
   170  return out; 
   171  #line 173 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   172  out = gostringsize ( l ) ; 
   173  l = 0; 
   174  for ( i=0; i<n; i++ ) { 
   175  runtime·memmove ( out.str+l , s[i].str , s[i].len ) ; 
   176  l += s[i].len; 
   177  } 
   178  return out; 
   179  } 
   180  #line 185 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   181  #pragma textflag NOSPLIT 
   182  void 
   183  runtime·concatstring ( intgo n , String s1 , ... ) 
   184  { 
   185  ( &s1 ) [n] = concatstring ( n , &s1 ) ; 
   186  } 
   187  void
   188  runtime·eqstring(String s1, String s2, bool v)
   189  {
   190  #line 192 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   191  
   192  	if(s1.len != s2.len) {
   193  		v = false;
   194  		return;
   195  	}
   196  	if(s1.str == s2.str) {
   197  		v = true;
   198  		return;
   199  	}
   200  	v = runtime·memeq(s1.str, s2.str, s1.len);
   201  	FLUSH(&v);
   202  }
   203  
   204  #line 204 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   205  int32 
   206  runtime·strcmp ( byte *s1 , byte *s2 ) 
   207  { 
   208  uintptr i; 
   209  byte c1 , c2; 
   210  #line 210 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   211  for ( i=0;; i++ ) { 
   212  c1 = s1[i]; 
   213  c2 = s2[i]; 
   214  if ( c1 < c2 ) 
   215  return -1; 
   216  if ( c1 > c2 ) 
   217  return +1; 
   218  if ( c1 == 0 ) 
   219  return 0; 
   220  } 
   221  } 
   222  #line 222 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   223  byte* 
   224  runtime·strstr ( byte *s1 , byte *s2 ) 
   225  { 
   226  byte *sp1 , *sp2; 
   227  #line 227 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   228  if ( *s2 == 0 ) 
   229  return s1; 
   230  for ( ; *s1; s1++ ) { 
   231  if ( *s1 != *s2 ) 
   232  continue; 
   233  sp1 = s1; 
   234  sp2 = s2; 
   235  for ( ;; ) { 
   236  if ( *sp2 == 0 ) 
   237  return s1; 
   238  if ( *sp1++ != *sp2++ ) 
   239  break; 
   240  } 
   241  } 
   242  return nil; 
   243  } 
   244  void
   245  runtime·intstring(int64 v, String s)
   246  {
   247  #line 244 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   248  
   249  	s = gostringsize(8);
   250  	s.len = runtime·runetochar(s.str, v);
   251  	s.str[s.len] = 0;
   252  	FLUSH(&s);
   253  }
   254  void
   255  runtime·slicebytetostring(Slice b, String s)
   256  {
   257  #line 250 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   258  
   259  	void *pc;
   260  
   261  	if(raceenabled) {
   262  		pc = runtime·getcallerpc(&b);
   263  		runtime·racereadrangepc(b.array, b.len, pc, runtime·slicebytetostring);
   264  	}
   265  	s = gostringsize(b.len);
   266  	runtime·memmove(s.str, b.array, s.len);
   267  	FLUSH(&s);
   268  }
   269  void
   270  runtime·stringtoslicebyte(String s, Slice b)
   271  {
   272  #line 261 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   273  
   274  	b.array = runtime·mallocgc(s.len, 0, FlagNoScan|FlagNoZero);
   275  	b.len = s.len;
   276  	b.cap = s.len;
   277  	runtime·memmove(b.array, s.str, s.len);
   278  	FLUSH(&b);
   279  }
   280  void
   281  runtime·slicerunetostring(Slice b, String s)
   282  {
   283  #line 268 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   284  
   285  	intgo siz1, siz2, i;
   286  	int32 *a;
   287  	byte dum[8];
   288  	void *pc;
   289  
   290  	if(raceenabled) {
   291  		pc = runtime·getcallerpc(&b);
   292  		runtime·racereadrangepc(b.array, b.len*sizeof(*a), pc, runtime·slicerunetostring);
   293  	}
   294  	a = (int32*)b.array;
   295  	siz1 = 0;
   296  	for(i=0; i<b.len; i++) {
   297  		siz1 += runtime·runetochar(dum, a[i]);
   298  	}
   299  
   300  	s = gostringsize(siz1+4);
   301  	siz2 = 0;
   302  	for(i=0; i<b.len; i++) {
   303  		// check for race
   304  		if(siz2 >= siz1)
   305  			break;
   306  		siz2 += runtime·runetochar(s.str+siz2, a[i]);
   307  	}
   308  	s.len = siz2;
   309  	s.str[s.len] = 0;
   310  	FLUSH(&s);
   311  }
   312  void
   313  runtime·stringtoslicerune(String s, Slice b)
   314  {
   315  #line 296 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   316  
   317  	intgo n;
   318  	int32 dum, *r;
   319  	uint8 *p, *ep;
   320  
   321  	// two passes.
   322  	// unlike slicerunetostring, no race because strings are immutable.
   323  	p = s.str;
   324  	ep = s.str+s.len;
   325  	n = 0;
   326  	while(p < ep) {
   327  		p += runtime·charntorune(&dum, p, ep-p);
   328  		n++;
   329  	}
   330  
   331  	b.array = runtime·mallocgc(n*sizeof(r[0]), 0, FlagNoScan|FlagNoZero);
   332  	b.len = n;
   333  	b.cap = n;
   334  	p = s.str;
   335  	r = (int32*)b.array;
   336  	while(p < ep)
   337  		p += runtime·charntorune(r++, p, ep-p);
   338  	FLUSH(&b);
   339  }
   340  
   341  #line 320 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   342  enum 
   343  { 
   344  Runeself = 0x80 , 
   345  } ; 
   346  void
   347  runtime·stringiter(String s, intgo k, intgo retk)
   348  {
   349  #line 325 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   350  
   351  	int32 l;
   352  
   353  	if(k >= s.len) {
   354  		// retk=0 is end of iteration
   355  		retk = 0;
   356  		goto out;
   357  	}
   358  
   359  	l = s.str[k];
   360  	if(l < Runeself) {
   361  		retk = k+1;
   362  		goto out;
   363  	}
   364  
   365  	// multi-char rune
   366  	retk = k + runtime·charntorune(&l, s.str+k, s.len-k);
   367  
   368  out:
   369  	FLUSH(&retk);
   370  }
   371  void
   372  runtime·stringiter2(String s, intgo k, intgo retk, int32 retv)
   373  {
   374  #line 346 "/tmp/makerelease886106415/go/src/pkg/runtime/string.goc"
   375  
   376  	if(k >= s.len) {
   377  		// retk=0 is end of iteration
   378  		retk = 0;
   379  		retv = 0;
   380  		goto out;
   381  	}
   382  
   383  	retv = s.str[k];
   384  	if(retv < Runeself) {
   385  		retk = k+1;
   386  		goto out;
   387  	}
   388  
   389  	// multi-char rune
   390  	retk = k + runtime·charntorune(&retv, s.str+k, s.len-k);
   391  
   392  out:
   393  	FLUSH(&retk);
   394  	FLUSH(&retv);
   395  }