1
0
mirror of git://git.gnupg.org/gnupg.git synced 2024-12-22 10:19:57 +01:00

gpgscm: Allocate small integers in the rodata section.

* tests/gpgscm/Makefile.am (gpgscm_SOURCES): Add new file.
* tests/gpgscm/scheme-private.h (struct cell): Move number to the top
of the union so that we can initialize it.
(struct scheme): Remove 'integer_segment'.
* tests/gpgscm/scheme.c (initialize_small_integers): Remove function.
(small_integers): New variable.
(MAX_SMALL_INTEGER): Compute.
(mk_small_integer): Adapt.
(mark): Avoid marking objects already marked.  This allows us to run
the algorithm over objects in the rodata section if they are already
marked.
(scheme_init_custom_alloc): Remove initialization.
(scheme_deinit): Remove deallocation.
* tests/gpgscm/small-integers.h: New file.
--

Allocate small integers from a fixed pool in the rodata section.  This
spares us the initialization, and deduplicates integers across
different processes.  It also makes the integers immutable, increasing
memory safety.

Signed-off-by: Justus Winter <justus@g10code.com>
This commit is contained in:
Justus Winter 2017-03-23 15:21:36 +01:00
parent c9c3fe8832
commit 8640fa880d
No known key found for this signature in database
GPG Key ID: DD1A52F9DA8C9020
4 changed files with 861 additions and 37 deletions

View File

@ -44,7 +44,8 @@ commonpth_libs = ../$(libcommonpth)
gpgscm_CFLAGS = -imacros scheme-config.h \
$(LIBGCRYPT_CFLAGS) $(LIBASSUAN_CFLAGS) $(GPG_ERROR_CFLAGS)
gpgscm_SOURCES = main.c private.h ffi.c ffi.h ffi-private.h \
scheme-config.h opdefines.h scheme.c scheme.h scheme-private.h
scheme-config.h scheme.c scheme.h scheme-private.h \
opdefines.h small-integers.h
gpgscm_LDADD = $(LDADD) $(common_libs) \
$(NETLIBS) $(LIBICONV) $(LIBREADLINE) $(LIBINTL) \
$(LIBGCRYPT_LIBS) $(GPG_ERROR_LIBS)

View File

