Changeset 16613 in webkit for trunk/JavaScriptCore/kjs
- Timestamp:
- Sep 28, 2006, 2:11:30 AM (19 years ago)
- Location:
- trunk/JavaScriptCore/kjs
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/JavaScriptCore/kjs/function.cpp
r16608 r16613 152 152 void FunctionImp::addParameter(const Identifier &n) 153 153 { 154 parameters.append(Parameter(n)); 154 if (!parameters) 155 parameters.set(new Vector<Parameter>); 156 157 parameters->append(Parameter(n)); 155 158 } 156 159 157 160 UString FunctionImp::parameterString() const 158 161 { 159 UString s; 160 161 Vector<Parameter>::const_iterator end = parameters.end(); 162 for(Vector<Parameter>::const_iterator it = parameters.begin(); it < end; it++) { 162 UString s; 163 164 if (!parameters) 165 return s; 166 167 for (size_t i = 0; i < parameters->size(); ++i) { 163 168 if (!s.isEmpty()) 164 169 s += ", "; 165 s += it->name.ustring();166 } 167 168 return s;170 s += parameters->at(i).name.ustring(); 171 } 172 173 return s; 169 174 } 170 175 … … 173 178 void FunctionImp::processParameters(ExecState *exec, const List &args) 174 179 { 175 JSObject* variable = exec->context()->variableObject(); 180 if (!parameters) 181 return; 182 183 JSObject* variable = exec->context()->variableObject(); 176 184 177 185 #ifdef KJS_VERBOSE 178 fprintf(stderr, "---------------------------------------------------\n"186 fprintf(stderr, "---------------------------------------------------\n" 179 187 "processing parameters for %s call\n", 180 188 name().isEmpty() ? "(internal)" : name().ascii()); … … 184 192 185 193 JSValue *v = *it; 186 Vector<Parameter>::const_iterator end = parameters.end(); 187 for(Vector<Parameter>::iterator pit = parameters.begin(); pit < end; pit++) { 194 for (size_t i = 0; i < parameters->size(); ++i) { 188 195 if (it != args.end()) { 189 196 #ifdef KJS_VERBOSE 190 fprintf(stderr, "setting parameter %s ", p ->name.ascii());191 printInfo(exec, "to", *it);197 fprintf(stderr, "setting parameter %s ", parameters->at(i).name.ascii()); 198 printInfo(exec, "to", *it); 192 199 #endif 193 variable->put(exec, p it->name, v);200 variable->put(exec, parameters->at(i).name, v); 194 201 v = ++it; 195 202 } else 196 variable->put(exec, p it->name, jsUndefined());203 variable->put(exec, parameters->at(i).name, jsUndefined()); 197 204 } 198 205 #ifdef KJS_VERBOSE 199 206 else { 200 for (int i = 0; i < args.size(); i++)207 for (int i = 0; i < args.size(); ++i) 201 208 printInfo(exec,"setting argument", args[i]); 202 209 } … … 224 231 { 225 232 FunctionImp *thisObj = static_cast<FunctionImp *>(slot.slotBase()); 226 return jsNumber(thisObj->parameters .size());233 return jsNumber(thisObj->parameters ? thisObj->parameters->size() : 0); 227 234 } 228 235 … … 267 274 Identifier FunctionImp::getParameterName(int index) 268 275 { 269 if (static_cast<size_t>(index) > parameters.size()) 276 if (!parameters) 277 return Identifier::null(); 278 279 if (static_cast<size_t>(index) >= parameters->size()) 270 280 return Identifier::null(); 271 281 272 Identifier name = parameters [index].name;282 Identifier name = parameters->at(index).name; 273 283 274 284 // Are there any subsequent parameters with the same name? 275 Vector<Parameter>::const_iterator end = parameters.end(); 276 for (Vector<Parameter>::iterator it = &(parameters[index+1]); it < end; it++) 277 if (it->name == name) 285 for (size_t i = index + 1; i < parameters->size(); ++i) 286 if (parameters->at(i).name == name) 278 287 return Identifier::null(); 279 288 -
trunk/JavaScriptCore/kjs/function.h
r16607 r16613 94 94 virtual void mark(); 95 95 protected: 96 Vector<Parameter> parameters;96 OwnPtr<Vector<Parameter> > parameters; 97 97 98 98 private:
Note:
See TracChangeset
for help on using the changeset viewer.