js/src/devtools/jint/sunspider/math-cordic.js

Sat, 03 Jan 2015 20:18:00 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Sat, 03 Jan 2015 20:18:00 +0100
branch
TOR_BUG_3246
changeset 7
129ffea94266
permissions
-rw-r--r--

Conditionally enable double key logic according to:
private browsing mode or privacy.thirdparty.isolate preference and
implement in GetCookieStringCommon and FindCookie where it counts...
With some reservations of how to convince FindCookie users to test
condition and pass a nullptr when disabling double key logic.

     1 /*
     2  * Copyright (C) Rich Moore.  All rights reserved.
     3  *
     4  * Redistribution and use in source and binary forms, with or without
     5  * modification, are permitted provided that the following conditions
     6  * are met:
     7  * 1. Redistributions of source code must retain the above copyright
     8  *    notice, this list of conditions and the following disclaimer.
     9  * 2. Redistributions in binary form must reproduce the above copyright
    10  *    notice, this list of conditions and the following disclaimer in the
    11  *    documentation and/or other materials provided with the distribution.
    12  *
    13  * THIS SOFTWARE IS PROVIDED BY CONTRIBUTORS ``AS IS'' AND ANY
    14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
    15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
    16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
    17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
    18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
    19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
    20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
    21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
    22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
    23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
    24  */
    26 /////. Start CORDIC
    28 var AG_CONST = 0.6072529350;
    30 function FIXED(X)
    31 {
    32   return X * 65536.0;
    33 }
    35 function FLOAT(X)
    36 {
    37   return X / 65536.0;
    38 }
    40 function DEG2RAD(X)
    41 {
    42   return 0.017453 * (X);
    43 }
    45 var Angles = [
    46   FIXED(45.0), FIXED(26.565), FIXED(14.0362), FIXED(7.12502),
    47   FIXED(3.57633), FIXED(1.78991), FIXED(0.895174), FIXED(0.447614),
    48   FIXED(0.223811), FIXED(0.111906), FIXED(0.055953),
    49   FIXED(0.027977) 
    50               ];
    53 function cordicsincos() {
    54     var X;
    55     var Y;
    56     var TargetAngle;
    57     var CurrAngle;
    58     var Step;
    60     X = FIXED(AG_CONST);         /* AG_CONST * cos(0) */
    61     Y = 0;                       /* AG_CONST * sin(0) */
    63     TargetAngle = FIXED(28.027);
    64     CurrAngle = 0;
    65   /* BEGIN LOOP */
    66     for (Step = 0; Step < 12; Step++) {
    67         var NewX;
    68         if (TargetAngle > CurrAngle) {
    69             NewX = X - (Y >> Step);
    70             Y = (X >> Step) + Y;
    71             X = NewX;
    72             CurrAngle += Angles[Step];
    73         } else {
    74             NewX = X + (Y >> Step);
    75             Y = -(X >> Step) + Y;
    76             X = NewX;
    77             CurrAngle -= Angles[Step];
    78         }
    79     }
    80   /* END LOOP */
    81 }
    83 ///// End CORDIC
    85 function cordic( runs ) {
    86   var start = new Date();
    88   /* BEGIN LOOP */
    89   for ( var i = 0 ; i < runs ; i++ ) {
    90       cordicsincos();
    91   }
    92   /* END LOOP */
    94   var end = new Date();
    96   return end.getTime() - start.getTime();
    97 }
    99 cordic(25000);

mercurial