All of Pong's graphics are done with Screen.drawRectangle() calls.
If your Screen class is typical, you have a drawHorixontalLine() that handles the drawLine() case when x1==x2, and your drawRectangle() calls that to draw the required lines to fill the rectangle.
drawHorizontalLine() is probably a while loop that calls drawPixel() for each of the x2-x1 pixels. Each drawPixel() does multiplication and division to locate the pixel.
You can speed up drawHorizontalLine() by computing the addresses of the first and last words in the line that contain pixels in the line and bitmasks for the first and last words. All the interior words have all their bits set in a single operation by setting the word to either 0 or -1.
Example: drawLine(76, 32, 131, 32) drawing black
17000: or -4096 1111000000000000
17001: set -1 1111111111111111
17002: set -1 1111111111111111
17003: set -1 1111111111111111
17004: or 1023 0000001111111111
Building the bitmasks is a bit expensive. This is a good application for another static array.
rightMask[n], n=0..16
returns a word with the 'n' right-most bits set.
--Mark