Path: blob/aarch64-shenandoah-jdk8u272-b10/nashorn/test/examples/int-micro.js
32284 views
/*1* Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.2*3* Redistribution and use in source and binary forms, with or without4* modification, are permitted provided that the following conditions5* are met:6*7* - Redistributions of source code must retain the above copyright8* notice, this list of conditions and the following disclaimer.9*10* - Redistributions in binary form must reproduce the above copyright11* notice, this list of conditions and the following disclaimer in the12* documentation and/or other materials provided with the distribution.13*14* - Neither the name of Oracle nor the names of its15* contributors may be used to endorse or promote products derived16* from this software without specific prior written permission.17*18* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS19* IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,20* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR21* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR22* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,23* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,24* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR25* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF26* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING27* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS28* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.29*/303132function bench(name, func) {33var start = Date.now();34for (var iter = 0; iter < 5000000; iter++) {35func();36}37print(name + "\t" + (Date.now() - start));38}3940function uint32(value) {41return function() {42value >>> 0;43value >>> 0;44value >>> 0;45value >>> 0;46value >>> 0;47value >>> 0;48value >>> 0;49value >>> 0;50value >>> 0;51value >>> 0;52value >>> 0;53value >>> 0;54value >>> 0;55value >>> 0;56value >>> 0;57};58}5960function int32(value) {61return function() {62value >> 0;63value >> 0;64value >> 0;65value >> 0;66value >> 0;67value >> 0;68value >> 0;69value >> 0;70value >> 0;71value >> 0;72value >> 0;73value >> 0;74value >> 0;75value >> 0;76value >> 0;77};78}7980print("\nToUint32");81for (var i = 1; i < 3; i++) {82bench("infinity ", uint32(Infinity));83bench("infinity neg ", uint32(-Infinity));84bench("nan ", uint32(NaN));85bench("small ", uint32(1));86bench("small neg ", uint32(-1));87bench("small frac ", uint32(1.5));88bench("small neg frac", uint32(-1.5));89bench("large ", uint32(9223372036854775807));90bench("large neg ", uint32(-9223372036854775808));91}9293print("\nToInt32");94for (var i = 1; i < 3; i++) {95bench("infinity ", int32(Infinity));96bench("infinity neg ", int32(-Infinity));97bench("nan ", int32(NaN));98bench("small ", int32(1));99bench("small neg ", int32(-1));100bench("small frac ", int32(1.5));101bench("small neg frac", int32(-1.5));102bench("large ", int32(9223372036854775807));103bench("large neg ", int32(-9223372036854775808));104}105106107108109