diff options
author | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:14 -0800 |
---|---|---|
committer | The Android Open Source Project <initial-contribution@android.com> | 2009-03-03 18:28:14 -0800 |
commit | f72d5de56a522ac3be03873bdde26f23a5eeeb3c (patch) | |
tree | 4b825dc642cb6eb9a060e54bf8d69288fbee4904 /vm/ReferenceTable.h | |
parent | 31e30105703263782efd450d356cd67ea01af3b7 (diff) | |
download | android_dalvik-f72d5de56a522ac3be03873bdde26f23a5eeeb3c.tar.gz android_dalvik-f72d5de56a522ac3be03873bdde26f23a5eeeb3c.tar.bz2 android_dalvik-f72d5de56a522ac3be03873bdde26f23a5eeeb3c.zip |
auto import from //depot/cupcake/@135843
Diffstat (limited to 'vm/ReferenceTable.h')
-rw-r--r-- | vm/ReferenceTable.h | 115 |
1 files changed, 0 insertions, 115 deletions
diff --git a/vm/ReferenceTable.h b/vm/ReferenceTable.h deleted file mode 100644 index f8f24610e..000000000 --- a/vm/ReferenceTable.h +++ /dev/null @@ -1,115 +0,0 @@ -/* - * Copyright (C) 2008 The Android Open Source Project - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -/* - * Maintain a table of references. Used for internal local references, - * JNI locals, JNI globals, and GC heap references. - * - * None of the table functions are synchronized. - */ -#ifndef _DALVIK_REFERENCETABLE -#define _DALVIK_REFERENCETABLE - -/* - * Table definition. - * - * The expected common operations are adding a new entry and removing a - * recently-added entry (usually the most-recently-added entry). - * - * If "allocEntries" is not equal to "maxEntries", the table may expand when - * entries are added, which means the memory may move. If you want to keep - * pointers into "table" rather than offsets, use a fixed-size table. - * - * (This structure is still somewhat transparent; direct access to - * table/nextEntry is allowed.) - */ -typedef struct ReferenceTable { - Object** table; /* top of the list */ - Object** nextEntry; /* bottom of the list */ - - int allocEntries; /* #of entries we have space for */ - int maxEntries; /* max #of entries allowed */ -} ReferenceTable; - -/* - * Initialize a ReferenceTable. - * - * If "initialCount" != "maxCount", the table will expand as required. - * - * Returns "false" if table allocation fails. - */ -bool dvmInitReferenceTable(ReferenceTable* pRef, int initialCount, - int maxCount); - -/* - * Clears out the contents of a ReferenceTable, freeing allocated storage. - * Does not free "pRef". - * - * You must call dvmInitReferenceTable() before you can re-use this table. - */ -void dvmClearReferenceTable(ReferenceTable* pRef); - -/* - * Return the #of entries currently stored in the ReferenceTable. - */ -INLINE size_t dvmReferenceTableEntries(const ReferenceTable* pRef) -{ - return pRef->nextEntry - pRef->table; -} - -/* - * Returns "true" if the table is full. The table is considered full if - * we would need to expand it to add another entry. - */ -INLINE size_t dvmIsReferenceTableFull(const ReferenceTable* pRef) -{ - return dvmReferenceTableEntries(pRef) == (size_t)pRef->allocEntries; -} - -/* - * Add a new entry. "obj" must be a valid non-NULL object reference - * (though it's okay if it's not fully-formed, e.g. the result from - * dvmMalloc doesn't have obj->clazz set). - * - * Returns "false" if the table is full. - */ -bool dvmAddToReferenceTable(ReferenceTable* pRef, Object* obj); - -/* - * Determine if "obj" is present in "pRef". Stops searching when we hit "top". - * To include the entire table, pass in "pRef->table" as the top. - * - * Returns NULL if "obj" was not found. - */ -Object** dvmFindInReferenceTable(const ReferenceTable* pRef, Object** top, - Object* obj); - -/* - * Remove an existing entry. - * - * We stop searching for a match after examining the element at "top". This - * is useful when entries are associated with a stack frame. - * - * Returns "false" if the entry was not found. - */ -bool dvmRemoveFromReferenceTable(ReferenceTable* pRef, Object** top, - Object* obj); - -/* - * Dump the contents of a reference table to the log file. - */ -void dvmDumpReferenceTable(const ReferenceTable* pRef, const char* descr); - -#endif /*_DALVIK_REFERENCETABLE*/ |