Changeset 35022 in webkit for trunk/JavaScriptCore/kjs/IndexToNameMap.cpp
- Timestamp:
- Jul 5, 2008, 10:26:58 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/IndexToNameMap.cpp
r35021 r35022 42 42 43 43 IndexToNameMap::IndexToNameMap(JSFunction* func, const ArgList& args) 44 : m_size(args.size()) 45 , m_map(new Identifier[args.size()]) 44 46 { 45 _map = new Identifier[args.size()]; 46 this->size = args.size(); 47 48 unsigned i = 0; 49 ArgList::const_iterator end = args.end(); 50 for (ArgList::const_iterator it = args.begin(); it != end; ++i, ++it) 51 _map[i] = func->getParameterName(i); // null if there is no corresponding parameter 47 unsigned i = 0; 48 ArgList::const_iterator end = args.end(); 49 for (ArgList::const_iterator it = args.begin(); it != end; ++i, ++it) 50 m_map[i] = func->getParameterName(i); // null if there is no corresponding parameter 52 51 } 53 52 54 53 IndexToNameMap::~IndexToNameMap() 55 54 { 56 delete []_map;55 delete [] m_map; 57 56 } 58 57 59 58 bool IndexToNameMap::isMapped(const Identifier& index) const 60 59 { 61 bool indexIsNumber; 62 unsigned indexAsNumber = index.toStrictUInt32(&indexIsNumber); 63 64 if (!indexIsNumber) 65 return false; 66 67 if (indexAsNumber >= size) 68 return false; 60 bool indexIsNumber; 61 unsigned indexAsNumber = index.toStrictUInt32(&indexIsNumber); 69 62 70 if (_map[indexAsNumber].isNull()) 71 return false; 72 73 return true; 63 if (!indexIsNumber) 64 return false; 65 66 if (indexAsNumber >= m_size) 67 return false; 68 69 if (m_map[indexAsNumber].isNull()) 70 return false; 71 72 return true; 74 73 } 75 74 76 75 void IndexToNameMap::unMap(ExecState* exec, const Identifier& index) 77 76 { 78 bool indexIsNumber;79 unsigned indexAsNumber = index.toStrictUInt32(&indexIsNumber);77 bool indexIsNumber; 78 unsigned indexAsNumber = index.toStrictUInt32(&indexIsNumber); 80 79 81 ASSERT(indexIsNumber && indexAsNumber <size);82 83 _map[indexAsNumber] = exec->propertyNames().nullIdentifier;80 ASSERT(indexIsNumber && indexAsNumber < m_size); 81 82 m_map[indexAsNumber] = exec->propertyNames().nullIdentifier; 84 83 } 85 84 86 85 Identifier& IndexToNameMap::operator[](const Identifier& index) 87 86 { 88 bool indexIsNumber;89 unsigned indexAsNumber = index.toStrictUInt32(&indexIsNumber);87 bool indexIsNumber; 88 unsigned indexAsNumber = index.toStrictUInt32(&indexIsNumber); 90 89 91 ASSERT(indexIsNumber && indexAsNumber <size);92 93 return_map[indexAsNumber];90 ASSERT(indexIsNumber && indexAsNumber < m_size); 91 92 return m_map[indexAsNumber]; 94 93 } 95 94
Note:
See TracChangeset
for help on using the changeset viewer.