pike.git
/
src
/
program.c
version
»
Context lines:
10
20
40
80
file
none
3
pike.git/src/program.c:6601:
* closest previous line number entry. The first * stored entry is absolute. * 2. small number Line number. Stored in the same way as the pc. * * Small number: * If -127 < n < 127: * 1. char The number. * Else if -32768 <= n < 32768: * 1. char -127 (marker). * 2. short The 16-bit signed number stored in big endian order.
+
* Else if n < -0x80000000 or n > 0x7fffffff in Pike 7.9 and later:
+
* 1. char -127 (marker).
+
* 2. short Zero (64-bit marker).
+
* 3. INT_TYPE The 64-bit signed number stored in big endian order.
* Else: * 1. char -128 (marker). * 2. int The 32-bit signed number stored in big endian order. * * Whenever the filename changes, a filename entry followed by a line * number entry is stored. If only the line number changes, a line * number entry is stored. The first stored entry (at pc 0) is the * file and line where the program is defined, if they are known. The * definition line for a top level program is set to 0. */
pike.git/src/program.c:6624:
/* This is a workaround for buggy cc & Tru64 */ unsigned char *addr = (unsigned char *)*q; int ret = *((signed char *)addr); ret=*(signed char *)*q; addr++; switch(ret) { case -127: ret = (((signed char *)addr)[0]<<8) | addr[1]; addr += 2;
-
break;
+
if (ret)
break;
-
+
/* Forward compat with Pike 7.9. */
+
addr += 4; /* Ignore the high 32-bits. */
+
+
/* FALL_THROUGH */
case -128: ret = (((signed char *)addr)[0]<<24) | (addr[1]<<16) | (addr[2]<<8) | addr[3]; addr += 4; break; #ifdef PIKE_DEBUG case 127: Pike_fatal("get_small_number used on filename entry\n"); #endif