Faits:
A. En 2007, X._ a vendu cinquante-deux boulettes de 0,8 g (brut) de cocaïne à divers toxicomanes.
Le 17 décembre 2007, il a vendu 43,9 g (brut) de ce même produit à un policier en civil. Il a été arrêté. Au cours de son transport au poste, il s'est débattu, et il a tenté de donner des coups de tête au fonctionnaire qui s'efforçait de le maîtriser.
La fouille de sécurité et la visite domiciliaire pratiquées peu après son arrestation ont révélé qu'il détenait encore à ce moment-là onze boulettes de 0,8 g (brut) de cocaïne, ainsi que 18,8 g (brut) de ce produit sous forme de gouttes.
B. Par jugement du 15 avril 2008, le Tribunal de police du canton de Genève a condamné X._, pour infraction grave à la loi fédérale sur les stupéfiants (art. 19 ch. 1 et 2 LStup) et violence ou menace contre les autorités et les fonctionnaires (<ref-law>), à vingt-quatre mois de privation de liberté, sous déduction de la détention préventive, et révoqué un sursis antérieur.
X._ a appelé de ce jugement, en demandant notamment à être condamné pour infraction (simple) à la loi fédérale sur les stupéfiants. Par arrêt du 23 juin 2008, la Chambre pénale de la Cour de justice du canton de Genève a confirmé les déclarations de culpabilité des chefs d'infraction grave à la loi fédérale sur les stupéfiants et de violence ou menace contre les autorités et les fonctionnaires, réduit la peine à vingt mois de privation de liberté et confirmé la révocation du sursis antérieur.
C. X._ recourt au Tribunal fédéral contre ce dernier arrêt, dont il conclut à la réforme en ce sens qu'il soit reconnu coupable d'infraction (simple) à la loi fédérale sur les stupéfiants et de violence ou menace contre les autorités et les fonctionnaires, sa peine étant réduite en conséquence à six mois de privation de liberté.
À titre préalable, il demande l'assistance judiciaire.
Le Tribunal fédéral n'a pas ordonné d'échange d'écritures.

Considérant en droit:
1. La cour cantonale a calculé la quantité de cocaïne pure que le recourant a vendue ou détenue en appliquant aux quantités brutes précitées le taux moyen de pureté sur le marché local au moment des faits, qu'elle a tenu pour égal à 20%. Le recourant soutient qu'elle aurait, ce faisant, violé son droit à l'égalité de traitement (art. 8 al. 1 Cst.) parce que, dans un arrêt rendu le même jour que l'arrêt attaqué, dans une autre cause concernant aussi des faits commis à Genève en 2007, la cour cantonale a retenu un taux moyen de pureté sur le marché local de 10%. Il fait aussi valoir qu'en retenant un taux de 20% au lieu de 10%, elle aurait violé la présomption d'innocence (art. 32 al. 1 Cst.).
Il est vrai que le taux moyen de pureté sur le marché local est par définition le même pour toutes les affaires portant sur des faits commis en un même lieu et à une même époque. Mais que la cour cantonale ait, peut-être à tort, retenu un taux de 10% dans une autre affaire ne prouve pas que celui de 20% retenu en l'espèce soit erroné, ni, à plus forte raison, qu'il soit arbitraire. En outre, le recourant a caviardé l'indication de la composition dans laquelle l'arrêt qu'il invoque a été rendu. Il n'établit dès lors pas que les magistrats qui ont statué dans sa cause seraient ceux-là mêmes qui, dans l'autre affaire, ont jugé douteux que le taux moyen dépasse 10%. De l'arrêt attaqué, il ressort au contraire que les juges qui l'ont rendu n'avaient aucun doute sur la pertinence d'un taux moyen de 20 à 30%, de sorte qu'en fondant leurs calculs sur le bas de cette fourchette, ils n'ont violé le principe in dubio pro reo ni sous son aspect de règle sur le fardeau de la preuve, ni sous l'aspect de règle sur l'appréciation des preuves. Certes, on pourrait envisager que l'art. 8 al. 1 Cst. confère au recourant un droit à ce qu'un taux de 10% soit retenu, même erroné, s'il était établi que la cour cantonale a pour pratique constante de retenir un taux de 10% pour 2007 (cf., mutatis mutandis, <ref-ruling> consid. 3 p. 2 s. et les références). Mais l'unique décision produite à l'appui du recours ne prouve pas l'existence d'une telle pratique. Il s'ensuit que la cour cantonale n'a pas constaté d'une manière contraire aux droits constitutionnels du recourant, ni de façon manifestement inexacte, le taux moyen de pureté de 20% retenu en l'espèce. Dès lors, la constatation de ce taux dans l'arrêt attaqué lie le Tribunal fédéral (art. 105 al. 1 et 2, a contrario, LTF).
2. La vente et la détention de produits stupéfiants constituent une infraction à la loi fédérale sur les stupéfiants (art. 19 ch. 1 al. 4 et 5 LStup). Cette infraction est qualifiée grave, et elle est plus sévèrement punie, si elle porte sur une quantité de stupéfiants dont l'auteur sait ou ne peut ignorer qu'elle peut mettre en danger la santé de nombreuses personnes (<ref-law>). Pour la cocaïne, cette dernière condition est objectivement remplie dès que l'infraction porte sur une quantité contenant 18 g de substance pure (<ref-ruling> consid. 3b p. 145). Si l'auteur commet plusieurs actes distincts, les quantités qui en sont l'objet doivent être additionnées (<ref-ruling> consid. 2b p. 113).
Dans le cas présent, le recourant a vendu et détenu un total de 113,1 g brut de cocaïne, soit, compte tenu d'un taux de pureté moyen de 20% sur le marché local au moment des faits, 22,62 g de cocaïne pure. Déjà condamné pour infraction à la loi fédérale sur les stupéfiants par le passé, le recourant n'ignorait pas l'opinion du législateur sur la périculosité de la cocaïne. Les conditions de la circonstance aggravante prévue à l'<ref-law> sont ainsi toutes remplies. Le recours, mal fondé, doit dès lors être rejeté.
3. Comme ses conclusions étaient dénuées de chance de succès, le recourant doit être débouté de sa demande d'assistance judiciaire (<ref-law>, a contrario) et supporter les frais de justice (<ref-law>), réduits à 800 fr. pour tenir compte de sa situation financière.

Par ces motifs, le Tribunal fédéral prononce:
1. Le recours est rejeté.
2. La demande d'assistance judiciaire est rejetée.
3. Les frais judiciaires, arrêtés à 800 fr., sont mis à la charge du recourant.
4. Le présent arrêt est communiqué aux parties et à la Cour de justice du canton de Genève, Chambre pénale.
Lausanne, le 10 mars 2009
Au nom de la Cour de droit pénal
du Tribunal fédéral suisse
Le Président: Le Greffier:
Favre Oulevey