]>
Commit | Line | Data |
---|---|---|
81345200 A |
1 | === Safari-111 === |
2 | ||
3 | 2003-10-22 Maciej Stachowiak <mjs@apple.com> | |
4 | ||
5 | Fix broken build. | |
6 | ||
7 | * kjs/simple_number.h: | |
8 | ||
9 | 2003-10-22 Maciej Stachowiak <mjs@apple.com> | |
10 | ||
11 | Merged 64-bit compilation fixes, and fixes for handling negative 0 | |
12 | from upstream kjs. | |
13 | ||
14 | * kjs/internal.cpp: | |
15 | * kjs/simple_number.h: | |
16 | (KJS::SimpleNumber): fixed constants; added negZero constant. | |
17 | (KJS::SimpleNumber::is): adjusted to use long and not int. | |
18 | (KJS::SimpleNumber::value): ditto. | |
19 | (KJS::SimpleNumber::fits): ditto; also don't allow -0 to fit, so | |
20 | we don't lose the distinction between -0 and +0. | |
21 | (KJS::SimpleNumber::make): adjusted to use long. | |
22 | ||
23 | 2003-10-18 Darin Adler <darin@apple.com> | |
24 | ||
25 | Reviewed by Dave. | |
26 | ||
27 | - fixed 3367015 -- interdependent variable declarations in for loop don't work (they go backwards) | |
28 | ||
29 | * kjs/nodes.h: (KJS::ForNode::ForNode): Add a new overload of the constructor for when the | |
30 | first parameter is a variable declaration list. Call reverseList as we do in other constructors | |
31 | that take lists that are built backwards. | |
32 | * kjs/nodes.cpp: (ForNode::reverseList): Added. New helper function. | |
33 | ||
34 | === Safari-110 === | |
35 | ||
36 | === Safari-109 === | |
37 | ||
38 | 2003-10-06 Darin Adler <darin@apple.com> | |
39 | ||
40 | * kjs/create_hash_table: Remove stray semicolon. | |
41 | ||
42 | * kjs/array_object.lut.h: | |
43 | * kjs/date_object.lut.h: | |
44 | * kjs/lexer.lut.h: | |
45 | * kjs/math_object.lut.h: | |
46 | * kjs/number_object.lut.h: | |
47 | * kjs/string_object.lut.h: | |
48 | Regenerated. | |
49 | ||
50 | === Safari-108 === | |
51 | ||
52 | 2003-10-02 Darin Adler <darin@apple.com> | |
53 | ||
54 | Reviewed by Dave. | |
55 | ||
56 | - fixed 3441656 -- constructor bad for objs created w/ function as prototype (www.moock.org/asdg/codedepot) | |
57 | ||
58 | * kjs/nodes.cpp: (FuncDeclNode::processFuncDecl): Set up the constructor as | |
59 | as specified in the JavaScript spec. We were already doing this right in the | |
60 | other place we make functions. | |
61 | ||
62 | 2003-09-30 Darin Adler <darin@apple.com> | |
63 | ||
64 | Reviewed by Dave. | |
65 | ||
66 | Rolled in Harri Porten's change to accept non-breaking space in JavaScript. | |
67 | ||
68 | * kjs/lexer.cpp: (Lexer::isWhiteSpace): Accept 00A0 as "whitespace". | |
69 | ||
70 | 2003-09-25 Maciej Stachowiak <mjs@apple.com> | |
71 | ||
72 | Roll out build system change since it did not actually work. :-( | |
73 | ||
74 | * JavaScriptCore.pbproj/project.pbxproj: | |
75 | * Makefile.am: | |
76 | ||
77 | 2003-09-25 Maciej Stachowiak <mjs@apple.com> | |
78 | ||
79 | Reviewed by Darin. | |
80 | ||
81 | * JavaScriptCore.pbproj/project.pbxproj: Don't hack install name. Instead | |
82 | of embedding into Safari, embed into WebKit as sub-umbrella. | |
83 | * Makefile.am: Don't forget to rebuild if the user removes | |
84 | JavaScript.framework from symroots manually. | |
85 | ||
86 | === Safari-107 === | |
87 | ||
88 | 2003-09-24 Darin Adler <darin@apple.com> | |
89 | ||
90 | Reviewed by Ken. | |
91 | ||
92 | - fixed 3421107 -- some dates that other browsers can parse can't be parsed by KJS's Date.parse() | |
93 | ||
94 | * kjs/date_object.cpp: (KJS::KRFCDate_parseDate): Added code to be more strict about month names, | |
95 | to allow a time zone after date even if the date omits the time, and to understand AM and PM. | |
96 | ||
97 | 2003-09-22 Darin Adler <darin@apple.com> | |
98 | ||
99 | * JavaScriptCore.pbproj/project.pbxproj: Rename Mixed build style to OptimizedWithSymbols. | |
100 | ||
101 | 2003-09-22 Darin Adler <darin@apple.com> | |
102 | ||
103 | Reviewed by Ken. | |
104 | ||
105 | * kjs/config.h: Added HAVE_SYS_PARAM_H, since KJS does look for this header, and we do | |
106 | indeed have it. Just something I noticed in passing while cleaning up configure.in. | |
107 | ||
108 | 2003-09-20 Darin Adler <darin@apple.com> | |
109 | ||
110 | Reviewed by Dave. | |
111 | ||
112 | - fixed 3419380 -- JavaScript Date.getTimezoneOffset is off by one hour (during daylight savings) | |
113 | ||
114 | * kjs/date_object.cpp: (DateProtoFuncImp::call): The daylight savings correction | |
115 | in here was incorrect. Perhaps I should have corrected it for the non-BSD case too, | |
116 | but I'm not sure the issue is the same. | |
117 | ||
118 | 2003-09-17 Darin Adler <darin@apple.com> | |
119 | ||
120 | Reviewed by Maciej. | |
121 | ||
122 | * kjs/date_object.cpp: Removed our CF-based implementations of gmtime, localtime, | |
123 | mktime, timegm, and time, since they no longer have the slow "hit the filesystem | |
124 | every time" behavior. | |
125 | ||
126 | === Safari-100 === | |
127 | ||
128 | === Safari-99 === | |
129 | ||
130 | === Safari-98 === | |
131 | ||
132 | === Safari-97 === | |
133 | ||
134 | === Safari-96 === | |
135 | ||
136 | 2003-08-27 Maciej Stachowiak <mjs@apple.com> | |
137 | ||
138 | Reviewed by John | |
139 | ||
140 | - fixed rdar://problem/3397316 - sherlock crash: KJS::Collector::allocate(unsigned long) | |
141 | ||
142 | * kjs/internal.cpp: | |
143 | (InterpreterImp::InterpreterImp): Hold the lock a bit longer, so | |
144 | the call to initGlobalObject is covered. | |
145 | ||
146 | === Safari-95 === | |
147 | ||
148 | 2003-08-24 Darin Adler <darin@apple.com> | |
149 | ||
150 | Reviewed by John. | |
151 | ||
152 | - fixed 3098350 -- opt. params to date methods are ignored (can't set end date in Exchange/Outlook web cal.) | |
153 | ||
154 | * kjs/date_object.cpp: (DateProtoFuncImp::call): Added code to handle the optional parameters. | |
155 | Strangely, the table of functions already had the right number of parameters listed, but the | |
156 | code to look at the parameter values was missing. | |
157 | ||
158 | === Safari-94 === | |
159 | ||
160 | 2003-08-17 Darin Adler <darin@apple.com> | |
161 | ||
162 | Reviewed by Maciej. | |
163 | ||
164 | - fixed 3247528 -- encodeURI missing from JavaScriptCore (needed by Crystal Reports) | |
165 | - fixed 3381297 -- escape method does not escape the null character | |
166 | - fixed 3381299 -- escape method produces incorrect escape sequences ala WinIE, rather than correct ala Gecko | |
167 | - fixed 3381303 -- unescape method treats escape sequences as Latin-1 ala WinIE rather than as UTF-8 ala Gecko | |
168 | - fixed 3381304 -- unescape method garbles strings with bad escape sequences in them | |
169 | ||
170 | * kjs/function.h: Added constants for decodeURI, decodeURIComponent, encodeURI, and | |
171 | encodeURIComponent. | |
172 | * kjs/function.cpp: | |
173 | (encode): Added. New helper function for escape, encodeURI, and encodeURIComponent. | |
174 | (decode): Added. New helper function for unescape, decodeURI, and decodeURIComponent. | |
175 | (GlobalFuncImp::call): Added decodeURI, decodeURIComponent, encodeURI, and encodeURIComponent | |
176 | implementations. Changed escape and unescape to use new helper functions, which fixes | |
177 | the four problems above. | |
178 | ||
179 | * kjs/internal.cpp: (InterpreterImp::initGlobalObject): Add decodeURI, decodeURIComponent, | |
180 | encodeURI, and encodeURIComponent to the global object. | |
181 | ||
182 | * kjs/ustring.h: Added a length to the CString class so it can hold strings with null | |
183 | characters in them, not just null-terminated strings. This allows a null character from | |
184 | a UString to survive the process of UTF-16 to UTF-8 decoding. Added overloads to | |
185 | UString::append, UString::UTF8String, UTF8SequenceLength, decodeUTF8Sequence, | |
186 | convertUTF16OffsetsToUTF8Offsets, and convertUTF8OffsetsToUTF16Offsets. | |
187 | ||
188 | * kjs/ustring.cpp: | |
189 | (CString::CString): Set up the length properly in all the constructors. Also add a new | |
190 | constructor that takes a length. | |
191 | (CString::append): Use and set the length properly. | |
192 | (CString::operator=): Use and set the length properly. | |
193 | (operator==): Use and the length and memcmp instead of strcmp. | |
194 | (UString::append): Added new overloads for const char * and for a single string to make | |
195 | it more efficient to build up a UString from pieces. The old way, a UString was created | |
196 | and destroyed each time you appended. | |
197 | (UTF8SequenceLength): New. Helper for decoding UTF-8. | |
198 | (decodeUTF8Sequence): New. Helper for decoding UTF-8. | |
199 | (UString::UTF8String): New. Decodes from UTF-16 to UTF-8. Same as the function that | |
200 | was in regexp.cpp, except has proper handling for UTF-16 surrogates. | |
201 | (compareStringOffsets): Moved from regexp.cpp. | |
202 | (createSortedOffsetsArray): Moved from regexp.cpp. | |
203 | (convertUTF16OffsetsToUTF8Offsets): New. Converts UTF-16 offsets to UTF-8 offsets, given | |
204 | a UTF-8 string. Same as the function that was in regexp.cpp, except has proper handling | |
205 | for UTF-16 surrogates. | |
206 | (convertUTF8OffsetsToUTF16Offsets): New. Converts UTF-8 offsets to UTF-16 offsets, given | |
207 | a UTF-8 string. Same as the function that was in regexp.cpp, except has proper handling | |
208 | for UTF-16 surrogates. | |
209 | ||
210 | - fixed 3381296 -- regular expression matches with UTF-16 surrogates will treat sequences as two characters | |
211 | ||
212 | * kjs/regexp.cpp: | |
213 | (RegExp::RegExp): Use the new UString::UTF8String function instead a function in this file. | |
214 | (RegExp::match): Use the new convertUTF16OffsetsToUTF8Offsets (and the corresponding | |
215 | reverse) instead of convertCharacterOffsetsToUTF8ByteOffsets in this file. | |
216 | ||
217 | === Safari-93 === | |
218 | ||
219 | 2003-08-14 Vicki Murley <vicki@apple.com> | |
220 | ||
221 | Reviewed by John. | |
222 | ||
223 | * JavaScriptCore.pbproj/project.pbxproj: deleted JavaScriptCore.order from the project. | |
224 | ||
225 | 2003-08-14 Vicki Murley <vicki@apple.com> | |
226 | ||
227 | Reviewed by John. | |
228 | ||
229 | * JavaScriptCore.order: Removed. We now link to the order file at /AppleInternal/OrderFiles. | |
230 | * JavaScriptCore.pbproj/project.pbxproj: change sectorder flag to point to /AppleInternal/OrderFiles/JavaScriptCore.order | |
231 | ||
232 | === JavaScriptCore-92.1 === | |
233 | ||
234 | 2003-08-07 Darin Adler <darin@apple.com> | |
235 | ||
236 | Reviewed by John Sullivan. | |
237 | ||
238 | - fixed 3365527 -- subscripting JavaScript strings does not work (leads to hang at www.newmagna.com.au) | |
239 | ||
240 | The JavaScript specification says nothing about this, but other browsers seem to give | |
241 | read-only access to the characters in a string as if the string was an array of characters. | |
242 | ||
243 | * kjs/array_object.cpp: | |
244 | (ArrayInstanceImp::get): Update to use a public toArrayIndex function instead of our own getArrayIndex | |
245 | function, so we can share with string. | |
246 | (ArrayInstanceImp::put): Ditto. | |
247 | (ArrayInstanceImp::hasProperty): Ditto. | |
248 | (ArrayInstanceImp::setLength): Ditto. | |
249 | ||
250 | * kjs/ustring.h: Add toArrayIndex. | |
251 | * kjs/ustring.cpp: (UString::toArrayIndex): Added. Implements the rule from array. | |
252 | * kjs/identifier.h: Add a forwarding function so we can use toArrayIndex. | |
253 | ||
254 | * kjs/string_object.cpp: | |
255 | (StringInstanceImp::get): Return a single character string if the property name is an array index. | |
256 | (StringInstanceImp::hasProperty): Return true for property names that are suitable array indices. | |
257 | ||
258 | * JavaScriptCore.pbproj/project.pbxproj: Let Xcode be Xcode. | |
259 | ||
260 | === Safari-92 === | |
261 | ||
262 | 2003-08-07 Maciej Stachowiak <mjs@apple.com> | |
263 | ||
264 | Reviewed by Darin. | |
265 | ||
266 | - fixed 3366975 - repro hang in KJS::Value::Value entering text at eil.com | |
267 | ||
268 | * kjs/string_object.cpp: | |
269 | (StringProtoFuncImp::call): When doing a match against a regexp | |
270 | with the global flag set, make sure to return null rather than an | |
271 | empty array when there is no match. This is what other browsers do. | |
272 | ||
273 | 2003-08-05 Maciej Stachowiak <mjs@apple.com> | |
274 | ||
275 | Reviewed by John. | |
276 | ||
277 | * kjs/list.cpp: | |
278 | (List::copyTail): Test for loop termination with < instead of !=, | |
279 | since i starts at 1 but size could be 0. Do the same for the other | |
280 | loop for consistency's sake. | |
281 | ||
282 | 2003-08-01 Maciej Stachowiak <mjs@apple.com> | |
283 | ||
284 | Reviewed by John. | |
285 | ||
286 | - fixed 3222621 - Cryptic "anonymous function hack" messages in console (10.2.4) | |
287 | ||
288 | * kjs/lexer.cpp: | |
289 | (Lexer::lex): Remove useless debug spew. | |
290 | ||
291 | === Safari-91 === | |
292 | ||
293 | 2003-07-30 Darin Adler <darin@apple.com> | |
294 | ||
295 | Reviewed by Dave. | |
296 | ||
297 | - fixed problem where some JavaScriptCore symbols had no namespace or prefix | |
298 | ||
299 | * kjs/grammar.y: Added a define for yylloc to make it use the kjs prefix. | |
300 | This is the same thing done for the rest of the symbols automatically by yacc, | |
301 | but for some reason it's not done for yyloc. Also make automatic() function static. | |
302 | * kjs/grammar.cpp: Regenerated. | |
303 | * kjs/lexer.cpp: Use kjsyylloc instead of yyloc. | |
304 | ||
305 | * pcre/pcre.h: Add defines to prepend kjs prefixes for all the PCRE functions. | |
306 | ||
307 | 2003-07-30 Darin Adler <darin@apple.com> | |
308 | ||
309 | * Makefile.am: Include the subdirectory with the PCRE code in it. | |
310 | ||
311 | 2003-07-30 John Sullivan <sullivan@apple.com> | |
312 | ||
313 | - JavaScriptCore part of fix for 3284525 -- AutoFill fills in | |
314 | only e-mail address field of New Account form on Apple Store Japan | |
315 | ||
316 | Reviewed by Darin | |
317 | ||
318 | * JavaScriptCore.pbproj/project.pbxproj: | |
319 | Mark pcre.h as a Private header | |
320 | ||
321 | 2003-07-28 Maciej Stachowiak <mjs@apple.com> | |
322 | ||
323 | Reviewed by Richard. | |
324 | ||
325 | - fixed 3240814 - LEAK: 120 byte leak in JavaScript parser in Sherlock Movies channel | |
326 | ||
327 | * kjs/internal.cpp: | |
328 | (Parser::parse): ref() and deref() the program node, to make sure to clean up properly, | |
329 | before deleting it. | |
330 | (InterpreterImp::checkSyntax): Likewise. | |
331 | ||
332 | === Safari-90 === | |
333 | ||
334 | 2003-07-22 Maciej Stachowiak <mjs@apple.com> | |
335 | ||
336 | Reviewed by John. | |
337 | ||
338 | Remove -seg_addr_table_filename to fix build. | |
339 | ||
340 | * JavaScriptCore.pbproj/project.pbxproj: | |
341 | ||
342 | 2003-07-17 Maciej Stachowiak <mjs@apple.com> | |
343 | ||
344 | Reviewed by John. | |
345 | ||
346 | - fixed 3330344 - Please change allowable client to "JavaScriptGlue" from "JSGlue" | |
347 | ||
348 | * JavaScriptCore.pbproj/project.pbxproj: Changed allowable client | |
349 | to "JavaScriptGlue" | |
350 | ||
351 | 2003-07-13 Darin Adler <darin@apple.com> | |
352 | ||
353 | Reviewed by Maciej. | |
354 | ||
355 | - do some improvements Maciej suggested while reviewing the array index change | |
356 | ||
357 | * kjs/array_object.cpp: | |
358 | (getArrayIndex): Return a flag to say whether the index was value separately, to avoid | |
359 | in-band signalling. | |
360 | (ArrayInstanceImp::get): Update for new getArrayIndex parameters. | |
361 | (ArrayInstanceImp::put): Ditto. | |
362 | (ArrayInstanceImp::hasProperty): Ditto. | |
363 | (ArrayInstanceImp::setLength): Ditto. | |
364 | ||
365 | * kjs/ustring.cpp: (UString::toStrictUInt32): Check for overflow in a way that avoids doing | |
366 | a divide every time through the loop. But note that it adds an extra branch to the loop. | |
367 | I wonder which is worse. | |
368 | ||
369 | 2003-07-12 Darin Adler <darin@apple.com> | |
370 | ||
371 | Fixed broken build. | |
372 | ||
373 | * kjs/identifier.h: Add toULong back. It's still used in WebCore (and maybe in JavaScriptGlue, | |
374 | for all I know). | |
375 | ||
376 | 2003-07-12 Darin Adler <darin@apple.com> | |
377 | ||
378 | Reviewed by Dave. | |
379 | ||
380 | - fixed 3272777 -- array object indices treated as integers by Safari, but as strings in other web browsers | |
381 | ||
382 | JavaScriptCore did not implement the proper rule for what an array index is. | |
383 | ||
384 | * kjs/array_object.cpp: | |
385 | (getArrayIndex): Added. Implements the rule from the specification, which also provides a handy | |
386 | "not an array index" value of 2^32-1. | |
387 | (ArrayInstanceImp::get): Use getArrayIndex. | |
388 | (ArrayInstanceImp::put): Ditto. | |
389 | (ArrayInstanceImp::hasProperty): Ditto. | |
390 | (ArrayInstanceImp::setLength): Ditto. | |
391 | ||
392 | * kjs/identifier.h: Removed now-unused toULong, and added toStrictUInt32, in both cases forwarding | |
393 | functions that forward to UString. | |
394 | ||
395 | * kjs/ustring.h: Added toStringUInt32. | |
396 | * kjs/ustring.cpp: (UString::toStrictUInt32): Added. Converts a string to a 32-bit unsigned integer, | |
397 | and rejects any string that does not exactly match the way the integer would be formatted on output. | |
398 | This is the rule documented in the ECMA language standard. | |
399 | ||
400 | === Safari-89 === | |
401 | ||
402 | 2003-07-10 Maciej Stachowiak <mjs@apple.com> | |
403 | ||
404 | Reviewed by Darin. | |
405 | ||
406 | - fixed 3302021 - v74 and v85 hang with http://e-www.motorola.com/ | |
407 | ||
408 | The crux of this was saving and restoring the prototype objects | |
409 | for all the standard types when saving and restoring for the page | |
410 | cache. | |
411 | ||
412 | * kjs/internal.cpp: | |
413 | (InterpreterImp::saveBuiltins): | |
414 | (InterpreterImp::restoreBuiltins): | |
415 | * kjs/internal.h: | |
416 | * kjs/interpreter.cpp: | |
417 | (Interpreter::saveBuiltins): | |
418 | (Interpreter::restoreBuiltins): | |
419 | (SavedBuiltins::SavedBuiltins): | |
420 | (SavedBuiltins::~SavedBuiltins): | |
421 | * kjs/interpreter.h: | |
422 | * kjs/property_map.cpp: | |
423 | ||
424 | 2003-07-07 Maciej Stachowiak <mjs@apple.com> | |
425 | ||
426 | Reviewed by John. | |
427 | ||
428 | - fixed 3295916 - b/c JavaScriptCore and WebCore are installing in wrong location, private headers are public | |
429 | ||
430 | * WebCore.pbproj/project.pbxproj: Install in WebKit.framework/Versions/A/Frameworks. | |
431 | ||
432 | === Safari-88 === | |
433 | ||
434 | 2003-07-02 Maciej Stachowiak <mjs@apple.com> | |
435 | ||
436 | Reviewed by Ken. | |
437 | ||
438 | - fixed 3096961 - JavaScriptCore should link only to what it uses, shouldn't drag in Cocoa.framework | |
439 | ||
440 | * JavaScriptCore.pbproj/project.pbxproj: Don't link Cocoa.framework; | |
441 | just pull in CoreFoundation and CoreServices. | |
442 | * kjs/date_object.cpp: Include CoreServices.h instead of Carbon.h | |
443 | (the stuff we want is in CarbonCore). | |
444 | ||
445 | 2003-06-20 Darin Adler <darin@apple.com> | |
446 | ||
447 | Reviewed by Maciej. | |
448 | ||
449 | - improved the property map sorting technique so that the indices | |
450 | are separate for each property map, and also preserve the ordering | |
451 | when property maps are saved and restored | |
452 | ||
453 | * kjs/property_map.cpp: | |
454 | (PropertyMap::put): Don't bother setting the index for _singleEntry, since there's | |
455 | no need to sort a single entry. Use the per-table lastIndexUsed instead of a global. | |
456 | (PropertyMap::expand): Don't use the index (uninitialized now) out of a _singleEntry | |
457 | when putting it in a newly-created map; just use 0. Compute a value for the new map's | |
458 | lastIndexUsed as we walk through the elements we are adding to it (using the same old | |
459 | indices from the old map). | |
460 | ||
461 | === Safari-85.1 === | |
462 | ||
463 | === Safari-85 === | |
464 | ||
465 | 2003-06-13 Darin Adler <darin@apple.com> | |
466 | ||
467 | Reviewed by Dave. | |
468 | ||
469 | - fixed 3178438 -- return elements in order of addition in for..in loop (other browsers seem to) | |
470 | - fixed 3292067 -- REGRESSION (64-65): albertsons.com "Shop A to Z" menus are not sorted alphabetically | |
471 | ||
472 | * kjs/property_map.h: Add index field to hash table entry and index parameter to insert function. | |
473 | * kjs/property_map.cpp: | |
474 | (PropertyMap::put): Set an index for new map entries to an ever-increasing number based on a global. | |
475 | (PropertyMap::insert): Take an index parameter. | |
476 | (PropertyMap::expand): Preserve the indices as we rehash the table. | |
477 | (comparePropertyMapEntryIndices): Added. Compares two property map entries by index. | |
478 | (PropertyMap::addEnumerablesToReferenceList): Sort the proprty map entries by index before adding | |
479 | them to the reference list. | |
480 | ||
481 | === Safari-84 === | |
482 | ||
483 | 2003-06-10 Vicki Murley <vicki@apple.com> | |
484 | ||
485 | Reviewed by john. | |
486 | ||
487 | * JavaScriptCore.order: new order file for 1.0 | |
488 | ||
489 | === Safari-83 === | |
490 | ||
491 | 2003-06-04 Darin Adler <darin@apple.com> | |
492 | ||
493 | Reviewed by Dave. | |
494 | ||
495 | - fixed 3224031 -- can't search at rakuten.co.jp b/c of extra characters inserted by regexp replace (8-bit char) | |
496 | ||
497 | Use PCRE UTF-8 regular expressions instead of just chopping off high bytes. | |
498 | ||
499 | * kjs/regexp.h: Redo field names, remove some unused stuff. | |
500 | * kjs/regexp.cpp: | |
501 | (convertToUTF8): Added. | |
502 | (compareStringOffsets): Added. | |
503 | (createSortedOffsetsArray): Added. | |
504 | (convertCharacterOffsetsToUTF8ByteOffsets): Added. | |
505 | (convertUTF8ByteOffsetsToCharacterOffsets): Added. | |
506 | (RegExp::RegExp): Set the PCRE_UTF8 flag, and convert the UString to UTF-8 instead of | |
507 | using ascii() on it. | |
508 | (RegExp::~RegExp): Remove unneeded if statement (pcre_free is 0-tolerant as free is). | |
509 | (RegExp::match): Convert the UString to UTF-8 and convert the character offsets to and | |
510 | from UTF-8 byte offsets. Also do fixes for the "no offset vector" case so we get the | |
511 | correct position and matched string. | |
512 | ||
513 | * JavaScriptCore.pbproj/project.pbxproj: Add a PCRE header that was missing before. | |
514 | ||
515 | === Safari-82 === | |
516 | ||
517 | === Safari-81 === | |
518 | ||
519 | 2003-05-21 Vicki Murley <vicki@apple.com> | |
520 | ||
521 | Reviewed by john | |
522 | - fixed 3234553: Safari and its frameworks should link using order files | |
523 | ||
524 | * JavaScriptCore.order: Added. | |
525 | * JavaScriptCore.pbproj/project.pbxproj: set SECTORDER_FLAGS = -sectorder __TEXT __text JavaScriptCore.order | |
526 | ||
527 | === Safari-80 === | |
528 | ||
529 | 2003-05-19 Maciej Stachowiak <mjs@apple.com> | |
530 | ||
531 | - fixed 3261096 - Make WebKit an umbrella framework | |
532 | ||
533 | * JavaScriptCore.pbproj/project.pbxproj: In a B&I build, compile as a | |
534 | sub-umbrella of WebKit. | |
535 | ||
536 | 2003-05-16 Maciej Stachowiak <mjs@apple.com> | |
537 | ||
538 | Reviewed by Ken. | |
539 | ||
540 | - fixed 3254063 - REGRESSION: hang in KJS PropertyMap with many items in iDisk pictures folder | |
541 | ||
542 | * kjs/property_map.cpp: | |
543 | (PropertyMap::expand): Fixed to maintain key count properly - otherwise the hashtable | |
544 | could get completely full, resulting in disaster. | |
545 | (PropertyMap::checkConsistency): Fixed compilation. Fixed to know about deleted | |
546 | sentinel. Fixed to search with double-hashing instead of linear probing. | |
547 | ||
548 | === Safari-79 === | |
549 | ||
550 | 2003-05-15 Maciej Stachowiak <mjs@apple.com> | |
551 | ||
552 | Reviewed by Chris. | |
553 | ||
554 | - fixed 3259673 - REGRESSION: marvel.com thinks I don't have the flash plugin any more | |
555 | ||
556 | * kjs/nodes.cpp: | |
557 | (ContinueNode::execute): Return a Continue completion, not a Break | |
558 | completion, in the normal non-exception case. | |
559 | ||
560 | 2003-05-12 Maciej Stachowiak <mjs@apple.com> | |
561 | ||
562 | Reviewed by Darin. | |
563 | ||
564 | - fixed 3254484 - Add a way to print JavaScript exceptions to the console via the debug menu | |
565 | - improved JavaScript error message format | |
566 | ||
567 | * kjs/error_object.cpp: | |
568 | (ErrorProtoFuncImp::call): Include line number in toString output. | |
569 | * kjs/internal.cpp: | |
570 | (Parser::parse): Remove redundant fprintf. | |
571 | * kjs/interpreter.cpp: | |
572 | (Interpreter::evaluate): Log if the flag is on. Include filename in log output. | |
573 | (Interpreter::shouldPrintExceptions): Check the global flag. | |
574 | (Interpreter::setShouldPrintExceptions): Set the global flag. | |
575 | * kjs/interpreter.h: | |
576 | * kjs/nodes.cpp: | |
577 | (Node::throwError): Add variants that include value and expression or label in format. | |
578 | (NewExprNode::evaluate): Improve error message. | |
579 | (FunctionCallNode::evaluate): Improve error message. | |
580 | (RelationalNode::evaluate): Improve error message. | |
581 | (ContinueNode::execute): Improve error message. | |
582 | (BreakNode::execute): Improve error message. | |
583 | (LabelNode::execute): Improve error message. | |
584 | * kjs/nodes.h: | |
585 | ||
586 | === Safari-78 === | |
587 | ||
588 | 2003-05-07 Vicki Murley <vicki@apple.com> | |
589 | ||
590 | Reviewed by darin. | |
591 | ||
592 | - modify the Mixed build style to build optimized with symbols | |
593 | ||
594 | * JavaScriptCore.pbproj/project.pbxproj: removed OPTIMIZATION_CFLAGS | |
595 | ||
596 | 2003-05-05 Maciej Stachowiak <mjs@apple.com> | |
597 | ||
598 | Reviewed by Don. | |
599 | ||
600 | - fixed 3239961 - www.phiffer.com doesn't work; uses "var top; top = n;" | |
601 | ||
602 | * kjs/nodes.cpp: | |
603 | (VarDeclNode::evaluate): Check if the property exists with | |
604 | getDirect() instead of hasProperty(). | |
605 | ||
606 | === Safari-77 === | |
607 | ||
608 | 2003-04-29 Darin Adler <darin@apple.com> | |
609 | ||
610 | Reviewed by John. | |
611 | ||
612 | - fixed 2959353 -- eliminate globally initialized objects from JavaScriptCore | |
613 | ||
614 | * JavaScriptCore.pbproj/project.pbxproj: Added fpconst.cpp. | |
615 | * kjs/fpconst.cpp: Added. Defines KJS::NaN and KJS::Inf in a way that does not require a | |
616 | framework init routine. | |
617 | ||
618 | * kjs/identifier.h: Use a new KJS_IDENTIFIER_EACH_GLOBAL macro so we can do things to | |
619 | the entire set of identifiers easily. Also added an init function that sets up these globals | |
620 | in a way that does not require a framework init routine. | |
621 | * kjs/identifier.cpp: (Identifier::init): Initialize the property ane globals in a way that | |
622 | does not require a framework init routine. | |
623 | ||
624 | * kjs/internal.cpp: (InterpreterImp::initGlobalObject): Call Identifier::init. | |
625 | ||
626 | * kjs/ustring.h: Remove UChar::null and UString::null, and add UString::null(). We can't have | |
627 | a global object of a class that has a constructor if we want to avoid framework init routines, | |
628 | and luckily very little code relies on these. | |
629 | * kjs/ustring.cpp: | |
630 | (UCharReference::ref): Use our own global specific to this function rather than returning | |
631 | UChar::null when past the end of the string. This is dangerous because if the caller modifies | |
632 | it, that affects what all subsequent callers will see. | |
633 | (UString::Rep::create): Added assertions. | |
634 | (UString::UString): Got rid of code here that used to set up UString::null. | |
635 | (UString::null): Added. Returns a global null string, and can be used in some of the places | |
636 | where we used to use the UString::null global. | |
637 | (UString::operator[]): Fixed case where this used to return UChar::null to return '\0' instead. | |
638 | ||
639 | * kjs/regexp.cpp: (RegExp::match): Change uses of UString::null to UString::null(). | |
640 | ||
641 | 2003-04-25 Darin Adler <darin@apple.com> | |
642 | ||
643 | - fixed 3241344 -- REGRESSION: top of page missing on wired.com and cnn.com | |
644 | ||
645 | Caused by the ResolveNode speedup. Roll it out until I can figure out why. | |
646 | ||
647 | * kjs/nodes.cpp: (ResolveNode::evaluate): Go back to using evaluateReference. | |
648 | ||
649 | 2003-04-25 Darin Adler <darin@apple.com> | |
650 | ||
651 | Reviewed by Maciej. | |
652 | ||
653 | - a couple improvements that give a 6.6% speedup on iBench JavaScript | |
654 | ||
655 | * kjs/nodes.cpp: (ResolveNode::evaluate): Don't use evaluateReference. | |
656 | ||
657 | * kjs/object.cpp: (ObjectImp::get): Do the prototype work with the ValueImp, not a wrapper. | |
658 | Contributes a tiny bit to the speedup, but cleaner anyway. | |
659 | (ObjectImp::hasProperty): Same thing here. | |
660 | ||
661 | 2003-04-25 Darin Adler <darin@apple.com> | |
662 | ||
663 | Reviewed by Maciej. | |
664 | ||
665 | - move from linear probing to double hashing, gives an 0.7% speedup in iBench JavaScript | |
666 | ||
667 | * kjs/property_map.h: Remove the hash function. | |
668 | * kjs/property_map.cpp: Added statistics for rehashes and removes. | |
669 | Moved from linear probing to double hashing, using the hash modulo | |
670 | (table size minus one) plus one for the probing distance. | |
671 | ||
672 | * kjs/ustring.h: Use unsigned instead of int for hash function result. | |
673 | ||
674 | === Safari-75 === | |
675 | ||
676 | 2003-04-18 Maciej Stachowiak <mjs@apple.com> | |
677 | ||
678 | Reviewed by Ken. | |
679 | ||
680 | Improved List pool for 3% speed improvement on cvs-js-ibench | |
681 | ||
682 | * kjs/list.cpp: Replaced the roving cursor with a free list and | |
683 | raised the high water mark to 384. | |
684 | ||
685 | 2003-04-12 Maciej Stachowiak <mjs@apple.com> | |
686 | ||
687 | Reviewed by Don. | |
688 | ||
689 | - JavaScriptCore part of fix for 3158769 - JavaScript triggers not as async as they used to be | |
690 | ||
691 | Added a way to get the current interpreter lock count, so Sherlock | |
692 | can unlock the interpreter inside JS method implementations that | |
693 | spend a long time waiting for I/O, allowing more efficient | |
694 | multi-threaded operation. | |
695 | ||
696 | * kjs/internal.cpp: | |
697 | (lockInterpreter): | |
698 | (unlockInterpreter): | |
699 | (InterpreterImp::lock): | |
700 | (InterpreterImp::lockCount): | |
701 | * kjs/internal.h: | |
702 | * kjs/interpreter.cpp: | |
703 | (Interpreter::lockCount): | |
704 | * kjs/interpreter.h: | |
705 | ||
706 | === Safari-73 === | |
707 | ||
708 | === Safari-72 === | |
709 | ||
710 | === Safari-71 === | |
711 | ||
712 | 2003-03-31 Darin Adler <darin@apple.com> | |
713 | ||
714 | * English.lproj/InfoPlist.strings: Changed "1.0 Beta" to "1.0 Beta 2". | |
715 | * JavaScriptCore.pbproj/project.pbxproj: Changed "1.0 Beta" to "1.0 Beta 2". | |
716 | ||
717 | === Safari-69 === | |
718 | ||
719 | 2003-03-24 Trey Matteson <trey@apple.com> | |
720 | ||
721 | Pass -seg_addr_table_filename <FILENAME> to ld. This makes our frameworks in | |
722 | SYMROOT actually work for symbol resolution because they will have the correct | |
723 | prebinding address. It also fixes obscure B&I problems with prebinding | |
724 | reported by Matt Reda. | |
725 | ||
726 | Note the reason all this is tricky for our projects is that we have a different | |
727 | install location for Jaguar and Panther. The purpose of this arg is to declare | |
728 | at link time our eventual location, which allows the prebinding address to be | |
729 | found in /AppleInternal/Developer/seg_addr_table. We use a funky back-tick | |
730 | expression within OTHER_LDFLAGS to get a conditional value depending on the | |
731 | build train we are in. | |
732 | ||
733 | This can all go away once we only build on Panther and don't embed the | |
734 | frameworks inside the Safari.app wrapper. | |
735 | ||
736 | In addition I fixed the OTHER_LDFLAGS settings in our build styles to be | |
737 | additive instead of overriding, so we have the args we used for B&I in force | |
738 | when building outside of B&I. | |
739 | ||
740 | Reviewed by Maciej. | |
741 | ||
742 | * JavaScriptCore.pbproj/project.pbxproj: | |
743 | ||
744 | === Safari-68 === | |
745 | ||
746 | 2003-03-16 Trey Matteson <trey@apple.com> | |
747 | ||
748 | 3198135 - need to fix our projects so SYMROOT is not stripped | |
749 | ||
750 | Tweaked stripping options: B&I build does not COPY_PHASE_STRIP. | |
751 | Deployment build still does. | |
752 | We strip manually as part of the install that we do ourselves. | |
753 | ||
754 | Reviewed by Maciej. | |
755 | ||
756 | * JavaScriptCore.pbproj/project.pbxproj: | |
757 | ||
758 | === Safari-67 === | |
759 | ||
760 | === Safari-66 === | |
761 | ||
762 | 2003-03-10 Darin Adler <darin@apple.com> | |
763 | ||
764 | Reviewed by Ken. | |
765 | ||
766 | - fixed 3193099 -- date parsing can't handle the time zone format that date formatting produces | |
767 | ||
768 | * kjs/date_object.cpp: (KJS::KRFCDate_parseDate): Allow a "GMT" prefix before the time zone offset. | |
769 | ||
770 | === Safari-65 === | |
771 | ||
772 | 2003-03-04 Darin Adler <darin@apple.com> | |
773 | ||
774 | Reviewed by Maciej. | |
775 | ||
776 | - got rid of some framework initialization (working on bug 2959353) | |
777 | ||
778 | * kjs/identifier.h: Turn Identifier:null into Identifier:null(). | |
779 | * kjs/identifier.cpp: Removed Identifier:null and added Identifier:null(). | |
780 | ||
781 | * kjs/internal.cpp: Made NaN_Bytes and Inf_Bytes const. | |
782 | ||
783 | * kjs/completion.h: Use Identifier:null() instead of Identifier:null. | |
784 | * kjs/function.h: Ditto. | |
785 | * kjs/function_object.cpp: (FunctionObjectImp::construct): Ditto. | |
786 | * kjs/nodes.cpp: (FuncExprNode::evaluate): Use Identifier:null() instead of Identifier:null. | |
787 | ||
788 | 2003-03-02 Maciej Stachowiak <mjs@apple.com> | |
789 | ||
790 | Reviewed by Trey. | |
791 | ||
792 | - fixed 3158833 - ebay prefs page is so slow, it seems like a hang. | |
793 | ||
794 | 92% speed improvement on ebay prefs page. | |
795 | 1% speed improvement on js-ibench and js-performance plt suites. | |
796 | ||
797 | There were a couple of problems with the identifier hash table that | |
798 | I fixed: | |
799 | ||
800 | * kjs/identifier.cpp: | |
801 | (void Identifier::remove): Adjust the shrink threshold to avoid | |
802 | constantly growing and shrinking. | |
803 | * kjs/ustring.cpp: | |
804 | (UString::Rep::computeHash): Use a better hash function that | |
805 | avoids collisions for obvious data sets. | |
806 | ||
807 | === Safari-64 === | |
808 | ||
809 | === Safari-63 === | |
810 | ||
811 | 2003-02-26 Maciej Stachowiak <mjs@apple.com> | |
812 | ||
813 | Reviewed by Darin. | |
814 | ||
815 | - fixed 3156705 - REGRESSION: javascript menus improperly placed at umich.edu store | |
816 | ||
817 | * kjs/nodes.cpp: | |
818 | (StatListNode::execute): If the first statement's completion is | |
819 | not normal, return immediately. | |
820 | ||
821 | 2003-02-21 Darin Adler <darin@apple.com> | |
822 | ||
823 | Reviewed by Maciej. | |
824 | ||
825 | - fixed 3142355 -- nil-deref in CFTimeZoneCopyAbbreviation | |
826 | ||
827 | The real problem wasn't with the current time zone, but with the UTC time zone. | |
828 | The poor sod had a broken /usr/share/zoneinfo directory, with a 0-byte-long UTC file. | |
829 | ||
830 | * kjs/date_object.cpp: (UTCTimeZone): Use CFTimeZoneCreateWithTimeIntervalFromGMT(NULL, 0.0) | |
831 | to get the universal time zone instead of getting it by name. | |
832 | ||
833 | === Safari-62 === | |
834 | ||
835 | 2003-02-18 Darin Adler <darin@apple.com> | |
836 | ||
837 | Reviewed by Trey and Ken. | |
838 | ||
839 | - fixed 3142355 -- nil-deref in CFTimeZoneCopyAbbreviation | |
840 | ||
841 | Although I can't reproduce this bug, it seems that it's caused by CFTimeZoneCopyDefault returning NULL. | |
842 | I'm almost certain that the UTC time zone will be created successfully in this case, so I'll just use that. | |
843 | ||
844 | * kjs/date_object.cpp: | |
845 | (UTCTimeZone): Added. Gets the UTC time zone (once in a global). | |
846 | (CopyLocalTimeZone): Added. Gets the local time zone, but falls back to UTC. | |
847 | (gmtimeUsingCF): Use UTCTimeZone. | |
848 | (localtimeUsingCF): Use CopyLocalTimeZone. | |
849 | (mktimeUsingCF): Use CopyLocalTimeZone. | |
850 | (timegmUsingCF): Use UTCTimeZone. | |
851 | ||
852 | 2003-02-12 Darin Adler <darin@apple.com> | |
853 | ||
854 | Reviewed by Dave. | |
855 | ||
856 | - fixed 3145442 -- toString(16) is not working, causing non-ASCII characters in mac.com homepage to be munged | |
857 | ||
858 | * kjs/number_object.cpp: (NumberProtoFuncImp::call): Add handling for toString with a radix other than | |
859 | 10 passed as an argument. | |
860 | ||
861 | 2003-02-11 Trey Matteson <trey@apple.com> | |
862 | ||
863 | Set -seg1addr in our build styles, but not for the B&I build. | |
864 | This makes our SYMROOTS from B&I usable to determine symbols from crash | |
865 | logs from the field. | |
866 | Also nuked DeploymentFat build style. | |
867 | ||
868 | Reviewed by Ken. | |
869 | ||
870 | * JavaScriptCore.pbproj/project.pbxproj: | |
871 | ||
872 | 2003-02-04 Maciej Stachowiak <mjs@apple.com> | |
873 | ||
874 | Reviewed by Darin. | |
875 | ||
876 | * JavaScriptCore.pbproj/project.pbxproj: Updated to build the framework | |
877 | standalone instead of embedded when doing a B&I build for Panther. | |
878 | ||
879 | === Safari-55 === | |
880 | ||
881 | 2003-01-29 Darin Adler <darin@apple.com> | |
882 | ||
883 | Reviewed by John. | |
884 | ||
885 | * kjs/scope_chain.cpp: Rolled out the fix to bug 3137084. | |
886 | It caused a massive storage leak, and probably didn't even fix the bug. | |
887 | ||
888 | 2003-01-28 Darin Adler <darin@apple.com> | |
889 | ||
890 | Reviewed by Ken. | |
891 | ||
892 | - fixed 3157318 -- hang at time zone page after clicking on map at www.time.gov | |
893 | ||
894 | * kjs/date_object.cpp: (KJS::KRFCDate_parseDate): Allow a comma after the day. | |
895 | Given how this code is structured, it allows commas in unwanted contexts too, but | |
896 | that's almost certainly harmless. | |
897 | ||
898 | 2003-01-28 Darin Adler <darin@apple.com> | |
899 | ||
900 | Reviewed by Maciej. | |
901 | ||
902 | - fixed 3144918 -- Can't drill down multiple levels of categories when selling on ebay | |
903 | if first item in list is chosen | |
904 | ||
905 | The bug was caused by having array values in the property map past the storageLength cutoff | |
906 | in an array object; those values would not be seen when you do a get. | |
907 | ||
908 | * kjs/array_object.cpp: | |
909 | (ArrayInstanceImp::put): Implement a new rule for resizing the storage that is independent | |
910 | of the length. The old rule would sometimes make the storage very big if you added two elements | |
911 | in a row that both had large, but consecutive indexes. This eliminates any cases where we | |
912 | make sparse entries in the property map below the sparse array cutoff. | |
913 | (ArrayInstanceImp::resizeStorage): Don't ever make storage size bigger than the cutoff unless | |
914 | the caller specifically requests it. | |
915 | (ArrayInstanceImp::setLength): Change this so it only makes the storage smaller, never larger. | |
916 | We will actually enlarge the storage when putting elements in. | |
917 | ||
918 | 2003-01-25 Darin Adler <darin@apple.com> | |
919 | ||
920 | Reviewed by Maciej. | |
921 | ||
922 | * kjs/Makefile.am: Add dependencies so the .lut.h files get rebuilt if the script changes. | |
923 | ||
924 | === Safari-54 === | |
925 | ||
926 | 2003-01-22 Darin Adler <darin@apple.com> | |
927 | ||
928 | Reviewed by Maciej. | |
929 | ||
930 | - fixed 3137084 -- Many non-reproducible crashers in ContextImp::mark / ScopeChain::mark | |
931 | ||
932 | * kjs/scope_chain.cpp: (ScopeChain::push): Add assertion. | |
933 | (ScopeChain::release): Fix while loop so that it decrements refCount of the first node in | |
934 | the chain too. | |
935 | ||
936 | 2003-01-21 Darin Adler <darin@apple.com> | |
937 | ||
938 | - correct our copyrights to 2003; copyright is based on year of publication, not year worked on | |
939 | ||
940 | 2003-01-16 Maciej Stachowiak <mjs@apple.com> | |
941 | ||
942 | Reviewed by Darin. | |
943 | ||
944 | - made minor tweaks to work better with Mozilla's JavaScript tests. | |
945 | ||
946 | * kjs/testkjs.cpp: | |
947 | (VersionFunctionImp::call): Implemented | |
948 | (main): Ignore files named -f (hack to match -f <filename syntax | |
949 | that moz JavaScript tests expect). Also use return code 3 instead | |
950 | of 1 for uncaught exception. | |
951 | ||
952 | 2003-01-16 Darin Adler <darin@apple.com> | |
953 | ||
954 | * kjs/number_object.cpp: (NumberObjectImp::construct): | |
955 | Fix build, remove stray space. | |
956 | ||
957 | 2003-01-16 Darin Adler <darin@apple.com> | |
958 | ||
959 | Reviewed by Maciej. | |
960 | ||
961 | - rolled in a change from the KJS folks | |
962 | ||
963 | * kjs/number_object.h: Use ObjectImp *, not Object, for the proto. | |
964 | * kjs/number_object.cpp: | |
965 | (NumberInstanceImp::NumberInstanceImp): Use ObjectImp *, not Object, for the proto. | |
966 | (NumberPrototypeImp::NumberPrototypeImp): Pass ObjectImp. | |
967 | (NumberObjectImp::construct): Use ObjectImp. | |
968 | ||
969 | === Safari-52 === | |
970 | ||
971 | 2003-01-14 Darin Adler <darin@apple.com> | |
972 | ||
973 | Reviewed by Ken. | |
974 | ||
975 | - rolled in a change from the KJS folks | |
976 | ||
977 | Fixes a bug where the date functions would not accept non-strings. | |
978 | And provides a bit of a speedup. | |
979 | ||
980 | * kjs/date_object.h: Change parameter type for parseDate. | |
981 | * kjs/date_object.cpp: | |
982 | (DateObjectFuncImp::call): Always call toString, don't check the type. | |
983 | (KJS::parseDate): Take a UString parameter, not a String parameter. | |
984 | ||
985 | 2003-01-13 Darin Adler <darin@apple.com> | |
986 | ||
987 | * kjs/ustring.h: Fix spelling of occurrence. | |
988 | ||
989 | 2003-01-12 Darin Adler <darin@apple.com> | |
990 | ||
991 | Reviewed by Maciej. | |
992 | ||
993 | - turned more recursion into iteration, and fixed some backwards stuff | |
994 | ||
995 | * kjs/grammar.y: Use the normal idiom for CaseClauses and FormalParameterList | |
996 | rather than using append(). | |
997 | * kjs/grammar.cpp: Regenerated. | |
998 | ||
999 | * kjs/nodes.h: Change ClauseListNode and ParameterNode to use the normal idiom, | |
1000 | and got rid of append methods. Also added friend declarations and calls to reverseList(). | |
1001 | * kjs/nodes.cpp: | |
1002 | (StatListNode::ref): Iteration, not recursion. | |
1003 | (StatListNode::deref): Iteration, not recursion. | |
1004 | (StatListNode::execute): Iteration, not recursion. | |
1005 | (StatListNode::processVarDecls): Iteration, not recursion. | |
1006 | (CaseClauseNode::reverseList): Added. | |
1007 | (ClauseListNode::ref): Iteration, not recursion. | |
1008 | (ClauseListNode::deref): Iteration, not recursion. | |
1009 | (ClauseListNode::processVarDecls): Iteration, not recursion. | |
1010 | (CaseBlockNode::reverseLists): Added. | |
1011 | (ParameterNode::ref): Iteration, not recursion. | |
1012 | (ParameterNode::deref): Iteration, not recursion. | |
1013 | (FuncDeclNode::reverseParameterList): Added. | |
1014 | (FuncExprNode::reverseParameterList): Added. | |
1015 | (SourceElementsNode::ref): Iteration, not recursion. | |
1016 | (SourceElementsNode::deref): Iteration, not recursion. | |
1017 | (SourceElementsNode::execute): Use variable name of n to match other functions. | |
1018 | (SourceElementsNode::processFuncDecl): Ditto. | |
1019 | (SourceElementsNode::processVarDecls): Ditto. | |
1020 | ||
1021 | * kjs/nodes2string.cpp: | |
1022 | (SourceStream::operator<<): Used a switch statement for a bit of added clarity. | |
1023 | (ElementNode::streamTo): Iteration, not recursion. | |
1024 | (PropertyValueNode::streamTo): Iteration, not recursion. | |
1025 | (ArgumentListNode::streamTo): Iteration, not recursion. | |
1026 | (StatListNode::streamTo): Iteration, not recursion, and fixed order. | |
1027 | (VarDeclListNode::streamTo): Iteration, not recursion. | |
1028 | (ClauseListNode::streamTo): Used for statement to match other functions. | |
1029 | (CaseBlockNode::streamTo): Used for statement to match other functions. | |
1030 | (ParameterNode::streamTo): Iteration, not recursion. | |
1031 | (SourceElementsNode::streamTo): Iteration, not recursion, and fixed order that has been | |
1032 | backwards since I changed how this works in nodes.cpp. | |
1033 | ||
1034 | 2003-01-11 Darin Adler <darin@apple.com> | |
1035 | ||
1036 | Reviewed by John. | |
1037 | ||
1038 | - changes inspired by things I noticed reviewing diffs vs. KDE when preparing the tarball | |
1039 | ||
1040 | * kjs/function.cpp: (GlobalFuncImp::call): Use strtol when strtoll is | |
1041 | not available. Do #ifndef NDEBUG, not #if !NDEBUG. | |
1042 | * kjs/function.h: Do #ifndef NDEBUG, not #if !NDEBUG. | |
1043 | * kjs/internal.cpp: | |
1044 | (InterpreterImp::initGlobalObject): Do #ifndef NDEBUG, not #if !NDEBUG. | |
1045 | (KJS::printInfo): Remove case for ListType and remove default case that just | |
1046 | ends up suppressing the "missing case" warning and does no good. | |
1047 | * kjs/interpreter.cpp: (Interpreter::evaluate): Do #ifndef NDEBUG, not #if !NDEBUG. | |
1048 | * kjs/nodes.cpp: | |
1049 | (Node::finalCheck): Fix accidentally-deleted code in an ifdef we never compile. | |
1050 | (FunctionCallNode::evaluate): Remove bogus XXX comment. Maciej put this comment in, | |
1051 | and together we determined it's not needed. | |
1052 | (TypeOfNode::evaluate): Ditto. | |
1053 | * kjs/object.cpp: Remove assert that refers to ListType. | |
1054 | * kjs/value.h: Remove ListType. | |
1055 | ||
1056 | 2003-01-09 Darin Adler <darin@apple.com> | |
1057 | ||
1058 | * JavaScriptCore.pbproj/project.pbxproj: Add the year 2003, remove CFBundleIconFile, | |
1059 | bump marketing version to 0.8.1 and version to 52u to keep up with the branch, | |
1060 | remove CFHumanReadableCopyright, remove NSPrincipalClass. | |
1061 | ||
1062 | * English.lproj/InfoPlist.strings: Updated to match above changes. | |
1063 | ||
1064 | 2003-01-05 Maciej Stachowiak <mjs@apple.com> | |
1065 | ||
1066 | Reviewed by no one cause I'm just changing copyright strings. | |
1067 | ||
1068 | * JavaScriptCore.pbproj/project.pbxproj: Added non-Apple copyrights to | |
1069 | copyright strings. | |
1070 | * English.lproj/InfoPlist.strings: Likewise. | |
1071 | ||
1072 | 2003-01-05 Darin Adler <darin@apple.com> | |
1073 | ||
1074 | * JavaScriptCore.pbproj/project.pbxproj: Fix "Apple Compupter" typo. | |
1075 | Remove unneeded CFBundleLongVersionString we don't use anywhere else. | |
1076 | ||
1077 | 2003-01-02 Darin Adler <darin@apple.com> | |
1078 | ||
1079 | Reviewed by Maciej. | |
1080 | ||
1081 | - fixed 3138213 -- browser hangs trying to open Apple travel site | |
1082 | ||
1083 | * kjs/date_object.cpp: (timetUsingCF): Check for very-negative year numbers too. | |
1084 | ||
1085 | === Alexander-48 === | |
1086 | ||
1087 | === Alexander-47 === | |
1088 | ||
1089 | 2002-12-30 Darin Adler <darin@apple.com> | |
1090 | ||
1091 | Reviewed by Don and Maciej. | |
1092 | ||
1093 | - follow-on to my fix for 3134693 that fixes one more case of recursion and simplifies further | |
1094 | ||
1095 | * kjs/grammar.y: Remove SourceElementNode and just use a StatementNode instead. | |
1096 | Reverse SourceElements rule so the recursive rule comes first as in the original | |
1097 | KJS code (avoids actual parser recursion). | |
1098 | ||
1099 | * kjs/grammar.cpp: Regenerated. | |
1100 | * kjs/grammar.cpp.h: Regenerated. | |
1101 | * kjs/grammar.h: Regenerated. | |
1102 | ||
1103 | * kjs/nodes.h: Make processFuncDecl a virtual function in StatementNode so that we can | |
1104 | use a StatementNode instead of a SourceElementNode. Add a call to reverseList in BlockNode | |
1105 | to correct the order of the linked list in SourceElementsNode, to replace the technique | |
1106 | where we reversed it in the parser. Remove SourceElementNode class, and make the element in | |
1107 | SourceElementsNode be a StatementNode instead. | |
1108 | * kjs/nodes.cpp: Remove SourceElementNode code. | |
1109 | (StatementNode::processFuncDecl): Added empty function. | |
1110 | (BlockNode::reverseList): Added. Used to make the SourceElements list ordered correctly. | |
1111 | * kjs/nodes2string.cpp: Remove SourceElementNode code. | |
1112 | ||
1113 | === Alexander-46 === | |
1114 | ||
1115 | 2002-12-28 Darin Adler <darin@apple.com> | |
1116 | ||
1117 | Reviewed by Gramps and Ken. | |
1118 | Checked in by Ken. | |
1119 | ||
1120 | - fixed 3134693 -- carsdirect.com crash on used car search, due to large JavaScript array | |
1121 | ||
1122 | The parser was using recursion to handle many types of lists. | |
1123 | This meant that we crashed out of stack space when any of the lists were extra big. | |
1124 | I applied the same sort of fix we had already applied a while back for argument lists for | |
1125 | all the other types of lists, including the list of ElementNode that was the reason for | |
1126 | the crash reported here. | |
1127 | ||
1128 | * kjs/grammar.y: Removed ElisionNode altogether and just use a count. | |
1129 | Use specific node types for PropertyNameAndValueList and PropertyName. | |
1130 | ||
1131 | * kjs/grammar.cpp: Regenerated. | |
1132 | * kjs/grammar.cpp.h: Regenerated. | |
1133 | * kjs/grammar.h: Regenerated. | |
1134 | ||
1135 | * kjs/nodes.h: Elide "ElisionNode", changing objects to keep elision counts instead. | |
1136 | Make the ObjectLiteralNode list field be PropertyValueNode, not just Node. | |
1137 | Make PropertyValueNode fields have specific types. Add new reverse list functions, calls | |
1138 | to those functions in the constructors, and friend declarations as needed so the class | |
1139 | that holds the head of a list can reverse the list during parsing. | |
1140 | * kjs/nodes.cpp: | |
1141 | (ElementNode::ref): Use iteration instead of recursion. Also elide "elision". | |
1142 | (ElementNode::deref): Ditto. | |
1143 | (ElementNode::evaluate): Use iteration instead of recursion, taking advantage of | |
1144 | the fact that the linked list is reversed. Also use the elision count rather than | |
1145 | an elision list. | |
1146 | (ArrayNode::reverseElementList): Reverse the list so we can iterate normally. | |
1147 | (ArrayNode::ref): Elide "elision". | |
1148 | (ArrayNode::deref): Ditto. | |
1149 | (ArrayNode::evaluate): Use elision count instead of elision list. | |
1150 | (ObjectLiteralNode::reverseList): Reverse the list so we can iterate normally. | |
1151 | (PropertyValueNode::ref): Use iteration instead of recursion. | |
1152 | (PropertyValueNode::deref): Use iteration instead of recursion. | |
1153 | (PropertyValueNode::evaluate): Use iteration instead of recursion, taking advantage | |
1154 | of the fact that the linked list is reversed. | |
1155 | (ArgumentListNode::ref): Change code to match the other similar cases we had to revise. | |
1156 | (ArgumentListNode::deref): Ditto. | |
1157 | (ArgumentListNode::evaluateList): Ditto. | |
1158 | (ArgumentsNode::reverseList): Ditto. | |
1159 | (VarDeclListNode::ref): Use iteration instead of recursion. | |
1160 | (VarDeclListNode::deref): Ditto. | |
1161 | (VarDeclListNode::evaluate): Use iteration instead of recursion, taking advantage | |
1162 | of the fact that the linked list is reversed. | |
1163 | (VarDeclListNode::processVarDecls): Ditto. | |
1164 | (VarStatementNode::reverseList): Reverse the list so we can iterate normally. | |
1165 | (FunctionBodyNode::FunctionBodyNode): Use BlockNode as the base class, removing | |
1166 | most of the FunctionBodyNode class. | |
1167 | ||
1168 | * kjs/nodes2string.cpp: | |
1169 | (ElementNode::streamTo): Update for using a count for elision, and reverse linking. | |
1170 | (ArrayNode::streamTo): Update for using a count for elision. | |
1171 | (PropertyValueNode::streamTo): Update for reverse linking. | |
1172 | (ArgumentListNode::streamTo): Update for reverse linking. This has been wrong for | |
1173 | a while, since we added the reverse a long time ago. | |
1174 | (VarDeclListNode::streamTo): Update for reverse linking. | |
1175 | (ParameterNode::streamTo): Update for reverse linking. | |
1176 | ||
1177 | === Alexander-45 === | |
1178 | ||
1179 | 2002-12-22 Darin Adler <darin@apple.com> | |
1180 | ||
1181 | Reviewed by Don and John. | |
1182 | ||
1183 | - fixed 3134449 -- Date.UTC returns NaN (invalid date) | |
1184 | ||
1185 | Did more testing of the date functions and made them behave like the other browsers. | |
1186 | There were three problems: | |
1187 | ||
1188 | 1) We did a validity check that other browsers don't do (hence the NaN). | |
1189 | 2) We treated passed-in dates as local time even in Date.UTC (hence a wrong result | |
1190 | once I fixed the NaN). | |
1191 | 3) The results of ToUTCString (and ToGMTString) weren't formatted quite the same | |
1192 | as other browsers. | |
1193 | ||
1194 | Also found a couple of silly but unrelated coding mistakes. | |
1195 | ||
1196 | * kjs/date_object.cpp: | |
1197 | (timetUsingCF): Added. Has the guts of mktimeUsingCF, but without the CFGregorianDateIsValid | |
1198 | check. Other browsers accept invalid dates. Also takes a time zone parameter. | |
1199 | (mktimeUsingCF): Calls timetUsingCF with the current time zone. | |
1200 | (timegmUsingCF): Calls timetUsingCF with the UTC time zone. | |
1201 | (formatDate): Remove the includeComma flag. | |
1202 | (formatDateUTCVariant): Added. For use instead of formatDate with the includeComma flag. | |
1203 | Puts the day before the month name. | |
1204 | (DateProtoFuncImp::call): Use the new formatDateUTCVariant for ToGMTString and ToUTCString. | |
1205 | Without this change the date didn't match other browsers. | |
1206 | (DateObjectImp::DateObjectImp): Use UTCPropertyName. Somehow I declared this and didn't use | |
1207 | it before. | |
1208 | (DateObjectImp::construct): Pass -1 for is_dst literally instead of using invalidDate. | |
1209 | Changing this to invalidDate was just a mistake (although no real difference in compiled | |
1210 | code since invalidDate is just -1). | |
1211 | (DateObjectFuncImp::call): Call timegm for the UTC case instead of mktime. | |
1212 | ||
1213 | === Alexander-44 === | |
1214 | ||
1215 | === Alexander-43 === | |
1216 | ||
1217 | 2002-12-20 Trey Matteson <trey@apple.com> | |
1218 | ||
1219 | We now build with symbols the B&I. Deployment builds are without symbols, | |
1220 | so it is easy to generate a non-huge app as a one-off. | |
1221 | ||
1222 | Reviewed by Darin | |
1223 | ||
1224 | * JavaScriptCore.pbproj/project.pbxproj: | |
1225 | ||
1226 | === Alexander-42 === | |
1227 | ||
1228 | === Alexander-41 === | |
1229 | ||
1230 | === Alexander-40 === | |
1231 | ||
1232 | 2002-12-18 Maciej Stachowiak <mjs@apple.com> | |
1233 | ||
1234 | Reviewed by John. | |
1235 | ||
1236 | - fixed 3131171 - Change Alex versions to satisfy both marketing and B&I requirements | |
1237 | ||
1238 | * English.lproj/InfoPlist.strings: | |
1239 | * JavaScriptCore.pbproj/project.pbxproj: | |
1240 | ||
1241 | 2002-12-17 Darin Adler <darin@apple.com> | |
1242 | ||
1243 | Reviewed by Trey. | |
1244 | ||
1245 | * JavaScriptCore.pbproj/project.pbxproj: Removed signature. | |
1246 | ||
1247 | === Alexander-39 === | |
1248 | ||
1249 | === Alexander-38 === | |
1250 | ||
1251 | 2002-12-16 Darin Adler <darin@apple.com> | |
1252 | ||
1253 | Reviewed by Don and Maciej. | |
1254 | ||
1255 | - fixed 3129115 -- need Apple copyright added to open source documents | |
1256 | ||
1257 | * tons of files: Added our copyright to files we modified, and updated all to standard format. | |
1258 | ||
1259 | - other changes | |
1260 | ||
1261 | * JavaScriptCore.pbproj/project.pbxproj: Set MACOSX_DEPLOYMENT_TARGET to 10.2. | |
1262 | Also removed completion.cpp. | |
1263 | * kjs/completion.cpp: Removed. | |
1264 | * kjs/completion.h: Made the Completion constructor inline. | |
1265 | ||
1266 | * kjs/grammar.y: Removed an obsolete "pretend ifdef". No need to put these in APPLE_CHANGES now. | |
1267 | ||
1268 | === Alexander-37 === | |
1269 | ||
1270 | === JavaScriptCore-37u2 === | |
1271 | ||
1272 | 2002-12-15 Maciej Stachowiak <mjs@apple.com> | |
1273 | ||
1274 | Reviewed by Darin. | |
1275 | ||
1276 | * JavaScriptCore.pbproj/project.pbxproj: Bump version to 37u2. | |
1277 | ||
1278 | 2002-12-14 Darin Adler <darin@apple.com> | |
1279 | ||
1280 | Reviewed by Maciej. | |
1281 | ||
1282 | * JavaScriptCore.pbproj/project.pbxproj: Make dtoa.h visible as an SPI so I can | |
1283 | use it inside QString. | |
1284 | ||
1285 | 2002-12-14 Maciej Stachowiak <mjs@apple.com> | |
1286 | ||
1287 | Reviewed by Ken. | |
1288 | ||
1289 | - further corrections to number printing. | |
1290 | ||
1291 | * kjs/ustring.cpp: | |
1292 | (UString::from): Make number printing match the ECMA standard | |
1293 | algorithm. | |
1294 | ||
1295 | 2002-12-14 Maciej Stachowiak <mjs@apple.com> | |
1296 | ||
1297 | Reviewed by Dave. | |
1298 | ||
1299 | - fix toString() conversion for numbers less than 1. Negative | |
1300 | exponents are still wrong though (things like 1E-34). | |
1301 | ||
1302 | * kjs/ustring.cpp: | |
1303 | (UString::from): Don't print empty string for numbers less than 1, | |
1304 | and remember to add extra 0s after the decimal for negative | |
1305 | decimal positions. | |
1306 | ||
1307 | === Alexander-37u1 === | |
1308 | ||
1309 | === Alexander-36 === | |
1310 | ||
1311 | 2002-12-12 Maciej Stachowiak <mjs@apple.com> | |
1312 | ||
1313 | Reviewed by Darin. | |
1314 | ||
1315 | - fixed 3056449 - can't select state at tucows.com | |
1316 | ||
1317 | * kjs/array_instance.h: | |
1318 | * kjs/array_object.cpp: | |
1319 | (ArrayInstanceImp::propList): Add numeric proprties that are in | |
1320 | special storage. | |
1321 | * kjs/array_object.h: | |
1322 | * kjs/object.h: Make propList a virtual method. | |
1323 | ||
1324 | 2002-12-11 Maciej Stachowiak <mjs@apple.com> | |
1325 | ||
1326 | Reviewed by Don. | |
1327 | ||
1328 | - Add kjsprint global function in Development build for ease of debugging. | |
1329 | - Print uncaught JavaScript exceptions to the console in Development. | |
1330 | - Improve wording of exception error messages. | |
1331 | ||
1332 | * kjs/function.cpp: | |
1333 | (GlobalFuncImp::call): | |
1334 | * kjs/function.h: | |
1335 | * kjs/internal.cpp: | |
1336 | (InterpreterImp::initGlobalObject): | |
1337 | * kjs/interpreter.cpp: | |
1338 | (Interpreter::evaluate): | |
1339 | * kjs/nodes.cpp: | |
1340 | (NewExprNode::evaluate): | |
1341 | (FunctionCallNode::evaluate): | |
1342 | (RelationalNode::evaluate): | |
1343 | ||
1344 | 2002-12-10 John Sullivan <sullivan@apple.com> | |
1345 | ||
1346 | Fixed more "Alexander"s that were lurking in places I forgot | |
1347 | to look before. | |
1348 | ||
1349 | Reviewed by Darin | |
1350 | ||
1351 | * Makefile.am: | |
1352 | "rm -rf $(SYMROOTS)/Safari.app/Frameworks/JavaScriptCore.framework" | |
1353 | ||
1354 | 2002-12-09 Darin Adler <darin@apple.com> | |
1355 | ||
1356 | Reviewed by Maciej. | |
1357 | ||
1358 | * JavaScriptCore.pbproj/project.pbxproj: Bump versions to 0.8 and 35u. | |
1359 | * English.lproj/InfoPlist.strings: In here too. | |
1360 | ||
1361 | 2002-12-09 Maciej Stachowiak <mjs@apple.com> | |
1362 | ||
1363 | Reviewed by Ken. | |
1364 | ||
1365 | - fixed 3059637 - all articles missing at excite.com sports page | |
1366 | - fixed 3065903 - most of content missing at excite.com news page | |
1367 | ||
1368 | These bugs both came up because a JavaScript function has a var | |
1369 | declaration that collides with a function parameter name. | |
1370 | ||
1371 | * kjs/nodes.cpp: | |
1372 | (VarDeclNode::processVarDecls): Don't set the property to | |
1373 | undefined if a property with that name is already set on the | |
1374 | global object. Otherwise we may clobber function parameters with | |
1375 | undefined even before hitting a possible var initializer. | |
1376 | ||
1377 | 2002-12-06 Maciej Stachowiak <mjs@apple.com> | |
1378 | ||
1379 | Reviewed by: Darin Adler | |
1380 | ||
1381 | - made framework embedding work correctly with buildit | |
1382 | ||
1383 | * JavaScriptCore.pbproj/project.pbxproj: Give framework a relative | |
1384 | install path, don't install it the normal way, and copy it | |
1385 | manually to /AppleInternal/Library/Frameworks if installing. | |
1386 | ||
1387 | === Alexander-35 === | |
1388 | ||
1389 | 2002-12-04 Maciej Stachowiak <mjs@apple.com> | |
1390 | ||
1391 | Reviewed by: Richard Williamson | |
1392 | ||
1393 | Added explicit lock/unlock methods so Sherlock can grab the | |
1394 | interpreter lock as needed. | |
1395 | ||
1396 | - partially addressed 3084320 - JavaScriptCore crash | |
1397 | ||
1398 | * kjs/internal.cpp: | |
1399 | (InterpreterImp::InterpreterImp): | |
1400 | (InterpreterImp::lock): | |
1401 | (InterpreterImp::unlock): | |
1402 | * kjs/internal.h: | |
1403 | * kjs/interpreter.cpp: | |
1404 | (Interpreter::lock): | |
1405 | (Interpreter::unlock): | |
1406 | * kjs/interpreter.h: | |
1407 | ||
1408 | 2002-12-04 Maciej Stachowiak <mjs@apple.com> | |
1409 | ||
1410 | Reviewed by: Darin Adler | |
1411 | ||
1412 | Set things up so JavaScriptCore builds in PCRE and uses it for | |
1413 | regular expressions. This fixes many form validation bugs: | |
1414 | ||
1415 | - fixed 3103197 - javascript at fidelity.com rejects valid input | |
1416 | - fixed 2942552 - form validation at weather.com fails | |
1417 | - fixed 3079752 - js always reports textarea is empty | |
1418 | - fixed 3079719 - covad.com "check availalbility" fails | |
1419 | ||
1420 | * Makefile.am: Add pcre subdir. | |
1421 | * kjs/config.h: define HAVE_PCREPOSIX to true. | |
1422 | * kjs/regexp.h: Don't include pcreposix.h since nothing from there | |
1423 | is used. | |
1424 | * pcre/.cvsignore: Added. | |
1425 | * pcre/ChangeLog: Removed. | |
1426 | * pcre/INSTALL: Removed. | |
1427 | * pcre/Makefile.am: Added. | |
1428 | * pcre/Makefile.in: Removed. | |
1429 | * pcre/NEWS: Removed. | |
1430 | * pcre/NON-UNIX-USE: Removed. | |
1431 | * pcre/README: Removed. | |
1432 | * pcre/chartables.c: Added. | |
1433 | * pcre/config.guess: Removed. | |
1434 | * pcre/config.in: Removed. | |
1435 | * pcre/config.sub: Removed. | |
1436 | * pcre/configure: Removed. | |
1437 | * pcre/configure.in: Removed. | |
1438 | * pcre/dll.mk: Removed. | |
1439 | * pcre/doc/Tech.Notes: Removed. | |
1440 | * pcre/doc/pcre.3: Removed. | |
1441 | * pcre/doc/pcre.html: Removed. | |
1442 | * pcre/doc/pcre.txt: Removed. | |
1443 | * pcre/doc/pcregrep.1: Removed. | |
1444 | * pcre/doc/pcregrep.html: Removed. | |
1445 | * pcre/doc/pcregrep.txt: Removed. | |
1446 | * pcre/doc/pcreposix.3: Removed. | |
1447 | * pcre/doc/pcreposix.html: Removed. | |
1448 | * pcre/doc/pcreposix.txt: Removed. | |
1449 | * pcre/doc/pcretest.1: Removed. | |
1450 | * pcre/doc/pcretest.html: Removed. | |
1451 | * pcre/doc/pcretest.txt: Removed. | |
1452 | * pcre/doc/perltest.txt: Removed. | |
1453 | * pcre/install-sh: Removed. | |
1454 | * pcre/ltmain.sh: Removed. | |
1455 | * pcre/pcre-config.h: Added. | |
1456 | * pcre/pcre-config.in: Removed. | |
1457 | * pcre/internal.h: Include pcre-config.h instead of config.h | |
1458 | * pcre/pcre.c: | |
1459 | (ord2utf8): Fix warnings. | |
1460 | (pcre_compile): Fix warnings. | |
1461 | * pcre/pcre.def: Removed. | |
1462 | * pcre/pcre.h: Added. | |
1463 | * pcre/pcre.in: Removed. | |
1464 | * JavaScriptCore.pbproj/project.pbxproj: Added pcre files to build. | |
1465 | * JavaScriptCorePrefix.h: Guard c++ headers with #ifdef __cplusplus. | |
1466 | ||
1467 | 2002-12-04 Maciej Stachowiak <mjs@apple.com> | |
1468 | ||
1469 | Reviewed by: Richard Williamson | |
1470 | ||
1471 | * pcre/doc/*: Added. | |
1472 | * pcre/testdata/*: Added. | |
1473 | ||
1474 | 2002-12-03 Maciej Stachowiak <mjs@apple.com> | |
1475 | ||
1476 | Reviewed by: Darin Adler | |
1477 | ||
1478 | - imported PCRE 3.9 into the tree; this isn't actually compiled or | |
1479 | used yet. | |
1480 | ||
1481 | * pcre/*: Added. | |
1482 | ||
1483 | == Rolled over to ChangeLog-2002-12-03 == |