1.1 --- a/src/share/vm/opto/runtime.cpp Tue Jul 02 07:51:31 2013 +0200 1.2 +++ b/src/share/vm/opto/runtime.cpp Tue Jul 02 20:42:12 2013 -0400 1.3 @@ -1,5 +1,5 @@ 1.4 /* 1.5 - * Copyright (c) 1998, 2012, Oracle and/or its affiliates. All rights reserved. 1.6 + * Copyright (c) 1998, 2013, Oracle and/or its affiliates. All rights reserved. 1.7 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 1.8 * 1.9 * This code is free software; you can redistribute it and/or modify it 1.10 @@ -829,6 +829,28 @@ 1.11 return TypeFunc::make(domain, range); 1.12 } 1.13 1.14 +/** 1.15 + * int updateBytesCRC32(int crc, byte* b, int len) 1.16 + */ 1.17 +const TypeFunc* OptoRuntime::updateBytesCRC32_Type() { 1.18 + // create input type (domain) 1.19 + int num_args = 3; 1.20 + int argcnt = num_args; 1.21 + const Type** fields = TypeTuple::fields(argcnt); 1.22 + int argp = TypeFunc::Parms; 1.23 + fields[argp++] = TypeInt::INT; // crc 1.24 + fields[argp++] = TypePtr::NOTNULL; // src 1.25 + fields[argp++] = TypeInt::INT; // len 1.26 + assert(argp == TypeFunc::Parms+argcnt, "correct decoding"); 1.27 + const TypeTuple* domain = TypeTuple::make(TypeFunc::Parms+argcnt, fields); 1.28 + 1.29 + // result type needed 1.30 + fields = TypeTuple::fields(1); 1.31 + fields[TypeFunc::Parms+0] = TypeInt::INT; // crc result 1.32 + const TypeTuple* range = TypeTuple::make(TypeFunc::Parms+1, fields); 1.33 + return TypeFunc::make(domain, range); 1.34 +} 1.35 + 1.36 // for cipherBlockChaining calls of aescrypt encrypt/decrypt, four pointers and a length, returning void 1.37 const TypeFunc* OptoRuntime::cipherBlockChaining_aescrypt_Type() { 1.38 // create input type (domain)