// slicearray(old *any, nel uint64, lb uint64, hb uint64, width uint64) (ary []any); void runtime·slicearray(byte* old, uint64 nel, uint64 lb, uint64 hb, uint64 width, Slice ret) { if(nel > 0 && old == nil) { // crash if old == nil. // could give a better message // but this is consistent with all the in-line checks // that the compiler inserts for other uses. *old = 0; } if(hb > nel || lb > hb) { if(debug) { runtime·prints("runtime.slicearray: old="); runtime·printpointer(old); runtime·prints("; nel="); runtime·printint(nel); runtime·prints("; lb="); runtime·printint(lb); runtime·prints("; hb="); runtime·printint(hb); runtime·prints("; width="); runtime·printint(width); runtime·prints("\n"); } runtime·panicslice(); } // new array is inside old array ret.len = hb-lb; ret.cap = nel-lb; ret.array = old + lb*width; FLUSH(&ret); if(debug) { runtime·prints("runtime.slicearray: old="); runtime·printpointer(old); runtime·prints("; nel="); runtime·printint(nel); runtime·prints("; lb="); runtime·printint(lb); runtime·prints("; hb="); runtime·printint(hb); runtime·prints("; width="); runtime·printint(width); runtime·prints("; ret="); runtime·printslice(ret); runtime·prints("\n"); } }
void runtime·slicestring1(String si, int32 lindex, String so) { #line 3569 "C:\Go\src\pkg\runtime\string.goc" int32 l; if(lindex < 0 || lindex > si.len) { runtime·panicslice(); } l = si.len-lindex; so.str = si.str + lindex; so.len = l; FLUSH(&so); }
// sliceslice(old []any, lb uint64, hb uint64, width uint64) (ary []any); void runtime·sliceslice(Slice old, uint64 lb, uint64 hb, uint64 width, Slice ret) { if(hb > old.cap || lb > hb) { if(debug) { runtime·prints("runtime.sliceslice: old="); runtime·printslice(old); runtime·prints("; lb="); runtime·printint(lb); runtime·prints("; hb="); runtime·printint(hb); runtime·prints("; width="); runtime·printint(width); runtime·prints("\n"); runtime·prints("oldarray: nel="); runtime·printint(old.len); runtime·prints("; cap="); runtime·printint(old.cap); runtime·prints("\n"); } runtime·panicslice(); } // new array is inside old array ret.len = hb - lb; ret.cap = old.cap - lb; ret.array = old.array + lb*width; FLUSH(&ret); if(debug) { runtime·prints("runtime.sliceslice: old="); runtime·printslice(old); runtime·prints("; lb="); runtime·printint(lb); runtime·prints("; hb="); runtime·printint(hb); runtime·prints("; width="); runtime·printint(width); runtime·prints("; ret="); runtime·printslice(ret); runtime·prints("\n"); } }