< prev index next >

src/share/vm/opto/divnode.cpp

Print this page

        

*** 1,7 **** /* ! * Copyright (c) 1997, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. --- 1,7 ---- /* ! * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation.
*** 217,227 **** // Borrowed almost verbatim from Hacker's Delight by Henry S. Warren, Jr. with // minor type name and parameter changes. Adjusted to 64 bit word width. static bool magic_long_divide_constants(jlong d, jlong &M, jint &s) { int64_t p; uint64_t ad, anc, delta, q1, r1, q2, r2, t; ! const uint64_t two63 = 0x8000000000000000LL; // 2**63. ad = ABS(d); if (d == 0 || d == 1) return false; t = two63 + ((uint64_t)d >> 63); anc = t - 1 - t%ad; // Absolute value of nc. --- 217,227 ---- // Borrowed almost verbatim from Hacker's Delight by Henry S. Warren, Jr. with // minor type name and parameter changes. Adjusted to 64 bit word width. static bool magic_long_divide_constants(jlong d, jlong &M, jint &s) { int64_t p; uint64_t ad, anc, delta, q1, r1, q2, r2, t; ! const uint64_t two63 = UCONST64(0x8000000000000000); // 2**63. ad = ABS(d); if (d == 0 || d == 1) return false; t = two63 + ((uint64_t)d >> 63); anc = t - 1 - t%ad; // Absolute value of nc.
< prev index next >