priv_tytypes.h revision 9bea4c13fca0e3bb4b719dcb3ed63d47d479294e
1e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 2e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*--------------------------------------------------------------------*/ 3e9629bad30a9f478b336ab46b8e6e02f7f87af46Evan Chu/*--- Representation of source level types. priv_tytypes.h ---*/ 4e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*--------------------------------------------------------------------*/ 5e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 6e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* 7e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project This file is part of Valgrind, a dynamic binary instrumentation 8e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project framework. 9e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 10e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Copyright (C) 2008-2010 OpenWorks LLP 11e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project info@open-works.co.uk 12e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 13e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project This program is free software; you can redistribute it and/or 14e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project modify it under the terms of the GNU General Public License as 15e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project published by the Free Software Foundation; either version 2 of the 16e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project License, or (at your option) any later version. 17e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 18e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project This program is distributed in the hope that it will be useful, but 195c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen WITHOUT ANY WARRANTY; without even the implied warranty of 20e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 21e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project General Public License for more details. 22e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 23e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project You should have received a copy of the GNU General Public License 24e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project along with this program; if not, write to the Free Software 25e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 26e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 02111-1307, USA. 27e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 28e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project The GNU General Public License is contained in the file COPYING. 29e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 30e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Neither the names of the U.S. Department of Energy nor the 31e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project University of California nor the names of its contributors may be 32e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project used to endorse or promote products derived from this software 33e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project without prior written permission. 34e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project*/ 35e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 36e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#ifndef __PRIV_TYTYPES_H 37e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define __PRIV_TYTYPES_H 38e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 39e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef 40e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project enum { 415c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen Te_EMPTY=10, /* empty (contains no info) */ 42e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_INDIR, /* indirection to some other TyEnt */ 43e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_UNKNOWN, /* denotes a unknown type/field/whatever */ 44e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_Atom, /* name & 64-bit const, iow, enumeration member */ 45e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_Field, /* struct/class field defn */ 46e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_Bound, /* array bounds indication, for one dimension */ 47e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyBase, /* base type */ 48e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyPorR, /* pointer or reference type */ 49e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyTyDef, /* a renaming of some other type */ 50e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyStOrUn, /* structure or union type */ 51e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyEnum, /* an enum type */ 52e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyArray, /* an array type */ 53e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyFn, /* function type */ 54e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyQual, /* qualified type */ 55e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Te_TyVoid /* void type */ 56e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 57e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TyEntTag; 58e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 59e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Fields ending in "R" are references to other TyEnts. Fields ending 60e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project in "Rs" are XArray*s of references to other TyEnts. */ 61e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef 62e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 63e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord cuOff; 64e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TyEntTag tag; 65e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project union { 66e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 67e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } EMPTY; 68e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 69e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord indR; 70e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } INDIR; 71e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 72e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } UNKNOWN; 73e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 74e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar* name; /* in mallocville */ 75e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Bool valueKnown; /* atoms w/ unknown value are possible */ 76e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Long value; 77e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } Atom; 78e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 79e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar* name; /* in mallocville */ 80e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord typeR; /* should be Te_TyXXXX */ 81e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project union { 82e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar* loc; /* location expr, in mallocville */ 83e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Word offset; /* or offset from the beginning of containing 84e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project entity */ 85e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } pos; 86e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Word nLoc; /* number of bytes in .pos.loc if >= 0, or -1 87e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project if .pos.offset should be used instead */ 88e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Bool isStruct; 89e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } Field; 90e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 91e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Bool knownL; 92e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Bool knownU; 93e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Long boundL; 94e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Long boundU; 95e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } Bound; 96e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 97e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar* name; /* in mallocville */ 98e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Int szB; 99e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar enc; /* S:signed U:unsigned F:floating C:complex float */ 100e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyBase; 101e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 102e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Int szB; 103e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord typeR; 104e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Bool isPtr; 105e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyPorR; 106e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 107e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar* name; /* in mallocville */ 108e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord typeR; /* MAY BE D3_INVALID_CUOFF, denoting unknown */ 109e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyTyDef; 110e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 111e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar* name; /* in mallocville */ 112e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord szB; 113e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project XArray* /* of UWord */ fieldRs; 114e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Bool complete; 115e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Bool isStruct; 116e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyStOrUn; 117e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 118e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar* name; /* in mallocville */ 119e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Int szB; 120e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project XArray* /* of UWord */ atomRs; 121e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyEnum; 122e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 123e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord typeR; 124e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project XArray* /* of UWord */ boundRs; 125e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyArray; 126e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 127e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyFn; 128e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 129e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UChar qual; /* C:const V:volatile */ 130e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord typeR; 131e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyQual; 132e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 133e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Bool isFake; /* True == introduced by the reader */ 134e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } TyVoid; 135e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } Te; 136e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 137e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TyEnt; 138e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 139e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Does this TyEnt denote a type, as opposed to some other kind of 140e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project thing? */ 141e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectBool ML_(TyEnt__is_type)( TyEnt* ); 142e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 143e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Print a TyEnt, debug-style. */ 144e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid ML_(pp_TyEnt)( TyEnt* ); 145e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 146e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Print a whole XArray of TyEnts, debug-style */ 147e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid ML_(pp_TyEnts)( XArray* tyents, HChar* who ); 148e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 149e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Print a TyEnt, C style, chasing stuff as necessary. */ 150e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid ML_(pp_TyEnt_C_ishly)( XArray* /* of TyEnt */ tyents, 151e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord cuOff ); 152e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 153e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Generates a total ordering on TyEnts based only on their .cuOff 154e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project fields. */ 155e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectWord ML_(TyEnt__cmp_by_cuOff_only) ( TyEnt* te1, TyEnt* te2 ); 156e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 157e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Generates a total ordering on TyEnts based on everything except 158e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project their .cuOff fields. */ 159e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectWord ML_(TyEnt__cmp_by_all_except_cuOff) ( TyEnt* te1, TyEnt* te2 ); 160e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 161e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Free up all directly or indirectly heap-allocated stuff attached to 162e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project this TyEnt, and set its tag to Te_EMPTY. The .cuOff field is 163e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project unchanged. */ 164e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid ML_(TyEnt__make_EMPTY) ( TyEnt* te ); 165e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 166e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* How big is this type? If .b in the returned struct is False, the 167e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project size is unknown. */ 168e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 169e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectMaybeULong ML_(sizeOfType)( XArray* /* of TyEnt */ tyents, 170e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord cuOff ); 171e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 172e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* Describe where in the type 'offset' falls. Caller must 173e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project deallocate the resulting XArray. */ 174e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectXArray* /*UChar*/ ML_(describe_type)( /*OUT*/PtrdiffT* residual_offset, 175e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project XArray* /* of TyEnt */ tyents, 176e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord ty_cuOff, 177e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project PtrdiffT offset ); 178e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 179e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 180e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/* A fast-lookup cache for ML_(TyEnts__index_by_cuOff). Nothing 181e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project particularly surprising here; it's 2 way set associative, with some 182e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project number of ways, doesn't particularly have to be a power of 2. In 183e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project order to have a way to indicate an invalid entry, we set the second 184e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project value of the pair to NULL, and keep checking for it, since 185e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project unfortunately there's no obvious cuOff number that we could put in 186e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project the first word of the pair that could indicate an invalid entry. 187e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 188e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 4096 arrived at as the best value for an E6600 loading Qt-4.4.1 189e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project Designer and all associated libraries, compiled by gcc-4.3.1, 190e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project -g -O, 64-bit, which is at least a moderately good stress test, 191e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project with the largest library being about 150MB.*/ 192e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 193e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#define N_TYENT_INDEX_CACHE 4096 194e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 195e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projecttypedef 196e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { 197e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project struct { UWord cuOff0; TyEnt* ent0; 198e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord cuOff1; TyEnt* ent1; } 199e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project ce[N_TYENT_INDEX_CACHE]; 200e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project } 201e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TyEntIndexCache; 202e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 203e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Projectvoid ML_(TyEntIndexCache__invalidate) ( TyEntIndexCache* cache ); 2045c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen 2055c65c3a0f42e174e47fecd4e569606003217ff4eMartijn Coenen/* 'ents' is an XArray of TyEnts, sorted by their .cuOff fields. Find 206e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project the entry which has .cuOff field as specified. Returns NULL if not 207e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project found. Asserts if more than one entry has the specified .cuOff 208e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project value. */ 209e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source ProjectTyEnt* ML_(TyEnts__index_by_cuOff) ( XArray* /* of TyEnt */ ents, 210e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project TyEntIndexCache* cache, 211e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project UWord cuOff_to_find ); 212e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 213e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project#endif /* ndef __PRIV_TYTYPES_H */ 214e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project 215e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*--------------------------------------------------------------------*/ 216e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*--- end priv_tytypes.h ---*/ 217e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project/*--------------------------------------------------------------------*/ 218e9df6ba5a8fcccf306a80b1670b423be8fe7746The Android Open Source Project