@ -45,11 +45,11 @@ typedef struct port {
struct cell {
uintptr_t _flag;
union {
num _number;
struct {
char *_svalue;
int _length;
} _string;
num _number;
port *_port;
foreign_func _ff;
struct {
@ -152,11 +152,6 @@ pointer SHARP_HOOK; /* *sharp-hook* */
pointer COMPILE_HOOK; /* *compile-hook* */
#endif
#if USE_SMALL_INTEGERS
/* A fixed allocation of small integers. */
struct cell_segment *integer_segment;
#endif
pointer free_cell; /* pointer to top of free cells */
long fcells; /* # of free cells */
size_t inhibit_gc; /* nesting of gc_disable */

View File

@ -1312,31 +1312,22 @@ INTERFACE pointer mk_character(scheme *sc, int c) {
/* s_save assumes that all opcodes can be expressed as a small
* integer. */
#define MAX_SMALL_INTEGER OP_MAXDEFINED
static const struct cell small_integers[] = {
#define DEFINE_INTEGER(n) { T_NUMBER | T_ATOM | MARK, {{ 1, {n}}}},
#include "small-integers.h"
#undef DEFINE_INTEGER
{0}
};
static int
initialize_small_integers(scheme *sc)
{
int i;
if (_alloc_cellseg(sc, MAX_SMALL_INTEGER, &sc->integer_segment))
return 1;
for (i = 0; i < MAX_SMALL_INTEGER; i++) {
pointer x = &sc->integer_segment->cells[i];
typeflag(x) = T_NUMBER | T_ATOM | MARK;
ivalue_unchecked(x) = i;
set_num_integer(x);
}
return 0;
}
#define MAX_SMALL_INTEGER (sizeof small_integers / sizeof *small_integers - 1)
static INLINE pointer
mk_small_integer(scheme *sc, long n)
{
#define mk_small_integer_allocates 0
(void) sc;
assert(0 <= n && n < MAX_SMALL_INTEGER);
return &sc->integer_segment->cells[n];
return (pointer) &small_integers[n];
}
#else
@ -1644,7 +1635,8 @@ static void mark(pointer a) {
t = (pointer) 0;
p = a;
E2: setmark(p);
E2: if (! is_mark(p))
setmark(p);
if(is_vector(p)) {
int i;
for (i = 0; i < vector_length(p); i++) {
@ -5629,13 +5621,6 @@ int scheme_init_custom_alloc(scheme *sc, func_alloc malloc, func_dealloc free) {
sc->F = &sc->_HASHF;
sc->EOF_OBJ=&sc->_EOF_OBJ;
#if USE_SMALL_INTEGERS
if (initialize_small_integers(sc)) {
sc->no_memory=1;
return 0;
}
#endif
sc->free_cell = &sc->_NIL;
sc->fcells = 0;
sc->inhibit_gc = GC_ENABLED;
@ -5789,10 +5774,6 @@ void scheme_deinit(scheme *sc) {
sc->gc_verbose=0;
gc(sc,sc->NIL,sc->NIL);
#if USE_SMALL_INTEGERS
_dealloc_cellseg(sc, sc->integer_segment);
#endif
for (s = sc->cell_segments; s; s = _dealloc_cellseg(sc, s)) {
/* nop */
}

View File

@ -0,0 +1,847 @@
/* Constant integer objects for TinySCHEME.
*
* Copyright (C) 2017 g10 code GmbH
*
* This file is part of GnuPG.
*
* GnuPG is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
* (at your option) any later version.
*
* GnuPG is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, see <https://www.gnu.org/licenses/>.
*/
/*
* Ohne Worte. Generated using:
*
* $ n=0; while read line ; do \
* echo "DEFINE_INTEGER($n)" ; \
* n="$(expr $n + 1)" ; \
* done <./init.scm >> small-integers.h
*/
DEFINE_INTEGER(0)
DEFINE_INTEGER(1)
DEFINE_INTEGER(2)
DEFINE_INTEGER(3)
DEFINE_INTEGER(4)
DEFINE_INTEGER(5)
DEFINE_INTEGER(6)
DEFINE_INTEGER(7)
DEFINE_INTEGER(8)
DEFINE_INTEGER(9)
DEFINE_INTEGER(10)
DEFINE_INTEGER(11)
DEFINE_INTEGER(12)
DEFINE_INTEGER(13)
DEFINE_INTEGER(14)
DEFINE_INTEGER(15)
DEFINE_INTEGER(16)
DEFINE_INTEGER(17)
DEFINE_INTEGER(18)
DEFINE_INTEGER(19)
DEFINE_INTEGER(20)
DEFINE_INTEGER(21)
DEFINE_INTEGER(22)
DEFINE_INTEGER(23)
DEFINE_INTEGER(24)
DEFINE_INTEGER(25)
DEFINE_INTEGER(26)
DEFINE_INTEGER(27)
DEFINE_INTEGER(28)
DEFINE_INTEGER(29)
DEFINE_INTEGER(30)
DEFINE_INTEGER(31)
DEFINE_INTEGER(32)
DEFINE_INTEGER(33)
DEFINE_INTEGER(34)
DEFINE_INTEGER(35)
DEFINE_INTEGER(36)
DEFINE_INTEGER(37)
DEFINE_INTEGER(38)
DEFINE_INTEGER(39)
DEFINE_INTEGER(40)
DEFINE_INTEGER(41)
DEFINE_INTEGER(42)
DEFINE_INTEGER(43)
DEFINE_INTEGER(44)
DEFINE_INTEGER(45)
DEFINE_INTEGER(46)
DEFINE_INTEGER(47)
DEFINE_INTEGER(48)
DEFINE_INTEGER(49)
DEFINE_INTEGER(50)
DEFINE_INTEGER(51)
DEFINE_INTEGER(52)
DEFINE_INTEGER(53)
DEFINE_INTEGER(54)
DEFINE_INTEGER(55)
DEFINE_INTEGER(56)
DEFINE_INTEGER(57)
DEFINE_INTEGER(58)
DEFINE_INTEGER(59)
DEFINE_INTEGER(60)
DEFINE_INTEGER(61)
DEFINE_INTEGER(62)
DEFINE_INTEGER(63)
DEFINE_INTEGER(64)
DEFINE_INTEGER(65)
DEFINE_INTEGER(66)
DEFINE_INTEGER(67)
DEFINE_INTEGER(68)
DEFINE_INTEGER(69)
DEFINE_INTEGER(70)
DEFINE_INTEGER(71)
DEFINE_INTEGER(72)
DEFINE_INTEGER(73)
DEFINE_INTEGER(74)
DEFINE_INTEGER(75)
DEFINE_INTEGER(76)
DEFINE_INTEGER(77)
DEFINE_INTEGER(78)
DEFINE_INTEGER(79)
DEFINE_INTEGER(80)
DEFINE_INTEGER(81)
DEFINE_INTEGER(82)
DEFINE_INTEGER(83)
DEFINE_INTEGER(84)
DEFINE_INTEGER(85)
DEFINE_INTEGER(86)
DEFINE_INTEGER(87)
DEFINE_INTEGER(88)
DEFINE_INTEGER(89)
DEFINE_INTEGER(90)
DEFINE_INTEGER(91)
DEFINE_INTEGER(92)
DEFINE_INTEGER(93)
DEFINE_INTEGER(94)
DEFINE_INTEGER(95)
DEFINE_INTEGER(96)
DEFINE_INTEGER(97)
DEFINE_INTEGER(98)
DEFINE_INTEGER(99)
DEFINE_INTEGER(100)
DEFINE_INTEGER(101)
DEFINE_INTEGER(102)
DEFINE_INTEGER(103)
DEFINE_INTEGER(104)
DEFINE_INTEGER(105)
DEFINE_INTEGER(106)
DEFINE_INTEGER(107)
DEFINE_INTEGER(108)
DEFINE_INTEGER(109)
DEFINE_INTEGER(110)
DEFINE_INTEGER(111)
DEFINE_INTEGER(112)
DEFINE_INTEGER(113)
DEFINE_INTEGER(114)
DEFINE_INTEGER(115)
DEFINE_INTEGER(116)
DEFINE_INTEGER(117)
DEFINE_INTEGER(118)
DEFINE_INTEGER(119)
DEFINE_INTEGER(120)
DEFINE_INTEGER(121)
DEFINE_INTEGER(122)
DEFINE_INTEGER(123)
DEFINE_INTEGER(124)
DEFINE_INTEGER(125)
DEFINE_INTEGER(126)
DEFINE_INTEGER(127)
DEFINE_INTEGER(128)
DEFINE_INTEGER(129)
DEFINE_INTEGER(130)
DEFINE_INTEGER(131)
DEFINE_INTEGER(132)
DEFINE_INTEGER(133)
DEFINE_INTEGER(134)
DEFINE_INTEGER(135)
DEFINE_INTEGER(136)
DEFINE_INTEGER(137)
DEFINE_INTEGER(138)
DEFINE_INTEGER(139)
DEFINE_INTEGER(140)
DEFINE_INTEGER(141)
DEFINE_INTEGER(142)
DEFINE_INTEGER(143)
DEFINE_INTEGER(144)
DEFINE_INTEGER(145)
DEFINE_INTEGER(146)
DEFINE_INTEGER(147)
DEFINE_INTEGER(148)
DEFINE_INTEGER(149)
DEFINE_INTEGER(150)
DEFINE_INTEGER(151)
DEFINE_INTEGER(152)
DEFINE_INTEGER(153)
DEFINE_INTEGER(154)
DEFINE_INTEGER(155)
DEFINE_INTEGER(156)
DEFINE_INTEGER(157)
DEFINE_INTEGER(158)
DEFINE_INTEGER(159)
DEFINE_INTEGER(160)
DEFINE_INTEGER(161)
DEFINE_INTEGER(162)
DEFINE_INTEGER(163)
DEFINE_INTEGER(164)
DEFINE_INTEGER(165)
DEFINE_INTEGER(166)
DEFINE_INTEGER(167)
DEFINE_INTEGER(168)
DEFINE_INTEGER(169)
DEFINE_INTEGER(170)
DEFINE_INTEGER(171)
DEFINE_INTEGER(172)
DEFINE_INTEGER(173)
DEFINE_INTEGER(174)
DEFINE_INTEGER(175)
DEFINE_INTEGER(176)
DEFINE_INTEGER(177)
DEFINE_INTEGER(178)
DEFINE_INTEGER(179)
DEFINE_INTEGER(180)
DEFINE_INTEGER(181)
DEFINE_INTEGER(182)
DEFINE_INTEGER(183)
DEFINE_INTEGER(184)
DEFINE_INTEGER(185)
DEFINE_INTEGER(186)
DEFINE_INTEGER(187)
DEFINE_INTEGER(188)
DEFINE_INTEGER(189)
DEFINE_INTEGER(190)
DEFINE_INTEGER(191)
DEFINE_INTEGER(192)
DEFINE_INTEGER(193)
DEFINE_INTEGER(194)
DEFINE_INTEGER(195)
DEFINE_INTEGER(196)
DEFINE_INTEGER(197)
DEFINE_INTEGER(198)
DEFINE_INTEGER(199)
DEFINE_INTEGER(200)
DEFINE_INTEGER(201)
DEFINE_INTEGER(202)
DEFINE_INTEGER(203)
DEFINE_INTEGER(204)
DEFINE_INTEGER(205)
DEFINE_INTEGER(206)
DEFINE_INTEGER(207)
DEFINE_INTEGER(208)
DEFINE_INTEGER(209)
DEFINE_INTEGER(210)
DEFINE_INTEGER(211)
DEFINE_INTEGER(212)
DEFINE_INTEGER(213)
DEFINE_INTEGER(214)
DEFINE_INTEGER(215)
DEFINE_INTEGER(216)
DEFINE_INTEGER(217)
DEFINE_INTEGER(218)
DEFINE_INTEGER(219)
DEFINE_INTEGER(220)
DEFINE_INTEGER(221)
DEFINE_INTEGER(222)
DEFINE_INTEGER(223)
DEFINE_INTEGER(224)
DEFINE_INTEGER(225)
DEFINE_INTEGER(226)
DEFINE_INTEGER(227)
DEFINE_INTEGER(228)
DEFINE_INTEGER(229)
DEFINE_INTEGER(230)
DEFINE_INTEGER(231)
DEFINE_INTEGER(232)
DEFINE_INTEGER(233)
DEFINE_INTEGER(234)
DEFINE_INTEGER(235)
DEFINE_INTEGER(236)
DEFINE_INTEGER(237)
DEFINE_INTEGER(238)
DEFINE_INTEGER(239)
DEFINE_INTEGER(240)
DEFINE_INTEGER(241)
DEFINE_INTEGER(242)
DEFINE_INTEGER(243)
DEFINE_INTEGER(244)
DEFINE_INTEGER(245)
DEFINE_INTEGER(246)
DEFINE_INTEGER(247)
DEFINE_INTEGER(248)
DEFINE_INTEGER(249)
DEFINE_INTEGER(250)
DEFINE_INTEGER(251)
DEFINE_INTEGER(252)
DEFINE_INTEGER(253)
DEFINE_INTEGER(254)
DEFINE_INTEGER(255)
DEFINE_INTEGER(256)
DEFINE_INTEGER(257)
DEFINE_INTEGER(258)
DEFINE_INTEGER(259)
DEFINE_INTEGER(260)
DEFINE_INTEGER(261)
DEFINE_INTEGER(262)
DEFINE_INTEGER(263)
DEFINE_INTEGER(264)
DEFINE_INTEGER(265)
DEFINE_INTEGER(266)
DEFINE_INTEGER(267)
DEFINE_INTEGER(268)
DEFINE_INTEGER(269)
DEFINE_INTEGER(270)
DEFINE_INTEGER(271)
DEFINE_INTEGER(272)
DEFINE_INTEGER(273)
DEFINE_INTEGER(274)
DEFINE_INTEGER(275)
DEFINE_INTEGER(276)
DEFINE_INTEGER(277)
DEFINE_INTEGER(278)
DEFINE_INTEGER(279)
DEFINE_INTEGER(280)
DEFINE_INTEGER(281)
DEFINE_INTEGER(282)
DEFINE_INTEGER(283)
DEFINE_INTEGER(284)
DEFINE_INTEGER(285)
DEFINE_INTEGER(286)
DEFINE_INTEGER(287)
DEFINE_INTEGER(288)
DEFINE_INTEGER(289)
DEFINE_INTEGER(290)
DEFINE_INTEGER(291)
DEFINE_INTEGER(292)
DEFINE_INTEGER(293)
DEFINE_INTEGER(294)
DEFINE_INTEGER(295)
DEFINE_INTEGER(296)
DEFINE_INTEGER(297)
DEFINE_INTEGER(298)
DEFINE_INTEGER(299)
DEFINE_INTEGER(300)
DEFINE_INTEGER(301)
DEFINE_INTEGER(302)
DEFINE_INTEGER(303)
DEFINE_INTEGER(304)
DEFINE_INTEGER(305)
DEFINE_INTEGER(306)
DEFINE_INTEGER(307)
DEFINE_INTEGER(308)
DEFINE_INTEGER(309)
DEFINE_INTEGER(310)
DEFINE_INTEGER(311)
DEFINE_INTEGER(312)
DEFINE_INTEGER(313)
DEFINE_INTEGER(314)
DEFINE_INTEGER(315)
DEFINE_INTEGER(316)
DEFINE_INTEGER(317)
DEFINE_INTEGER(318)
DEFINE_INTEGER(319)
DEFINE_INTEGER(320)
DEFINE_INTEGER(321)
DEFINE_INTEGER(322)
DEFINE_INTEGER(323)
DEFINE_INTEGER(324)
DEFINE_INTEGER(325)
DEFINE_INTEGER(326)
DEFINE_INTEGER(327)
DEFINE_INTEGER(328)
DEFINE_INTEGER(329)
DEFINE_INTEGER(330)
DEFINE_INTEGER(331)
DEFINE_INTEGER(332)
DEFINE_INTEGER(333)
DEFINE_INTEGER(334)
DEFINE_INTEGER(335)
DEFINE_INTEGER(336)
DEFINE_INTEGER(337)
DEFINE_INTEGER(338)
DEFINE_INTEGER(339)
DEFINE_INTEGER(340)
DEFINE_INTEGER(341)
DEFINE_INTEGER(342)
DEFINE_INTEGER(343)
DEFINE_INTEGER(344)
DEFINE_INTEGER(345)
DEFINE_INTEGER(346)
DEFINE_INTEGER(347)
DEFINE_INTEGER(348)
DEFINE_INTEGER(349)
DEFINE_INTEGER(350)
DEFINE_INTEGER(351)
DEFINE_INTEGER(352)
DEFINE_INTEGER(353)
DEFINE_INTEGER(354)
DEFINE_INTEGER(355)
DEFINE_INTEGER(356)
DEFINE_INTEGER(357)
DEFINE_INTEGER(358)
DEFINE_INTEGER(359)
DEFINE_INTEGER(360)
DEFINE_INTEGER(361)
DEFINE_INTEGER(362)
DEFINE_INTEGER(363)
DEFINE_INTEGER(364)
DEFINE_INTEGER(365)
DEFINE_INTEGER(366)
DEFINE_INTEGER(367)
DEFINE_INTEGER(368)
DEFINE_INTEGER(369)
DEFINE_INTEGER(370)
DEFINE_INTEGER(371)
DEFINE_INTEGER(372)
DEFINE_INTEGER(373)
DEFINE_INTEGER(374)
DEFINE_INTEGER(375)
DEFINE_INTEGER(376)
DEFINE_INTEGER(377)
DEFINE_INTEGER(378)
DEFINE_INTEGER(379)
DEFINE_INTEGER(380)
DEFINE_INTEGER(381)
DEFINE_INTEGER(382)
DEFINE_INTEGER(383)
DEFINE_INTEGER(384)
DEFINE_INTEGER(385)
DEFINE_INTEGER(386)
DEFINE_INTEGER(387)
DEFINE_INTEGER(388)
DEFINE_INTEGER(389)
DEFINE_INTEGER(390)
DEFINE_INTEGER(391)
DEFINE_INTEGER(392)
DEFINE_INTEGER(393)
DEFINE_INTEGER(394)
DEFINE_INTEGER(395)
DEFINE_INTEGER(396)
DEFINE_INTEGER(397)
DEFINE_INTEGER(398)
DEFINE_INTEGER(399)
DEFINE_INTEGER(400)
DEFINE_INTEGER(401)
DEFINE_INTEGER(402)
DEFINE_INTEGER(403)
DEFINE_INTEGER(404)
DEFINE_INTEGER(405)
DEFINE_INTEGER(406)
DEFINE_INTEGER(407)
DEFINE_INTEGER(408)
DEFINE_INTEGER(409)
DEFINE_INTEGER(410)
DEFINE_INTEGER(411)
DEFINE_INTEGER(412)
DEFINE_INTEGER(413)
DEFINE_INTEGER(414)
DEFINE_INTEGER(415)
DEFINE_INTEGER(416)
DEFINE_INTEGER(417)
DEFINE_INTEGER(418)
DEFINE_INTEGER(419)
DEFINE_INTEGER(420)
DEFINE_INTEGER(421)
DEFINE_INTEGER(422)
DEFINE_INTEGER(423)
DEFINE_INTEGER(424)
DEFINE_INTEGER(425)
DEFINE_INTEGER(426)
DEFINE_INTEGER(427)
DEFINE_INTEGER(428)
DEFINE_INTEGER(429)
DEFINE_INTEGER(430)
DEFINE_INTEGER(431)
DEFINE_INTEGER(432)
DEFINE_INTEGER(433)
DEFINE_INTEGER(434)
DEFINE_INTEGER(435)
DEFINE_INTEGER(436)
DEFINE_INTEGER(437)
DEFINE_INTEGER(438)
DEFINE_INTEGER(439)
DEFINE_INTEGER(440)
DEFINE_INTEGER(441)
DEFINE_INTEGER(442)
DEFINE_INTEGER(443)
DEFINE_INTEGER(444)
DEFINE_INTEGER(445)
DEFINE_INTEGER(446)
DEFINE_INTEGER(447)
DEFINE_INTEGER(448)
DEFINE_INTEGER(449)
DEFINE_INTEGER(450)
DEFINE_INTEGER(451)
DEFINE_INTEGER(452)
DEFINE_INTEGER(453)
DEFINE_INTEGER(454)
DEFINE_INTEGER(455)
DEFINE_INTEGER(456)
DEFINE_INTEGER(457)
DEFINE_INTEGER(458)
DEFINE_INTEGER(459)
DEFINE_INTEGER(460)
DEFINE_INTEGER(461)
DEFINE_INTEGER(462)
DEFINE_INTEGER(463)
DEFINE_INTEGER(464)
DEFINE_INTEGER(465)
DEFINE_INTEGER(466)
DEFINE_INTEGER(467)
DEFINE_INTEGER(468)
DEFINE_INTEGER(469)
DEFINE_INTEGER(470)
DEFINE_INTEGER(471)
DEFINE_INTEGER(472)
DEFINE_INTEGER(473)
DEFINE_INTEGER(474)
DEFINE_INTEGER(475)
DEFINE_INTEGER(476)
DEFINE_INTEGER(477)
DEFINE_INTEGER(478)
DEFINE_INTEGER(479)
DEFINE_INTEGER(480)
DEFINE_INTEGER(481)
DEFINE_INTEGER(482)
DEFINE_INTEGER(483)
DEFINE_INTEGER(484)
DEFINE_INTEGER(485)
DEFINE_INTEGER(486)
DEFINE_INTEGER(487)
DEFINE_INTEGER(488)
DEFINE_INTEGER(489)
DEFINE_INTEGER(490)
DEFINE_INTEGER(491)
DEFINE_INTEGER(492)
DEFINE_INTEGER(493)
DEFINE_INTEGER(494)
DEFINE_INTEGER(495)
DEFINE_INTEGER(496)
DEFINE_INTEGER(497)
DEFINE_INTEGER(498)
DEFINE_INTEGER(499)
DEFINE_INTEGER(500)
DEFINE_INTEGER(501)
DEFINE_INTEGER(502)
DEFINE_INTEGER(503)
DEFINE_INTEGER(504)
DEFINE_INTEGER(505)
DEFINE_INTEGER(506)
DEFINE_INTEGER(507)
DEFINE_INTEGER(508)
DEFINE_INTEGER(509)
DEFINE_INTEGER(510)
DEFINE_INTEGER(511)
DEFINE_INTEGER(512)
DEFINE_INTEGER(513)
DEFINE_INTEGER(514)
DEFINE_INTEGER(515)
DEFINE_INTEGER(516)
DEFINE_INTEGER(517)
DEFINE_INTEGER(518)
DEFINE_INTEGER(519)
DEFINE_INTEGER(520)
DEFINE_INTEGER(521)
DEFINE_INTEGER(522)
DEFINE_INTEGER(523)
DEFINE_INTEGER(524)
DEFINE_INTEGER(525)
DEFINE_INTEGER(526)
DEFINE_INTEGER(527)
DEFINE_INTEGER(528)
DEFINE_INTEGER(529)
DEFINE_INTEGER(530)
DEFINE_INTEGER(531)
DEFINE_INTEGER(532)
DEFINE_INTEGER(533)
DEFINE_INTEGER(534)
DEFINE_INTEGER(535)
DEFINE_INTEGER(536)
DEFINE_INTEGER(537)
DEFINE_INTEGER(538)
DEFINE_INTEGER(539)
DEFINE_INTEGER(540)
DEFINE_INTEGER(541)
DEFINE_INTEGER(542)
DEFINE_INTEGER(543)
DEFINE_INTEGER(544)
DEFINE_INTEGER(545)
DEFINE_INTEGER(546)
DEFINE_INTEGER(547)
DEFINE_INTEGER(548)
DEFINE_INTEGER(549)
DEFINE_INTEGER(550)
DEFINE_INTEGER(551)
DEFINE_INTEGER(552)
DEFINE_INTEGER(553)
DEFINE_INTEGER(554)
DEFINE_INTEGER(555)
DEFINE_INTEGER(556)
DEFINE_INTEGER(557)
DEFINE_INTEGER(558)
DEFINE_INTEGER(559)
DEFINE_INTEGER(560)
DEFINE_INTEGER(561)
DEFINE_INTEGER(562)
DEFINE_INTEGER(563)
DEFINE_INTEGER(564)
DEFINE_INTEGER(565)
DEFINE_INTEGER(566)
DEFINE_INTEGER(567)
DEFINE_INTEGER(568)
DEFINE_INTEGER(569)
DEFINE_INTEGER(570)
DEFINE_INTEGER(571)
DEFINE_INTEGER(572)
DEFINE_INTEGER(573)
DEFINE_INTEGER(574)
DEFINE_INTEGER(575)
DEFINE_INTEGER(576)
DEFINE_INTEGER(577)
DEFINE_INTEGER(578)
DEFINE_INTEGER(579)
DEFINE_INTEGER(580)
DEFINE_INTEGER(581)
DEFINE_INTEGER(582)
DEFINE_INTEGER(583)
DEFINE_INTEGER(584)
DEFINE_INTEGER(585)
DEFINE_INTEGER(586)
DEFINE_INTEGER(587)
DEFINE_INTEGER(588)
DEFINE_INTEGER(589)
DEFINE_INTEGER(590)
DEFINE_INTEGER(591)
DEFINE_INTEGER(592)
DEFINE_INTEGER(593)
DEFINE_INTEGER(594)
DEFINE_INTEGER(595)
DEFINE_INTEGER(596)
DEFINE_INTEGER(597)
DEFINE_INTEGER(598)
DEFINE_INTEGER(599)
DEFINE_INTEGER(600)
DEFINE_INTEGER(601)
DEFINE_INTEGER(602)
DEFINE_INTEGER(603)
DEFINE_INTEGER(604)
DEFINE_INTEGER(605)
DEFINE_INTEGER(606)
DEFINE_INTEGER(607)
DEFINE_INTEGER(608)
DEFINE_INTEGER(609)
DEFINE_INTEGER(610)
DEFINE_INTEGER(611)
DEFINE_INTEGER(612)
DEFINE_INTEGER(613)
DEFINE_INTEGER(614)
DEFINE_INTEGER(615)
DEFINE_INTEGER(616)
DEFINE_INTEGER(617)
DEFINE_INTEGER(618)
DEFINE_INTEGER(619)
DEFINE_INTEGER(620)
DEFINE_INTEGER(621)
DEFINE_INTEGER(622)
DEFINE_INTEGER(623)
DEFINE_INTEGER(624)
DEFINE_INTEGER(625)
DEFINE_INTEGER(626)
DEFINE_INTEGER(627)
DEFINE_INTEGER(628)
DEFINE_INTEGER(629)
DEFINE_INTEGER(630)
DEFINE_INTEGER(631)
DEFINE_INTEGER(632)
DEFINE_INTEGER(633)
DEFINE_INTEGER(634)
DEFINE_INTEGER(635)
DEFINE_INTEGER(636)
DEFINE_INTEGER(637)
DEFINE_INTEGER(638)
DEFINE_INTEGER(639)
DEFINE_INTEGER(640)
DEFINE_INTEGER(641)
DEFINE_INTEGER(642)
DEFINE_INTEGER(643)
DEFINE_INTEGER(644)
DEFINE_INTEGER(645)
DEFINE_INTEGER(646)
DEFINE_INTEGER(647)
DEFINE_INTEGER(648)
DEFINE_INTEGER(649)
DEFINE_INTEGER(650)
DEFINE_INTEGER(651)
DEFINE_INTEGER(652)
DEFINE_INTEGER(653)
DEFINE_INTEGER(654)
DEFINE_INTEGER(655)
DEFINE_INTEGER(656)
DEFINE_INTEGER(657)
DEFINE_INTEGER(658)
DEFINE_INTEGER(659)
DEFINE_INTEGER(660)
DEFINE_INTEGER(661)
DEFINE_INTEGER(662)
DEFINE_INTEGER(663)
DEFINE_INTEGER(664)
DEFINE_INTEGER(665)
DEFINE_INTEGER(666)
DEFINE_INTEGER(667)
DEFINE_INTEGER(668)
DEFINE_INTEGER(669)
DEFINE_INTEGER(670)
DEFINE_INTEGER(671)
DEFINE_INTEGER(672)
DEFINE_INTEGER(673)
DEFINE_INTEGER(674)
DEFINE_INTEGER(675)
DEFINE_INTEGER(676)
DEFINE_INTEGER(677)
DEFINE_INTEGER(678)
DEFINE_INTEGER(679)
DEFINE_INTEGER(680)
DEFINE_INTEGER(681)
DEFINE_INTEGER(682)
DEFINE_INTEGER(683)
DEFINE_INTEGER(684)
DEFINE_INTEGER(685)
DEFINE_INTEGER(686)
DEFINE_INTEGER(687)
DEFINE_INTEGER(688)
DEFINE_INTEGER(689)
DEFINE_INTEGER(690)
DEFINE_INTEGER(691)
DEFINE_INTEGER(692)
DEFINE_INTEGER(693)
DEFINE_INTEGER(694)
DEFINE_INTEGER(695)
DEFINE_INTEGER(696)
DEFINE_INTEGER(697)
DEFINE_INTEGER(698)
DEFINE_INTEGER(699)
DEFINE_INTEGER(700)
DEFINE_INTEGER(701)
DEFINE_INTEGER(702)
DEFINE_INTEGER(703)
DEFINE_INTEGER(704)
DEFINE_INTEGER(705)
DEFINE_INTEGER(706)
DEFINE_INTEGER(707)
DEFINE_INTEGER(708)
DEFINE_INTEGER(709)
DEFINE_INTEGER(710)
DEFINE_INTEGER(711)
DEFINE_INTEGER(712)
DEFINE_INTEGER(713)
DEFINE_INTEGER(714)
DEFINE_INTEGER(715)
DEFINE_INTEGER(716)
DEFINE_INTEGER(717)
DEFINE_INTEGER(718)
DEFINE_INTEGER(719)
DEFINE_INTEGER(720)
DEFINE_INTEGER(721)
DEFINE_INTEGER(722)
DEFINE_INTEGER(723)
DEFINE_INTEGER(724)
DEFINE_INTEGER(725)
DEFINE_INTEGER(726)
DEFINE_INTEGER(727)
DEFINE_INTEGER(728)
DEFINE_INTEGER(729)
DEFINE_INTEGER(730)
DEFINE_INTEGER(731)
DEFINE_INTEGER(732)
DEFINE_INTEGER(733)
DEFINE_INTEGER(734)
DEFINE_INTEGER(735)
DEFINE_INTEGER(736)
DEFINE_INTEGER(737)
DEFINE_INTEGER(738)
DEFINE_INTEGER(739)
DEFINE_INTEGER(740)
DEFINE_INTEGER(741)
DEFINE_INTEGER(742)
DEFINE_INTEGER(743)
DEFINE_INTEGER(744)
DEFINE_INTEGER(745)
DEFINE_INTEGER(746)
DEFINE_INTEGER(747)
DEFINE_INTEGER(748)
DEFINE_INTEGER(749)
DEFINE_INTEGER(750)
DEFINE_INTEGER(751)
DEFINE_INTEGER(752)
DEFINE_INTEGER(753)
DEFINE_INTEGER(754)
DEFINE_INTEGER(755)
DEFINE_INTEGER(756)
DEFINE_INTEGER(757)
DEFINE_INTEGER(758)
DEFINE_INTEGER(759)
DEFINE_INTEGER(760)
DEFINE_INTEGER(761)
DEFINE_INTEGER(762)
DEFINE_INTEGER(763)
DEFINE_INTEGER(764)
DEFINE_INTEGER(765)
DEFINE_INTEGER(766)
DEFINE_INTEGER(767)
DEFINE_INTEGER(768)
DEFINE_INTEGER(769)
DEFINE_INTEGER(770)
DEFINE_INTEGER(771)
DEFINE_INTEGER(772)
DEFINE_INTEGER(773)
DEFINE_INTEGER(774)
DEFINE_INTEGER(775)
DEFINE_INTEGER(776)
DEFINE_INTEGER(777)
DEFINE_INTEGER(778)
DEFINE_INTEGER(779)
DEFINE_INTEGER(780)
DEFINE_INTEGER(781)
DEFINE_INTEGER(782)
DEFINE_INTEGER(783)
DEFINE_INTEGER(784)
DEFINE_INTEGER(785)
DEFINE_INTEGER(786)
DEFINE_INTEGER(787)
DEFINE_INTEGER(788)
DEFINE_INTEGER(789)
DEFINE_INTEGER(790)
DEFINE_INTEGER(791)
DEFINE_INTEGER(792)
DEFINE_INTEGER(793)
DEFINE_INTEGER(794)
DEFINE_INTEGER(795)
DEFINE_INTEGER(796)
DEFINE_INTEGER(797)
DEFINE_INTEGER(798)
DEFINE_INTEGER(799)
DEFINE_INTEGER(800)
DEFINE_INTEGER(801)
DEFINE_INTEGER(802)
DEFINE_INTEGER(803)
DEFINE_INTEGER(804)
DEFINE_INTEGER(805)
DEFINE_INTEGER(806)
DEFINE_INTEGER(807)
DEFINE_INTEGER(808)
DEFINE_INTEGER(809)
DEFINE_INTEGER(810)
DEFINE_INTEGER(811)
DEFINE_INTEGER(812)
DEFINE_INTEGER(813)
DEFINE_INTEGER(814)
DEFINE_INTEGER(815)
DEFINE_INTEGER(816)
DEFINE_INTEGER(817)