1From: David Zbarsky <dzbarsky@gmail.com>
2Bug 766017 - Fix some skia warnings r=gw280
3
4diff --git a/gfx/skia/include/utils/mac/SkCGUtils.h b/gfx/skia/include/utils/mac/SkCGUtils.h
5--- a/gfx/skia/include/utils/mac/SkCGUtils.h
6+++ b/gfx/skia/include/utils/mac/SkCGUtils.h
7@@ -39,18 +39,16 @@ static inline CGImageRef SkCreateCGImage
8 /**
9  *  Draw the bitmap into the specified CG context. The bitmap will be converted
10  *  to a CGImage using the generic RGB colorspace. (x,y) specifies the position
11  *  of the top-left corner of the bitmap. The bitmap is converted using the
12  *  colorspace returned by CGColorSpaceCreateDeviceRGB()
13  */
14 void SkCGDrawBitmap(CGContextRef, const SkBitmap&, float x, float y);
15
16-bool SkPDFDocumentToBitmap(SkStream* stream, SkBitmap* output);
17-
18 /**
19  *  Return a provider that wraps the specified stream. It will become an
20  *  owner of the stream, so the caller must still manage its ownership.
21  *
22  *  To hand-off ownership of the stream to the provider, the caller must do
23  *  something like the following:
24  *
25  *  SkStream* stream = new ...;
26diff --git a/gfx/skia/src/core/SkAAClip.cpp b/gfx/skia/src/core/SkAAClip.cpp
27--- a/gfx/skia/src/core/SkAAClip.cpp
28+++ b/gfx/skia/src/core/SkAAClip.cpp
29@@ -246,17 +246,17 @@ static void count_left_right_zeros(const
30             zeros = 0;
31         }
32         row += 2;
33         width -= n;
34     }
35     *riteZ = zeros;
36 }
37
38-#ifdef SK_DEBUG
39+#if 0
40 static void test_count_left_right_zeros() {
41     static bool gOnce;
42     if (gOnce) {
43         return;
44     }
45     gOnce = true;
46
47     const uint8_t data0[] = {  0, 0,     10, 0xFF };
48@@ -1319,22 +1319,16 @@ bool SkAAClip::setPath(const SkPath& pat
49 }
50
51 ///////////////////////////////////////////////////////////////////////////////
52
53 typedef void (*RowProc)(SkAAClip::Builder&, int bottom,
54                         const uint8_t* rowA, const SkIRect& rectA,
55                         const uint8_t* rowB, const SkIRect& rectB);
56
57-static void sectRowProc(SkAAClip::Builder& builder, int bottom,
58-                        const uint8_t* rowA, const SkIRect& rectA,
59-                        const uint8_t* rowB, const SkIRect& rectB) {
60-
61-}
62-
63 typedef U8CPU (*AlphaProc)(U8CPU alphaA, U8CPU alphaB);
64
65 static U8CPU sectAlphaProc(U8CPU alphaA, U8CPU alphaB) {
66     // Multiply
67     return SkMulDiv255Round(alphaA, alphaB);
68 }
69
70 static U8CPU unionAlphaProc(U8CPU alphaA, U8CPU alphaB) {
71@@ -1429,31 +1423,16 @@ private:
72 static void adjust_row(RowIter& iter, int& leftA, int& riteA, int rite) {
73     if (rite == riteA) {
74         iter.next();
75         leftA = iter.left();
76         riteA = iter.right();
77     }
78 }
79
80-static bool intersect(int& min, int& max, int boundsMin, int boundsMax) {
81-    SkASSERT(min < max);
82-    SkASSERT(boundsMin < boundsMax);
83-    if (min >= boundsMax || max <= boundsMin) {
84-        return false;
85-    }
86-    if (min < boundsMin) {
87-        min = boundsMin;
88-    }
89-    if (max > boundsMax) {
90-        max = boundsMax;
91-    }
92-    return true;
93-}
94-
95 static void operatorX(SkAAClip::Builder& builder, int lastY,
96                       RowIter& iterA, RowIter& iterB,
97                       AlphaProc proc, const SkIRect& bounds) {
98     int leftA = iterA.left();
99     int riteA = iterA.right();
100     int leftB = iterB.left();
101     int riteB = iterB.right();
102
103@@ -1970,34 +1949,33 @@ static void small_bzero(void* dst, size_
104 static inline uint8_t mergeOne(uint8_t value, unsigned alpha) {
105     return SkMulDiv255Round(value, alpha);
106 }
107 static inline uint16_t mergeOne(uint16_t value, unsigned alpha) {
108     unsigned r = SkGetPackedR16(value);
109     unsigned g = SkGetPackedG16(value);
110     unsigned b = SkGetPackedB16(value);
111     return SkPackRGB16(SkMulDiv255Round(r, alpha),
112-                       SkMulDiv255Round(r, alpha),
113-                       SkMulDiv255Round(r, alpha));
114+                       SkMulDiv255Round(g, alpha),
115+                       SkMulDiv255Round(b, alpha));
116 }
117 static inline SkPMColor mergeOne(SkPMColor value, unsigned alpha) {
118     unsigned a = SkGetPackedA32(value);
119     unsigned r = SkGetPackedR32(value);
120     unsigned g = SkGetPackedG32(value);
121     unsigned b = SkGetPackedB32(value);
122     return SkPackARGB32(SkMulDiv255Round(a, alpha),
123                         SkMulDiv255Round(r, alpha),
124                         SkMulDiv255Round(g, alpha),
125                         SkMulDiv255Round(b, alpha));
126 }
127
128 template <typename T> void mergeT(const T* SK_RESTRICT src, int srcN,
129                                  const uint8_t* SK_RESTRICT row, int rowN,
130                                  T* SK_RESTRICT dst) {
131-    SkDEBUGCODE(int accumulated = 0;)
132     for (;;) {
133         SkASSERT(rowN > 0);
134         SkASSERT(srcN > 0);
135
136         int n = SkMin32(rowN, srcN);
137         unsigned rowA = row[1];
138         if (0xFF == rowA) {
139             small_memcpy(dst, src, n * sizeof(T));
140diff --git a/gfx/skia/src/core/SkBlitMask_D32.cpp b/gfx/skia/src/core/SkBlitMask_D32.cpp
141--- a/gfx/skia/src/core/SkBlitMask_D32.cpp
142+++ b/gfx/skia/src/core/SkBlitMask_D32.cpp
143@@ -268,107 +268,49 @@ bool SkBlitMask::BlitColor(const SkBitma
144         return true;
145     }
146     return false;
147 }
148
149 ///////////////////////////////////////////////////////////////////////////////
150 ///////////////////////////////////////////////////////////////////////////////
151
152-static void BW_RowProc_Blend(SkPMColor* SK_RESTRICT dst,
153-                             const uint8_t* SK_RESTRICT mask,
154-                             const SkPMColor* SK_RESTRICT src, int count) {
155-    int i, octuple = (count + 7) >> 3;
156-    for (i = 0; i < octuple; ++i) {
157-        int m = *mask++;
158-        if (m & 0x80) { dst[0] = SkPMSrcOver(src[0], dst[0]); }
159-        if (m & 0x40) { dst[1] = SkPMSrcOver(src[1], dst[1]); }
160-        if (m & 0x20) { dst[2] = SkPMSrcOver(src[2], dst[2]); }
161-        if (m & 0x10) { dst[3] = SkPMSrcOver(src[3], dst[3]); }
162-        if (m & 0x08) { dst[4] = SkPMSrcOver(src[4], dst[4]); }
163-        if (m & 0x04) { dst[5] = SkPMSrcOver(src[5], dst[5]); }
164-        if (m & 0x02) { dst[6] = SkPMSrcOver(src[6], dst[6]); }
165-        if (m & 0x01) { dst[7] = SkPMSrcOver(src[7], dst[7]); }
166-        src += 8;
167-        dst += 8;
168-    }
169-    count &= 7;
170-    if (count > 0) {
171-        int m = *mask;
172-        do {
173-            if (m & 0x80) { dst[0] = SkPMSrcOver(src[0], dst[0]); }
174-            m <<= 1;
175-            src += 1;
176-            dst += 1;
177-        } while (--count > 0);
178-    }
179-}
180-
181-static void BW_RowProc_Opaque(SkPMColor* SK_RESTRICT dst,
182-                              const uint8_t* SK_RESTRICT mask,
183-                              const SkPMColor* SK_RESTRICT src, int count) {
184-    int i, octuple = (count + 7) >> 3;
185-    for (i = 0; i < octuple; ++i) {
186-        int m = *mask++;
187-        if (m & 0x80) { dst[0] = src[0]; }
188-        if (m & 0x40) { dst[1] = src[1]; }
189-        if (m & 0x20) { dst[2] = src[2]; }
190-        if (m & 0x10) { dst[3] = src[3]; }
191-        if (m & 0x08) { dst[4] = src[4]; }
192-        if (m & 0x04) { dst[5] = src[5]; }
193-        if (m & 0x02) { dst[6] = src[6]; }
194-        if (m & 0x01) { dst[7] = src[7]; }
195-        src += 8;
196-        dst += 8;
197-    }
198-    count &= 7;
199-    if (count > 0) {
200-        int m = *mask;
201-        do {
202-            if (m & 0x80) { dst[0] = SkPMSrcOver(src[0], dst[0]); }
203-            m <<= 1;
204-            src += 1;
205-            dst += 1;
206-        } while (--count > 0);
207-    }
208-}
209-
210 static void A8_RowProc_Blend(SkPMColor* SK_RESTRICT dst,
211                              const uint8_t* SK_RESTRICT mask,
212                              const SkPMColor* SK_RESTRICT src, int count) {
213     for (int i = 0; i < count; ++i) {
214         if (mask[i]) {
215             dst[i] = SkBlendARGB32(src[i], dst[i], mask[i]);
216         }
217     }
218 }
219
220 // expand the steps that SkAlphaMulQ performs, but this way we can
221-//  exand.. add.. combine
222+//  expand.. add.. combine
223 // instead of
224 // expand..combine add expand..combine
225 //
226 #define EXPAND0(v, m, s)    ((v) & (m)) * (s)
227 #define EXPAND1(v, m, s)    (((v) >> 8) & (m)) * (s)
228 #define COMBINE(e0, e1, m)  ((((e0) >> 8) & (m)) | ((e1) & ~(m)))
229
230 static void A8_RowProc_Opaque(SkPMColor* SK_RESTRICT dst,
231                               const uint8_t* SK_RESTRICT mask,
232                               const SkPMColor* SK_RESTRICT src, int count) {
233-    const uint32_t rbmask = gMask_00FF00FF;
234     for (int i = 0; i < count; ++i) {
235         int m = mask[i];
236         if (m) {
237             m += (m >> 7);
238 #if 1
239             // this is slightly slower than the expand/combine version, but it
240             // is much closer to the old results, so we use it for now to reduce
241             // rebaselining.
242             dst[i] = SkAlphaMulQ(src[i], m) + SkAlphaMulQ(dst[i], 256 - m);
243 #else
244+            const uint32_t rbmask = gMask_00FF00FF;
245             uint32_t v = src[i];
246             uint32_t s0 = EXPAND0(v, rbmask, m);
247             uint32_t s1 = EXPAND1(v, rbmask, m);
248             v = dst[i];
249             uint32_t d0 = EXPAND0(v, rbmask, m);
250             uint32_t d1 = EXPAND1(v, rbmask, m);
251             dst[i] = COMBINE(s0 + d0, s1 + d1, rbmask);
252 #endif
253@@ -559,17 +501,17 @@ SkBlitMask::RowProc SkBlitMask::RowFacto
254 // make this opt-in until chrome can rebaseline
255     RowProc proc = PlatformRowProcs(config, format, flags);
256     if (proc) {
257         return proc;
258     }
259
260     static const RowProc gProcs[] = {
261         // need X coordinate to handle BW
262-        NULL, NULL, //(RowProc)BW_RowProc_Blend,      (RowProc)BW_RowProc_Opaque,
263+        NULL, NULL,
264         (RowProc)A8_RowProc_Blend,      (RowProc)A8_RowProc_Opaque,
265         (RowProc)LCD16_RowProc_Blend,   (RowProc)LCD16_RowProc_Opaque,
266         (RowProc)LCD32_RowProc_Blend,   (RowProc)LCD32_RowProc_Opaque,
267     };
268
269     int index;
270     switch (config) {
271         case SkBitmap::kARGB_8888_Config:
272diff --git a/gfx/skia/src/core/SkConcaveToTriangles.cpp b/gfx/skia/src/core/SkConcaveToTriangles.cpp
273--- a/gfx/skia/src/core/SkConcaveToTriangles.cpp
274+++ b/gfx/skia/src/core/SkConcaveToTriangles.cpp
275@@ -37,17 +37,16 @@
276 #include "SkTDArray.h"
277 #include "SkGeometry.h"
278 #include "SkTSort.h"
279
280 // This is used to prevent runaway code bugs, and can probably be removed after
281 // the code has been proven robust.
282 #define kMaxCount 1000
283
284-#define DEBUG
285 #ifdef DEBUG
286 //------------------------------------------------------------------------------
287 // Debugging support
288 //------------------------------------------------------------------------------
289
290 #include <cstdio>
291 #include <stdarg.h>
292
293diff --git a/gfx/skia/src/core/SkPath.cpp b/gfx/skia/src/core/SkPath.cpp
294--- a/gfx/skia/src/core/SkPath.cpp
295+++ b/gfx/skia/src/core/SkPath.cpp
296@@ -469,17 +469,16 @@ void SkPath::incReserve(U16CPU inc) {
297     fPts.setReserve(fPts.count() + inc);
298
299     SkDEBUGCODE(this->validate();)
300 }
301
302 void SkPath::moveTo(SkScalar x, SkScalar y) {
303     SkDEBUGCODE(this->validate();)
304
305-    int      vc = fVerbs.count();
306     SkPoint* pt;
307
308     // remember our index
309     fLastMoveToIndex = fPts.count();
310
311     pt = fPts.append();
312     *fVerbs.append() = kMove_Verb;
313     pt->set(x, y);
314@@ -1163,17 +1162,16 @@ void SkPath::reversePathTo(const SkPath&
315         }
316         pts -= gPtsInVerb[verbs[i]];
317     }
318 }
319
320 void SkPath::reverseAddPath(const SkPath& src) {
321     this->incReserve(src.fPts.count());
322
323-    const SkPoint* startPts = src.fPts.begin();
324     const SkPoint* pts = src.fPts.end();
325     const uint8_t* startVerbs = src.fVerbs.begin();
326     const uint8_t* verbs = src.fVerbs.end();
327
328     fIsOval = false;
329
330     bool needMove = true;
331     bool needClose = false;
332diff --git a/gfx/skia/src/core/SkRegion.cpp b/gfx/skia/src/core/SkRegion.cpp
333--- a/gfx/skia/src/core/SkRegion.cpp
334+++ b/gfx/skia/src/core/SkRegion.cpp
335@@ -920,20 +920,16 @@ static int operate(const SkRegion::RunTy
336 /*  Given count RunTypes in a complex region, return the worst case number of
337     logical intervals that represents (i.e. number of rects that would be
338     returned from the iterator).
339
340     We could just return count/2, since there must be at least 2 values per
341     interval, but we can first trim off the const overhead of the initial TOP
342     value, plus the final BOTTOM + 2 sentinels.
343  */
344-static int count_to_intervals(int count) {
345-    SkASSERT(count >= 6);   // a single rect is 6 values
346-    return (count - 4) >> 1;
347-}
348
349 /*  Given a number of intervals, what is the worst case representation of that
350     many intervals?
351
352     Worst case (from a storage perspective), is a vertical stack of single
353     intervals:  TOP + N * (BOTTOM INTERVALCOUNT LEFT RIGHT SENTINEL) + SENTINEL
354  */
355 static int intervals_to_count(int intervals) {
356diff --git a/gfx/skia/src/core/SkScalerContext.cpp b/gfx/skia/src/core/SkScalerContext.cpp
357--- a/gfx/skia/src/core/SkScalerContext.cpp
358+++ b/gfx/skia/src/core/SkScalerContext.cpp
359@@ -336,44 +336,16 @@ SK_ERROR:
360     glyph->fTop     = 0;
361     glyph->fWidth   = 0;
362     glyph->fHeight  = 0;
363     // put a valid value here, in case it was earlier set to
364     // MASK_FORMAT_JUST_ADVANCE
365     glyph->fMaskFormat = fRec.fMaskFormat;
366 }
367
368-static bool isLCD(const SkScalerContext::Rec& rec) {
369-    return SkMask::kLCD16_Format == rec.fMaskFormat ||
370-           SkMask::kLCD32_Format == rec.fMaskFormat;
371-}
372-
373-static uint16_t a8_to_rgb565(unsigned a8) {
374-    return SkPackRGB16(a8 >> 3, a8 >> 2, a8 >> 3);
375-}
376-
377-static void copyToLCD16(const SkBitmap& src, const SkMask& dst) {
378-    SkASSERT(SkBitmap::kA8_Config == src.config());
379-    SkASSERT(SkMask::kLCD16_Format == dst.fFormat);
380-
381-    const int width = dst.fBounds.width();
382-    const int height = dst.fBounds.height();
383-    const uint8_t* srcP = src.getAddr8(0, 0);
384-    size_t srcRB = src.rowBytes();
385-    uint16_t* dstP = (uint16_t*)dst.fImage;
386-    size_t dstRB = dst.fRowBytes;
387-    for (int y = 0; y < height; ++y) {
388-        for (int x = 0; x < width; ++x) {
389-            dstP[x] = a8_to_rgb565(srcP[x]);
390-        }
391-        srcP += srcRB;
392-        dstP = (uint16_t*)((char*)dstP + dstRB);
393-    }
394-}
395-
396 #define SK_FREETYPE_LCD_LERP    160
397
398 static int lerp(int start, int end) {
399     SkASSERT((unsigned)SK_FREETYPE_LCD_LERP <= 256);
400     return start + ((end - start) * (SK_FREETYPE_LCD_LERP) >> 8);
401 }
402
403 static uint16_t packLCD16(unsigned r, unsigned g, unsigned b) {
404diff --git a/gfx/skia/src/core/SkScan_AntiPath.cpp b/gfx/skia/src/core/SkScan_AntiPath.cpp
405--- a/gfx/skia/src/core/SkScan_AntiPath.cpp
406+++ b/gfx/skia/src/core/SkScan_AntiPath.cpp
407@@ -230,52 +230,16 @@ void SuperBlitter::blitH(int x, int y, i
408                          fOffsetX);
409
410 #ifdef SK_DEBUG
411     fRuns.assertValid(y & MASK, (1 << (8 - SHIFT)));
412     fCurrX = x + width;
413 #endif
414 }
415
416-static void set_left_rite_runs(SkAlphaRuns& runs, int ileft, U8CPU leftA,
417-                               int n, U8CPU riteA) {
418-    SkASSERT(leftA <= 0xFF);
419-    SkASSERT(riteA <= 0xFF);
420-
421-    int16_t* run = runs.fRuns;
422-    uint8_t* aa = runs.fAlpha;
423-
424-    if (ileft > 0) {
425-        run[0] = ileft;
426-        aa[0] = 0;
427-        run += ileft;
428-        aa += ileft;
429-    }
430-
431-    SkASSERT(leftA < 0xFF);
432-    if (leftA > 0) {
433-        *run++ = 1;
434-        *aa++ = leftA;
435-    }
436-
437-    if (n > 0) {
438-        run[0] = n;
439-        aa[0] = 0xFF;
440-        run += n;
441-        aa += n;
442-    }
443-
444-    SkASSERT(riteA < 0xFF);
445-    if (riteA > 0) {
446-        *run++ = 1;
447-        *aa++ = riteA;
448-    }
449-    run[0] = 0;
450-}
451-
452 void SuperBlitter::blitRect(int x, int y, int width, int height) {
453     SkASSERT(width > 0);
454     SkASSERT(height > 0);
455
456     // blit leading rows
457     while ((y & MASK)) {
458         this->blitH(x, y++, width);
459         if (--height <= 0) {
460diff --git a/gfx/skia/src/effects/SkGradientShader.cpp b/gfx/skia/src/effects/SkGradientShader.cpp
461--- a/gfx/skia/src/effects/SkGradientShader.cpp
462+++ b/gfx/skia/src/effects/SkGradientShader.cpp
463@@ -865,45 +865,16 @@ bool Linear_Gradient::setContext(const S
464     } while (0)
465
466 namespace {
467
468 typedef void (*LinearShadeProc)(TileProc proc, SkFixed dx, SkFixed fx,
469                                 SkPMColor* dstC, const SkPMColor* cache,
470                                 int toggle, int count);
471
472-// This function is deprecated, and will be replaced by
473-// shadeSpan_linear_vertical_lerp() once Chrome has been weaned off of it.
474-void shadeSpan_linear_vertical(TileProc proc, SkFixed dx, SkFixed fx,
475-                               SkPMColor* SK_RESTRICT dstC,
476-                               const SkPMColor* SK_RESTRICT cache,
477-                               int toggle, int count) {
478-    if (proc == clamp_tileproc) {
479-        // Read out clamp values from beginning/end of the cache. No need to lerp
480-        // or dither
481-        if (fx < 0) {
482-            sk_memset32(dstC, cache[-1], count);
483-            return;
484-        } else if (fx > 0xFFFF) {
485-            sk_memset32(dstC, cache[Gradient_Shader::kCache32Count * 2], count);
486-            return;
487-        }
488-    }
489-
490-    // We're a vertical gradient, so no change in a span.
491-    // If colors change sharply across the gradient, dithering is
492-    // insufficient (it subsamples the color space) and we need to lerp.
493-    unsigned fullIndex = proc(fx);
494-    unsigned fi = fullIndex >> (16 - Gradient_Shader::kCache32Bits);
495-    sk_memset32_dither(dstC,
496-            cache[toggle + fi],
497-            cache[(toggle ^ Gradient_Shader::kDitherStride32) + fi],
498-            count);
499-}
500-
501 // Linear interpolation (lerp) is unnecessary if there are no sharp
502 // discontinuities in the gradient - which must be true if there are
503 // only 2 colors - but it's cheap.
504 void shadeSpan_linear_vertical_lerp(TileProc proc, SkFixed dx, SkFixed fx,
505                                     SkPMColor* SK_RESTRICT dstC,
506                                     const SkPMColor* SK_RESTRICT cache,
507                                     int toggle, int count) {
508     if (proc == clamp_tileproc) {
509@@ -2131,16 +2102,18 @@ protected:
510         buffer.writePoint(fCenter);
511     }
512
513 private:
514     typedef Gradient_Shader INHERITED;
515     const SkPoint fCenter;
516 };
517
518+#ifndef SK_SCALAR_IS_FLOAT
519+
520 #ifdef COMPUTE_SWEEP_TABLE
521 #define PI  3.14159265
522 static bool gSweepTableReady;
523 static uint8_t gSweepTable[65];
524
525 /*  Our table stores precomputed values for atan: [0...1] -> [0..PI/4]
526     We scale the results to [0..32]
527 */
528@@ -2168,20 +2141,23 @@ static const uint8_t gSweepTable[] = {
529     10, 11, 11, 12, 12, 13, 13, 14, 15, 15, 16, 16, 17, 17, 18, 18,
530     19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 25, 26,
531     26, 27, 27, 27, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 32,
532     32
533 };
534 static const uint8_t* build_sweep_table() { return gSweepTable; }
535 #endif
536
537+#endif
538+
539 // divide numer/denom, with a bias of 6bits. Assumes numer <= denom
540 // and denom != 0. Since our table is 6bits big (+1), this is a nice fit.
541 // Same as (but faster than) SkFixedDiv(numer, denom) >> 10
542
543+#ifndef SK_SCALAR_IS_FLOAT
544 //unsigned div_64(int numer, int denom);
545 static unsigned div_64(int numer, int denom) {
546     SkASSERT(numer <= denom);
547     SkASSERT(numer > 0);
548     SkASSERT(denom > 0);
549
550     int nbits = SkCLZ(numer);
551     int dbits = SkCLZ(denom);
552@@ -2294,16 +2270,17 @@ static unsigned atan_0_90(SkFixed y, SkF
553         result = 64 - result;
554         // pin to 63
555         result -= result >> 6;
556     }
557
558     SkASSERT(result <= 63);
559     return result;
560 }
561+#endif
562
563 //  returns angle in a circle [0..2PI) -> [0..255]
564 #ifdef SK_SCALAR_IS_FLOAT
565 static unsigned SkATan2_255(float y, float x) {
566     //    static const float g255Over2PI = 255 / (2 * SK_ScalarPI);
567     static const float g255Over2PI = 40.584510488433314f;
568
569     float result = sk_float_atan2(y, x);
570diff --git a/gfx/skia/src/opts/SkBlitRect_opts_SSE2.cpp b/gfx/skia/src/opts/SkBlitRect_opts_SSE2.cpp
571--- a/gfx/skia/src/opts/SkBlitRect_opts_SSE2.cpp
572+++ b/gfx/skia/src/opts/SkBlitRect_opts_SSE2.cpp
573@@ -112,17 +112,17 @@ void BlitRect32_OpaqueWide_SSE2(SkPMColo
574 }
575
576 void ColorRect32_SSE2(SkPMColor* destination,
577                       int width, int height,
578                       size_t rowBytes, uint32_t color) {
579     if (0 == height || 0 == width || 0 == color) {
580         return;
581     }
582-    unsigned colorA = SkGetPackedA32(color);
583+    //unsigned colorA = SkGetPackedA32(color);
584     //if (255 == colorA) {
585         //if (width < 31) {
586             //BlitRect32_OpaqueNarrow_SSE2(destination, width, height,
587                                          //rowBytes, color);
588         //} else {
589             //BlitRect32_OpaqueWide_SSE2(destination, width, height,
590                                        //rowBytes, color);
591         //}
592diff --git a/gfx/skia/src/ports/SkFontHost_mac_coretext.cpp b/gfx/skia/src/ports/SkFontHost_mac_coretext.cpp
593--- a/gfx/skia/src/ports/SkFontHost_mac_coretext.cpp
594+++ b/gfx/skia/src/ports/SkFontHost_mac_coretext.cpp
595@@ -75,20 +75,16 @@ static CGFloat CGRectGetMinY_inline(cons
596 static CGFloat CGRectGetMaxY_inline(const CGRect& rect) {
597     return rect.origin.y + rect.size.height;
598 }
599
600 static CGFloat CGRectGetWidth_inline(const CGRect& rect) {
601     return rect.size.width;
602 }
603
604-static CGFloat CGRectGetHeight(const CGRect& rect) {
605-    return rect.size.height;
606-}
607-
608 ///////////////////////////////////////////////////////////////////////////////
609
610 static void sk_memset_rect32(uint32_t* ptr, uint32_t value, size_t width,
611                              size_t height, size_t rowBytes) {
612     SkASSERT(width);
613     SkASSERT(width * sizeof(uint32_t) <= rowBytes);
614
615     if (width >= 32) {
616@@ -125,28 +121,30 @@ static void sk_memset_rect32(uint32_t* p
617                 *ptr++ = value;
618             } while (--w > 0);
619             ptr = (uint32_t*)((char*)ptr + rowBytes);
620             height -= 1;
621         }
622     }
623 }
624
625+#if 0
626 // Potentially this should be made (1) public (2) optimized when width is small.
627 // Also might want 16 and 32 bit version
628 //
629 static void sk_memset_rect(void* ptr, U8CPU byte, size_t width, size_t height,
630                            size_t rowBytes) {
631     uint8_t* dst = (uint8_t*)ptr;
632     while (height) {
633         memset(dst, byte, width);
634         dst += rowBytes;
635         height -= 1;
636     }
637 }
638+#endif
639
640 #include <sys/utsname.h>
641
642 typedef uint32_t CGRGBPixel;
643
644 static unsigned CGRGBPixel_getAlpha(CGRGBPixel pixel) {
645     return pixel & 0xFF;
646 }
647@@ -250,23 +248,16 @@ static CGAffineTransform MatrixToCGAffin
648     return CGAffineTransformMake(ScalarToCG(matrix[SkMatrix::kMScaleX]) * sx,
649                                  -ScalarToCG(matrix[SkMatrix::kMSkewY]) * sy,
650                                  -ScalarToCG(matrix[SkMatrix::kMSkewX]) * sx,
651                                  ScalarToCG(matrix[SkMatrix::kMScaleY]) * sy,
652                                  ScalarToCG(matrix[SkMatrix::kMTransX]) * sx,
653                                  ScalarToCG(matrix[SkMatrix::kMTransY]) * sy);
654 }
655
656-static void CGAffineTransformToMatrix(const CGAffineTransform& xform, SkMatrix* matrix) {
657-    matrix->setAll(
658-                   CGToScalar(xform.a), CGToScalar(xform.c), CGToScalar(xform.tx),
659-                   CGToScalar(xform.b), CGToScalar(xform.d), CGToScalar(xform.ty),
660-                   0, 0, SK_Scalar1);
661-}
662-
663 static SkScalar getFontScale(CGFontRef cgFont) {
664     int unitsPerEm = CGFontGetUnitsPerEm(cgFont);
665     return SkScalarInvert(SkIntToScalar(unitsPerEm));
666 }
667
668 ///////////////////////////////////////////////////////////////////////////////
669
670 #define BITMAP_INFO_RGB     (kCGImageAlphaNoneSkipFirst | kCGBitmapByteOrder32Host)
671@@ -1075,16 +1066,17 @@ static const uint8_t* getInverseTable(bo
672     if (!gInited) {
673         build_power_table(gWhiteTable, 1.5f);
674         build_power_table(gTable, 2.2f);
675         gInited = true;
676     }
677     return isWhite ? gWhiteTable : gTable;
678 }
679
680+#ifdef SK_USE_COLOR_LUMINANCE
681 static const uint8_t* getGammaTable(U8CPU luminance) {
682     static uint8_t gGammaTables[4][256];
683     static bool gInited;
684     if (!gInited) {
685 #if 1
686         float start = 1.1;
687         float stop = 2.1;
688         for (int i = 0; i < 4; ++i) {
689@@ -1097,45 +1089,49 @@ static const uint8_t* getGammaTable(U8CP
690         build_power_table(gGammaTables[2], 1);
691         build_power_table(gGammaTables[3], 1);
692 #endif
693         gInited = true;
694     }
695     SkASSERT(0 == (luminance >> 8));
696     return gGammaTables[luminance >> 6];
697 }
698+#endif
699
700+#ifndef SK_USE_COLOR_LUMINANCE
701 static void invertGammaMask(bool isWhite, CGRGBPixel rgb[], int width,
702                             int height, size_t rb) {
703     const uint8_t* table = getInverseTable(isWhite);
704     for (int y = 0; y < height; ++y) {
705         for (int x = 0; x < width; ++x) {
706             uint32_t c = rgb[x];
707             int r = (c >> 16) & 0xFF;
708             int g = (c >>  8) & 0xFF;
709             int b = (c >>  0) & 0xFF;
710             rgb[x] = (table[r] << 16) | (table[g] << 8) | table[b];
711         }
712         rgb = (CGRGBPixel*)((char*)rgb + rb);
713     }
714 }
715+#endif
716
717 static void cgpixels_to_bits(uint8_t dst[], const CGRGBPixel src[], int count) {
718     while (count > 0) {
719         uint8_t mask = 0;
720         for (int i = 7; i >= 0; --i) {
721             mask |= (CGRGBPixel_getAlpha(*src++) >> 7) << i;
722             if (0 == --count) {
723                 break;
724             }
725         }
726         *dst++ = mask;
727     }
728 }
729
730+#ifdef SK_USE_COLOR_LUMINANCE
731 static int lerpScale(int dst, int src, int scale) {
732     return dst + (scale * (src - dst) >> 23);
733 }
734
735 static CGRGBPixel lerpPixel(CGRGBPixel dst, CGRGBPixel src,
736                             int scaleR, int scaleG, int scaleB) {
737     int sr = (src >> 16) & 0xFF;
738     int sg = (src >>  8) & 0xFF;
739@@ -1147,37 +1143,31 @@ static CGRGBPixel lerpPixel(CGRGBPixel d
740     int rr = lerpScale(dr, sr, scaleR);
741     int rg = lerpScale(dg, sg, scaleG);
742     int rb = lerpScale(db, sb, scaleB);
743     return (rr << 16) | (rg << 8) | rb;
744 }
745
746 static void lerpPixels(CGRGBPixel dst[], const CGRGBPixel src[], int width,
747                        int height, int rowBytes, int lumBits) {
748-#ifdef SK_USE_COLOR_LUMINANCE
749     int scaleR = (1 << 23) * SkColorGetR(lumBits) / 0xFF;
750     int scaleG = (1 << 23) * SkColorGetG(lumBits) / 0xFF;
751     int scaleB = (1 << 23) * SkColorGetB(lumBits) / 0xFF;
752-#else
753-    int scale = (1 << 23) * lumBits / SkScalerContext::kLuminance_Max;
754-    int scaleR = scale;
755-    int scaleG = scale;
756-    int scaleB = scale;
757-#endif
758
759     for (int y = 0; y < height; ++y) {
760         for (int x = 0; x < width; ++x) {
761             // bit-not the src, since it was drawn from black, so we need the
762             // compliment of those bits
763             dst[x] = lerpPixel(dst[x], ~src[x], scaleR, scaleG, scaleB);
764         }
765         src = (CGRGBPixel*)((char*)src + rowBytes);
766         dst = (CGRGBPixel*)((char*)dst + rowBytes);
767     }
768 }
769+#endif
770
771 #if 1
772 static inline int r32_to_16(int x) { return SkR32ToR16(x); }
773 static inline int g32_to_16(int x) { return SkG32ToG16(x); }
774 static inline int b32_to_16(int x) { return SkB32ToB16(x); }
775 #else
776 static inline int round8to5(int x) {
777     return (x + 3 - (x >> 5) + (x >> 7)) >> 3;
778@@ -1212,22 +1202,21 @@ static inline uint32_t rgb_to_lcd32(CGRG
779     return SkPackARGB32(0xFF, r, g, b);
780 }
781
782 #define BLACK_LUMINANCE_LIMIT   0x40
783 #define WHITE_LUMINANCE_LIMIT   0xA0
784
785 void SkScalerContext_Mac::generateImage(const SkGlyph& glyph) {
786     CGGlyph cgGlyph = (CGGlyph) glyph.getGlyphID(fBaseGlyphCount);
787-
788     const bool isLCD = isLCDFormat(glyph.fMaskFormat);
789+#ifdef SK_USE_COLOR_LUMINANCE
790     const bool isBW = SkMask::kBW_Format == glyph.fMaskFormat;
791     const bool isA8 = !isLCD && !isBW;
792-
793-#ifdef SK_USE_COLOR_LUMINANCE
794+
795     unsigned lumBits = fRec.getLuminanceColor();
796     uint32_t xorMask = 0;
797
798     if (isA8) {
799         // for A8, we just want a component (they're all the same)
800         lumBits = SkColorGetR(lumBits);
801     }
802 #else
803diff --git a/gfx/skia/src/utils/mac/SkCreateCGImageRef.cpp b/gfx/skia/src/utils/mac/SkCreateCGImageRef.cpp
804--- a/gfx/skia/src/utils/mac/SkCreateCGImageRef.cpp
805+++ b/gfx/skia/src/utils/mac/SkCreateCGImageRef.cpp
806@@ -163,59 +163,8 @@ private:
807     CGPDFDocumentRef fDoc;
808 };
809
810 static void CGDataProviderReleaseData_FromMalloc(void*, const void* data,
811                                                  size_t size) {
812     sk_free((void*)data);
813 }
814
815-bool SkPDFDocumentToBitmap(SkStream* stream, SkBitmap* output) {
816-    size_t size = stream->getLength();
817-    void* ptr = sk_malloc_throw(size);
818-    stream->read(ptr, size);
819-    CGDataProviderRef data = CGDataProviderCreateWithData(NULL, ptr, size,
820-                                          CGDataProviderReleaseData_FromMalloc);
821-    if (NULL == data) {
822-        return false;
823-    }
824-
825-    CGPDFDocumentRef pdf = CGPDFDocumentCreateWithProvider(data);
826-    CGDataProviderRelease(data);
827-    if (NULL == pdf) {
828-        return false;
829-    }
830-    SkAutoPDFRelease releaseMe(pdf);
831-
832-    CGPDFPageRef page = CGPDFDocumentGetPage(pdf, 1);
833-    if (NULL == page) {
834-        return false;
835-    }
836-
837-    CGRect bounds = CGPDFPageGetBoxRect(page, kCGPDFMediaBox);
838-
839-    int w = (int)CGRectGetWidth(bounds);
840-    int h = (int)CGRectGetHeight(bounds);
841-
842-    SkBitmap bitmap;
843-    bitmap.setConfig(SkBitmap::kARGB_8888_Config, w, h);
844-    bitmap.allocPixels();
845-    bitmap.eraseColor(SK_ColorWHITE);
846-
847-    size_t bitsPerComponent;
848-    CGBitmapInfo info;
849-    getBitmapInfo(bitmap, &bitsPerComponent, &info, NULL);
850-
851-    CGColorSpaceRef cs = CGColorSpaceCreateDeviceRGB();
852-    CGContextRef ctx = CGBitmapContextCreate(bitmap.getPixels(), w, h,
853-                                             bitsPerComponent, bitmap.rowBytes(),
854-                                             cs, info);
855-    CGColorSpaceRelease(cs);
856-
857-    if (ctx) {
858-        CGContextDrawPDFPage(ctx, page);
859-        CGContextRelease(ctx);
860-    }
861-
862-    output->swap(bitmap);
863-    return true;
864-}
865-
866