Verified Commit 01b9f463 authored by Camil Staps's avatar Camil Staps 🚀

Callgraph profiling support for graph_copy: ignore extra field in thunks when...

Callgraph profiling support for graph_copy: ignore extra field in thunks when serializing; add extra field when deserializing
parent d139bac2
all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o
copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
gcc -O -S -fomit-frame-pointer copy_graph_to_string.c -o copy_graph_to_string.a gcc -O -S -fomit-frame-pointer copy_graph_to_string.c -o copy_graph_to_string.a
sed -f s.sed copy_graph_to_string.a > copy_graph_to_string.s sed -f s.sed copy_graph_to_string.a > copy_graph_to_string.s
as copy_graph_to_string.s -o copy_graph_to_string.o as copy_graph_to_string.s -o copy_graph_to_string.o
...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface.s ...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface.s
as copy_graph_to_string_interface.s -o copy_graph_to_string_interface.o as copy_graph_to_string_interface.s -o copy_graph_to_string_interface.o
cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o
copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph_implementation.c
gcc -O -S -fomit-frame-pointer copy_string_to_graph.c -o copy_string_to_graph.a gcc -O -S -fomit-frame-pointer copy_string_to_graph.c -o copy_string_to_graph.a
sed -f s.sed copy_string_to_graph.a > copy_string_to_graph.s sed -f s.sed copy_string_to_graph.a > copy_string_to_graph.s
as copy_string_to_graph.s -o copy_string_to_graph.o as copy_string_to_graph.s -o copy_string_to_graph.o
......
all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o
copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
gcc -O -S -fomit-frame-pointer -DLINUX32 copy_graph_to_string.c -o copy_graph_to_string.a gcc -O -S -fomit-frame-pointer -DLINUX32 copy_graph_to_string.c -o copy_graph_to_string.a
sed -f s.sed copy_graph_to_string.a > copy_graph_to_string.s sed -f s.sed copy_graph_to_string.a > copy_graph_to_string.s
as copy_graph_to_string.s -o copy_graph_to_string.o as copy_graph_to_string.s -o copy_graph_to_string.o
...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface_linux.s ...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface_linux.s
as copy_graph_to_string_interface_linux.s -o copy_graph_to_string_interface.o as copy_graph_to_string_interface_linux.s -o copy_graph_to_string_interface.o
cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o
copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph_implementation.c
gcc -O -S -fomit-frame-pointer -DLINUX32 copy_string_to_graph.c -o copy_string_to_graph.a gcc -O -S -fomit-frame-pointer -DLINUX32 copy_string_to_graph.c -o copy_string_to_graph.a
sed -f s.sed copy_string_to_graph.a > copy_string_to_graph.s sed -f s.sed copy_string_to_graph.a > copy_string_to_graph.s
as copy_string_to_graph.s -o copy_string_to_graph.o as copy_string_to_graph.s -o copy_string_to_graph.o
......
all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o
copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
gcc -S -O -DLINUX64 copy_graph_to_string.c -o copy_graph_to_string.a gcc -S -O -DLINUX64 copy_graph_to_string.c -o copy_graph_to_string.a
sed -f s2.sed copy_graph_to_string.a > copy_graph_to_string.s sed -f s2.sed copy_graph_to_string.a > copy_graph_to_string.s
as copy_graph_to_string.s -o copy_graph_to_string.o as copy_graph_to_string.s -o copy_graph_to_string.o
...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface_linux64.s ...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface_linux64.s
as copy_graph_to_string_interface_linux64.s -o copy_graph_to_string_interface.o as copy_graph_to_string_interface_linux64.s -o copy_graph_to_string_interface.o
cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o
copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph_implementation.c
gcc -S -O -DLINUX64 copy_string_to_graph.c -o copy_string_to_graph.a gcc -S -O -DLINUX64 copy_string_to_graph.c -o copy_string_to_graph.a
sed -f s2.sed copy_string_to_graph.a > copy_string_to_graph.s sed -f s2.sed copy_string_to_graph.a > copy_string_to_graph.s
as copy_string_to_graph.s -o copy_string_to_graph.o as copy_string_to_graph.s -o copy_string_to_graph.o
......
all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o
copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
gcc -S -O -DLINUX64 -DTHREAD copy_graph_to_string.c -o copy_graph_to_string.a gcc -S -O -DLINUX64 -DTHREAD copy_graph_to_string.c -o copy_graph_to_string.a
sed -f s2.sed copy_graph_to_string.a > copy_graph_to_string.s sed -f s2.sed copy_graph_to_string.a > copy_graph_to_string.s
as copy_graph_to_string.s -o copy_graph_to_string.o as copy_graph_to_string.s -o copy_graph_to_string.o
...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface_linux64.s ...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface_linux64.s
as copy_graph_to_string_interface_linux64.s --defsym THREAD=1 -o copy_graph_to_string_interface.o as copy_graph_to_string_interface_linux64.s --defsym THREAD=1 -o copy_graph_to_string_interface.o
cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o
copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph_implementation.c
gcc -S -O -DLINUX64 -DTHREAD copy_string_to_graph.c -o copy_string_to_graph.a gcc -S -O -DLINUX64 -DTHREAD copy_string_to_graph.c -o copy_string_to_graph.a
sed -f s2.sed copy_string_to_graph.a > copy_string_to_graph.s sed -f s2.sed copy_string_to_graph.a > copy_string_to_graph.s
as copy_string_to_graph.s -o copy_string_to_graph.o as copy_string_to_graph.s -o copy_string_to_graph.o
......
all: copy_graph_to_string.o copy_string_to_graph.o copy_graph_to_string_interface.o copy_string_to_graph_interface.o all: copy_graph_to_string.o copy_string_to_graph.o copy_graph_to_string_interface.o copy_string_to_graph_interface.o
copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
gcc -fomit-frame-pointer -O -c -DLINUX32 copy_graph_to_string.c gcc -fomit-frame-pointer -O -c -DLINUX32 copy_graph_to_string.c
cp copy_graph_to_string.o "Clean System Files"/copy_graph_to_string.o cp copy_graph_to_string.o "Clean System Files"/copy_graph_to_string.o
...@@ -9,7 +9,7 @@ copy_string_to_graph.o: copy_string_to_graph.c ...@@ -9,7 +9,7 @@ copy_string_to_graph.o: copy_string_to_graph.c
gcc -fomit-frame-pointer -O -c -DLINUX32 copy_string_to_graph.c gcc -fomit-frame-pointer -O -c -DLINUX32 copy_string_to_graph.c
cp copy_string_to_graph.o "Clean System Files"/copy_string_to_graph.o cp copy_string_to_graph.o "Clean System Files"/copy_string_to_graph.o
copy_graph_to_string_interface.o: copy_graph_to_string_interface_linux_arm.s copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph_implementation.c
as copy_graph_to_string_interface_linux_arm.s -o copy_graph_to_string_interface.o as copy_graph_to_string_interface_linux_arm.s -o copy_graph_to_string_interface.o
cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o
......
all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_string_to_graph.o copy_string_to_graph_interface.o
copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
gcc -S -O -DMACH_O64 copy_graph_to_string.c -o copy_graph_to_string.a gcc -S -O -DMACH_O64 copy_graph_to_string.c -o copy_graph_to_string.a
sed -f s2.sed copy_graph_to_string.a > copy_graph_to_string.s sed -f s2.sed copy_graph_to_string.a > copy_graph_to_string.s
as copy_graph_to_string.s -o copy_graph_to_string.o as copy_graph_to_string.s -o copy_graph_to_string.o
...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface_macho.s ...@@ -11,7 +11,7 @@ copy_graph_to_string_interface.o: copy_graph_to_string_interface_macho.s
as copy_graph_to_string_interface_macho.s -o copy_graph_to_string_interface.o as copy_graph_to_string_interface_macho.s -o copy_graph_to_string_interface.o
cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o cp copy_graph_to_string_interface.o "Clean System Files"/copy_graph_to_string_interface.o
copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph_implementation.c
gcc -S -O -DMACH_O64 copy_string_to_graph.c -o copy_string_to_graph.a gcc -S -O -DMACH_O64 copy_string_to_graph.c -o copy_string_to_graph.a
sed -f s2.sed copy_string_to_graph.a > copy_string_to_graph.s sed -f s2.sed copy_string_to_graph.a > copy_string_to_graph.s
as copy_string_to_graph.s -o copy_string_to_graph.o as copy_string_to_graph.s -o copy_string_to_graph.o
......
all: copy_graph_to_string.obj copy_graph_to_string_interface.obj copy_string_to_graph.obj copy_string_to_graph_interface.obj all: copy_graph_to_string.obj copy_graph_to_string_interface.obj copy_string_to_graph.obj copy_string_to_graph_interface.obj
copy_graph_to_string.obj: copy_graph_to_string.c copy_graph_to_string.obj: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
cl /nologo /c /O2 /Gy copy_graph_to_string.c cl /nologo /c /O2 /Gy copy_graph_to_string.c
copy copy_graph_to_string.obj "Clean System Files"\copy_graph_to_string.obj copy copy_graph_to_string.obj "Clean System Files"\copy_graph_to_string.obj
...@@ -9,7 +9,7 @@ copy_graph_to_string_interface.obj: copy_graph_to_string_interface.asm ...@@ -9,7 +9,7 @@ copy_graph_to_string_interface.obj: copy_graph_to_string_interface.asm
ml64 /nologo /c /DTHREAD=0 copy_graph_to_string_interface.asm ml64 /nologo /c /DTHREAD=0 copy_graph_to_string_interface.asm
copy copy_graph_to_string_interface.obj "Clean System Files"\copy_graph_to_string_interface.obj copy copy_graph_to_string_interface.obj "Clean System Files"\copy_graph_to_string_interface.obj
copy_string_to_graph.obj: copy_string_to_graph.c copy_string_to_graph.obj: copy_string_to_graph.c copy_string_to_graph_implementation.c
cl /nologo /c /O2 /Gy copy_string_to_graph.c cl /nologo /c /O2 /Gy copy_string_to_graph.c
copy copy_string_to_graph.obj "Clean System Files"\copy_string_to_graph.obj copy copy_string_to_graph.obj "Clean System Files"\copy_string_to_graph.obj
......
all: copy_graph_to_string_thread.obj copy_graph_to_string_interface_thread.obj copy_string_to_graph_thread.obj copy_string_to_graph_interface.obj all: copy_graph_to_string_thread.obj copy_graph_to_string_interface_thread.obj copy_string_to_graph_thread.obj copy_string_to_graph_interface.obj
copy_graph_to_string_thread.obj: copy_graph_to_string.c copy_graph_to_string.obj: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
cl /nologo /c /O2 /Gy /DTHREAD /Focopy_graph_to_string_thread.obj copy_graph_to_string.c cl /nologo /c /O2 /Gy /DTHREAD /Focopy_graph_to_string_thread.obj copy_graph_to_string.c
copy copy_graph_to_string_thread.obj "Clean System Files"\copy_graph_to_string.obj copy copy_graph_to_string_thread.obj "Clean System Files"\copy_graph_to_string.obj
...@@ -9,7 +9,7 @@ copy_graph_to_string_interface_thread.obj: copy_graph_to_string_interface.asm co ...@@ -9,7 +9,7 @@ copy_graph_to_string_interface_thread.obj: copy_graph_to_string_interface.asm co
ml64 /nologo /c /DTHREAD=1 /Focopy_graph_to_string_interface_thread.obj copy_graph_to_string_interface.asm ml64 /nologo /c /DTHREAD=1 /Focopy_graph_to_string_interface_thread.obj copy_graph_to_string_interface.asm
copy copy_graph_to_string_interface_thread.obj "Clean System Files"\copy_graph_to_string_interface.obj copy copy_graph_to_string_interface_thread.obj "Clean System Files"\copy_graph_to_string_interface.obj
copy_string_to_graph_thread.obj: copy_string_to_graph.c copy_string_to_graph.obj: copy_string_to_graph.c copy_string_to_graph_implementation.c
cl /nologo /c /O2 /Gy /DTHREAD /Focopy_string_to_graph_thread.obj copy_string_to_graph.c cl /nologo /c /O2 /Gy /DTHREAD /Focopy_string_to_graph_thread.obj copy_string_to_graph.c
copy copy_string_to_graph_thread.obj "Clean System Files"\copy_string_to_graph.obj copy copy_string_to_graph_thread.obj "Clean System Files"\copy_string_to_graph.obj
......
all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_graph_to_string_interface_ts.o copy_string_to_graph.o copy_string_to_graph_interface.o copy_string_to_graph_interface_ts.o all: copy_graph_to_string.o copy_graph_to_string_interface.o copy_graph_to_string_interface_ts.o copy_string_to_graph.o copy_string_to_graph_interface.o copy_string_to_graph_interface_ts.o
copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string.o: copy_graph_to_string.c copy_graph_to_string_implementation.c remove_forwarding_pointers_from_graph_implementation.c
gcc -DTHREAD -O -S -fomit-frame-pointer copy_graph_to_string.c -o copy_graph_to_string.a gcc -DTHREAD -O -S -fomit-frame-pointer copy_graph_to_string.c -o copy_graph_to_string.a
sed -f s.sed copy_graph_to_string.a > copy_graph_to_string.s sed -f s.sed copy_graph_to_string.a > copy_graph_to_string.s
as copy_graph_to_string.s -o copy_graph_to_string.o as copy_graph_to_string.s -o copy_graph_to_string.o
...@@ -11,7 +11,7 @@ copy_graph_to_string_interface_ts.o: copy_graph_to_string_interface_ts.s ...@@ -11,7 +11,7 @@ copy_graph_to_string_interface_ts.o: copy_graph_to_string_interface_ts.s
as copy_graph_to_string_interface_ts.s -o copy_graph_to_string_interface_ts.o as copy_graph_to_string_interface_ts.s -o copy_graph_to_string_interface_ts.o
cp copy_graph_to_string_interface_ts.o "Clean System Files"/copy_graph_to_string_interface.o cp copy_graph_to_string_interface_ts.o "Clean System Files"/copy_graph_to_string_interface.o
copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph.o: copy_string_to_graph.c copy_string_to_graph_implementation.c
gcc -DTHREAD -O -S -fomit-frame-pointer copy_string_to_graph.c -o copy_string_to_graph.a gcc -DTHREAD -O -S -fomit-frame-pointer copy_string_to_graph.c -o copy_string_to_graph.a
sed -f s.sed copy_string_to_graph.a > copy_string_to_graph.s sed -f s.sed copy_string_to_graph.a > copy_string_to_graph.s
as copy_string_to_graph.s -o copy_string_to_graph.o as copy_string_to_graph.s -o copy_string_to_graph.o
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
...@@ -34,16 +34,9 @@ get_D_record_a_arity d = code inline { ...@@ -34,16 +34,9 @@ get_D_record_a_arity d = code inline {
load_si16 0 load_si16 0
} }
get_thunk_arity a :== IF_INT_64_OR_32 (get_thunk_arity_64 a) (get_thunk_arity_32 a); get_thunk_arity :: !Int -> Int;
get_thunk_arity a = code inline {
get_thunk_arity_32:: !Int -> Int; get_thunk_arity
get_thunk_arity_32 a = code {
load_i -4
}
get_thunk_arity_64 :: !Int -> Int;
get_thunk_arity_64 a = code {
load_si32 -4
} }
get_thunk_descriptor :: !Int -> Int; get_thunk_descriptor :: !Int -> Int;
......
Int **stack_p;
stack_p = stack_end;
for (;;){
for (;;){
Int forwarding_pointer,desc;
forwarding_pointer=*node_p;
if ((forwarding_pointer & 1)==0)
break;
#ifdef USE_DESC_RELATIVE_TO_ARRAY
desc = (Int)&__ARRAY__ + *((Int*)(forwarding_pointer-1));
#else
desc = *((Int*)(forwarding_pointer-1));
#endif
*node_p=desc;
if (desc & 2){
unsigned Int arity;
arity=((unsigned short *)desc)[-1];
if (arity==0){
if (desc!=(Int)&__ARRAY__+2){
break;
} else {
Int elem_desc;
elem_desc=node_p[2];
if (elem_desc==0){
Int array_size;
array_size=node_p[1];
node_p+=3;
stack_p-=array_size;
while (--array_size>=0)
stack_p[array_size]=(Int*)node_p[array_size];
break;
} else if (elem_desc==(Int)&INT+2 || elem_desc==(Int)&REAL+2 || elem_desc==(Int)&BOOL+2){
break;
} else {
Int n_field_pointers;
n_field_pointers=*(unsigned short *)elem_desc;
if (n_field_pointers!=0){
Int field_size,array_size;
field_size=((unsigned short *)elem_desc)[-1]-(Int)256;
array_size=node_p[1];
node_p+=3;
if (n_field_pointers==field_size){
array_size*=field_size;
stack_p-=array_size;
while (--array_size>=0)
stack_p[array_size]=(Int*)node_p[array_size];
} else {
Int n_array_pointers,i,*pointer_p;
n_array_pointers=n_field_pointers*array_size;
stack_p-=n_array_pointers;
pointer_p=(Int*)stack_p;
for (i=0; i<array_size; ++i){
copy (pointer_p,node_p,n_field_pointers);
pointer_p+=n_field_pointers;
node_p+=field_size;
}
}
}
break;
}
}
} else if (arity==1){
node_p=(Int*)node_p[1];
continue;
} else if (arity==2){
*--stack_p=(Int*)node_p[2];
node_p=(Int*)node_p[1];
continue;
} else if (arity<256){
Int **args,n_words;
args=(Int**)node_p[2];
n_words=arity-1;
stack_p-=n_words;
--n_words;
stack_p[n_words]=args[n_words];
while (--n_words>=0)
stack_p[n_words]=args[n_words];
node_p=(Int*)node_p[1];
continue;
} else {
Int n_pointers;
n_pointers=*(unsigned short*)desc;
if (n_pointers==0)
break;
else {
if (n_pointers>=2){
if (n_pointers==2){
arity-=256;
if (arity==2){
*--stack_p=(Int*)node_p[2];
} else {
Int **args;
args=(Int**)node_p[2];
*--stack_p=args[0];
}
} else {
Int **args,n_words;
args=(Int**)node_p[2];
n_words=n_pointers-1;
stack_p-=n_words;
--n_words;
stack_p[n_words]=args[n_words];
while (--n_words>=0)
stack_p[n_words]=args[n_words];
}
}
node_p=(Int*)node_p[1];
continue;
}
}
} else {
Int arity;
arity=((int*)desc)[-1];
#ifdef PROFILE_GRAPH
if (arity>0)
arity-=257;
#endif
if (arity>1){
if (arity<256){
Int **args,n_words;
args=(Int**)&node_p[2];
n_words=arity-1;
stack_p-=n_words;
--n_words;
stack_p[n_words]=args[n_words];
while (--n_words>=0)
stack_p[n_words]=args[n_words];
node_p=(Int*)node_p[1];
continue;
} else {
Int n_pointers,n_non_pointers;
n_non_pointers=arity>>8;
n_pointers=(arity & 255) - n_non_pointers;
if (n_pointers==0)
break;
else {
if (n_pointers>1){
Int **args;
args=(Int**)&node_p[2];
--n_pointers;
stack_p-=n_pointers;
--n_pointers;
stack_p[n_pointers]=args[n_pointers];
while (--n_pointers>=0)
stack_p[n_pointers]=args[n_pointers];
}
node_p=(Int*)node_p[1];
continue;
}
}
} else if (arity==0){
break;
} else {
node_p=(Int*)node_p[1];
continue;
}
}
}
if (stack_p==stack_end)
return;
node_p=*stack_p++;
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment