Skip to content

Commit 7b5a604

Browse files
committed
Whoops, checkin consistent versions of *all* files to stop polluting
a bunch of names
1 parent 497b19a commit 7b5a604

File tree

5 files changed

+158
-79
lines changed

5 files changed

+158
-79
lines changed

Include/Python-ast.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ typedef struct _keyword *keyword_ty;
3434

3535
typedef struct _alias *alias_ty;
3636

37+
3738
struct _mod {
3839
enum { Module_kind=1, Interactive_kind=2, Expression_kind=3,
3940
Suite_kind=4 } kind;
@@ -326,6 +327,7 @@ struct _alias {
326327
identifier asname;
327328
};
328329

330+
329331
mod_ty Module(asdl_seq * body);
330332
mod_ty Interactive(asdl_seq * body);
331333
mod_ty Expression(expr_ty body);
@@ -388,6 +390,7 @@ arguments_ty arguments(asdl_seq * args, identifier vararg, identifier kwarg,
388390
asdl_seq * defaults);
389391
keyword_ty keyword(identifier arg, expr_ty value);
390392
alias_ty alias(identifier name, identifier asname);
393+
391394
void free_mod(mod_ty);
392395
void free_stmt(stmt_ty);
393396
void free_expr(expr_ty);
@@ -402,3 +405,4 @@ void free_excepthandler(excepthandler_ty);
402405
void free_arguments(arguments_ty);
403406
void free_keyword(keyword_ty);
404407
void free_alias(alias_ty);
408+

Include/asdl.h

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -44,11 +44,4 @@ void asdl_seq_free(asdl_seq *);
4444
#endif
4545
#define asdl_seq_LEN(S) ((S) == NULL ? 0 : (S)->size)
4646

47-
/* Routines to marshal the basic types. */
48-
int marshal_write_int(PyObject **, int *, int);
49-
int marshal_write_bool(PyObject **, int *, bool);
50-
int marshal_write_identifier(PyObject **, int *, identifier);
51-
int marshal_write_string(PyObject **, int *, string);
52-
int marshal_write_object(PyObject **, int *, object);
53-
5447
#endif /* !Py_ASDL_H */

Parser/asdl_c.py

Lines changed: 80 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -367,7 +367,12 @@ def has_sequence(types, doing_specialization):
367367

368368

369369
class StaticVisitor(PickleVisitor):
370-
'''Very simple, always emit this static code'''
370+
CODE = '''Very simple, always emit this static code. Overide CODE'''
371+
372+
def visit(self, object):
373+
self.emit(self.CODE, 0, reflow=False)
374+
375+
class FreeUtilVisitor(StaticVisitor):
371376

372377
CODE = '''static void
373378
free_seq_exprs(asdl_seq *seq)
@@ -390,10 +395,6 @@ class StaticVisitor(PickleVisitor):
390395
}
391396
'''
392397

393-
def visit(self, object):
394-
self.emit(self.CODE, 0, reflow=False)
395-
396-
397398
class FreeVisitor(PickleVisitor):
398399

399400
def func_begin(self, name, has_seq):
@@ -483,6 +484,77 @@ def free(self, field, value, depth):
483484
self.emit("free_%s((%s)%s);" % (field.type, ctype, value), depth)
484485

485486

487+
class MarshalUtilVisitor(StaticVisitor):
488+
489+
CODE = '''
490+
#define CHECKSIZE(BUF, OFF, MIN) { \\
491+
int need = *(OFF) + MIN; \\
492+
if (need >= PyString_GET_SIZE(*(BUF))) { \\
493+
int newsize = PyString_GET_SIZE(*(BUF)) * 2; \\
494+
if (newsize < need) \\
495+
newsize = need; \\
496+
if (_PyString_Resize((BUF), newsize) < 0) \\
497+
return 0; \\
498+
} \\
499+
}
500+
501+
static int
502+
marshal_write_int(PyObject **buf, int *offset, int x)
503+
{
504+
char *s;
505+
506+
CHECKSIZE(buf, offset, 4)
507+
s = PyString_AS_STRING(*buf) + (*offset);
508+
s[0] = (x & 0xff);
509+
s[1] = (x >> 8) & 0xff;
510+
s[2] = (x >> 16) & 0xff;
511+
s[3] = (x >> 24) & 0xff;
512+
*offset += 4;
513+
return 1;
514+
}
515+
516+
static int
517+
marshal_write_bool(PyObject **buf, int *offset, bool b)
518+
{
519+
if (b)
520+
marshal_write_int(buf, offset, 1);
521+
else
522+
marshal_write_int(buf, offset, 0);
523+
return 1;
524+
}
525+
526+
static int
527+
marshal_write_identifier(PyObject **buf, int *offset, identifier id)
528+
{
529+
int l = PyString_GET_SIZE(id);
530+
marshal_write_int(buf, offset, l);
531+
CHECKSIZE(buf, offset, l);
532+
memcpy(PyString_AS_STRING(*buf) + *offset,
533+
PyString_AS_STRING(id), l);
534+
*offset += l;
535+
return 1;
536+
}
537+
538+
static int
539+
marshal_write_string(PyObject **buf, int *offset, string s)
540+
{
541+
int len = PyString_GET_SIZE(s);
542+
marshal_write_int(buf, offset, len);
543+
CHECKSIZE(buf, offset, len);
544+
memcpy(PyString_AS_STRING(*buf) + *offset,
545+
PyString_AS_STRING(s), len);
546+
*offset += len;
547+
return 1;
548+
}
549+
550+
static int
551+
marshal_write_object(PyObject **buf, int *offset, object s)
552+
{
553+
/* XXX */
554+
return 0;
555+
}
556+
'''
557+
486558
class MarshalFunctionVisitor(PickleVisitor):
487559

488560
def func_begin(self, name, has_seq):
@@ -563,6 +635,7 @@ def __init__(self, *visitors):
563635
def visit(self, object):
564636
for v in self.visitors:
565637
v.visit(object)
638+
v.emit("", 0)
566639

567640
def main(srcfile):
568641
auto_gen_msg = '/* File automatically generated by %s */\n' % sys.argv[0]
@@ -595,8 +668,9 @@ def main(srcfile):
595668
print >> f
596669
v = ChainOfVisitors(MarshalPrototypeVisitor(f),
597670
FunctionVisitor(f),
598-
StaticVisitor(f),
671+
FreeUtilVisitor(f),
599672
FreeVisitor(f),
673+
MarshalUtilVisitor(f),
600674
MarshalFunctionVisitor(f),
601675
)
602676
v.visit(mod)

Python/Python-ast.c

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ static int marshal_write_excepthandler(PyObject **, int *, excepthandler_ty);
1717
static int marshal_write_arguments(PyObject **, int *, arguments_ty);
1818
static int marshal_write_keyword(PyObject **, int *, keyword_ty);
1919
static int marshal_write_alias(PyObject **, int *, alias_ty);
20+
2021
mod_ty
2122
Module(asdl_seq * body)
2223
{
@@ -1087,6 +1088,7 @@ alias(identifier name, identifier asname)
10871088
return p;
10881089
}
10891090

1091+
10901092
static void
10911093
free_seq_exprs(asdl_seq *seq)
10921094
{
@@ -1107,6 +1109,7 @@ free_seq_stmts(asdl_seq *seq)
11071109
asdl_seq_free(seq);
11081110
}
11091111

1112+
11101113
void
11111114
free_mod(mod_ty o)
11121115
{
@@ -1533,6 +1536,76 @@ free_alias(alias_ty o)
15331536
free(o);
15341537
}
15351538

1539+
1540+
1541+
#define CHECKSIZE(BUF, OFF, MIN) { \
1542+
int need = *(OFF) + MIN; \
1543+
if (need >= PyString_GET_SIZE(*(BUF))) { \
1544+
int newsize = PyString_GET_SIZE(*(BUF)) * 2; \
1545+
if (newsize < need) \
1546+
newsize = need; \
1547+
if (_PyString_Resize((BUF), newsize) < 0) \
1548+
return 0; \
1549+
} \
1550+
}
1551+
1552+
static int
1553+
marshal_write_int(PyObject **buf, int *offset, int x)
1554+
{
1555+
char *s;
1556+
1557+
CHECKSIZE(buf, offset, 4)
1558+
s = PyString_AS_STRING(*buf) + (*offset);
1559+
s[0] = (x & 0xff);
1560+
s[1] = (x >> 8) & 0xff;
1561+
s[2] = (x >> 16) & 0xff;
1562+
s[3] = (x >> 24) & 0xff;
1563+
*offset += 4;
1564+
return 1;
1565+
}
1566+
1567+
static int
1568+
marshal_write_bool(PyObject **buf, int *offset, bool b)
1569+
{
1570+
if (b)
1571+
marshal_write_int(buf, offset, 1);
1572+
else
1573+
marshal_write_int(buf, offset, 0);
1574+
return 1;
1575+
}
1576+
1577+
static int
1578+
marshal_write_identifier(PyObject **buf, int *offset, identifier id)
1579+
{
1580+
int l = PyString_GET_SIZE(id);
1581+
marshal_write_int(buf, offset, l);
1582+
CHECKSIZE(buf, offset, l);
1583+
memcpy(PyString_AS_STRING(*buf) + *offset,
1584+
PyString_AS_STRING(id), l);
1585+
*offset += l;
1586+
return 1;
1587+
}
1588+
1589+
static int
1590+
marshal_write_string(PyObject **buf, int *offset, string s)
1591+
{
1592+
int len = PyString_GET_SIZE(s);
1593+
marshal_write_int(buf, offset, len);
1594+
CHECKSIZE(buf, offset, len);
1595+
memcpy(PyString_AS_STRING(*buf) + *offset,
1596+
PyString_AS_STRING(s), len);
1597+
*offset += len;
1598+
return 1;
1599+
}
1600+
1601+
static int
1602+
marshal_write_object(PyObject **buf, int *offset, object s)
1603+
{
1604+
/* XXX */
1605+
return 0;
1606+
}
1607+
1608+
15361609
static int
15371610
marshal_write_mod(PyObject **buf, int *off, mod_ty o)
15381611
{
@@ -2286,3 +2359,4 @@ marshal_write_alias(PyObject **buf, int *off, alias_ty o)
22862359
return 1;
22872360
}
22882361

2362+

Python/asdl.c

Lines changed: 0 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -24,69 +24,3 @@ asdl_seq_free(asdl_seq *seq)
2424
PyObject_Free(seq);
2525
}
2626

27-
#define CHECKSIZE(BUF, OFF, MIN) { \
28-
int need = *(OFF) + MIN; \
29-
if (need >= PyString_GET_SIZE(*(BUF))) { \
30-
int newsize = PyString_GET_SIZE(*(BUF)) * 2; \
31-
if (newsize < need) \
32-
newsize = need; \
33-
if (_PyString_Resize((BUF), newsize) < 0) \
34-
return 0; \
35-
} \
36-
}
37-
38-
int
39-
marshal_write_int(PyObject **buf, int *offset, int x)
40-
{
41-
char *s;
42-
43-
CHECKSIZE(buf, offset, 4)
44-
s = PyString_AS_STRING(*buf) + (*offset);
45-
s[0] = (x & 0xff);
46-
s[1] = (x >> 8) & 0xff;
47-
s[2] = (x >> 16) & 0xff;
48-
s[3] = (x >> 24) & 0xff;
49-
*offset += 4;
50-
return 1;
51-
}
52-
53-
int
54-
marshal_write_bool(PyObject **buf, int *offset, bool b)
55-
{
56-
if (b)
57-
marshal_write_int(buf, offset, 1);
58-
else
59-
marshal_write_int(buf, offset, 0);
60-
return 1;
61-
}
62-
63-
int
64-
marshal_write_identifier(PyObject **buf, int *offset, identifier id)
65-
{
66-
int l = PyString_GET_SIZE(id);
67-
marshal_write_int(buf, offset, l);
68-
CHECKSIZE(buf, offset, l);
69-
memcpy(PyString_AS_STRING(*buf) + *offset,
70-
PyString_AS_STRING(id), l);
71-
*offset += l;
72-
return 1;
73-
}
74-
75-
int
76-
marshal_write_string(PyObject **buf, int *offset, string s)
77-
{
78-
int len = PyString_GET_SIZE(s);
79-
marshal_write_int(buf, offset, len);
80-
CHECKSIZE(buf, offset, len);
81-
memcpy(PyString_AS_STRING(*buf) + *offset,
82-
PyString_AS_STRING(s), len);
83-
*offset += len;
84-
return 1;
85-
}
86-
87-
int
88-
marshal_write_object(PyObject **buf, int *offset, object s)
89-
{
90-
/* XXX */
91-
return 0;
92-
}

0 commit comments

Comments
 (0)