]>
Commit | Line | Data |
---|---|---|
93a37866 A |
1 | 2010-05-24 Gavin Barraclough <barraclough@apple.com> |
2 | ||
3 | Rubber Stamped by Sam Weinig. | |
4 | ||
5 | Accidentally committed double write of codeblock in Interpreter. | |
6 | ||
7 | * interpreter/Interpreter.cpp: | |
8 | (JSC::Interpreter::privateExecute): | |
9 | ||
10 | 2010-05-24 Gavin Barraclough <barraclough@apple.com> | |
11 | ||
12 | Reviewed by Sam Weinig. | |
13 | ||
14 | https://bugs.webkit.org/show_bug.cgi?id=39583 | |
15 | Move creation of 'this' object from caller to callee in construction. | |
16 | ||
17 | Presently the caller of a constructor is responsible for providing a this | |
18 | object. Instead, move the object creation into a new op_create_this opcode, | |
19 | planted in the head of the contructor bytecode for a function. Since the | |
20 | prototype for the object is provided by performing a get_by_id on the callee, | |
21 | also add a new get_callee opcode (this is used to get the callee JSFunction | |
22 | into a register so that a normal get_by_id can be used). | |
23 | ||
24 | Currently the caller is also responsible for detecting when op_construct is | |
25 | performed on a JSFunction representing a host function, in which case an | |
26 | exception is thrown – and this check currently takes place when constructing | |
27 | the this object. Instead, mirroring the recent changes for non-host functions, | |
28 | add a parallel code-path for native constructors to follow, with a thunk for | |
29 | invoking native constructors provided by JITStubs, and a constructor-specific | |
30 | NativeFunction on NativeExecutable. Provide an implementation of a host | |
31 | constructor which will throw an exception. | |
32 | ||
33 | * bytecode/CodeBlock.cpp: | |
34 | (JSC::CodeBlock::dump): | |
35 | (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): | |
36 | * bytecode/CodeBlock.h: | |
37 | * bytecode/Opcode.h: | |
38 | * bytecompiler/BytecodeGenerator.cpp: | |
39 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
40 | (JSC::BytecodeGenerator::emitConstruct): | |
41 | * bytecompiler/BytecodeGenerator.h: | |
42 | (JSC::BytecodeGenerator::emitGetByIdExceptionInfo): | |
43 | * interpreter/Interpreter.cpp: | |
44 | (JSC::Interpreter::privateExecute): | |
45 | * jit/JIT.cpp: | |
46 | (JSC::JIT::privateCompileMainPass): | |
47 | * jit/JIT.h: | |
48 | * jit/JITCall.cpp: | |
49 | (JSC::JIT::compileOpCall): | |
50 | (JSC::JIT::compileOpCallSlowCase): | |
51 | * jit/JITCall32_64.cpp: | |
52 | (JSC::JIT::compileOpCall): | |
53 | (JSC::JIT::compileOpCallSlowCase): | |
54 | * jit/JITOpcodes.cpp: | |
55 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
56 | (JSC::JIT::privateCompileCTINativeCall): | |
57 | (JSC::JIT::emit_op_neq_null): | |
58 | (JSC::JIT::emit_op_convert_this): | |
59 | (JSC::JIT::emit_op_get_callee): | |
60 | (JSC::JIT::emit_op_create_this): | |
61 | * jit/JITOpcodes32_64.cpp: | |
62 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
63 | (JSC::JIT::privateCompileCTINativeCall): | |
64 | (JSC::JIT::emit_op_get_callee): | |
65 | (JSC::JIT::emit_op_create_this): | |
66 | * jit/JITStubs.cpp: | |
67 | (JSC::DEFINE_STUB_FUNCTION): | |
68 | (JSC::JITThunks::hostFunctionStub): | |
69 | * jit/JITStubs.h: | |
70 | (JSC::JITThunks::ctiNativeConstruct): | |
71 | (JSC::): | |
72 | * runtime/ExceptionHelpers.cpp: | |
73 | (JSC::createNotAnObjectError): | |
74 | * runtime/Executable.h: | |
75 | (JSC::NativeExecutable::create): | |
76 | (JSC::NativeExecutable::NativeExecutable): | |
77 | * runtime/JSFunction.cpp: | |
78 | (JSC::callHostFunctionAsConstructor): | |
79 | * runtime/JSFunction.h: | |
80 | ||
81 | 2010-05-23 Sam Weinig <sam@webkit.org> | |
82 | ||
83 | Fix windows build. | |
84 | ||
85 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
86 | ||
87 | 2010-05-23 Sam Weinig <sam@webkit.org> | |
88 | ||
89 | Reviewed by Oliver Hunt. | |
90 | ||
91 | Fix for https://bugs.webkit.org/show_bug.cgi?id=39575 | |
92 | Make JS DOMObject inherit from JSObjectWithGlobalObject instead of JSObject | |
93 | ||
94 | Expose the global object stored in JSObjectWithGlobalObject. | |
95 | ||
96 | * JavaScriptCore.exp: | |
97 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
98 | * runtime/JSObjectWithGlobalObject.cpp: | |
99 | (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): | |
100 | (JSC::JSObjectWithGlobalObject::globalObject): | |
101 | * runtime/JSObjectWithGlobalObject.h: | |
102 | ||
103 | 2010-05-21 Oliver Hunt <oliver@apple.com> | |
104 | ||
105 | "asm volatile" isn't valid outside of functions. | |
106 | ||
107 | Reviewed by Gavin Barraclough. | |
108 | ||
109 | * jit/JITStubs.cpp: | |
110 | ||
111 | 2010-05-21 Gavin Barraclough <barraclough@apple.com> | |
112 | ||
113 | Unreviewed build fix. | |
114 | ||
115 | Interpreter fix following r59974. | |
116 | ||
117 | * interpreter/Interpreter.cpp: | |
118 | (JSC::Interpreter::privateExecute): | |
119 | * runtime/JSPropertyNameIterator.cpp: | |
120 | (JSC::JSPropertyNameIterator::get): | |
121 | * runtime/JSPropertyNameIterator.h: | |
122 | ||
123 | 2010-05-21 Gavin Barraclough <barraclough@apple.com> | |
124 | ||
125 | Rubber stamped by Oliver Hunt. | |
126 | ||
127 | Interpreter fix following r59939. | |
128 | ||
129 | * interpreter/Interpreter.cpp: | |
130 | (JSC::Interpreter::privateExecute): | |
131 | ||
132 | 2010-05-21 David Levin <levin@chromium.org> | |
133 | ||
134 | Unreviewed build fix. | |
135 | ||
136 | * wtf/SizeLimits.cpp: Removed a check while I figure out how to write it properly. | |
137 | ||
138 | 2010-05-21 David Levin <levin@chromium.org> | |
139 | ||
140 | Reviewed by Darin Adler. | |
141 | ||
142 | Enforce size constraints on various data structures in JavaScriptCore/wtf. | |
143 | https://bugs.webkit.org/show_bug.cgi?id=39327 | |
144 | ||
145 | I only modified the default build for OSX and Chromium's build file to include WTFCompileAsserts.cpp | |
146 | as those should be sufficient to catch regressions on the size of the data structures. | |
147 | ||
148 | * JavaScriptCore.gypi: Added the WTFCompileAsserts.cpp file. | |
149 | * JavaScriptCore.xcodeproj/project.pbxproj: Added the WTFCompileAsserts.cpp file. | |
150 | * runtime/UString.cpp: Added a compile assert for UString size. | |
151 | * wtf/SizeLimits.cpp: Added compile asserts for data structures that didn't have cpp files. | |
152 | * wtf/text/StringImpl.cpp: Added a compile assert for StringImpl size. | |
153 | ||
154 | 2010-05-21 Gavin Barraclough <barraclough@apple.com> | |
155 | ||
156 | Reviewed by Oliver Hunt. | |
157 | ||
158 | Bug 39509 - Exceptions raised when JSString::value() is called not always properly thrown. | |
159 | Missing some CHECK_FOR_EXCEPTION()s, cleanup NativeError construction (adding a property | |
160 | via the prototype was inefficient, and whilst trivially true that the property is is not | |
161 | a rope - and thus couldn't except - it would be hard to prove this). | |
162 | ||
163 | * interpreter/Interpreter.cpp: | |
164 | (JSC::Interpreter::callEval): | |
165 | (JSC::Interpreter::privateExecute): | |
166 | * jit/JITStubs.cpp: | |
167 | (JSC::DEFINE_STUB_FUNCTION): | |
168 | * runtime/InternalFunction.cpp: | |
169 | (JSC::InternalFunction::name): | |
170 | (JSC::InternalFunction::displayName): | |
171 | * runtime/JSFunction.cpp: | |
172 | (JSC::JSFunction::name): | |
173 | (JSC::JSFunction::displayName): | |
174 | * runtime/JSGlobalObject.cpp: | |
175 | (JSC::JSGlobalObject::reset): | |
176 | * runtime/JSPropertyNameIterator.cpp: | |
177 | * runtime/JSPropertyNameIterator.h: | |
178 | * runtime/JSString.h: | |
179 | (JSC::RopeBuilder::tryGetValue): | |
180 | (JSC::JSString::getIndex): | |
181 | * runtime/NativeErrorConstructor.cpp: | |
182 | (JSC::NativeErrorConstructor::NativeErrorConstructor): | |
183 | * runtime/NativeErrorConstructor.h: | |
184 | * runtime/NativeErrorPrototype.cpp: | |
185 | (JSC::NativeErrorPrototype::NativeErrorPrototype): | |
186 | * runtime/NativeErrorPrototype.h: | |
187 | * runtime/StringPrototype.cpp: | |
188 | (JSC::stringProtoFuncReplace): | |
189 | ||
190 | 2010-05-21 Gavin Barraclough <barraclough@apple.com> | |
191 | ||
192 | Reviewed by NOBODY (build fix). | |
193 | ||
194 | Fix interpreter build. | |
195 | ||
196 | * interpreter/Interpreter.cpp: | |
197 | (JSC::Interpreter::privateExecute): | |
198 | ||
199 | 2010-05-21 Geoffrey Garen <ggaren@apple.com> | |
200 | ||
201 | Reviewed by Gavin Barraclough. | |
202 | ||
203 | Split out JITCall32_64.cpp, and tightened up some #ifdefs in the hopes | |
204 | of improving compile times. | |
205 | https://bugs.webkit.org/show_bug.cgi?id=39507 | |
206 | ||
207 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
208 | * jit/JIT.cpp: | |
209 | * jit/JITArithmetic.cpp: | |
210 | * jit/JITArithmetic32_64.cpp: | |
211 | * jit/JITCall.cpp: | |
212 | * jit/JITCall32_64.cpp: Copied from jit/JITCall.cpp. | |
213 | * jit/JITOpcodes.cpp: | |
214 | * jit/JITOpcodes32_64.cpp: | |
215 | * jit/JITPropertyAccess.cpp: | |
216 | * jit/JITPropertyAccess32_64.cpp: | |
217 | * jit/JITStubs.cpp: | |
218 | ||
219 | 2010-05-21 Csaba Osztrogonác <ossy@webkit.org> | |
220 | ||
221 | Unreviewed buildfix for Qt after r59941. | |
222 | ||
223 | * JavaScriptCore.pro: missing runtime/JSObjectWithGlobalObject.cpp added to SOURCES. | |
224 | ||
225 | 2010-05-21 Oliver Hunt <oliver@apple.com> | |
226 | ||
227 | Windows build fix #3 | |
228 | ||
229 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
230 | ||
231 | 2010-05-21 Oliver Hunt <oliver@apple.com> | |
232 | ||
233 | Windows build fix #2 | |
234 | ||
235 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
236 | ||
237 | 2010-05-21 Oliver Hunt <oliver@apple.com> | |
238 | ||
239 | Windows build fix #1 | |
240 | ||
241 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
242 | ||
243 | 2010-05-21 Oliver Hunt <oliver@apple.com> | |
244 | ||
245 | Reviewed by Geoffrey Garen. | |
246 | ||
247 | All callable objects should have a global object reference | |
248 | https://bugs.webkit.org/show_bug.cgi?id=39495 | |
249 | ||
250 | All objects that may ever return a value other CallTypeNone | |
251 | or ConstructTypeNone now get a global object in their constructor | |
252 | and store that in their first anonymous slot. We add a new type | |
253 | JSObjectWithGlobalObject to allow us to share this logic as much | |
254 | as possible, however some objects have specific inheritance | |
255 | requirements so we can't just use it universally. | |
256 | ||
257 | To enforce this requirement JSValue::getCallData and getConstructData | |
258 | make use of a new "isValidCallee" function to assert that any object | |
259 | that returns a value other than CallType/ConstructTypeNone has a | |
260 | global object in anonymous slot 0. | |
261 | ||
262 | In order to ensure that static function slots are converted into | |
263 | function objects with the correct global object, all prototype objects | |
264 | and other classes with static function slots also gain a global object | |
265 | reference. Happily this fixes the long standing issue where host | |
266 | function objects get a prototype from the lexical global object of the | |
267 | first function that calls them, instead of the global object that they | |
268 | are defined on. | |
269 | ||
270 | * API/JSCallbackConstructor.cpp: | |
271 | (JSC::JSCallbackConstructor::JSCallbackConstructor): | |
272 | * API/JSCallbackConstructor.h: | |
273 | * API/JSCallbackFunction.cpp: | |
274 | (JSC::JSCallbackFunction::JSCallbackFunction): | |
275 | * API/JSCallbackFunction.h: | |
276 | * API/JSCallbackObject.cpp: | |
277 | (JSC::): | |
278 | * API/JSCallbackObject.h: | |
279 | * API/JSCallbackObjectFunctions.h: | |
280 | (JSC::::JSCallbackObject): | |
281 | (JSC::::staticFunctionGetter): | |
282 | * API/JSClassRef.cpp: | |
283 | (OpaqueJSClass::prototype): | |
284 | * API/JSContextRef.cpp: | |
285 | * API/JSObjectRef.cpp: | |
286 | (JSObjectMake): | |
287 | (JSObjectMakeFunctionWithCallback): | |
288 | (JSObjectMakeConstructor): | |
289 | (JSObjectGetPrivate): | |
290 | (JSObjectSetPrivate): | |
291 | (JSObjectGetPrivateProperty): | |
292 | (JSObjectSetPrivateProperty): | |
293 | (JSObjectDeletePrivateProperty): | |
294 | * API/JSValueRef.cpp: | |
295 | (JSValueIsObjectOfClass): | |
296 | * API/JSWeakObjectMapRefPrivate.cpp: | |
297 | * CMakeLists.txt: | |
298 | * GNUmakefile.am: | |
299 | * JavaScriptCore.exp: | |
300 | * JavaScriptCore.gypi: | |
301 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
302 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
303 | * interpreter/Interpreter.cpp: | |
304 | (JSC::Interpreter::privateExecute): | |
305 | * jit/JITStubs.cpp: | |
306 | (JSC::DEFINE_STUB_FUNCTION): | |
307 | * jsc.cpp: | |
308 | (GlobalObject::GlobalObject): | |
309 | * runtime/ArrayConstructor.cpp: | |
310 | (JSC::ArrayConstructor::ArrayConstructor): | |
311 | * runtime/ArrayConstructor.h: | |
312 | * runtime/ArrayPrototype.cpp: | |
313 | (JSC::ArrayPrototype::ArrayPrototype): | |
314 | * runtime/ArrayPrototype.h: | |
315 | (JSC::ArrayPrototype::createStructure): | |
316 | * runtime/BooleanConstructor.cpp: | |
317 | (JSC::BooleanConstructor::BooleanConstructor): | |
318 | * runtime/BooleanConstructor.h: | |
319 | * runtime/BooleanPrototype.cpp: | |
320 | (JSC::BooleanPrototype::BooleanPrototype): | |
321 | * runtime/BooleanPrototype.h: | |
322 | * runtime/DateConstructor.cpp: | |
323 | (JSC::DateConstructor::DateConstructor): | |
324 | * runtime/DateConstructor.h: | |
325 | * runtime/DatePrototype.cpp: | |
326 | (JSC::DatePrototype::DatePrototype): | |
327 | * runtime/DatePrototype.h: | |
328 | * runtime/ErrorConstructor.cpp: | |
329 | (JSC::ErrorConstructor::ErrorConstructor): | |
330 | * runtime/ErrorConstructor.h: | |
331 | * runtime/ErrorPrototype.cpp: | |
332 | (JSC::ErrorPrototype::ErrorPrototype): | |
333 | * runtime/ErrorPrototype.h: | |
334 | * runtime/FunctionConstructor.cpp: | |
335 | (JSC::FunctionConstructor::FunctionConstructor): | |
336 | * runtime/FunctionConstructor.h: | |
337 | * runtime/FunctionPrototype.cpp: | |
338 | (JSC::FunctionPrototype::FunctionPrototype): | |
339 | (JSC::FunctionPrototype::addFunctionProperties): | |
340 | * runtime/FunctionPrototype.h: | |
341 | * runtime/GlobalEvalFunction.cpp: | |
342 | (JSC::GlobalEvalFunction::GlobalEvalFunction): | |
343 | * runtime/GlobalEvalFunction.h: | |
344 | * runtime/InternalFunction.cpp: | |
345 | (JSC::InternalFunction::InternalFunction): | |
346 | * runtime/InternalFunction.h: | |
347 | * runtime/JSCell.h: | |
348 | (JSC::JSValue::getCallData): | |
349 | (JSC::JSValue::getConstructData): | |
350 | * runtime/JSFunction.cpp: | |
351 | (JSC::JSFunction::JSFunction): | |
352 | * runtime/JSFunction.h: | |
353 | * runtime/JSGlobalObject.cpp: | |
354 | (JSC::JSGlobalObject::reset): | |
355 | * runtime/JSGlobalObject.h: | |
356 | (JSC::JSGlobalObject::JSGlobalObject): | |
357 | * runtime/JSONObject.cpp: | |
358 | (JSC::JSONObject::JSONObject): | |
359 | * runtime/JSONObject.h: | |
360 | * runtime/JSObject.h: | |
361 | * runtime/JSObjectWithGlobalObject.cpp: Added. | |
362 | (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): | |
363 | * runtime/JSObjectWithGlobalObject.h: Added. | |
364 | (JSC::JSObjectWithGlobalObject::createStructure): | |
365 | (JSC::JSObjectWithGlobalObject::JSObjectWithGlobalObject): | |
366 | * runtime/JSValue.cpp: | |
367 | (JSC::JSValue::isValidCallee): | |
368 | * runtime/JSValue.h: | |
369 | * runtime/Lookup.cpp: | |
370 | (JSC::setUpStaticFunctionSlot): | |
371 | * runtime/MathObject.cpp: | |
372 | (JSC::MathObject::MathObject): | |
373 | * runtime/MathObject.h: | |
374 | * runtime/NativeErrorConstructor.cpp: | |
375 | (JSC::NativeErrorConstructor::NativeErrorConstructor): | |
376 | * runtime/NativeErrorConstructor.h: | |
377 | * runtime/NativeErrorPrototype.cpp: | |
378 | (JSC::NativeErrorPrototype::NativeErrorPrototype): | |
379 | * runtime/NativeErrorPrototype.h: | |
380 | * runtime/NumberConstructor.cpp: | |
381 | (JSC::NumberConstructor::NumberConstructor): | |
382 | * runtime/NumberConstructor.h: | |
383 | * runtime/NumberPrototype.cpp: | |
384 | (JSC::NumberPrototype::NumberPrototype): | |
385 | * runtime/NumberPrototype.h: | |
386 | * runtime/ObjectConstructor.cpp: | |
387 | (JSC::ObjectConstructor::ObjectConstructor): | |
388 | * runtime/ObjectConstructor.h: | |
389 | * runtime/ObjectPrototype.cpp: | |
390 | (JSC::ObjectPrototype::ObjectPrototype): | |
391 | * runtime/ObjectPrototype.h: | |
392 | * runtime/PrototypeFunction.cpp: | |
393 | (JSC::PrototypeFunction::PrototypeFunction): | |
394 | * runtime/PrototypeFunction.h: | |
395 | * runtime/RegExpConstructor.cpp: | |
396 | (JSC::RegExpConstructor::RegExpConstructor): | |
397 | (JSC::constructRegExp): | |
398 | * runtime/RegExpConstructor.h: | |
399 | * runtime/RegExpObject.cpp: | |
400 | (JSC::RegExpObject::RegExpObject): | |
401 | * runtime/RegExpObject.h: | |
402 | * runtime/RegExpPrototype.cpp: | |
403 | (JSC::RegExpPrototype::RegExpPrototype): | |
404 | * runtime/RegExpPrototype.h: | |
405 | * runtime/StringConstructor.cpp: | |
406 | (JSC::StringConstructor::StringConstructor): | |
407 | * runtime/StringConstructor.h: | |
408 | * runtime/StringPrototype.cpp: | |
409 | (JSC::StringPrototype::StringPrototype): | |
410 | * runtime/StringPrototype.h: | |
411 | ||
412 | 2010-05-21 Geoffrey Garen <ggaren@apple.com> | |
413 | ||
414 | Reviewed by Oliver Hunt. | |
415 | ||
416 | Removed the unused entry in the CallFrame | |
417 | https://bugs.webkit.org/show_bug.cgi?id=39470 | |
418 | ||
419 | Removed the unused entry in the CallFrame, and reordered CallFrame | |
420 | writes on the hot path to be in forwards order. | |
421 | ||
422 | SunSpider says 0.3% faster. | |
423 | ||
424 | * interpreter/RegisterFile.h: | |
425 | (JSC::RegisterFile::): | |
426 | * jit/JITCall.cpp: | |
427 | (JSC::JIT::compileOpCall): | |
428 | ||
429 | 2010-05-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
430 | ||
431 | Reviewed by Kenneth Rohde Christiansen. | |
432 | ||
433 | Split the QScriptValue autotest into smaller chunks. | |
434 | ||
435 | File tst_qscriptvalue_generated.cpp was huge and it was difficult to compile | |
436 | it with MSVS2008, because of the code optimization. | |
437 | ||
438 | Tests were splited into a few files for better use of distributed | |
439 | compilation. | |
440 | Repeated calls to insert() and operator<<() where replaced by loops, | |
441 | that should reduce time of code optimizing. | |
442 | ||
443 | New files were generated by the same application, test logic wasn't changed. | |
444 | ||
445 | [Qt] The QScriptValue autotest should be refactored. | |
446 | https://bugs.webkit.org/show_bug.cgi?id=38987 | |
447 | ||
448 | * qt/tests/qscriptvalue/qscriptvalue.pro: | |
449 | * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
450 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Removed. | |
451 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated_init.cpp: Added. | |
452 | (tst_QScriptValue::initScriptValues): | |
453 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated_istype.cpp: Added. | |
454 | (tst_QScriptValue::isValid_initData): | |
455 | (tst_QScriptValue::isValid_makeData): | |
456 | (tst_QScriptValue::isValid_test): | |
457 | (tst_QScriptValue::isBool_initData): | |
458 | (tst_QScriptValue::isBool_makeData): | |
459 | (tst_QScriptValue::isBool_test): | |
460 | (tst_QScriptValue::isBoolean_initData): | |
461 | (tst_QScriptValue::isBoolean_makeData): | |
462 | (tst_QScriptValue::isBoolean_test): | |
463 | (tst_QScriptValue::isNumber_initData): | |
464 | (tst_QScriptValue::isNumber_makeData): | |
465 | (tst_QScriptValue::isNumber_test): | |
466 | (tst_QScriptValue::isFunction_initData): | |
467 | (tst_QScriptValue::isFunction_makeData): | |
468 | (tst_QScriptValue::isFunction_test): | |
469 | (tst_QScriptValue::isNull_initData): | |
470 | (tst_QScriptValue::isNull_makeData): | |
471 | (tst_QScriptValue::isNull_test): | |
472 | (tst_QScriptValue::isString_initData): | |
473 | (tst_QScriptValue::isString_makeData): | |
474 | (tst_QScriptValue::isString_test): | |
475 | (tst_QScriptValue::isUndefined_initData): | |
476 | (tst_QScriptValue::isUndefined_makeData): | |
477 | (tst_QScriptValue::isUndefined_test): | |
478 | (tst_QScriptValue::isObject_initData): | |
479 | (tst_QScriptValue::isObject_makeData): | |
480 | (tst_QScriptValue::isObject_test): | |
481 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated_totype.cpp: Added. | |
482 | (tst_QScriptValue::toString_initData): | |
483 | (tst_QScriptValue::toString_makeData): | |
484 | (tst_QScriptValue::toString_test): | |
485 | (tst_QScriptValue::toNumber_initData): | |
486 | (tst_QScriptValue::toNumber_makeData): | |
487 | (tst_QScriptValue::toNumber_test): | |
488 | (tst_QScriptValue::toBool_initData): | |
489 | (tst_QScriptValue::toBool_makeData): | |
490 | (tst_QScriptValue::toBool_test): | |
491 | (tst_QScriptValue::toBoolean_initData): | |
492 | (tst_QScriptValue::toBoolean_makeData): | |
493 | (tst_QScriptValue::toBoolean_test): | |
494 | (tst_QScriptValue::toInteger_initData): | |
495 | (tst_QScriptValue::toInteger_makeData): | |
496 | (tst_QScriptValue::toInteger_test): | |
497 | (tst_QScriptValue::toInt32_initData): | |
498 | (tst_QScriptValue::toInt32_makeData): | |
499 | (tst_QScriptValue::toInt32_test): | |
500 | (tst_QScriptValue::toUInt32_initData): | |
501 | (tst_QScriptValue::toUInt32_makeData): | |
502 | (tst_QScriptValue::toUInt32_test): | |
503 | (tst_QScriptValue::toUInt16_initData): | |
504 | (tst_QScriptValue::toUInt16_makeData): | |
505 | (tst_QScriptValue::toUInt16_test): | |
506 | ||
507 | 2010-05-21 Kwang Yul Seo <skyul@company100.net> | |
508 | ||
509 | Reviewed by Eric Seidel. | |
510 | ||
511 | Add COMPILER(MSVC) guard for strnstr | |
512 | https://bugs.webkit.org/show_bug.cgi?id=39397 | |
513 | ||
514 | BREWMP uses MSVC for simulator build, but it is not OS(WINDOWS). | |
515 | Add COMPILER(MSVC) guard for strnstr. | |
516 | ||
517 | * wtf/StringExtras.h: | |
518 | ||
519 | 2010-05-21 Kwang Yul Seo <skyul@company100.net> | |
520 | ||
521 | Reviewed by Eric Seidel. | |
522 | ||
523 | [BREWMP] Add !PLATFORM(BREWMP) guard for isMainThread | |
524 | https://bugs.webkit.org/show_bug.cgi?id=39396 | |
525 | ||
526 | BREWMP sets ENABLE(SINGLE_THREADED), so it uses isMainThread from ThreadingNone.cpp. | |
527 | Exclude isMainThread in MainThread.cpp. | |
528 | ||
529 | * wtf/MainThread.cpp: | |
530 | ||
531 | 2010-05-20 Kwang Yul Seo <skyul@company100.net> | |
532 | ||
533 | Reviewed by Eric Seidel. | |
534 | ||
535 | [BREWMP] Use skia as BREW MP's graphics backend. | |
536 | https://bugs.webkit.org/show_bug.cgi?id=39407 | |
537 | ||
538 | Define WTF_PLATFORM_SKIA=1 for BREW MP. | |
539 | ||
540 | * wtf/Platform.h: | |
541 | ||
542 | 2010-05-20 Geoffrey Garen <ggaren@apple.com> | |
543 | ||
544 | Reviewed by Beth Dakin. | |
545 | ||
546 | Fixed naming mixup: it's op_call_put_result, not ret_result. | |
547 | ||
548 | * bytecode/CodeBlock.cpp: | |
549 | (JSC::CodeBlock::dump): | |
550 | * interpreter/Interpreter.cpp: | |
551 | (JSC::Interpreter::privateExecute): | |
552 | ||
553 | 2010-05-20 Geoffrey Garen <ggaren@apple.com> | |
554 | ||
555 | Reviewed by Oliver Hunt. | |
556 | ||
557 | Whittling away at CodeBlock use: Removed a little wonkiness in closure lookup | |
558 | https://bugs.webkit.org/show_bug.cgi?id=39444 | |
559 | ||
560 | Calculate all lookup depths at compile time. I'm not sure why we couldn't | |
561 | do this before, but whatever the reason, it seems to be gone now. | |
562 | ||
563 | * bytecompiler/BytecodeGenerator.cpp: | |
564 | (JSC::BytecodeGenerator::findScopedProperty): | |
565 | * bytecompiler/BytecodeGenerator.h: | |
566 | * interpreter/Interpreter.cpp: | |
567 | (JSC::Interpreter::resolveSkip): | |
568 | (JSC::Interpreter::resolveGlobalDynamic): | |
569 | (JSC::Interpreter::privateExecute): | |
570 | * jit/JITOpcodes.cpp: | |
571 | (JSC::JIT::emit_op_get_scoped_var): | |
572 | (JSC::JIT::emit_op_put_scoped_var): | |
573 | (JSC::JIT::emit_op_resolve_skip): | |
574 | (JSC::JIT::emit_op_resolve_global_dynamic): | |
575 | (JSC::JIT::emitSlow_op_resolve_global_dynamic): | |
576 | * jit/JITOpcodes32_64.cpp: | |
577 | (JSC::JIT::emit_op_get_scoped_var): | |
578 | (JSC::JIT::emit_op_put_scoped_var): | |
579 | (JSC::JIT::emit_op_resolve_skip): | |
580 | ||
581 | 2010-05-20 Darin Adler <darin@apple.com> | |
582 | ||
583 | Reviewed by Eric Seidel. | |
584 | ||
585 | Fix warnings seen on the buildbots today | |
586 | https://bugs.webkit.org/show_bug.cgi?id=39368 | |
587 | ||
588 | * profiler/ProfileNode.cpp: | |
589 | (JSC::getCount): Removed unneeded initialization of global variable. | |
590 | These are all initialized to zero anyway, so no need to try to initialize | |
591 | it and get a warning. | |
592 | ||
593 | * wtf/CurrentTime.cpp: | |
594 | (WTF::currentTime): Removed unused global variable. | |
595 | ||
596 | 2010-05-20 Geoffrey Garen <ggaren@apple.com> | |
597 | ||
598 | Reviewed by Darin Adler. | |
599 | ||
600 | Removed some reliance on callFame[CodeBlock] by storing CodeBlock in a | |
601 | local variable in the Interpreter. | |
602 | https://bugs.webkit.org/show_bug.cgi?id=39447 | |
603 | ||
604 | Small speedup on SunSpider in Interpreter mode. | |
605 | ||
606 | * interpreter/Interpreter.cpp: | |
607 | (JSC::Interpreter::privateExecute): | |
608 | * jsc.cpp: | |
609 | * wtf/Platform.h: | |
610 | ||
611 | 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
612 | ||
613 | Reviewed by Oliver Hunt. | |
614 | ||
615 | Bug 39408 - Unify JIT/interpreter return behaviour. | |
616 | ||
617 | Presently the JIT and the interpreter have differing implementations in how | |
618 | they handle storing the result of a function call back to the register file. | |
619 | In both cases the op_call ( / _eval / _varargs / op_construct) opcode has an | |
620 | operand indicating the VM register in which the result should be stored. | |
621 | The JIT plants code after the call to store the result, so the value will be | |
622 | stored as soon as the callee has returned. In the interpreter the call | |
623 | passes the return value register id into the callee via the callee callframe, | |
624 | and the callee is responsible for writing the result back into its callers | |
625 | register file after it has restored the parents callframe pointer, but before | |
626 | returning. | |
627 | ||
628 | Instead, move the task of writing the call result to the register file into a | |
629 | new opcode (op_call_put_result), and after returning the callee should leave | |
630 | the return value in a canonical location. In the case of the interpreter, | |
631 | this canonical location is a local variable in privateExecute | |
632 | (functionReturnValue), in the case of the JIT this is the normal return value | |
633 | registers (regT0, or regT1:regT0 in JSVALUE32_64). op_call_put_result stores | |
634 | the result from the canonical location to the registerfile. | |
635 | ||
636 | In addition to unifying JIT & interpreter behaviour this change allows us to | |
637 | remove a slot from the callframe, omit the write of the result where the | |
638 | return value from the call is not used, and provides a 2% speedup on sunspider | |
639 | in the interpreter. | |
640 | ||
641 | * bytecode/CodeBlock.cpp: | |
642 | (JSC::CodeBlock::dump): | |
643 | * bytecode/Opcode.h: | |
644 | * bytecompiler/BytecodeGenerator.cpp: | |
645 | (JSC::BytecodeGenerator::emitCall): | |
646 | (JSC::BytecodeGenerator::emitCallVarargs): | |
647 | (JSC::BytecodeGenerator::emitConstruct): | |
648 | * bytecompiler/BytecodeGenerator.h: | |
649 | (JSC::BytecodeGenerator::finalDestinationOrIgnored): | |
650 | * bytecompiler/NodesCodegen.cpp: | |
651 | (JSC::NewExprNode::emitBytecode): | |
652 | (JSC::FunctionCallValueNode::emitBytecode): | |
653 | (JSC::FunctionCallResolveNode::emitBytecode): | |
654 | (JSC::FunctionCallBracketNode::emitBytecode): | |
655 | (JSC::FunctionCallDotNode::emitBytecode): | |
656 | (JSC::CallFunctionCallDotNode::emitBytecode): | |
657 | (JSC::ApplyFunctionCallDotNode::emitBytecode): | |
658 | * interpreter/CallFrame.h: | |
659 | (JSC::ExecState::init): | |
660 | (JSC::ExecState::noCaller): | |
661 | * interpreter/Interpreter.cpp: | |
662 | (JSC::Interpreter::dumpRegisters): | |
663 | (JSC::Interpreter::throwException): | |
664 | (JSC::Interpreter::privateExecute): | |
665 | * interpreter/RegisterFile.h: | |
666 | (JSC::RegisterFile::): | |
667 | * jit/JIT.cpp: | |
668 | (JSC::JIT::privateCompileMainPass): | |
669 | * jit/JIT.h: | |
670 | * jit/JITCall.cpp: | |
671 | (JSC::JIT::compileOpCallSetupArgs): | |
672 | (JSC::JIT::compileOpConstructSetupArgs): | |
673 | (JSC::JIT::emit_op_call_put_result): | |
674 | (JSC::JIT::compileOpCallVarargs): | |
675 | (JSC::JIT::compileOpCallVarargsSlowCase): | |
676 | (JSC::JIT::compileOpCall): | |
677 | (JSC::JIT::compileOpCallSlowCase): | |
678 | (JSC::JIT::compileOpCallVarargsSetupArgs): | |
679 | ||
680 | 2010-05-20 Steve Block <steveblock@google.com> | |
681 | ||
682 | Reviewed by Jeremy Orlow. | |
683 | ||
684 | Provide bindings for DeviceOrientation | |
685 | https://bugs.webkit.org/show_bug.cgi?id=39210 | |
686 | ||
687 | Adds ENABLE_DEVICE_ORIENTATION to XCode project file, always disabled. | |
688 | ||
689 | * Configurations/FeatureDefines.xcconfig: | |
690 | ||
691 | 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
692 | ||
693 | Reviewed by Geoff Garen. | |
694 | ||
695 | Errk! rename op_constructor_ret as requested in review of Bug 39399. | |
696 | ||
697 | * bytecode/CodeBlock.cpp: | |
698 | (JSC::CodeBlock::dump): | |
699 | * bytecode/Opcode.h: | |
700 | * bytecompiler/BytecodeGenerator.cpp: | |
701 | (JSC::BytecodeGenerator::emitReturn): | |
702 | * interpreter/Interpreter.cpp: | |
703 | (JSC::Interpreter::privateExecute): | |
704 | * jit/JIT.cpp: | |
705 | (JSC::JIT::privateCompileMainPass): | |
706 | * jit/JIT.h: | |
707 | * jit/JITCall.cpp: | |
708 | (JSC::JIT::emit_op_ret_object_or_this): | |
709 | * jit/JITOpcodes.cpp: | |
710 | (JSC::JIT::emit_op_ret_object_or_this): | |
711 | ||
712 | 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
713 | ||
714 | Reviewed by Geoff Garen. | |
715 | ||
716 | Bug 39399 - Move responsibility for verifying constructors return objects from the caller to the callee. | |
717 | ||
718 | This is a necessary step to move object creation from caller to callee. | |
719 | ||
720 | * bytecode/CodeBlock.cpp: | |
721 | (JSC::CodeBlock::dump): | |
722 | * bytecode/Opcode.h: | |
723 | * bytecompiler/BytecodeGenerator.cpp: | |
724 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
725 | (JSC::BytecodeGenerator::emitReturn): | |
726 | (JSC::BytecodeGenerator::emitConstruct): | |
727 | * bytecompiler/BytecodeGenerator.h: | |
728 | (JSC::BytecodeGenerator::isConstructor): | |
729 | * bytecompiler/NodesCodegen.cpp: | |
730 | (JSC::FunctionBodyNode::emitBytecode): | |
731 | * interpreter/Interpreter.cpp: | |
732 | (JSC::Interpreter::privateExecute): | |
733 | * jit/JIT.cpp: | |
734 | (JSC::JIT::privateCompileMainPass): | |
735 | (JSC::JIT::privateCompileSlowCases): | |
736 | * jit/JIT.h: | |
737 | * jit/JITCall.cpp: | |
738 | (JSC::JIT::emit_op_constructor_ret): | |
739 | * jit/JITOpcodes.cpp: | |
740 | (JSC::JIT::emit_op_constructor_ret): | |
741 | ||
742 | 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
743 | ||
744 | Reviewed by NOBODY (build fix). | |
745 | ||
746 | Fix windows build II. | |
747 | ||
748 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
749 | ||
750 | 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
751 | ||
752 | Reviewed by NOBODY (build fix). | |
753 | ||
754 | Fix windows build. | |
755 | ||
756 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
757 | ||
758 | 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
759 | ||
760 | Reviewed by Oliver Hunt. | |
761 | ||
762 | Bug 39393 - JSFunction need not be a subclass of InternalFunction. | |
763 | ||
764 | re-landing r59800. | |
765 | ||
766 | * JavaScriptCore.exp: | |
767 | * interpreter/Interpreter.cpp: | |
768 | (JSC::Interpreter::retrieveCaller): | |
769 | (JSC::Interpreter::findFunctionCallFrame): | |
770 | * interpreter/Interpreter.h: | |
771 | * profiler/Profiler.cpp: | |
772 | (JSC::Profiler::createCallIdentifier): | |
773 | * runtime/FunctionPrototype.cpp: | |
774 | (JSC::functionProtoFuncToString): | |
775 | * runtime/JSFunction.cpp: | |
776 | (JSC::): | |
777 | (JSC::JSFunction::JSFunction): | |
778 | (JSC::JSFunction::name): | |
779 | (JSC::JSFunction::displayName): | |
780 | (JSC::JSFunction::calculatedDisplayName): | |
781 | * runtime/JSFunction.h: | |
782 | * runtime/JSObject.cpp: | |
783 | (JSC::JSObject::putDirectFunction): | |
784 | (JSC::JSObject::putDirectFunctionWithoutTransition): | |
785 | * runtime/JSObject.h: | |
786 | * runtime/Lookup.cpp: | |
787 | (JSC::setUpStaticFunctionSlot): | |
788 | ||
789 | 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
790 | ||
791 | Reviewed by NOBODY (build fix). | |
792 | ||
793 | Reverting r59800, this b0rked stuff. | |
794 | ||
795 | * JavaScriptCore.exp: | |
796 | * interpreter/Interpreter.cpp: | |
797 | (JSC::Interpreter::retrieveCaller): | |
798 | (JSC::Interpreter::findFunctionCallFrame): | |
799 | * interpreter/Interpreter.h: | |
800 | * profiler/Profiler.cpp: | |
801 | (JSC::Profiler::createCallIdentifier): | |
802 | * runtime/FunctionPrototype.cpp: | |
803 | (JSC::functionProtoFuncToString): | |
804 | * runtime/JSFunction.cpp: | |
805 | (JSC::): | |
806 | (JSC::JSFunction::JSFunction): | |
807 | * runtime/JSFunction.h: | |
808 | * runtime/JSObject.cpp: | |
809 | * runtime/JSObject.h: | |
810 | * runtime/Lookup.cpp: | |
811 | (JSC::setUpStaticFunctionSlot): | |
812 | ||
813 | 2010-05-19 Gavin Barraclough <barraclough@apple.com> | |
814 | ||
815 | Reviewed by Oliver Hunt. | |
816 | ||
817 | Bug 39393 - JSFunction need not be a subclass of InternalFunction. | |
818 | ||
819 | This may prevent us from introducing a more useful parent class to | |
820 | JSFunction, e.g. a JSObject that holds an executable, which could | |
821 | also reference an eval or program executable. | |
822 | ||
823 | * JavaScriptCore.exp: | |
824 | * interpreter/Interpreter.cpp: | |
825 | (JSC::Interpreter::retrieveCaller): | |
826 | (JSC::Interpreter::findFunctionCallFrame): | |
827 | * interpreter/Interpreter.h: | |
828 | * profiler/Profiler.cpp: | |
829 | (JSC::Profiler::createCallIdentifier): | |
830 | * runtime/FunctionPrototype.cpp: | |
831 | (JSC::functionProtoFuncToString): | |
832 | * runtime/JSFunction.cpp: | |
833 | (JSC::): | |
834 | (JSC::JSFunction::JSFunction): | |
835 | (JSC::JSFunction::name): | |
836 | (JSC::JSFunction::displayName): | |
837 | (JSC::JSFunction::calculatedDisplayName): | |
838 | * runtime/JSFunction.h: | |
839 | * runtime/JSObject.cpp: | |
840 | (JSC::JSObject::putDirectFunction): | |
841 | (JSC::JSObject::putDirectFunctionWithoutTransition): | |
842 | * runtime/JSObject.h: | |
843 | * runtime/Lookup.cpp: | |
844 | (JSC::setUpStaticFunctionSlot): | |
845 | ||
846 | 2010-05-19 Oliver Hunt <oliver@apple.com> | |
847 | ||
848 | Reviewed by Geoffrey Garen. | |
849 | ||
850 | emitJumpIfNotJSCell should special case constant immediate values | |
851 | https://bugs.webkit.org/show_bug.cgi?id=39392 | |
852 | <rdar://problem/8001324> | |
853 | ||
854 | Make emitJumpSlowCaseIfNotJSCell special case constant immediate | |
855 | values, in addition to the immediate JSCell optimisation. | |
856 | ||
857 | Also add assertions to make sure no one else produces code that | |
858 | attempts to load constants from the register file. | |
859 | ||
860 | * jit/JITInlineMethods.h: | |
861 | (JSC::JIT::emitJumpSlowCaseIfNotJSCell): | |
862 | * jit/JSInterfaceJIT.h: | |
863 | (JSC::JSInterfaceJIT::emitJumpIfNotJSCell): | |
864 | (JSC::JSInterfaceJIT::emitLoadInt32): | |
865 | (JSC::JSInterfaceJIT::tagFor): | |
866 | (JSC::JSInterfaceJIT::payloadFor): | |
867 | (JSC::JSInterfaceJIT::emitLoadDouble): | |
868 | (JSC::JSInterfaceJIT::addressFor): | |
869 | * jit/ThunkGenerators.cpp: | |
870 | ||
871 | 2010-05-19 Geoffrey Garen <ggaren@apple.com> | |
872 | ||
873 | Reviewed by Sam Weinig. | |
874 | ||
875 | Slight refactoring to CodeBlock bytecode access | |
876 | https://bugs.webkit.org/show_bug.cgi?id=39384 | |
877 | ||
878 | * bytecode/CodeBlock.h: | |
879 | (JSC::CodeBlock::bytecodeOffset): | |
880 | * interpreter/CallFrame.h: | |
881 | (JSC::ExecState::returnPC): | |
882 | * interpreter/Interpreter.cpp: | |
883 | (JSC::Interpreter::unwindCallFrame): | |
884 | (JSC::Interpreter::retrieveLastCaller): Moved bytecode access into a | |
885 | CodeBlock helper function. Changed CallFrame to accurately represent | |
886 | how the returnPC is stored in JIT vs Interpreter. | |
887 | ||
888 | 2010-05-19 Geoffrey Garen <ggaren@apple.com> | |
889 | ||
890 | Reviewed by Sam Weinig. | |
891 | ||
892 | Don't build the Interpreter into JIT builds. | |
893 | https://bugs.webkit.org/show_bug.cgi?id=39373 | |
894 | ||
895 | SunSpider says no change. | |
896 | ||
897 | * interpreter/Interpreter.cpp: | |
898 | (JSC::Interpreter::privateExecute): | |
899 | * interpreter/Interpreter.h: | |
900 | * wtf/Platform.h: | |
901 | ||
902 | 2010-05-19 Geoffrey Garen <ggaren@apple.com> | |
903 | ||
904 | Reviewed by Gavin Barraclough. | |
905 | ||
906 | Standardized naming: "bytecode offset" wins; "bytecode index" loses. | |
907 | ||
908 | Also renamed getBytecodeOffset to bytecodeOffset, to match the WebKit | |
909 | naming style. | |
910 | ||
911 | * bytecode/CodeBlock.h: | |
912 | (JSC::CallReturnOffsetToBytecodeOffset::CallReturnOffsetToBytecodeOffset): | |
913 | (JSC::getCallReturnOffset): | |
914 | (JSC::CodeBlock::bytecodeOffset): | |
915 | (JSC::CodeBlock::callReturnIndexVector): | |
916 | * interpreter/Interpreter.cpp: | |
917 | (JSC::bytecodeOffsetForPC): | |
918 | * jit/JIT.cpp: | |
919 | (JSC::JIT::JIT): | |
920 | (JSC::JIT::privateCompileMainPass): | |
921 | (JSC::JIT::privateCompileLinkPass): | |
922 | (JSC::JIT::privateCompileSlowCases): | |
923 | (JSC::JIT::privateCompile): | |
924 | * jit/JIT.h: | |
925 | (JSC::CallRecord::CallRecord): | |
926 | (JSC::JumpTable::JumpTable): | |
927 | (JSC::SwitchRecord::SwitchRecord): | |
928 | * jit/JITCall.cpp: | |
929 | (JSC::JIT::compileOpCallVarargsSlowCase): | |
930 | (JSC::JIT::compileOpCall): | |
931 | * jit/JITInlineMethods.h: | |
932 | (JSC::JIT::emitNakedCall): | |
933 | (JSC::JIT::addSlowCase): | |
934 | (JSC::JIT::addJump): | |
935 | (JSC::JIT::emitJumpSlowToHot): | |
936 | (JSC::JIT::isLabeled): | |
937 | (JSC::JIT::map): | |
938 | (JSC::JIT::unmap): | |
939 | (JSC::JIT::isMapped): | |
940 | (JSC::JIT::getMappedPayload): | |
941 | (JSC::JIT::getMappedTag): | |
942 | (JSC::JIT::emitGetVirtualRegister): | |
943 | * jit/JITOpcodes.cpp: | |
944 | (JSC::JIT::emit_op_switch_imm): | |
945 | (JSC::JIT::emit_op_switch_char): | |
946 | (JSC::JIT::emit_op_switch_string): | |
947 | (JSC::JIT::emit_op_new_error): | |
948 | * jit/JITOpcodes32_64.cpp: | |
949 | (JSC::JIT::emit_op_mov): | |
950 | (JSC::JIT::emit_op_get_global_var): | |
951 | (JSC::JIT::emit_op_put_global_var): | |
952 | (JSC::JIT::emit_op_get_scoped_var): | |
953 | (JSC::JIT::emit_op_put_scoped_var): | |
954 | (JSC::JIT::emit_op_to_primitive): | |
955 | (JSC::JIT::emit_op_resolve_global): | |
956 | (JSC::JIT::emit_op_to_jsnumber): | |
957 | (JSC::JIT::emit_op_catch): | |
958 | (JSC::JIT::emit_op_switch_imm): | |
959 | (JSC::JIT::emit_op_switch_char): | |
960 | (JSC::JIT::emit_op_switch_string): | |
961 | (JSC::JIT::emit_op_new_error): | |
962 | (JSC::JIT::emit_op_convert_this): | |
963 | * jit/JITPropertyAccess.cpp: | |
964 | (JSC::JIT::emit_op_method_check): | |
965 | (JSC::JIT::emitSlow_op_method_check): | |
966 | * jit/JITPropertyAccess32_64.cpp: | |
967 | (JSC::JIT::emit_op_method_check): | |
968 | (JSC::JIT::emitSlow_op_method_check): | |
969 | (JSC::JIT::emit_op_get_by_val): | |
970 | (JSC::JIT::emit_op_get_by_id): | |
971 | (JSC::JIT::emit_op_get_by_pname): | |
972 | * jit/JITStubCall.h: | |
973 | (JSC::JITStubCall::call): | |
974 | * jit/JITStubs.cpp: | |
975 | (JSC::DEFINE_STUB_FUNCTION): | |
976 | ||
977 | 2010-05-19 Peter Varga <pvarga@inf.u-szeged.hu> | |
978 | ||
979 | Reviewed by Darin Adler. | |
980 | ||
981 | The backtrackParenthesesOnceEnd function should store the start position | |
982 | of the subpattern's non-greedy match at the place of the subpattern's | |
983 | start index in the output array instead of the place of the | |
984 | subpattern's end index. | |
985 | Add layout test for checking of non-greedy matching of subpattern in | |
986 | regular expressions. | |
987 | https://bugs.webkit.org/show_bug.cgi?id=39289 | |
988 | ||
989 | * yarr/RegexInterpreter.cpp: | |
990 | (JSC::Yarr::Interpreter::backtrackParenthesesOnceEnd): | |
991 | ||
992 | 2010-05-18 Gavin Barraclough <barraclough@apple.com> | |
993 | ||
994 | Reviewed by Geoff Garen. | |
995 | ||
996 | Bug 39343 - Dynamically generate a native call thunk per NativeFunction | |
997 | ||
998 | https://bugs.webkit.org/show_bug.cgi?id=39252 regressed performance on i386, | |
999 | by adding an extra indirection to making a native call. By introducing per- | |
1000 | NativeFunction thunks we can hard code the function pointer into the thunk | |
1001 | so that it need not be loaded from the callee. | |
1002 | ||
1003 | * jit/JIT.h: | |
1004 | (JSC::JIT::compileCTINativeCall): | |
1005 | * jit/JITOpcodes.cpp: | |
1006 | (JSC::JIT::privateCompileCTINativeCall): | |
1007 | * jit/JITOpcodes32_64.cpp: | |
1008 | (JSC::JIT::privateCompileCTINativeCall): | |
1009 | * jit/JITPropertyAccess.cpp: | |
1010 | (JSC::JIT::emitSlow_op_get_by_val): | |
1011 | * jit/JITPropertyAccess32_64.cpp: | |
1012 | (JSC::JIT::emitSlow_op_get_by_val): | |
1013 | * jit/JITStubs.cpp: | |
1014 | (JSC::JITThunks::ctiStub): | |
1015 | (JSC::JITThunks::hostFunctionStub): | |
1016 | * jit/JITStubs.h: | |
1017 | * jit/SpecializedThunkJIT.h: | |
1018 | (JSC::SpecializedThunkJIT::finalize): | |
1019 | * jit/ThunkGenerators.cpp: | |
1020 | (JSC::charCodeAtThunkGenerator): | |
1021 | (JSC::charAtThunkGenerator): | |
1022 | (JSC::fromCharCodeThunkGenerator): | |
1023 | (JSC::sqrtThunkGenerator): | |
1024 | (JSC::powThunkGenerator): | |
1025 | * runtime/JSFunction.cpp: | |
1026 | (JSC::JSFunction::JSFunction): | |
1027 | * runtime/JSGlobalData.cpp: | |
1028 | (JSC::JSGlobalData::getHostFunction): | |
1029 | * runtime/JSGlobalData.h: | |
1030 | (JSC::JSGlobalData::getCTIStub): | |
1031 | * runtime/Lookup.cpp: | |
1032 | (JSC::setUpStaticFunctionSlot): | |
1033 | * runtime/StringConstructor.cpp: | |
1034 | (JSC::StringConstructor::StringConstructor): | |
1035 | * wtf/Platform.h: | |
1036 | ||
1037 | 2010-05-18 Geoffrey Garen <ggaren@apple.com> | |
1038 | ||
1039 | Reviewed by Darin Adler. | |
1040 | ||
1041 | Simplified handling of 'arguments' -- 1.2% SunSpider speedup | |
1042 | https://bugs.webkit.org/show_bug.cgi?id=39200 | |
1043 | ||
1044 | Removed the reserved OptionalCalleeArguments slot from the CallFrame. | |
1045 | Now, slots for 'arguments' are allocated and initialized only by | |
1046 | functions that might need them. | |
1047 | ||
1048 | * bytecode/CodeBlock.cpp: | |
1049 | (JSC::CodeBlock::dump): Updated for new bytecode operands. | |
1050 | ||
1051 | (JSC::CodeBlock::CodeBlock): | |
1052 | * bytecode/CodeBlock.h: | |
1053 | (JSC::unmodifiedArgumentsRegister): Added a helper function for mapping | |
1054 | from the arguments register to its unmodified counterpart. | |
1055 | ||
1056 | (JSC::CodeBlock::setArgumentsRegister): | |
1057 | (JSC::CodeBlock::argumentsRegister): | |
1058 | (JSC::CodeBlock::usesArguments): Changed from a "usesArguments" bool to | |
1059 | an optional int index representing the arguments register. | |
1060 | ||
1061 | * bytecode/Opcode.h: Updated for new bytecode operands. | |
1062 | ||
1063 | * bytecompiler/BytecodeGenerator.cpp: | |
1064 | (JSC::BytecodeGenerator::addVar): Factored out a helper function for | |
1065 | allocating an anonymous var. | |
1066 | ||
1067 | (JSC::BytecodeGenerator::BytecodeGenerator): Merged / simplified some | |
1068 | arguments vs activation logic, and added code to allocate the arguments | |
1069 | registers when needed. | |
1070 | ||
1071 | (JSC::BytecodeGenerator::createArgumentsIfNecessary): Updated for new bytecode operands. | |
1072 | ||
1073 | (JSC::BytecodeGenerator::emitCallEval): No need to create the arguments | |
1074 | object before calling eval; the activation object will lazily create the | |
1075 | arguments object if eval resolves it. | |
1076 | ||
1077 | (JSC::BytecodeGenerator::emitReturn): Updated for new bytecode operands. | |
1078 | ||
1079 | (JSC::BytecodeGenerator::emitPushScope): | |
1080 | (JSC::BytecodeGenerator::emitPushNewScope): Ditto emitCallEval. | |
1081 | ||
1082 | * bytecompiler/BytecodeGenerator.h: | |
1083 | (JSC::BytecodeGenerator::addVar): Factored out a helper function for | |
1084 | allocating an anonymous var. | |
1085 | ||
1086 | (JSC::BytecodeGenerator::registerFor): No more need for special handling | |
1087 | of the arguments registers; they're allocated just like normal registers | |
1088 | now. | |
1089 | ||
1090 | * interpreter/CallFrame.h: | |
1091 | (JSC::ExecState::callerFrame): | |
1092 | (JSC::ExecState::init): | |
1093 | * interpreter/CallFrameClosure.h: | |
1094 | (JSC::CallFrameClosure::resetCallFrame): Nixed optionalCalleeArguments. | |
1095 | ||
1096 | * interpreter/Interpreter.cpp: | |
1097 | (JSC::Interpreter::dumpRegisters): | |
1098 | (JSC::Interpreter::unwindCallFrame): | |
1099 | (JSC::Interpreter::privateExecute): | |
1100 | (JSC::Interpreter::retrieveArguments): Opcodes accessing 'arguments' now | |
1101 | take operands specifying registers, just like all other opcodes. | |
1102 | JSActivation::copyRegisters is no longer responsible for tearing off the | |
1103 | arguments object; instead, the VM is responsible for both. | |
1104 | ||
1105 | Also, a behavior change: Each access to f.arguments creates a new object, | |
1106 | unless f itself uses 'arguments'. This matches Chrome, and is necessary | |
1107 | for the optimization. f.arguments is a nonstandard, deprecated feature, | |
1108 | so high fidelity to a given implementation is not necessarily a goal. | |
1109 | Also, as illustrated by the new test case, the identity of f.arguments | |
1110 | has been broken since 2008, except in the case where f itself accesses | |
1111 | f.arguments -- but nobody seemed to notice. So, hopefully this change won't | |
1112 | break the web. | |
1113 | ||
1114 | * interpreter/Register.h: Nixed the special arguments accessor. It's no | |
1115 | longer needed. | |
1116 | ||
1117 | * interpreter/RegisterFile.h: | |
1118 | (JSC::RegisterFile::): | |
1119 | * jit/JITCall.cpp: | |
1120 | (JSC::JIT::compileOpCallInitializeCallFrame): | |
1121 | (JSC::JIT::compileOpCall): | |
1122 | * jit/JITOpcodes.cpp: | |
1123 | (JSC::JIT::emit_op_tear_off_activation): | |
1124 | (JSC::JIT::emit_op_tear_off_arguments): | |
1125 | (JSC::JIT::emit_op_create_arguments): | |
1126 | (JSC::JIT::emit_op_init_arguments): | |
1127 | * jit/JITOpcodes32_64.cpp: | |
1128 | (JSC::JIT::emit_op_tear_off_activation): | |
1129 | (JSC::JIT::emit_op_tear_off_arguments): | |
1130 | (JSC::JIT::emit_op_create_arguments): | |
1131 | (JSC::JIT::emit_op_init_arguments): The actual optimization: Removed | |
1132 | OptionalCalleeArguments from the callframe slot. Now, it doesn't need | |
1133 | to be initialized for most calls. | |
1134 | ||
1135 | * jit/JITStubs.cpp: | |
1136 | (JSC::DEFINE_STUB_FUNCTION): | |
1137 | * jit/JITStubs.h: | |
1138 | (JSC::): Updated stubs to support arbitrary 'arguments' registers, | |
1139 | instead of hard-coding something in the call frame. | |
1140 | ||
1141 | * runtime/Arguments.h: | |
1142 | (JSC::JSActivation::copyRegisters): Removed some obfuscatory abstraction. | |
1143 | ||
1144 | * runtime/Executable.h: | |
1145 | (JSC::FunctionExecutable::generatedByteCode): Added a helper for accessing | |
1146 | the 'arguments' register. In a future patch, that kind of data should | |
1147 | probably move out of CodeBlock and into Executable. | |
1148 | ||
1149 | * runtime/JSActivation.cpp: | |
1150 | (JSC::JSActivation::getOwnPropertySlot): | |
1151 | (JSC::JSActivation::argumentsGetter): | |
1152 | * runtime/JSActivation.h: Simplified / fixed access to 'arguments' via | |
1153 | the activation object. It now implements the same behavior implemented | |
1154 | by optimized variable access in the VM. This simplifies some other | |
1155 | things, too -- like eval code generation. | |
1156 | ||
1157 | 2010-05-18 Sam Weinig <sam@webkit.org> | |
1158 | ||
1159 | Try to fix the windows build. | |
1160 | ||
1161 | * API/JSStringRefBSTR.cpp: | |
1162 | ||
1163 | 2010-05-18 Anders Carlsson <andersca@apple.com> | |
1164 | ||
1165 | Reviewed by Sam Weinig. | |
1166 | ||
1167 | Add an inlineCapacity template parameter to ListHashSet and use it to shrink the positioned object list hash set. | |
1168 | https://bugs.webkit.org/show_bug.cgi?id=39304 | |
1169 | <rdar://problem/7998366> | |
1170 | ||
1171 | Add an inlineCapacity template parameter to ListHashSet. | |
1172 | ||
1173 | * wtf/ListHashSet.h: | |
1174 | (WTF::::ListHashSet): | |
1175 | (WTF::::operator): | |
1176 | (WTF::::swap): | |
1177 | (WTF::::~ListHashSet): | |
1178 | (WTF::::size): | |
1179 | (WTF::::capacity): | |
1180 | (WTF::::isEmpty): | |
1181 | (WTF::::begin): | |
1182 | (WTF::::end): | |
1183 | (WTF::::find): | |
1184 | (WTF::::contains): | |
1185 | (WTF::::add): | |
1186 | (WTF::::insertBefore): | |
1187 | (WTF::::remove): | |
1188 | (WTF::::clear): | |
1189 | (WTF::::unlinkAndDelete): | |
1190 | (WTF::::appendNode): | |
1191 | (WTF::::insertNodeBefore): | |
1192 | (WTF::::deleteAllNodes): | |
1193 | (WTF::::makeIterator): | |
1194 | (WTF::::makeConstIterator): | |
1195 | (WTF::deleteAllValues): | |
1196 | ||
1197 | 2010-05-18 Gabor Loki <loki@webkit.org> | |
1198 | ||
1199 | Reviewed by Darin Adler. | |
1200 | ||
1201 | Fix the interpreter after r59637 | |
1202 | https://bugs.webkit.org/show_bug.cgi?id=39287 | |
1203 | ||
1204 | * runtime/Executable.h: | |
1205 | * runtime/JSFunction.cpp: | |
1206 | (JSC::JSFunction::JSFunction): | |
1207 | (JSC::JSFunction::getCallData): | |
1208 | * runtime/JSGlobalData.cpp: | |
1209 | * runtime/JSGlobalData.h: | |
1210 | ||
1211 | 2010-05-17 Gavin Barraclough <barraclough@apple.com> | |
1212 | ||
1213 | Reviewed by Geoff Garen. | |
1214 | ||
1215 | Oops, meant ebx not eax there. Fix Qt (and probably Win too). | |
1216 | ||
1217 | * jit/JITOpcodes32_64.cpp: | |
1218 | ||
1219 | 2010-05-17 Gavin Barraclough <barraclough@apple.com> | |
1220 | ||
1221 | Reviewed by Geoff Garen. | |
1222 | ||
1223 | Bug 39252 - Move host/native JSFunction's NativeFunction onto NativeExecutable. | |
1224 | ||
1225 | Currently host functions reuse JSFunction's ScopeChain as storage for their | |
1226 | NativeFunction (the C function pointer to the host function implementation). | |
1227 | Instead, move this onto NativeExecutable. This will allow host functions to | |
1228 | have a scopechain (which will be implemented as a separate patch). | |
1229 | ||
1230 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
1231 | * jit/JIT.h: | |
1232 | * jit/JITCall.cpp: | |
1233 | (JSC::JIT::compileOpCallInitializeCallFrame): | |
1234 | (JSC::JIT::compileOpCall): | |
1235 | * jit/JITOpcodes.cpp: | |
1236 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
1237 | * jit/JITOpcodes32_64.cpp: | |
1238 | * jit/JITPropertyAccess.cpp: | |
1239 | (JSC::JIT::stringGetByValStubGenerator): | |
1240 | (JSC::JIT::emitSlow_op_get_by_val): | |
1241 | * jit/JITPropertyAccess32_64.cpp: | |
1242 | (JSC::JIT::stringGetByValStubGenerator): | |
1243 | (JSC::JIT::emitSlow_op_get_by_val): | |
1244 | * jit/JITStubs.cpp: | |
1245 | (JSC::JITThunks::specializedThunk): | |
1246 | * jit/JITStubs.h: | |
1247 | (JSC::JITThunks::ctiNativeCall): | |
1248 | * jit/SpecializedThunkJIT.h: | |
1249 | (JSC::SpecializedThunkJIT::finalize): | |
1250 | * jit/ThunkGenerators.cpp: | |
1251 | (JSC::charCodeAtThunkGenerator): | |
1252 | (JSC::charAtThunkGenerator): | |
1253 | (JSC::fromCharCodeThunkGenerator): | |
1254 | (JSC::sqrtThunkGenerator): | |
1255 | (JSC::powThunkGenerator): | |
1256 | * jit/ThunkGenerators.h: | |
1257 | * runtime/Executable.h: | |
1258 | (JSC::NativeExecutable::create): | |
1259 | (JSC::NativeExecutable::function): | |
1260 | (JSC::NativeExecutable::NativeExecutable): | |
1261 | (JSC::JSFunction::nativeFunction): | |
1262 | * runtime/JSFunction.cpp: | |
1263 | (JSC::JSFunction::JSFunction): | |
1264 | (JSC::JSFunction::~JSFunction): | |
1265 | (JSC::JSFunction::markChildren): | |
1266 | (JSC::JSFunction::getCallData): | |
1267 | (JSC::JSFunction::call): | |
1268 | (JSC::JSFunction::getOwnPropertySlot): | |
1269 | (JSC::JSFunction::getConstructData): | |
1270 | (JSC::JSFunction::construct): | |
1271 | * runtime/JSFunction.h: | |
1272 | (JSC::JSFunction::scope): | |
1273 | * runtime/JSGlobalData.h: | |
1274 | (JSC::JSGlobalData::getThunk): | |
1275 | * runtime/Lookup.cpp: | |
1276 | (JSC::setUpStaticFunctionSlot): | |
1277 | * runtime/StringConstructor.cpp: | |
1278 | (JSC::StringConstructor::StringConstructor): | |
1279 | ||
1280 | 2010-05-17 Patrick Gansterer <paroga@paroga.com> | |
1281 | ||
1282 | Reviewed by Laszlo Gombos. | |
1283 | ||
1284 | [Qt] Remove WinCE endian dedection. | |
1285 | https://bugs.webkit.org/show_bug.cgi?id=38511 | |
1286 | ||
1287 | Windows CE supports little-endian format only. | |
1288 | Correct dedection was added in r57804. | |
1289 | ||
1290 | * wtf/Platform.h: | |
1291 | ||
1292 | 2010-05-16 Simon Fraser <simon.fraser@apple.com> | |
1293 | ||
1294 | Reviewed by Darin Adler. | |
1295 | ||
1296 | Reduce the size of FunctionExecutable | |
1297 | https://bugs.webkit.org/show_bug.cgi?id=39180 | |
1298 | ||
1299 | Change m_numVariables from a size_t to 31 bits in a bitfield, | |
1300 | packed with another bit for m_forceUsesArguments (which in turn | |
1301 | get packed with the base class). | |
1302 | ||
1303 | Reduces the size of FunctionExecutable from 160 to 152 bytes. | |
1304 | ||
1305 | * runtime/Executable.h: | |
1306 | (JSC::FunctionExecutable::variableCount): | |
1307 | (JSC::FunctionExecutable::FunctionExecutable): | |
1308 | ||
1309 | 2010-05-15 Oliver Hunt <oliver@apple.com> | |
1310 | ||
1311 | Reviewed by Maciej Stachowiak. | |
1312 | ||
1313 | Incorrect codegen for slowcase of < in 64-bit | |
1314 | https://bugs.webkit.org/show_bug.cgi?id=39151 | |
1315 | ||
1316 | Call the correct stud for the slowcases of the < operator. | |
1317 | ||
1318 | * jit/JITArithmetic.cpp: | |
1319 | (JSC::JIT::emitSlow_op_jnless): | |
1320 | (JSC::JIT::emitSlow_op_jless): | |
1321 | ||
1322 | 2010-05-15 Leo Yang <leo.yang@torchmobile.com.cn> | |
1323 | ||
1324 | Reviewed by Darin Adler. | |
1325 | ||
1326 | Fix bug https://bugs.webkit.org/show_bug.cgi?id=38890 | |
1327 | ||
1328 | * runtime/DatePrototype.cpp: | |
1329 | (JSC::formatLocaleDate): | |
1330 | ||
1331 | 2010-05-15 Leandro Pereira <leandro@profusion.mobi> | |
1332 | ||
1333 | Reviewed by Adam Treat. | |
1334 | ||
1335 | [EFL] Add build system for the EFL port. | |
1336 | http://webkit.org/b/37945 | |
1337 | ||
1338 | * CMakeLists.txt: Added. | |
1339 | * CMakeListsEfl.txt: Added. | |
1340 | * config.h: Add conditional to look for cmakeconfig.h. | |
1341 | * jsc/CMakeLists.txt: Added. | |
1342 | * jsc/CMakeListsEfl.txt: Added. | |
1343 | * wtf/CMakeLists.txt: Added. | |
1344 | * wtf/CMakeListsEfl.txt: Added. | |
1345 | ||
1346 | 2010-05-15 Chao-ying Fu <fu@mips.com> | |
1347 | ||
1348 | Reviewed by Oliver Hunt. | |
1349 | ||
1350 | Update MIPS JIT for unsigned right shift, Math.sqrt, load16 | |
1351 | https://bugs.webkit.org/show_bug.cgi?id=38412 | |
1352 | ||
1353 | Fixed MIPS build failure. | |
1354 | ||
1355 | * assembler/MIPSAssembler.h: | |
1356 | (JSC::MIPSAssembler::srl): | |
1357 | (JSC::MIPSAssembler::srlv): | |
1358 | (JSC::MIPSAssembler::sqrtd): | |
1359 | * assembler/MacroAssemblerMIPS.h: | |
1360 | (JSC::MacroAssemblerMIPS::urshift32): | |
1361 | (JSC::MacroAssemblerMIPS::sqrtDouble): | |
1362 | (JSC::MacroAssemblerMIPS::load16): | |
1363 | (JSC::MacroAssemblerMIPS::supportsFloatingPointSqrt): | |
1364 | * jit/JSInterfaceJIT.h: | |
1365 | ||
1366 | 2010-05-15 Ilya Tikhonovsky <loislo@chromium.org> | |
1367 | ||
1368 | Reviewed by Geoffrey Garen. | |
1369 | ||
1370 | WebInspector: JSC Should provide heap size info for Timeline panel. | |
1371 | https://bugs.webkit.org/show_bug.cgi?id=38420 | |
1372 | ||
1373 | * JavaScriptCore.exp: | |
1374 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
1375 | * runtime/Collector.cpp: | |
1376 | (JSC::Heap::size): | |
1377 | * runtime/Collector.h: | |
1378 | ||
1379 | 2010-05-15 Dave Tapuska <dtapuska@rim.com> | |
1380 | ||
1381 | Reviewed by Darin Adler. | |
1382 | ||
1383 | Add a new define for we need strict arena alignment. ARMv5 with | |
1384 | double word instructions set this value. | |
1385 | ||
1386 | * wtf/Platform.h: | |
1387 | ||
1388 | 2010-05-14 Stephanie Lewis <slewis@apple.com> | |
1389 | ||
1390 | Rubber-stamped by Mark Rowe. | |
1391 | ||
1392 | Update order files. | |
1393 | ||
1394 | * JavaScriptCore.order: | |
1395 | ||
1396 | 2010-05-14 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
1397 | ||
1398 | Reviewed by Kenneth Rohde Christiansen. | |
1399 | ||
1400 | Implementation of QtScript API that provide method to convert a value to an object. | |
1401 | ||
1402 | [Qt] QtScript is missing toObject API | |
1403 | https://bugs.webkit.org/show_bug.cgi?id=36594 | |
1404 | ||
1405 | * qt/api/qscriptengine.cpp: | |
1406 | (QScriptEngine::toObject): | |
1407 | * qt/api/qscriptengine.h: | |
1408 | * qt/api/qscriptvalue.cpp: | |
1409 | (QScriptValue::toObject): | |
1410 | * qt/api/qscriptvalue.h: | |
1411 | * qt/api/qscriptvalue_p.h: | |
1412 | (QScriptValuePrivate::toObject): | |
1413 | * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
1414 | (tst_QScriptEngine::toObject): | |
1415 | (tst_QScriptEngine::toObjectTwoEngines): | |
1416 | * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: | |
1417 | (tst_QScriptValue::toObjectSimple): | |
1418 | * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
1419 | ||
1420 | 2010-05-14 Chao-ying Fu <fu@mips.com> | |
1421 | ||
1422 | Reviewed by Oliver Hunt. | |
1423 | ||
1424 | String Indexing Failure on JSVALUE32 targets | |
1425 | https://bugs.webkit.org/show_bug.cgi?id=39034 | |
1426 | ||
1427 | Remove zero-extend/shift-right code on regT1, because we already have | |
1428 | it in emit_op_get_by_val(). | |
1429 | ||
1430 | * jit/JITPropertyAccess.cpp: | |
1431 | (JSC::JIT::stringGetByValStubGenerator): | |
1432 | ||
1433 | 2010-05-10 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
1434 | ||
1435 | Reviewed by Alexey Proskuryakov. | |
1436 | ||
1437 | Fix a VS2010 assert in std::copy | |
1438 | https://bugs.webkit.org/show_bug.cgi?id=38630 | |
1439 | ||
1440 | The assert complains that the output iterator is null. | |
1441 | ||
1442 | * wtf/Vector.h: | |
1443 | (WTF::::operator): | |
1444 | ||
1445 | 2010-05-13 Maciej Stachowiak <mjs@apple.com> | |
1446 | ||
1447 | No review, attempted build fix. | |
1448 | ||
1449 | Try to fix Tiger build with some gratuitous initialization of | |
1450 | seemingly uninitialized variables. | |
1451 | ||
1452 | * wtf/text/StringImpl.h: | |
1453 | (WebCore::StringImpl::tryCreateUninitialized): | |
1454 | ||
1455 | 2010-05-13 Maciej Stachowiak <mjs@apple.com> | |
1456 | ||
1457 | Reviewed by Mark Rowe. | |
1458 | ||
1459 | Various JavaScript string optimizations | |
1460 | https://bugs.webkit.org/show_bug.cgi?id=39051 | |
1461 | ||
1462 | Approximately 1% SunSpider speedup. | |
1463 | ||
1464 | * runtime/ArrayPrototype.cpp: | |
1465 | (JSC::arrayProtoFuncJoin): Remove branches from the hot code path | |
1466 | by moving the first pass outside the loop, and duplicating the hot loop | |
1467 | to extract the loop-invariant branch. | |
1468 | * runtime/RegExp.cpp: | |
1469 | (JSC::RegExp::match): resize ovector to 0 instead of clearing to avoid | |
1470 | thrash in case of large matches. | |
1471 | * runtime/RegExpConstructor.h: | |
1472 | (JSC::RegExpConstructor::performMatch): Mark ALWAYS_INLINE to make the | |
1473 | compiler respect our authority. | |
1474 | * runtime/StringPrototype.cpp: | |
1475 | (JSC::jsSpliceSubstringsWithSeparators): Inline. | |
1476 | (JSC::stringProtoFuncSubstring): Rewrite boundary condition checks to | |
1477 | reduce the number of floating point comparisons and branches. | |
1478 | ||
1479 | 2010-05-12 Gavin Barraclough <barraclough@apple.com> | |
1480 | ||
1481 | Reviewed by Oliver Hunt. | |
1482 | ||
1483 | https://bugs.webkit.org/show_bug.cgi?id=39039 | |
1484 | Provide support for separate bytecode/JIT code translations for call/construct usage | |
1485 | This will allow us to produce code generated specifically for use as a constructor, not for general function use. | |
1486 | ||
1487 | * bytecode/CodeBlock.cpp: | |
1488 | (JSC::CodeBlock::CodeBlock): | |
1489 | (JSC::CodeBlock::unlinkCallers): | |
1490 | * bytecode/CodeBlock.h: | |
1491 | (JSC::CodeBlock::getBytecodeIndex): | |
1492 | (JSC::CodeBlock::getJITCode): | |
1493 | (JSC::CodeBlock::executablePool): | |
1494 | (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
1495 | (JSC::FunctionCodeBlock::FunctionCodeBlock): | |
1496 | * interpreter/Interpreter.cpp: | |
1497 | (JSC::Interpreter::executeCall): | |
1498 | (JSC::Interpreter::executeConstruct): | |
1499 | (JSC::Interpreter::prepareForRepeatCall): | |
1500 | (JSC::Interpreter::execute): | |
1501 | (JSC::Interpreter::privateExecute): | |
1502 | * interpreter/Interpreter.h: | |
1503 | * jit/JIT.cpp: | |
1504 | (JSC::JIT::unlinkCallOrConstruct): | |
1505 | (JSC::JIT::linkConstruct): | |
1506 | * jit/JIT.h: | |
1507 | * jit/JITCall.cpp: | |
1508 | (JSC::JIT::compileOpCall): | |
1509 | (JSC::JIT::compileOpCallSlowCase): | |
1510 | * jit/JITOpcodes.cpp: | |
1511 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
1512 | * jit/JITOpcodes32_64.cpp: | |
1513 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
1514 | * jit/JITPropertyAccess.cpp: | |
1515 | (JSC::JIT::emitSlow_op_get_by_val): | |
1516 | * jit/JITPropertyAccess32_64.cpp: | |
1517 | (JSC::JIT::emitSlow_op_get_by_val): | |
1518 | * jit/JITStubs.cpp: | |
1519 | (JSC::DEFINE_STUB_FUNCTION): | |
1520 | * jit/JITStubs.h: | |
1521 | (JSC::JITThunks::ctiVirtualConstructLink): | |
1522 | (JSC::JITThunks::ctiVirtualConstruct): | |
1523 | (JSC::): | |
1524 | * jit/SpecializedThunkJIT.h: | |
1525 | (JSC::SpecializedThunkJIT::finalize): | |
1526 | * runtime/Arguments.h: | |
1527 | (JSC::JSActivation::copyRegisters): | |
1528 | * runtime/ArrayPrototype.cpp: | |
1529 | (JSC::isNumericCompareFunction): | |
1530 | * runtime/Executable.cpp: | |
1531 | (JSC::FunctionExecutable::~FunctionExecutable): | |
1532 | (JSC::FunctionExecutable::compileForCall): | |
1533 | (JSC::FunctionExecutable::compileForConstruct): | |
1534 | (JSC::EvalExecutable::generateJITCode): | |
1535 | (JSC::ProgramExecutable::generateJITCode): | |
1536 | (JSC::FunctionExecutable::generateJITCodeForCall): | |
1537 | (JSC::FunctionExecutable::generateJITCodeForConstruct): | |
1538 | (JSC::FunctionExecutable::markAggregate): | |
1539 | (JSC::FunctionExecutable::reparseExceptionInfo): | |
1540 | (JSC::EvalExecutable::reparseExceptionInfo): | |
1541 | (JSC::FunctionExecutable::recompile): | |
1542 | * runtime/Executable.h: | |
1543 | (JSC::ExecutableBase::ExecutableBase): | |
1544 | (JSC::ExecutableBase::isHostFunction): | |
1545 | (JSC::ExecutableBase::generatedJITCodeForCall): | |
1546 | (JSC::ExecutableBase::generatedJITCodeForConstruct): | |
1547 | (JSC::NativeExecutable::NativeExecutable): | |
1548 | (JSC::EvalExecutable::jitCode): | |
1549 | (JSC::ProgramExecutable::jitCode): | |
1550 | (JSC::FunctionExecutable::bytecodeForCall): | |
1551 | (JSC::FunctionExecutable::isGeneratedForCall): | |
1552 | (JSC::FunctionExecutable::generatedBytecodeForCall): | |
1553 | (JSC::FunctionExecutable::bytecodeForConstruct): | |
1554 | (JSC::FunctionExecutable::isGeneratedForConstruct): | |
1555 | (JSC::FunctionExecutable::generatedBytecodeForConstruct): | |
1556 | (JSC::FunctionExecutable::symbolTable): | |
1557 | (JSC::FunctionExecutable::FunctionExecutable): | |
1558 | (JSC::FunctionExecutable::jitCodeForCall): | |
1559 | (JSC::FunctionExecutable::jitCodeForConstruct): | |
1560 | * runtime/JSActivation.h: | |
1561 | (JSC::JSActivation::JSActivationData::JSActivationData): | |
1562 | * runtime/JSFunction.cpp: | |
1563 | (JSC::JSFunction::~JSFunction): | |
1564 | (JSC::JSFunction::call): | |
1565 | (JSC::JSFunction::construct): | |
1566 | * runtime/JSGlobalData.cpp: | |
1567 | (JSC::JSGlobalData::numericCompareFunction): | |
1568 | ||
1569 | 2010-05-12 Oliver Hunt <oliver@apple.com> | |
1570 | ||
1571 | build fix | |
1572 | ||
1573 | <rdar://problem/7977960> REGRESSION (r59282): Tiger PPC build broken | |
1574 | ||
1575 | * runtime/UString.h: | |
1576 | (JSC::tryMakeString): | |
1577 | ||
1578 | 2010-05-12 Oliver Hunt <oliver@apple.com> | |
1579 | ||
1580 | Reviewed by Gavin Barraclough. | |
1581 | ||
1582 | <rdar://7969718> Incorrect 32-bit codegen for op_jnlesseq | |
1583 | https://bugs.webkit.org/show_bug.cgi?id=39038 | |
1584 | ||
1585 | Correct the use of incorrect comparison operators. | |
1586 | ||
1587 | * jit/JITArithmetic32_64.cpp: | |
1588 | (JSC::JIT::emit_op_jlesseq): | |
1589 | (JSC::JIT::emitBinaryDoubleOp): | |
1590 | ||
1591 | 2010-05-12 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org> | |
1592 | ||
1593 | Reviewed by Eric Seidel. | |
1594 | ||
1595 | JavaScriptCore: fix build when some optimizations are disabled | |
1596 | https://bugs.webkit.org/show_bug.cgi?id=38800 | |
1597 | ||
1598 | Remove outdated UNUSED_PARAMs when using JIT but with | |
1599 | ENABLE_JIT_OPTIMIZE_CALL and ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS | |
1600 | disabled. | |
1601 | ||
1602 | * jit/JITOpcodes.cpp: | |
1603 | * jit/JITOpcodes32_64.cpp: | |
1604 | ||
1605 | 2010-05-12 Oliver Hunt <oliver@apple.com> | |
1606 | ||
1607 | Reviewed by Gavin Barraclough. | |
1608 | ||
1609 | Work around GCC stupidity by either explicitly inlining or by | |
1610 | using ALWAYS_INLINE | |
1611 | ||
1612 | * runtime/StringPrototype.cpp: | |
1613 | (JSC::stringProtoFuncReplace): | |
1614 | * runtime/UString.h: | |
1615 | (JSC::UString::~UString): | |
1616 | * wtf/RefPtr.h: | |
1617 | (WTF::RefPtr::RefPtr): | |
1618 | (WTF::RefPtr::~RefPtr): | |
1619 | * wtf/text/StringImpl.h: | |
1620 | (WebCore::StringImpl::create): | |
1621 | (WebCore::StringImpl::tryCreateUninitialized): | |
1622 | ||
1623 | 2010-05-12 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
1624 | ||
1625 | Reviewed by Kenneth Rohde Christiansen. | |
1626 | ||
1627 | [Qt] Detect debug mode consistently | |
1628 | https://bugs.webkit.org/show_bug.cgi?id=38863 | |
1629 | ||
1630 | * JavaScriptCore.pri: | |
1631 | * JavaScriptCore.pro: | |
1632 | * jsc.pro: | |
1633 | * qt/api/QtScript.pro: | |
1634 | ||
1635 | 2010-05-12 Peter Varga <pvarga@inf.u-szeged.hu> | |
1636 | ||
1637 | Reviewed by Gavin Barraclough. | |
1638 | ||
1639 | Remove a direct jump in generatePatternCharacterGreedy() and | |
1640 | generatePatternCharacterClassGreedy() functions if quantityCount of the term | |
1641 | is unlimited. | |
1642 | https://bugs.webkit.org/show_bug.cgi?id=38898 | |
1643 | ||
1644 | * yarr/RegexJIT.cpp: | |
1645 | (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): | |
1646 | (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): | |
1647 | ||
1648 | 2010-05-11 Geoffrey Garen <ggaren@apple.com> | |
1649 | ||
1650 | Reviewed by Gavin Barraclough. | |
1651 | ||
1652 | Slight simplification to the calling convention: read RegisterFile::end() | |
1653 | from an absolute address, instead of from a pointer to the RegisterFile | |
1654 | on the stack. | |
1655 | ||
1656 | SunSpider reports no change. | |
1657 | ||
1658 | This should free us to remove the RegisterFile argument from the stack. | |
1659 | ||
1660 | * jit/JIT.cpp: | |
1661 | (JSC::JIT::privateCompile): | |
1662 | ||
1663 | 2010-05-11 Brian Weinstein <bweinstein@apple.com> | |
1664 | ||
1665 | Possible Gtk build fix - use ALWAYS_INLINE on functions that were inlined. | |
1666 | ||
1667 | * wtf/text/AtomicString.h: | |
1668 | (WebCore::AtomicString::add): Use ALWAYS_INLINE. | |
1669 | * wtf/text/WTFString.h: | |
1670 | (WebCore::String::length): Ditto. | |
1671 | (WebCore::String::isEmpty): Ditto. | |
1672 | ||
1673 | 2010-05-11 Anders Carlsson <andersca@apple.com> | |
1674 | ||
1675 | Reviewed by Sam Weinig. | |
1676 | ||
1677 | Add a compile time assert that sizeof(String) == sizeof(AtomicString). | |
1678 | ||
1679 | * wtf/text/AtomicString.cpp: | |
1680 | ||
1681 | 2010-05-11 Anders Carlsson <andersca@apple.com> | |
1682 | ||
1683 | Reviewed by Mark Rowe. | |
1684 | ||
1685 | https://bugs.webkit.org/show_bug.cgi?id=38961 | |
1686 | Move some member variables around to reduce class sizes. | |
1687 | ||
1688 | Make AtomicString no longer inherit from FastAllocBase. | |
1689 | ||
1690 | Since AtomicString's first (and only) member variable, a RefPtr, also inherits from FastAllocBase this | |
1691 | was causing the size of AtomicString to contain sizeof(void*) bytes of padding. | |
1692 | ||
1693 | * wtf/text/AtomicString.h: | |
1694 | ||
1695 | 2010-05-11 Brian Weinstein <bweinstein@apple.com> | |
1696 | ||
1697 | Reviewed by Maciej Stachowiak. | |
1698 | Patch by Gavin Barraclough. | |
1699 | ||
1700 | Rest of REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF. | |
1701 | https://bugs.webkit.org/show_bug.cgi?id=38930 | |
1702 | <rdar://problem/7937188> | |
1703 | ||
1704 | Inline string functions that are commonly used in WTFString, CString, and AtomicString. | |
1705 | ||
1706 | * JavaScriptCore.exp: Remove exports of inline functions. | |
1707 | * wtf/text/AtomicString.cpp: | |
1708 | (WebCore::AtomicString::addSlowCase): Rename add to addSlowCase, and inline the fast path | |
1709 | of add. | |
1710 | * wtf/text/AtomicString.h: | |
1711 | (WebCore::AtomicString::add): Inline the fast path of add. | |
1712 | * wtf/text/CString.cpp: Inline implementation of data and length in the header. | |
1713 | * wtf/text/CString.h: | |
1714 | (WTF::CString::data): Inline implementation of data. | |
1715 | (WTF::CString::length): Inline implementation of length. | |
1716 | * wtf/text/WTFString.cpp: Remove implementations of functions to be inlined. | |
1717 | * wtf/text/WTFString.h: | |
1718 | (WebCore::String::String): Inline implementation. | |
1719 | (WebCore::String::length): Ditto. | |
1720 | (WebCore::String::characters): Ditto. | |
1721 | (WebCore::String::operator[]): Ditto. | |
1722 | (WebCore::String::isEmpty): Ditto. | |
1723 | ||
1724 | 2010-05-11 Brian Weinstein <bweinstein@apple.com> | |
1725 | ||
1726 | Reviewed by Steve Falkenburg and Jon Honeycutt. | |
1727 | Patch by Gavin Barraclough. | |
1728 | ||
1729 | REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF. | |
1730 | https://bugs.webkit.org/show_bug.cgi?id=38930 | |
1731 | <rdar://problem/7937188> | |
1732 | ||
1733 | When the String classes were moved from WebCore to WTF, it meant that on Windows, all operations | |
1734 | on Strings in WebCore had to cross a DLL boundary (from WebKit.dll to JavaScript.dll). | |
1735 | ||
1736 | We fix this by refactoring some of the WTF string code, so the code in AtomicString, StringImpl, and | |
1737 | WTFString can be built by both WebCore and WTF, and we don't need to talk across a DLL to do operations | |
1738 | on Strings. | |
1739 | ||
1740 | * GNUmakefile.am: Add new file to build system. | |
1741 | * JavaScriptCore.gypi: Ditto. | |
1742 | * JavaScriptCore.pro: Ditto. | |
1743 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove string exports, because these are now | |
1744 | handled in WebCore. | |
1745 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove the post-build step that was added | |
1746 | here (the post build step is in JavaScriptCoreCommon.vsprops). | |
1747 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Copy the three cpp files that need to be compiled | |
1748 | by WebCore into the WebKitOutputDir directory. | |
1749 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add the StringStatics file. | |
1750 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add the three WTF string cpp files to this project. | |
1751 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Remove the need to link against WTF.lib (since jsc links against JavaScriptCore). | |
1752 | * JavaScriptCore.xcodeproj/project.pbxproj: Add the StringStatics file. | |
1753 | * wtf/text/AtomicString.cpp: Moved code to StringStatics. | |
1754 | * wtf/text/StringImpl.cpp: Ditto. | |
1755 | * wtf/text/StringStatics.cpp: Added. Move functions in WTF Strings that define static variables to here, so | |
1756 | the rest of the files can be compiled in WebCore. | |
1757 | (WebCore::StringImpl::empty): Moved from StringImpl.cpp to here. | |
1758 | (WebCore::AtomicString::init): Moved from AtomicString.cpp to here. | |
1759 | ||
1760 | 2010-05-11 Alice Liu <alice.liu@apple.com> | |
1761 | ||
1762 | Rubber-stamped by Gavin Barraclough. | |
1763 | ||
1764 | Fix build error when enabling debugging block in WebKit win painting code | |
1765 | ||
1766 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
1767 | ||
1768 | 2010-05-11 Mark Rowe <mrowe@apple.com> | |
1769 | ||
1770 | Fix the world. | |
1771 | ||
1772 | In r59162 a change was made to WebCore's FeatureDefines.xcconfig that enabled FILE_READER and FILE_WRITER. | |
1773 | The author and reviewer of that patch ignored the carefully-worded warning at the top of that file asking | |
1774 | that changes to the file be kept in sync across JavaScriptCore, WebCore and WebKit, as well as being kept | |
1775 | in sync with build-webkit. This led to WebCore and WebKit having different views of Document's vtable | |
1776 | and results in crashes in Safari shortly after launch when virtual function calls resulted in the wrong | |
1777 | function in WebCore being called. | |
1778 | ||
1779 | We fix this by bringing the FeatureDefines.xcconfig files in to sync. Based on the ChangeLog message and | |
1780 | other changes in r59162 it appears that enabling FILE_WRITER was unintentional so that particular change | |
1781 | has been reverted. | |
1782 | ||
1783 | * Configurations/FeatureDefines.xcconfig: | |
1784 | ||
1785 | 2010-05-11 Sheriff Bot <webkit.review.bot@gmail.com> | |
1786 | ||
1787 | Unreviewed, rolling out r59171. | |
1788 | http://trac.webkit.org/changeset/59171 | |
1789 | https://bugs.webkit.org/show_bug.cgi?id=38933 | |
1790 | ||
1791 | "Broke the world" (Requested by bweinstein on #webkit). | |
1792 | ||
1793 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
1794 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
1795 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
1796 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
1797 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: | |
1798 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
1799 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
1800 | * wtf/text/AtomicString.cpp: | |
1801 | (WebCore::AtomicString::init): | |
1802 | * wtf/text/StringImpl.cpp: | |
1803 | (WebCore::StringImpl::empty): | |
1804 | * wtf/text/StringStatics.cpp: Removed. | |
1805 | ||
1806 | 2010-05-11 Brian Weinstein <bweinstein@apple.com> | |
1807 | ||
1808 | Reviewed by Steve Falkenburg. | |
1809 | Patch by Gavin Barraclough. | |
1810 | ||
1811 | REGRESSION (r57900-57919): 3% PLT Regression from moving strings into WTF. | |
1812 | https://bugs.webkit.org/show_bug.cgi?id=38930 | |
1813 | <rdar://problem/7937188> | |
1814 | ||
1815 | When the String classes were moved from WebCore to WTF, it meant that on Windows, all operations | |
1816 | on Strings in WebCore had to cross a DLL boundary (from WebKit.dll to JavaScript.dll). | |
1817 | ||
1818 | We fix this by refactoring some of the WTF string code, so the code in AtomicString, StringImpl, and | |
1819 | WTFString can be built by both WebCore and WTF, and we don't need to talk across a DLL to do operations | |
1820 | on Strings. | |
1821 | ||
1822 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove string exports, because these are now | |
1823 | handled in WebCore. | |
1824 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Remove the post-build step that was added | |
1825 | here (the post build step is in JavaScriptCoreCommon.vsprops). | |
1826 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: Copy the three cpp files that need to be compiled | |
1827 | by WebCore into the WebKitOutputDir directory. | |
1828 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add the StringStatics file. | |
1829 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add the three WTF string cpp files to this project. | |
1830 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Remove the need to link against WTF.lib (since jsc links against JavaScriptCore). | |
1831 | * JavaScriptCore.xcodeproj/project.pbxproj: Add the StringStatics file. | |
1832 | * wtf/text/AtomicString.cpp: Moved code to StringStatics. | |
1833 | * wtf/text/StringImpl.cpp: Ditto. | |
1834 | * wtf/text/StringStatics.cpp: Added. Move functions in WTF Strings that define static variables to here, so | |
1835 | the rest of the files can be compiled in WebCore. | |
1836 | (WebCore::StringImpl::empty): Moved from StringImpl.cpp to here. | |
1837 | (WebCore::AtomicString::init): Moved from AtomicString.cpp to here. | |
1838 | ||
1839 | 2010-05-11 Geoffrey Garen <ggaren@apple.com> | |
1840 | ||
1841 | Fixed test failures seen on SnowLeopard buildbot. | |
1842 | ||
1843 | * runtime/JSString.cpp: | |
1844 | (JSC::JSString::replaceCharacter): Don't use size_t and wtf::notFound. | |
1845 | Instead, use the individual types and notFound values of the string APIs | |
1846 | we're using, since they're not necessarily the same in 64bit. | |
1847 | ||
1848 | 2010-05-11 Geoffrey Garen <ggaren@apple.com> | |
1849 | ||
1850 | Reviewed by Oliver Hunt and Darin Adler. | |
1851 | ||
1852 | Start using ropes in String.prototype.replace. | |
1853 | ||
1854 | 1%-1.5% speedup on SunSpider. | |
1855 | ||
1856 | * runtime/JSString.cpp: | |
1857 | (JSC::JSString::resolveRope): Updated for RopeImpl refactoring. | |
1858 | ||
1859 | (JSC::JSString::replaceCharacter): Added a replaceCharacter function, which creates | |
1860 | a rope for the resulting replacement. | |
1861 | ||
1862 | * runtime/JSString.h: A few changes here: | |
1863 | (JSC::): | |
1864 | (JSC::RopeBuilder::RopeIterator::RopeIterator): | |
1865 | (JSC::RopeBuilder::RopeIterator::operator++): | |
1866 | (JSC::RopeBuilder::RopeIterator::operator*): | |
1867 | (JSC::RopeBuilder::RopeIterator::operator!=): | |
1868 | (JSC::RopeBuilder::RopeIterator::WorkItem::WorkItem): | |
1869 | (JSC::RopeBuilder::RopeIterator::WorkItem::operator!=): | |
1870 | (JSC::RopeBuilder::RopeIterator::skipRopes): Created a RopeIterator abstraction. | |
1871 | We use this to do a substring find without having to resolve the rope. | |
1872 | (We could use this iterator when resolving ropes, too, but resolving | |
1873 | ropes backwards is usually more efficient.) | |
1874 | ||
1875 | (JSC::RopeBuilder::JSString): Added constructors for 2 & 3 UStrings. | |
1876 | ||
1877 | (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): | |
1878 | (JSC::RopeBuilder::size): Updated for RopeImpl refactoring. | |
1879 | ||
1880 | * runtime/Operations.h: Updated for RopeImpl refactoring. | |
1881 | (JSC::jsString): Added jsString functions for 2 & 3 UStrings. | |
1882 | ||
1883 | * runtime/RopeImpl.cpp: | |
1884 | (JSC::RopeImpl::derefFibersNonRecursive): | |
1885 | * runtime/RopeImpl.h: | |
1886 | (JSC::RopeImpl::initializeFiber): | |
1887 | (JSC::RopeImpl::size): | |
1888 | (JSC::RopeImpl::fibers): | |
1889 | (JSC::RopeImpl::deref): | |
1890 | (JSC::RopeImpl::RopeImpl): A little refactoring to make this patch easier: | |
1891 | Moved statics to the top of the class; put multi-statement functions on | |
1892 | multiple lines; renamed "fiberCount" to "size" to match other collections; | |
1893 | changed the "fibers" accessor to return the fibers buffer, instead of an | |
1894 | item in the buffer, to make iteration easier. | |
1895 | ||
1896 | * runtime/StringPrototype.cpp: | |
1897 | (JSC::stringProtoFuncReplace): Don't resolve a rope unless we need to. Do | |
1898 | use our new replaceCharacter function if possible. Do use a rope to | |
1899 | represent splicing three strings together. | |
1900 | ||
1901 | 2010-05-10 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
1902 | ||
1903 | Reviewed by Darin Adler. | |
1904 | ||
1905 | [Qt] Disable JIT support for mingw-w64 | |
1906 | https://bugs.webkit.org/show_bug.cgi?id=38747 | |
1907 | ||
1908 | Disale JIT for mingw-w64 as it is reportedly | |
1909 | unstable. | |
1910 | ||
1911 | Thanks for Vanboxem Rruben for the investigation. | |
1912 | ||
1913 | * wtf/Platform.h: | |
1914 | ||
1915 | 2010-05-09 Fumitoshi Ukai <ukai@chromium.org> | |
1916 | ||
1917 | Reviewed by Eric Seidel. | |
1918 | ||
1919 | JavaScriptCore/wtf/MD5.h: checksum should take a reference to output. | |
1920 | https://bugs.webkit.org/show_bug.cgi?id=38723 | |
1921 | ||
1922 | * JavaScriptCore.exp: | |
1923 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
1924 | * wtf/MD5.cpp: | |
1925 | (WTF::expectMD5): | |
1926 | Fix for checksum change. | |
1927 | (WTF::MD5::checksum): | |
1928 | Take a reference to output, instead of returning the result by value, to reduce coping for performance. | |
1929 | * wtf/MD5.h: | |
1930 | ||
1931 | 2010-05-09 Oliver Hunt <oliver@apple.com> | |
1932 | ||
1933 | Build fix. | |
1934 | ||
1935 | Fix accidental repeat addition of emit_op_new_regexp | |
1936 | ||
1937 | * jit/JITOpcodes.cpp: | |
1938 | ||
1939 | 2010-05-09 Oliver Hunt <oliver@apple.com> | |
1940 | ||
1941 | Reviewed by Gavin Barraclough. | |
1942 | ||
1943 | REGRESSION(r57955): RegExp literals should not actually be cached, so r57955 should be rolled out. | |
1944 | https://bugs.webkit.org/show_bug.cgi?id=38828 | |
1945 | <rdar://problem/7961634> | |
1946 | ||
1947 | Rollout r57955 | |
1948 | ||
1949 | * bytecode/CodeBlock.cpp: | |
1950 | (JSC::regexpToSourceString): | |
1951 | (JSC::regexpName): | |
1952 | (JSC::CodeBlock::dump): | |
1953 | (JSC::CodeBlock::shrinkToFit): | |
1954 | * bytecode/CodeBlock.h: | |
1955 | (JSC::CodeBlock::addRegExp): | |
1956 | (JSC::CodeBlock::regexp): | |
1957 | * bytecode/Opcode.h: | |
1958 | * bytecompiler/BytecodeGenerator.cpp: | |
1959 | (JSC::BytecodeGenerator::addRegExp): | |
1960 | (JSC::BytecodeGenerator::emitNewRegExp): | |
1961 | * bytecompiler/BytecodeGenerator.h: | |
1962 | * bytecompiler/NodesCodegen.cpp: | |
1963 | (JSC::RegExpNode::emitBytecode): | |
1964 | * interpreter/Interpreter.cpp: | |
1965 | (JSC::Interpreter::privateExecute): | |
1966 | * jit/JIT.cpp: | |
1967 | (JSC::JIT::privateCompileMainPass): | |
1968 | * jit/JIT.h: | |
1969 | * jit/JITOpcodes.cpp: | |
1970 | (JSC::JIT::emit_op_new_regexp): | |
1971 | * jit/JITStubs.cpp: | |
1972 | (JSC::DEFINE_STUB_FUNCTION): | |
1973 | * jit/JITStubs.h: | |
1974 | (JSC::): | |
1975 | ||
1976 | 2010-05-09 Geoffrey Garen <ggaren@apple.com> | |
1977 | ||
1978 | Reviewed by Oliver Hunt. | |
1979 | ||
1980 | Reserve a large-ish initial capacity for Lexer::m_buffer16. | |
1981 | ||
1982 | SunSpider says 0.3% faster. | |
1983 | ||
1984 | m_buffer16 is used when parsing complex strings -- for example, strings | |
1985 | with escape sequences in them. These kinds of strings can be really long, | |
1986 | and we want to avoid repeatedly copying as we grow m_buffer16. | |
1987 | ||
1988 | The net memory cost is quite low, since it's proporitional to source | |
1989 | code we already have in memory, and we throw away m_buffer16 right when | |
1990 | we're done parsing. | |
1991 | ||
1992 | * parser/Lexer.cpp: | |
1993 | (JSC::Lexer::Lexer): No need to reserve initial capacity in our constructor, | |
1994 | since setCode will be called before we're asked to lex anything. | |
1995 | (JSC::Lexer::setCode): Reserve enough space to lex half the source code | |
1996 | as a complex string without having to copy. | |
1997 | (JSC::Lexer::clear): No need to reserve initial capacity here either, | |
1998 | since setCode will be called before we're asked to lex anything. | |
1999 | ||
2000 | 2010-05-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
2001 | ||
2002 | Reviewed by Eric Seidel. | |
2003 | ||
2004 | [Qt] Remove YARR configuration rules from Qt make system | |
2005 | https://bugs.webkit.org/show_bug.cgi?id=38819 | |
2006 | ||
2007 | Setting YARR based on JIT seeting is now in Platform.h | |
2008 | for all ports. This patch essentially reverses r49238. | |
2009 | ||
2010 | * JavaScriptCore.pri: | |
2011 | ||
2012 | 2010-05-09 Oliver Hunt <oliver@apple.com> | |
2013 | ||
2014 | Reviewed by Maciej Stachowiak. | |
2015 | ||
2016 | Improve string indexing performance | |
2017 | https://bugs.webkit.org/show_bug.cgi?id=38814 | |
2018 | ||
2019 | Add an assembly stub to do indexed loads from strings much | |
2020 | more cheaply than the current stub dispatch logic. We can | |
2021 | do this because we are able to make guarantees about the | |
2022 | register contents when entering the stub so the call overhead | |
2023 | is negligible. | |
2024 | ||
2025 | * jit/JIT.h: | |
2026 | * jit/JITInlineMethods.h: | |
2027 | * jit/JITOpcodes.cpp: | |
2028 | * jit/JITPropertyAccess.cpp: | |
2029 | (JSC::JIT::stringGetByValStubGenerator): | |
2030 | (JSC::JIT::emitSlow_op_get_by_val): | |
2031 | Moved from JITOpcodes.cpp to keep the slowcase next to | |
2032 | the normal case codegen as we do for everything else. | |
2033 | * jit/JITPropertyAccess32_64.cpp: | |
2034 | (JSC::JIT::stringGetByValStubGenerator): | |
2035 | (JSC::JIT::emitSlow_op_get_by_val): | |
2036 | * jit/JSInterfaceJIT.h: | |
2037 | (JSC::JSInterfaceJIT::emitFastArithImmToInt): | |
2038 | ||
2039 | 2010-05-09 Maciej Stachowiak <mjs@apple.com> | |
2040 | ||
2041 | Fixed version of: "Optimized o[s] where o is a cell and s is a string" | |
2042 | https://bugs.webkit.org/show_bug.cgi?id=38815 | |
2043 | ||
2044 | Fixed the previous patch for this from Geoff Garen. | |
2045 | ||
2046 | The two problems were a missing exception check and a PropertySlot | |
2047 | initialized improperly, leading to crashes and failures in the case | |
2048 | of getters accessed with bracket syntax. | |
2049 | ||
2050 | Previous patch: | |
2051 | ||
2052 | Optimized o[s] where o is a cell and s is a string, removing some old | |
2053 | code that wasn't really tuned for the JIT. | |
2054 | ||
2055 | SunSpider says 0.8% faster. | |
2056 | ||
2057 | * jit/JITStubs.cpp: | |
2058 | (JSC::DEFINE_STUB_FUNCTION): | |
2059 | * runtime/JSCell.h: | |
2060 | ||
2061 | 2010-05-08 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
2062 | ||
2063 | Unreviewed, build fix. | |
2064 | ||
2065 | Fix missing terminating ' character warning | |
2066 | ||
2067 | The warning has been only seen on the Gtk buildbots. | |
2068 | ||
2069 | * wtf/Platform.h: | |
2070 | ||
2071 | 2010-05-08 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
2072 | ||
2073 | Reviewed by Gavin Barraclough. | |
2074 | ||
2075 | Refactor YARR and YARR_JIT default rules in Platform.h | |
2076 | https://bugs.webkit.org/show_bug.cgi?id=38727 | |
2077 | ||
2078 | Turn on YARR and YARR JIT by default of JIT is enabled. | |
2079 | Ports can overrule this default decisions as they wish. | |
2080 | ||
2081 | * wtf/Platform.h: | |
2082 | ||
2083 | 2010-05-08 Oliver Hunt <oliver@apple.com> | |
2084 | ||
2085 | Reviewed by Gavin Barraclough. | |
2086 | ||
2087 | Split JSVALUE32_64 code out of JITOpcodes.cpp and into JITOpcodes32_64.cpp | |
2088 | https://bugs.webkit.org/show_bug.cgi?id=38808 | |
2089 | ||
2090 | * GNUmakefile.am: | |
2091 | * JavaScriptCore.gypi: | |
2092 | * JavaScriptCore.pro: | |
2093 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
2094 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
2095 | * jit/JITOpcodes.cpp: | |
2096 | * jit/JITOpcodes32_64.cpp: Added. | |
2097 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
2098 | (JSC::JIT::emit_op_mov): | |
2099 | (JSC::JIT::emit_op_end): | |
2100 | (JSC::JIT::emit_op_jmp): | |
2101 | (JSC::JIT::emit_op_loop_if_lesseq): | |
2102 | (JSC::JIT::emitSlow_op_loop_if_lesseq): | |
2103 | (JSC::JIT::emit_op_new_object): | |
2104 | (JSC::JIT::emit_op_instanceof): | |
2105 | (JSC::JIT::emitSlow_op_instanceof): | |
2106 | (JSC::JIT::emit_op_new_func): | |
2107 | (JSC::JIT::emit_op_get_global_var): | |
2108 | (JSC::JIT::emit_op_put_global_var): | |
2109 | (JSC::JIT::emit_op_get_scoped_var): | |
2110 | (JSC::JIT::emit_op_put_scoped_var): | |
2111 | (JSC::JIT::emit_op_tear_off_activation): | |
2112 | (JSC::JIT::emit_op_tear_off_arguments): | |
2113 | (JSC::JIT::emit_op_new_array): | |
2114 | (JSC::JIT::emit_op_resolve): | |
2115 | (JSC::JIT::emit_op_to_primitive): | |
2116 | (JSC::JIT::emitSlow_op_to_primitive): | |
2117 | (JSC::JIT::emit_op_strcat): | |
2118 | (JSC::JIT::emit_op_resolve_base): | |
2119 | (JSC::JIT::emit_op_resolve_skip): | |
2120 | (JSC::JIT::emit_op_resolve_global): | |
2121 | (JSC::JIT::emitSlow_op_resolve_global): | |
2122 | (JSC::JIT::emit_op_not): | |
2123 | (JSC::JIT::emitSlow_op_not): | |
2124 | (JSC::JIT::emit_op_jfalse): | |
2125 | (JSC::JIT::emitSlow_op_jfalse): | |
2126 | (JSC::JIT::emit_op_jtrue): | |
2127 | (JSC::JIT::emitSlow_op_jtrue): | |
2128 | (JSC::JIT::emit_op_jeq_null): | |
2129 | (JSC::JIT::emit_op_jneq_null): | |
2130 | (JSC::JIT::emit_op_jneq_ptr): | |
2131 | (JSC::JIT::emit_op_jsr): | |
2132 | (JSC::JIT::emit_op_sret): | |
2133 | (JSC::JIT::emit_op_eq): | |
2134 | (JSC::JIT::emitSlow_op_eq): | |
2135 | (JSC::JIT::emit_op_neq): | |
2136 | (JSC::JIT::emitSlow_op_neq): | |
2137 | (JSC::JIT::compileOpStrictEq): | |
2138 | (JSC::JIT::emit_op_stricteq): | |
2139 | (JSC::JIT::emitSlow_op_stricteq): | |
2140 | (JSC::JIT::emit_op_nstricteq): | |
2141 | (JSC::JIT::emitSlow_op_nstricteq): | |
2142 | (JSC::JIT::emit_op_eq_null): | |
2143 | (JSC::JIT::emit_op_neq_null): | |
2144 | (JSC::JIT::emit_op_resolve_with_base): | |
2145 | (JSC::JIT::emit_op_new_func_exp): | |
2146 | (JSC::JIT::emit_op_throw): | |
2147 | (JSC::JIT::emit_op_get_pnames): | |
2148 | (JSC::JIT::emit_op_next_pname): | |
2149 | (JSC::JIT::emit_op_push_scope): | |
2150 | (JSC::JIT::emit_op_pop_scope): | |
2151 | (JSC::JIT::emit_op_to_jsnumber): | |
2152 | (JSC::JIT::emitSlow_op_to_jsnumber): | |
2153 | (JSC::JIT::emit_op_push_new_scope): | |
2154 | (JSC::JIT::emit_op_catch): | |
2155 | (JSC::JIT::emit_op_jmp_scopes): | |
2156 | (JSC::JIT::emit_op_switch_imm): | |
2157 | (JSC::JIT::emit_op_switch_char): | |
2158 | (JSC::JIT::emit_op_switch_string): | |
2159 | (JSC::JIT::emit_op_new_error): | |
2160 | (JSC::JIT::emit_op_debug): | |
2161 | (JSC::JIT::emit_op_enter): | |
2162 | (JSC::JIT::emit_op_enter_with_activation): | |
2163 | (JSC::JIT::emit_op_create_arguments): | |
2164 | (JSC::JIT::emit_op_init_arguments): | |
2165 | (JSC::JIT::emit_op_convert_this): | |
2166 | (JSC::JIT::emitSlow_op_convert_this): | |
2167 | (JSC::JIT::emit_op_profile_will_call): | |
2168 | (JSC::JIT::emit_op_profile_did_call): | |
2169 | ||
2170 | 2010-05-08 Gabor Loki <loki@webkit.org> | |
2171 | ||
2172 | Reviewed by Gavin Barraclough. | |
2173 | ||
2174 | Fix halfword loads on ARM | |
2175 | https://bugs.webkit.org/show_bug.cgi?id=38741 | |
2176 | ||
2177 | The BaseIndex and ImplicitAddress are contain 32bit wide offset, but | |
2178 | the load16 functions were working with 8 bit data (encoded in the | |
2179 | instruction). If the offset cannot be encoded in an instruction, it | |
2180 | should be stored in a temporary register. | |
2181 | ||
2182 | * assembler/ARMAssembler.h: | |
2183 | (JSC::ARMAssembler::getOffsetForHalfwordDataTransfer): | |
2184 | * assembler/MacroAssemblerARM.h: | |
2185 | (JSC::MacroAssemblerARM::load16): | |
2186 | ||
2187 | 2010-05-08 Gabor Loki <loki@webkit.org> | |
2188 | ||
2189 | Reviewed by Gavin Barraclough. | |
2190 | ||
2191 | Fix spanning branch instruction on Cortex-A8 with Thumb-2 JIT | |
2192 | https://bugs.webkit.org/show_bug.cgi?id=38280 | |
2193 | ||
2194 | If the 32-bit Thumb-2 branch instruction spans two 4KiB regions and | |
2195 | the target of the branch falls within the first region it is | |
2196 | possible for the processor to incorrectly determine the branch | |
2197 | instruction, and it is also possible in some cases for the processor | |
2198 | to enter a deadlock state. | |
2199 | ||
2200 | * assembler/ARMv7Assembler.h: | |
2201 | (JSC::ARMv7Assembler::linkJumpAbsolute): | |
2202 | ||
2203 | 2010-05-08 Adam Barth <abarth@webkit.org> | |
2204 | ||
2205 | Reviewed by Darin Fisher. | |
2206 | ||
2207 | [WTFURL] Add a buffer for managing the output of the canonicalizer | |
2208 | https://bugs.webkit.org/show_bug.cgi?id=38671 | |
2209 | ||
2210 | The canonicalizer produces a stream of canonicalized characters, which | |
2211 | we will store in a URLBuffer. URLBuffer is quite similar to Vector, | |
2212 | but serves as an abstraction to isolate us from the underlying | |
2213 | character storage. In the case of WebKit, we'll probably implement a | |
2214 | subclass of URLBuffer with Vector. In Chromium, the backing store is a | |
2215 | std::string, which avoids an unnecessary memcpy that would be caused by | |
2216 | using Vector instead. | |
2217 | ||
2218 | * wtf/url/src/URLBuffer.h: Added. | |
2219 | (WTF::URLBuffer::URLBuffer): | |
2220 | (WTF::URLBuffer::~URLBuffer): | |
2221 | (WTF::URLBuffer::at): | |
2222 | (WTF::URLBuffer::set): | |
2223 | (WTF::URLBuffer::capacity): | |
2224 | (WTF::URLBuffer::length): | |
2225 | (WTF::URLBuffer::data): | |
2226 | (WTF::URLBuffer::setLength): | |
2227 | (WTF::URLBuffer::append): | |
2228 | (WTF::URLBuffer::grow): | |
2229 | ||
2230 | 2010-05-08 Eric Seidel <eric@webkit.org> | |
2231 | ||
2232 | Unreviewed, just reverting commit. | |
2233 | ||
2234 | REGRESSION(59000): r59000 contained all sorts of changes it should not have, needs revert. | |
2235 | https://bugs.webkit.org/show_bug.cgi?id=38798 | |
2236 | ||
2237 | * bytecompiler/BytecodeGenerator.cpp: | |
2238 | (JSC::BytecodeGenerator::emitResolve): | |
2239 | * jit/JITOpcodes.cpp: | |
2240 | (JSC::JIT::emit_op_resolve_global): | |
2241 | ||
2242 | 2010-05-04 Jer Noble <jer.noble@apple.com> | |
2243 | ||
2244 | Reviewed by Maciej Stachowiak | |
2245 | ||
2246 | Safari pegs CPU and drops tons of frames using HTML5 Vimeo player | |
2247 | <https://bugs.webkit.org/show_bug.cgi?id=34005> | |
2248 | <rdar://problem/7569713> | |
2249 | ||
2250 | Added cancelCallOnMainThread. callOnMainThread should always now be paired | |
2251 | with cancelCallOnMainThread in situations where the refcon passed to callOnMainThread | |
2252 | may be dealloced before the main thread function can be dispatched. | |
2253 | ||
2254 | * wtf/MainThread.cpp: | |
2255 | (WTF::FunctionWithContext::operator == ): Supports the FunctionWithContextFinder predicate functor. | |
2256 | (WTF::FunctionWithContextFinder::FunctionWithContextFinder): Predicate functor for use with Dequeue::findIf | |
2257 | (WTF::FunctionWithContextFinder::operator()): | |
2258 | (WTF::cancelCallOnMainThread): | |
2259 | * wtf/MainThread.h: | |
2260 | ||
2261 | 2010-05-07 Oliver Hunt <oliver@apple.com> | |
2262 | ||
2263 | Windows build fix. | |
2264 | ||
2265 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
2266 | ||
2267 | 2010-05-07 Eric Seidel <eric@webkit.org> | |
2268 | ||
2269 | Unreviewed, rolling out r58990. | |
2270 | http://trac.webkit.org/changeset/58990 | |
2271 | ||
2272 | Broke 4 tests on Snow Leopard and Qt. | |
2273 | ||
2274 | * jit/JITStubs.cpp: | |
2275 | (JSC::DEFINE_STUB_FUNCTION): | |
2276 | * runtime/JSCell.h: | |
2277 | ||
2278 | 2010-05-07 Oliver Hunt <oliver@apple.com> | |
2279 | ||
2280 | Reviewed by Gavin Barraclough. | |
2281 | ||
2282 | Optimize access to the global object from a function that uses eval | |
2283 | https://bugs.webkit.org/show_bug.cgi?id=38644 | |
2284 | ||
2285 | Fix bug where cross scope access to a global var (vs. property) would | |
2286 | be allowed without checking for intervening dynamic scopes. | |
2287 | ||
2288 | * bytecompiler/BytecodeGenerator.cpp: | |
2289 | (JSC::BytecodeGenerator::emitResolve): | |
2290 | ||
2291 | 2010-05-07 Oliver Hunt <oliver@apple.com> | |
2292 | ||
2293 | 32-bit buildfix. | |
2294 | ||
2295 | Macro expansion I stab at thee! | |
2296 | ||
2297 | * jit/JITOpcodes.cpp: | |
2298 | (JSC::JIT::emit_op_resolve_global): | |
2299 | ||
2300 | 2010-05-07 Geoffrey Garen <ggaren@apple.com> | |
2301 | ||
2302 | Reviewed by Darin Adler. | |
2303 | ||
2304 | Optimized o[s] where o is a cell and s is a string, removing some old | |
2305 | code that wasn't really tuned for the JIT. | |
2306 | ||
2307 | SunSpider says 0.8% faster. | |
2308 | ||
2309 | * jit/JITStubs.cpp: | |
2310 | (JSC::DEFINE_STUB_FUNCTION): | |
2311 | * runtime/JSCell.h: | |
2312 | ||
2313 | 2010-05-07 Oliver Hunt <oliver@apple.com> | |
2314 | ||
2315 | Windows build fix. | |
2316 | ||
2317 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
2318 | ||
2319 | 2010-05-07 Oliver Hunt <oliver@apple.com> | |
2320 | ||
2321 | Reviewed by Geoffrey Garen. | |
2322 | ||
2323 | Optimize access to the global object from a function that uses eval | |
2324 | https://bugs.webkit.org/show_bug.cgi?id=38644 | |
2325 | ||
2326 | Add op_resolve_global_dynamic, a variant of op_resolve_global that | |
2327 | checks each node in the scope chain for dynamically inserted properties | |
2328 | and falls back to the normal resolve logic in that case. | |
2329 | ||
2330 | * JavaScriptCore.exp: | |
2331 | * bytecode/CodeBlock.cpp: | |
2332 | (JSC::isGlobalResolve): | |
2333 | (JSC::CodeBlock::printStructures): | |
2334 | (JSC::CodeBlock::dump): | |
2335 | (JSC::CodeBlock::derefStructures): | |
2336 | * bytecode/Opcode.h: | |
2337 | * bytecompiler/BytecodeGenerator.cpp: | |
2338 | (JSC::BytecodeGenerator::findScopedProperty): | |
2339 | Now take an additional reference parameter to used to indicate that | |
2340 | there were nodes that may gain dynamic properties | |
2341 | (JSC::BytecodeGenerator::emitResolve): | |
2342 | (JSC::BytecodeGenerator::emitResolveBase): | |
2343 | (JSC::BytecodeGenerator::emitResolveWithBase): | |
2344 | deal with additional argument to findScopedProperty | |
2345 | * bytecompiler/BytecodeGenerator.h: | |
2346 | * bytecompiler/NodesCodegen.cpp: | |
2347 | (JSC::FunctionCallResolveNode::emitBytecode): | |
2348 | (JSC::PostfixResolveNode::emitBytecode): | |
2349 | (JSC::PrefixResolveNode::emitBytecode): | |
2350 | (JSC::ReadModifyResolveNode::emitBytecode): | |
2351 | (JSC::AssignResolveNode::emitBytecode): | |
2352 | These functions use findScopedProperty directly in order to | |
2353 | optimise lookup. They cannot trivially handle any degree of | |
2354 | dynamism in the lookup so we just give up in such case. | |
2355 | * interpreter/Interpreter.cpp: | |
2356 | (JSC::Interpreter::resolveGlobalDynamic): | |
2357 | (JSC::Interpreter::execute): | |
2358 | (JSC::Interpreter::privateExecute): | |
2359 | * interpreter/Interpreter.h: | |
2360 | * jit/JIT.cpp: | |
2361 | (JSC::JIT::privateCompileMainPass): | |
2362 | (JSC::JIT::privateCompileSlowCases): | |
2363 | * jit/JIT.h: | |
2364 | * jit/JITOpcodes.cpp: | |
2365 | (JSC::JIT::emit_op_resolve_global): | |
2366 | (JSC::JIT::emit_op_resolve_global_dynamic): | |
2367 | (JSC::JIT::emitSlow_op_resolve_global): | |
2368 | (JSC::JIT::emitSlow_op_resolve_global_dynamic): | |
2369 | Happily resolve_global_dynamic can share the slow case! | |
2370 | * jit/JITStubs.h: | |
2371 | (JSC::): | |
2372 | * runtime/JSActivation.cpp: | |
2373 | (JSC::JSActivation::isDynamicScope): | |
2374 | * runtime/JSActivation.h: | |
2375 | * runtime/JSGlobalObject.cpp: | |
2376 | (JSC::JSGlobalObject::isDynamicScope): | |
2377 | * runtime/JSGlobalObject.h: | |
2378 | * runtime/JSStaticScopeObject.cpp: | |
2379 | (JSC::JSStaticScopeObject::isDynamicScope): | |
2380 | * runtime/JSStaticScopeObject.h: | |
2381 | * runtime/JSVariableObject.h: | |
2382 | ||
2383 | 2010-05-07 Geoffrey Garen <ggaren@apple.com> | |
2384 | ||
2385 | Reviewed by Gavin Barraclough. | |
2386 | ||
2387 | Fixed Sputnik failure seen on buildbot. | |
2388 | ||
2389 | * runtime/NumberPrototype.cpp: | |
2390 | (JSC::numberProtoFuncToString): Cast to unsigned before checking magnitude, | |
2391 | to efficiently exclude negative numbers, which require two characters | |
2392 | instead of one. | |
2393 | ||
2394 | 2010-05-07 Geoffrey Garen <ggaren@apple.com> | |
2395 | ||
2396 | Reviewed by Alexey Proskuryakov. | |
2397 | ||
2398 | Slightly more effective way to guarantee a compile-time constant, at | |
2399 | least on gcc. | |
2400 | ||
2401 | * runtime/NumberPrototype.cpp: | |
2402 | (JSC::numberProtoFuncToString): Use pointer notation instead of array | |
2403 | notation, so the compiler treats the string and its contents as constant. | |
2404 | ||
2405 | 2010-05-07 Adam Barth <abarth@webkit.org> | |
2406 | ||
2407 | Reviewed by Alexey Proskuryakov. | |
2408 | ||
2409 | [WTFURL] Add core URL parser | |
2410 | https://bugs.webkit.org/show_bug.cgi?id=38572 | |
2411 | ||
2412 | This patch adds the core of the URL parser. The URL parser uses a | |
2413 | templated notion of a code unit to support different string types. | |
2414 | Later we'll add some non-templated APIs with concrete types that | |
2415 | clients can use more conveniently. | |
2416 | ||
2417 | The URLParser has a couple calls to ASSERT(), which I've commented out | |
2418 | for now. I'm not 100% sure how to handle the dependency issues there | |
2419 | yet, so I've punted on the issue for now. | |
2420 | ||
2421 | Also, there are a number of methods that are declared public in this | |
2422 | patch that are only used by the canonicalizer. My plan is to make | |
2423 | those private or protected and make the canonicalizer a friend of the | |
2424 | parser. The details will be in a later patch. | |
2425 | ||
2426 | * wtf/url/src/URLComponent.h: | |
2427 | (WTF::URLComponent::fromRange): | |
2428 | (WTF::URLComponent::isNonEmpty): | |
2429 | (WTF::URLComponent::isEmptyOrInvalid): | |
2430 | * wtf/url/src/URLParser.h: Added. | |
2431 | (WTF::URLParser::): | |
2432 | (WTF::URLParser::isPossibleAuthorityTerminator): | |
2433 | (WTF::URLParser::parseAuthority): | |
2434 | (WTF::URLParser::extractScheme): | |
2435 | (WTF::URLParser::parseAfterScheme): | |
2436 | (WTF::URLParser::parseStandardURL): | |
2437 | (WTF::URLParser::parsePath): | |
2438 | (WTF::URLParser::parsePathURL): | |
2439 | (WTF::URLParser::parseMailtoURL): | |
2440 | (WTF::URLParser::parsePort): | |
2441 | (WTF::URLParser::extractFileName): | |
2442 | (WTF::URLParser::extractQueryKeyValue): | |
2443 | (WTF::URLParser::isURLSlash): | |
2444 | (WTF::URLParser::shouldTrimFromURL): | |
2445 | (WTF::URLParser::trimURL): | |
2446 | (WTF::URLParser::consecutiveSlashes): | |
2447 | (WTF::URLParser::isPortDigit): | |
2448 | (WTF::URLParser::nextAuthorityTerminator): | |
2449 | (WTF::URLParser::parseUserInfo): | |
2450 | (WTF::URLParser::parseServerInfo): | |
2451 | ||
2452 | 2010-05-07 Geoffrey Garen <ggaren@apple.com> | |
2453 | ||
2454 | Reviewed by Oliver Hunt. | |
2455 | ||
2456 | Added a fast path for number-to-character conversion via | |
2457 | Number.prototype.toString base 36. | |
2458 | ||
2459 | 0.7% speedup on SunSpider. | |
2460 | ||
2461 | * runtime/NumberPrototype.cpp: | |
2462 | (JSC::numberProtoFuncToString): Made radix interpretation a little more | |
2463 | efficient by keeping it in int space. Turned "const char" into | |
2464 | "static const char" just in case. Added a fast path for base 36 | |
2465 | conversion of something that will turn into a character. | |
2466 | ||
2467 | 2010-05-07 Adam Barth <abarth@webkit.org> | |
2468 | ||
2469 | Reviewed by Darin Fisher. | |
2470 | ||
2471 | [WTFURL] Add a malloc-backed URLBuffer | |
2472 | https://bugs.webkit.org/show_bug.cgi?id=38694 | |
2473 | ||
2474 | This patch adds a URLBuffer that uses new/delete to manage the backing | |
2475 | store for the buffer. | |
2476 | ||
2477 | * wtf/url/src/RawURLBuffer.h: Added. | |
2478 | (WTF::RawURLBuffer::RawURLBuffer): | |
2479 | (WTF::RawURLBuffer::~RawURLBuffer): | |
2480 | (WTF::RawURLBuffer::resize): | |
2481 | ||
2482 | 2010-05-06 Fumitoshi Ukai <ukai@chromium.org> | |
2483 | ||
2484 | Reviewed by Alexey Proskuryakov. | |
2485 | ||
2486 | JavaScriptCore/wtf/RandomNumber.h should provide using WTF::* | |
2487 | https://bugs.webkit.org/show_bug.cgi?id=38719 | |
2488 | ||
2489 | * wtf/RandomNumber.h: | |
2490 | Add using directives. | |
2491 | ||
2492 | 2010-05-06 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
2493 | ||
2494 | Reviewed by Kenneth Rohde Christiansen. | |
2495 | ||
2496 | [Qt] Enable YARR_JIT for X86 Mac for QtWebKit | |
2497 | https://bugs.webkit.org/show_bug.cgi?id=38668 | |
2498 | ||
2499 | * wtf/Platform.h: | |
2500 | ||
2501 | 2010-05-06 Gavin Barraclough <barraclough@apple.com> | |
2502 | ||
2503 | Reviewed by Geoff Garen. | |
2504 | ||
2505 | Bug 38714 - Add result caching for Math.sin | |
2506 | ||
2507 | Math.sin is frequently called with the same operand, caching the result should | |
2508 | improve performance. CachedTranscendentalFunction adds a generic mechanism to | |
2509 | cache results for pure functions with the signature "double func(double)", and | |
2510 | where NaN maps to NaN. | |
2511 | ||
2512 | CachedTranscendentalFunction uses a very simple hash function designed to be | |
2513 | fast to execute since we cannot cache the result, and trivial to JIT generate, | |
2514 | should we wish to do so. | |
2515 | ||
2516 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
2517 | * runtime/CachedTranscendentalFunction.h: Added. | |
2518 | (JSC::CachedTranscendentalFunction::CachedTranscendentalFunction): | |
2519 | (JSC::CachedTranscendentalFunction::~CachedTranscendentalFunction): | |
2520 | (JSC::CachedTranscendentalFunction::operator()): | |
2521 | (JSC::CachedTranscendentalFunction::initialize): | |
2522 | (JSC::CachedTranscendentalFunction::hash): | |
2523 | * runtime/JSGlobalData.h: | |
2524 | * runtime/MathObject.cpp: | |
2525 | (JSC::mathProtoFuncSin): | |
2526 | * wtf/Platform.h: | |
2527 | ||
2528 | 2010-05-06 Geoffrey Garen <ggaren@apple.com> | |
2529 | ||
2530 | Windows build fix. | |
2531 | ||
2532 | * bytecode/SamplingTool.cpp: | |
2533 | (JSC::SamplingFlags::sample): Use a cast, so Windows will be happy when | |
2534 | this code is enabled. | |
2535 | * wtf/Platform.h: Reverted last change to this file, which seems to have | |
2536 | been accidental. | |
2537 | ||
2538 | 2010-05-06 Gavin Barraclough <barraclough@apple.com> | |
2539 | ||
2540 | Reviewed by Oliver Hunt. | |
2541 | ||
2542 | Add compile switch to make debugger keyword plant breakpoint instructions. | |
2543 | ||
2544 | * bytecompiler/BytecodeGenerator.cpp: | |
2545 | (JSC::BytecodeGenerator::emitDebugHook): | |
2546 | * jit/JITOpcodes.cpp: | |
2547 | (JSC::JIT::emit_op_debug): | |
2548 | * wtf/Platform.h: | |
2549 | ||
2550 | 2010-05-06 Oliver Hunt <oliver@apple.com> | |
2551 | ||
2552 | Build fix | |
2553 | ||
2554 | Fix ARM builds | |
2555 | ||
2556 | * assembler/MacroAssemblerARM.h: | |
2557 | (JSC::MacroAssemblerARM::load16): | |
2558 | * assembler/MacroAssemblerARMv7.h: | |
2559 | (JSC::MacroAssemblerARMv7::load16): | |
2560 | ||
2561 | 2010-05-06 Oliver Hunt <oliver@apple.com> | |
2562 | ||
2563 | Reviewed by Geoffrey Garen. | |
2564 | ||
2565 | Improve performance of single character string compares | |
2566 | https://bugs.webkit.org/show_bug.cgi?id=38659 | |
2567 | ||
2568 | Add logic to the jit to identify comparisons to single character string literals | |
2569 | and then just perform the comparison inline, rather than ignoring the evidence | |
2570 | and attempting to perform an integer comparison. | |
2571 | ||
2572 | Multiple changes required -- add jnlesseq opcode, add helper function to identify | |
2573 | single character string constants, add a helper to load single character strings. | |
2574 | Then add the 32_64 and normal codepaths to the JIT. | |
2575 | ||
2576 | * assembler/MacroAssemblerX86Common.h: | |
2577 | (JSC::MacroAssemblerX86Common::load16): | |
2578 | * bytecode/CodeBlock.cpp: | |
2579 | (JSC::CodeBlock::dump): | |
2580 | * bytecode/Opcode.h: | |
2581 | * bytecompiler/BytecodeGenerator.cpp: | |
2582 | (JSC::BytecodeGenerator::emitJumpIfTrue): | |
2583 | * interpreter/Interpreter.cpp: | |
2584 | (JSC::Interpreter::privateExecute): | |
2585 | * jit/JIT.cpp: | |
2586 | (JSC::JIT::privateCompileMainPass): | |
2587 | (JSC::JIT::privateCompileSlowCases): | |
2588 | * jit/JIT.h: | |
2589 | * jit/JITArithmetic.cpp: | |
2590 | (JSC::JIT::emit_op_jnless): | |
2591 | (JSC::JIT::emitSlow_op_jnless): | |
2592 | (JSC::JIT::emit_op_jless): | |
2593 | (JSC::JIT::emitSlow_op_jless): | |
2594 | (JSC::JIT::emit_op_jlesseq): | |
2595 | (JSC::JIT::emit_op_jnlesseq): | |
2596 | (JSC::JIT::emitSlow_op_jlesseq): | |
2597 | (JSC::JIT::emitSlow_op_jnlesseq): | |
2598 | * jit/JITArithmetic32_64.cpp: | |
2599 | (JSC::JIT::emit_op_jnless): | |
2600 | (JSC::JIT::emitSlow_op_jnless): | |
2601 | (JSC::JIT::emit_op_jless): | |
2602 | (JSC::JIT::emitSlow_op_jless): | |
2603 | (JSC::JIT::emit_op_jlesseq): | |
2604 | (JSC::JIT::emit_op_jnlesseq): | |
2605 | (JSC::JIT::emitSlow_op_jlesseq): | |
2606 | (JSC::JIT::emitSlow_op_jnlesseq): | |
2607 | (JSC::JIT::emitBinaryDoubleOp): | |
2608 | * jit/JITInlineMethods.h: | |
2609 | (JSC::JIT::emitLoadCharacterString): | |
2610 | (JSC::JIT::isOperandConstantImmediateChar): | |
2611 | * jit/JSInterfaceJIT.h: | |
2612 | (JSC::ThunkHelpers::stringImplDataOffset): | |
2613 | (JSC::ThunkHelpers::jsStringLengthOffset): | |
2614 | (JSC::ThunkHelpers::jsStringValueOffset): | |
2615 | Moved from ThunkGenerators to make it possible to share. | |
2616 | * jit/ThunkGenerators.cpp: | |
2617 | ||
2618 | 2010-05-06 Martin Robinson <mrobinson@webkit.org> | |
2619 | ||
2620 | Reviewed by Gustavo Noronha Silva. | |
2621 | ||
2622 | [GTK] Enable DOM clipboard and drag-and-drop access | |
2623 | https://bugs.webkit.org/show_bug.cgi?id=30623 | |
2624 | ||
2625 | Convert dragging portion of drag-and-drop to use DataObjectGtk. | |
2626 | ||
2627 | * wtf/gobject/GRefPtr.h: Add forward declarations for GObject functions. | |
2628 | ||
2629 | 2010-05-06 Steve Block <steveblock@google.com> | |
2630 | ||
2631 | Reviewed by Eric Seidel. | |
2632 | ||
2633 | MAC_JAVA_BRIDGE should be renamed JAVA_BRIDGE | |
2634 | https://bugs.webkit.org/show_bug.cgi?id=38544 | |
2635 | ||
2636 | * wtf/Platform.h: | |
2637 | ||
2638 | 2010-05-06 Adam Barth <abarth@webkit.org> | |
2639 | ||
2640 | Reviewed by Maciej Stachowiak. | |
2641 | ||
2642 | [WTFURL] Add a class to represent the segments of a URL | |
2643 | https://bugs.webkit.org/show_bug.cgi?id=38566 | |
2644 | ||
2645 | When paired with a string, this class represents a parsed URL. | |
2646 | ||
2647 | * wtf/url/src/URLSegments.cpp: Added. | |
2648 | (WTF::URLSegments::length): | |
2649 | (WTF::URLSegments::charactersBefore): | |
2650 | * wtf/url/src/URLSegments.h: Added. | |
2651 | (WTF::URLSegments::): | |
2652 | (WTF::URLSegments::URLSegments): | |
2653 | * wtf/url/wtfurl.gyp: | |
2654 | ||
2655 | 2010-05-05 Tony Gentilcore <tonyg@chromium.org> | |
2656 | ||
2657 | Reviewed by Adam Barth. | |
2658 | ||
2659 | Adding comment with link to RefPtr documentation. | |
2660 | https://bugs.webkit.org/show_bug.cgi?id=38601 | |
2661 | ||
2662 | * wtf/RefPtr.h: | |
2663 | ||
2664 | 2010-05-05 Gavin Barraclough <barraclough@apple.com> | |
2665 | ||
2666 | Reviewed by Darin Adler. | |
2667 | ||
2668 | Bug 38604 - workers-gc2 crashing on Qt | |
2669 | ||
2670 | This appears to be due to a couple of issues. | |
2671 | (1) When the atomic string table is deleted it does not clear the 'inTable' bit | |
2672 | on AtomicStrings - it implicitly assumes that all AtomicStrings have already | |
2673 | been deleted at this point (otherwise they will crash in their destructor when | |
2674 | they try to remove themselves from the atomic string table). | |
2675 | (2) We don't fix the ordering in which WTF::WTFThreadData and | |
2676 | WebCore::ThreadGlobalData are destructed. | |
2677 | ||
2678 | We should make sure that ThreadGlobalData is cleaned up before worker threads | |
2679 | terminate and WTF::WTFThreadData is destroyed, and we should clear the inTable | |
2680 | bit of members on atomic string table destruction. | |
2681 | ||
2682 | WTF changes (fix issue 1, above) - ensure inTable property is cleared when the | |
2683 | atomic string table is destroyed (also, rename InTable to IsAtomic, to make it | |
2684 | clear which table we are refering to!) | |
2685 | ||
2686 | * wtf/text/AtomicString.cpp: | |
2687 | (WebCore::AtomicStringTable::destroy): | |
2688 | (WebCore::CStringTranslator::translate): | |
2689 | (WebCore::UCharBufferTranslator::translate): | |
2690 | (WebCore::HashAndCharactersTranslator::translate): | |
2691 | (WebCore::AtomicString::add): | |
2692 | * wtf/text/StringImpl.cpp: | |
2693 | (WebCore::StringImpl::~StringImpl): | |
2694 | * wtf/text/StringImpl.h: | |
2695 | (WebCore::StringImpl::isAtomic): | |
2696 | (WebCore::StringImpl::setIsAtomic): | |
2697 | * wtf/text/StringImplBase.h: | |
2698 | ||
2699 | 2010-05-05 Oliver Hunt <oliver@apple.com> | |
2700 | ||
2701 | Reviewed by Geoffrey Garen. | |
2702 | ||
2703 | Make Array.join specialised for actual arrays | |
2704 | https://bugs.webkit.org/show_bug.cgi?id=38592 | |
2705 | ||
2706 | Bring Array.join in line with the other array methods by specialising for | |
2707 | this === an array. | |
2708 | ||
2709 | * runtime/ArrayPrototype.cpp: | |
2710 | (JSC::arrayProtoFuncJoin): | |
2711 | ||
2712 | 2010-05-04 Yongjun Zhang <yongjun_zhang@apple.com> | |
2713 | ||
2714 | Reviewed by Darin Adler. | |
2715 | ||
2716 | WebKit crashes at DebuggerCallFrame::functionName() if m_callFrame is the top global callframe. | |
2717 | https://bugs.webkit.org/show_bug.cgi?id=38535 | |
2718 | ||
2719 | Don't call asFunction if callee is not a FunctionType to prevent assertion failure | |
2720 | in JSCell::isObject(). | |
2721 | ||
2722 | * debugger/DebuggerCallFrame.cpp: | |
2723 | (JSC::DebuggerCallFrame::functionName): | |
2724 | (JSC::DebuggerCallFrame::calculatedFunctionName): | |
2725 | ||
2726 | 2010-05-04 Steve Falkenburg <sfalken@apple.com> | |
2727 | ||
2728 | Remove redundant exports to fix Windows build warnings. | |
2729 | ||
2730 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
2731 | ||
2732 | 2010-05-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
2733 | ||
2734 | Reviewed by Holger Freyther. | |
2735 | ||
2736 | Fix a memory leak inside the QScriptValue. | |
2737 | ||
2738 | QSciptValuePrivate::toString should release all temporary variables. | |
2739 | ||
2740 | [Qt] QScriptValue::toString have a memory leak. | |
2741 | https://bugs.webkit.org/show_bug.cgi?id=38112 | |
2742 | ||
2743 | * qt/api/qscriptvalue_p.h: | |
2744 | (QScriptValuePrivate::toString): | |
2745 | ||
2746 | 2010-05-04 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
2747 | ||
2748 | Reviewed by Darin Adler. | |
2749 | ||
2750 | Does not work on SPARC because of alignment issues | |
2751 | https://bugs.webkit.org/show_bug.cgi?id=38455 | |
2752 | ||
2753 | Use AllocAlignmentInteger instead of void* on pageheap_memory to | |
2754 | avoid crashing at runtime in some architectures. Investigated by | |
2755 | Mike Hommey <mh@glandium.org>, change suggested by Darin Adler. | |
2756 | ||
2757 | * wtf/FastMalloc.cpp: | |
2758 | ||
2759 | 2010-05-04 Adam Barth <abarth@webkit.org> | |
2760 | ||
2761 | Reviewed by Maciej Stachowiak. | |
2762 | ||
2763 | Add first WTFURL file | |
2764 | https://bugs.webkit.org/show_bug.cgi?id=38470 | |
2765 | ||
2766 | This class represents a component of a URL, such as the scheme or path. | |
2767 | Essentially, the class is an index into a string buffer. | |
2768 | ||
2769 | * wtf/url: Added. | |
2770 | - There was some discussion about where to put the URL library. | |
2771 | There are a number of reasonable options, but putting the library | |
2772 | in the WTF directory seems like a reasonable alternative. This | |
2773 | location will make more sense once WTF is moved out of | |
2774 | JavaScriptCore and into a top-level directory. | |
2775 | * wtf/url/src: Added. | |
2776 | - I've added this extra directory to the usual structure because we | |
2777 | eventually want a "public" folder that defines the public | |
2778 | interface to this library that clients outside of svn.webkit.org | |
2779 | can rely upon, much like the various subfolders of the WebKit | |
2780 | directory often define a public API. | |
2781 | * wtf/url/src/URLComponent.h: Added. | |
2782 | - I've added this somewhat trivial class to get the ball rolling. | |
2783 | (WTF::URLComponent::URLComponent): | |
2784 | (WTF::URLComponent::isValid): | |
2785 | (WTF::URLComponent::isNonempty): | |
2786 | (WTF::URLComponent::reset): | |
2787 | (WTF::URLComponent::operator==): | |
2788 | (WTF::URLComponent::begin): | |
2789 | (WTF::URLComponent::setBegin): | |
2790 | (WTF::URLComponent::length): | |
2791 | (WTF::URLComponent::setLength): | |
2792 | (WTF::URLComponent::end): | |
2793 | * wtf/url/wtfurl.gyp: Added. | |
2794 | - WTFURL will be an independently buildable library, hence the | |
2795 | beginnings of a wtfurl.gyp file. | |
2796 | ||
2797 | 2010-05-03 Stephanie Lewis <slewis@apple.com> | |
2798 | ||
2799 | Reviewed by Geoff Garen. | |
2800 | ||
2801 | https://bugs.webkit.org/show_bug.cgi?id=38368 | |
2802 | <rdar://problem/7834433> REGRESSSION: 1.5% PLT regression due to 56028 | |
2803 | (return memory quicker). | |
2804 | Instead of returning everything but the smallest spans spread out | |
2805 | the spans kept over several size lists. | |
2806 | ||
2807 | * wtf/FastMalloc.cpp: | |
2808 | (WTF::TCMalloc_PageHeap::scavenge): | |
2809 | ||
2810 | 2010-05-03 James Robinson <jamesr@chromium.org> | |
2811 | ||
2812 | Reviewed by Eric Seidel. | |
2813 | ||
2814 | Clean up a few compiler warnings | |
2815 | https://bugs.webkit.org/show_bug.cgi?id=38073 | |
2816 | ||
2817 | * wtf/text/StringImpl.cpp: | |
2818 | (WebCore::StringImpl::ascii): | |
2819 | ||
2820 | 2010-05-03 Gavin Barraclough <barraclough@apple.com> | |
2821 | ||
2822 | Reviewed by NOBODY (reverting previous commit). | |
2823 | ||
2824 | Rolling out r58114 - this introduced memory leaks of | |
2825 | AtomicStrings then workers terminated. | |
2826 | ||
2827 | * GNUmakefile.am: | |
2828 | * JavaScriptCore.gypi: | |
2829 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
2830 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
2831 | * jit/ThunkGenerators.cpp: | |
2832 | (JSC::ThunkHelpers::stringImplDataOffset): | |
2833 | * runtime/Identifier.cpp: | |
2834 | (JSC::IdentifierTable::~IdentifierTable): | |
2835 | (JSC::IdentifierTable::add): | |
2836 | (JSC::IdentifierCStringTranslator::hash): | |
2837 | (JSC::IdentifierCStringTranslator::equal): | |
2838 | (JSC::IdentifierCStringTranslator::translate): | |
2839 | (JSC::Identifier::add): | |
2840 | (JSC::IdentifierUCharBufferTranslator::hash): | |
2841 | (JSC::IdentifierUCharBufferTranslator::equal): | |
2842 | (JSC::IdentifierUCharBufferTranslator::translate): | |
2843 | (JSC::Identifier::addSlowCase): | |
2844 | * runtime/Identifier.h: | |
2845 | * runtime/JSGlobalData.cpp: | |
2846 | (JSC::JSGlobalData::JSGlobalData): | |
2847 | (JSC::JSGlobalData::~JSGlobalData): | |
2848 | * runtime/JSGlobalData.h: | |
2849 | * wtf/WTFThreadData.cpp: | |
2850 | (WTF::WTFThreadData::WTFThreadData): | |
2851 | (WTF::WTFThreadData::~WTFThreadData): | |
2852 | * wtf/WTFThreadData.h: | |
2853 | (JSC::IdentifierTable::remove): | |
2854 | (JSC::IdentifierTable::literalTable): | |
2855 | (WTF::WTFThreadData::atomicStringTable): | |
2856 | * wtf/text/AtomicString.cpp: | |
2857 | (WebCore::AtomicStringTable::create): | |
2858 | (WebCore::AtomicStringTable::table): | |
2859 | (WebCore::AtomicStringTable::destroy): | |
2860 | (WebCore::stringTable): | |
2861 | (WebCore::CStringTranslator::hash): | |
2862 | (WebCore::CStringTranslator::equal): | |
2863 | (WebCore::CStringTranslator::translate): | |
2864 | (WebCore::operator==): | |
2865 | (WebCore::AtomicString::add): | |
2866 | (WebCore::equal): | |
2867 | (WebCore::UCharBufferTranslator::hash): | |
2868 | (WebCore::UCharBufferTranslator::equal): | |
2869 | (WebCore::UCharBufferTranslator::translate): | |
2870 | (WebCore::HashAndCharactersTranslator::hash): | |
2871 | (WebCore::HashAndCharactersTranslator::equal): | |
2872 | (WebCore::HashAndCharactersTranslator::translate): | |
2873 | (WebCore::AtomicString::find): | |
2874 | (WebCore::AtomicString::remove): | |
2875 | * wtf/text/AtomicStringTable.h: Removed. | |
2876 | * wtf/text/StringImpl.cpp: | |
2877 | (WebCore::StringImpl::~StringImpl): | |
2878 | * wtf/text/StringImpl.h: | |
2879 | (WebCore::StringImpl::inTable): | |
2880 | (WebCore::StringImpl::setInTable): | |
2881 | (WebCore::equal): | |
2882 | * wtf/text/StringImplBase.h: | |
2883 | (WTF::StringImplBase::StringImplBase): | |
2884 | ||
2885 | 2010-05-03 Kevin Watters <kevinwatters@gmail.com> | |
2886 | ||
2887 | Reviewed by Kevin Ollivier. | |
2888 | ||
2889 | [wx] Implement scheduleDispatchFunctionsOnMainThread for wx port. | |
2890 | https://bugs.webkit.org/show_bug.cgi?id=38480 | |
2891 | ||
2892 | * wtf/wx/MainThreadWx.cpp: | |
2893 | (wxCallAfter::wxCallAfter): | |
2894 | (wxCallAfter::OnCallback): | |
2895 | (WTF::scheduleDispatchFunctionsOnMainThread): | |
2896 | ||
2897 | 2010-05-03 Kevin Watters <kevinwatters@gmail.com> | |
2898 | ||
2899 | Reviewed by Kevin Ollivier. | |
2900 | ||
2901 | [wx] Build and use Mac's ComplexTextController to support complex text in wx. | |
2902 | https://bugs.webkit.org/show_bug.cgi?id=38482 | |
2903 | ||
2904 | * wtf/Platform.h: | |
2905 | ||
2906 | 2010-05-03 Oliver Hunt <oliver@apple.com> | |
2907 | ||
2908 | Reviewed by Maciej Stachowiak. | |
2909 | ||
2910 | Interpreter crashes due to incorrect refcounting of cached structures. | |
2911 | https://bugs.webkit.org/show_bug.cgi?id=38491 | |
2912 | rdar://problem/7926160 | |
2913 | ||
2914 | Make sure we ref/deref structures used for cached custom property getters | |
2915 | ||
2916 | * bytecode/CodeBlock.cpp: | |
2917 | (JSC::CodeBlock::derefStructures): | |
2918 | (JSC::CodeBlock::refStructures): | |
2919 | ||
2920 | 2010-05-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
2921 | ||
2922 | Reviewed by Eric Seidel. | |
2923 | ||
2924 | [Qt] Enable JIT for QtWebKit on Symbian | |
2925 | https://bugs.webkit.org/show_bug.cgi?id=38339 | |
2926 | ||
2927 | JIT on Symbian has been stable for quite some time, it | |
2928 | is time to turn it on by default. | |
2929 | ||
2930 | * wtf/Platform.h: | |
2931 | ||
2932 | 2010-04-29 Oliver Hunt <oliver@apple.com> | |
2933 | ||
2934 | Reviewed by Gavin Barraclough. | |
2935 | ||
2936 | Add codegen support for unsigned right shift | |
2937 | https://bugs.webkit.org/show_bug.cgi?id=38375 | |
2938 | ||
2939 | Expose unsigned right shift in the macro assembler, and make use of it | |
2940 | from the jit. Currently if the result is outside the range 0..2^31-1 | |
2941 | we simply fall back to the slow case, even in JSVALUE64 and JSVALUE32_64 | |
2942 | where technically we could still return an immediate value. | |
2943 | ||
2944 | * assembler/MacroAssemblerARM.h: | |
2945 | (JSC::MacroAssemblerARM::urshift32): | |
2946 | * assembler/MacroAssemblerARMv7.h: | |
2947 | (JSC::MacroAssemblerARMv7::urshift32): | |
2948 | * assembler/MacroAssemblerX86Common.h: | |
2949 | (JSC::MacroAssemblerX86Common::urshift32): | |
2950 | * assembler/X86Assembler.h: | |
2951 | (JSC::X86Assembler::): | |
2952 | (JSC::X86Assembler::shrl_i8r): | |
2953 | (JSC::X86Assembler::shrl_CLr): | |
2954 | Add unsigned right shift to the x86 assembler | |
2955 | * jit/JIT.cpp: | |
2956 | (JSC::JIT::privateCompileMainPass): | |
2957 | (JSC::JIT::privateCompileSlowCases): | |
2958 | op_rshift no longer simply get thrown to a stub function | |
2959 | * jit/JIT.h: | |
2960 | * jit/JITArithmetic.cpp: | |
2961 | (JSC::JIT::emit_op_urshift): | |
2962 | (JSC::JIT::emitSlow_op_urshift): | |
2963 | JSVALUE32 and JSVALUE64 implementation. Only supports | |
2964 | double lhs in JSVALUE64. | |
2965 | * jit/JITArithmetic32_64.cpp: | |
2966 | (JSC::JIT::emit_op_rshift): | |
2967 | (JSC::JIT::emitSlow_op_rshift): | |
2968 | (JSC::JIT::emit_op_urshift): | |
2969 | (JSC::JIT::emitSlow_op_urshift): | |
2970 | Refactor right shift code to have shared implementation between signed | |
2971 | and unsigned versions. | |
2972 | ||
2973 | 2010-04-29 Oliver Hunt <oliver@apple.com> | |
2974 | ||
2975 | Reviewed by Gavin Barraclough. | |
2976 | ||
2977 | Handle double on righthand side of a right shift | |
2978 | https://bugs.webkit.org/show_bug.cgi?id=38363 | |
2979 | ||
2980 | In 64-bit we support right shift of a double, and there's no | |
2981 | reason not to in 32-bit either. This is a 1.1% sunspider | |
2982 | improvement in 32bit. | |
2983 | ||
2984 | Given high performance javascript code frequently makes | |
2985 | use of bit operators to perform double->int conversion i'll | |
2986 | follow this patch up with similar patches for bitwise 'and' | |
2987 | and 'or'. | |
2988 | ||
2989 | * jit/JITArithmetic32_64.cpp: | |
2990 | (JSC::JIT::emit_op_rshift): | |
2991 | (JSC::JIT::emitSlow_op_rshift): | |
2992 | ||
2993 | 2010-04-29 Oliver Hunt <oliver@apple.com> | |
2994 | ||
2995 | Reviewed by Geoff Garen. | |
2996 | ||
2997 | Hoist JSVALUE32_64 arithmetic implementations into a separate file. | |
2998 | ||
2999 | * GNUmakefile.am: | |
3000 | * JavaScriptCore.gypi: | |
3001 | * JavaScriptCore.pro: | |
3002 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
3003 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
3004 | * jit/JITArithmetic.cpp: | |
3005 | (JSC::JIT::emitSlow_op_jnless): | |
3006 | (JSC::JIT::emitSlow_op_jless): | |
3007 | (JSC::JIT::emitSlow_op_jnlesseq): | |
3008 | (JSC::JIT::emit_op_mod): | |
3009 | (JSC::JIT::compileBinaryArithOpSlowCase): | |
3010 | (JSC::JIT::emit_op_div): | |
3011 | (JSC::JIT::compileBinaryArithOp): | |
3012 | * jit/JITArithmetic32_64.cpp: Added. | |
3013 | (JSC::JIT::emit_op_negate): | |
3014 | (JSC::JIT::emitSlow_op_negate): | |
3015 | (JSC::JIT::emit_op_jnless): | |
3016 | (JSC::JIT::emitSlow_op_jnless): | |
3017 | (JSC::JIT::emit_op_jless): | |
3018 | (JSC::JIT::emitSlow_op_jless): | |
3019 | (JSC::JIT::emit_op_jnlesseq): | |
3020 | (JSC::JIT::emitSlow_op_jnlesseq): | |
3021 | (JSC::JIT::emit_op_lshift): | |
3022 | (JSC::JIT::emitSlow_op_lshift): | |
3023 | (JSC::JIT::emit_op_rshift): | |
3024 | (JSC::JIT::emitSlow_op_rshift): | |
3025 | (JSC::JIT::emit_op_bitand): | |
3026 | (JSC::JIT::emitSlow_op_bitand): | |
3027 | (JSC::JIT::emit_op_bitor): | |
3028 | (JSC::JIT::emitSlow_op_bitor): | |
3029 | (JSC::JIT::emit_op_bitxor): | |
3030 | (JSC::JIT::emitSlow_op_bitxor): | |
3031 | (JSC::JIT::emit_op_bitnot): | |
3032 | (JSC::JIT::emitSlow_op_bitnot): | |
3033 | (JSC::JIT::emit_op_post_inc): | |
3034 | (JSC::JIT::emitSlow_op_post_inc): | |
3035 | (JSC::JIT::emit_op_post_dec): | |
3036 | (JSC::JIT::emitSlow_op_post_dec): | |
3037 | (JSC::JIT::emit_op_pre_inc): | |
3038 | (JSC::JIT::emitSlow_op_pre_inc): | |
3039 | (JSC::JIT::emit_op_pre_dec): | |
3040 | (JSC::JIT::emitSlow_op_pre_dec): | |
3041 | (JSC::JIT::emit_op_add): | |
3042 | (JSC::JIT::emitAdd32Constant): | |
3043 | (JSC::JIT::emitSlow_op_add): | |
3044 | (JSC::JIT::emit_op_sub): | |
3045 | (JSC::JIT::emitSub32Constant): | |
3046 | (JSC::JIT::emitSlow_op_sub): | |
3047 | (JSC::JIT::emitBinaryDoubleOp): | |
3048 | (JSC::JIT::emit_op_mul): | |
3049 | (JSC::JIT::emitSlow_op_mul): | |
3050 | (JSC::JIT::emit_op_div): | |
3051 | (JSC::JIT::emitSlow_op_div): | |
3052 | (JSC::JIT::emit_op_mod): | |
3053 | (JSC::JIT::emitSlow_op_mod): | |
3054 | ||
3055 | 2010-04-29 Zoltan Herczeg <zherczeg@webkit.org> | |
3056 | ||
3057 | Reviewed by Oliver Hunt | |
3058 | ||
3059 | Add sqrt() instruction support for ARM assembler (using VFP) | |
3060 | https://bugs.webkit.org/show_bug.cgi?id=38312 | |
3061 | ||
3062 | * assembler/ARMAssembler.h: | |
3063 | (JSC::ARMAssembler::): | |
3064 | (JSC::ARMAssembler::fsqrtd_r): | |
3065 | * assembler/MacroAssemblerARM.h: | |
3066 | (JSC::MacroAssemblerARM::supportsFloatingPointSqrt): | |
3067 | (JSC::MacroAssemblerARM::sqrtDouble): | |
3068 | ||
3069 | 2010-04-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
3070 | ||
3071 | Reviewed by Simon Hausmann. | |
3072 | ||
3073 | [Qt] Refactor qtscriptglobal.h | |
3074 | https://bugs.webkit.org/show_bug.cgi?id=37953 | |
3075 | ||
3076 | Use the same pattern in qtscriptglobal.h as in | |
3077 | qwebkitglobal.h without checking for specific OSs. | |
3078 | ||
3079 | * qt/api/qtscriptglobal.h: | |
3080 | ||
3081 | 2010-04-29 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
3082 | ||
3083 | Reviewed by Simon Hausmann. | |
3084 | ||
3085 | Small cleanup. | |
3086 | ||
3087 | QScriptValuePrivate constructor shouldn't take QScriptEngine pointer | |
3088 | as a parameter, because it breaks a private / public separation rule. | |
3089 | QScriptEnginePrivate::get(QScriptEngine*) should return | |
3090 | a QScriptEnginePrivate pointer instead of a QScriptEnginePtr, it simplifies | |
3091 | implementation. | |
3092 | ||
3093 | [Qt] QScriptValuePrivate class needs some cleanup. | |
3094 | https://bugs.webkit.org/show_bug.cgi?id=37729 | |
3095 | ||
3096 | * qt/api/qscriptengine_p.h: | |
3097 | (QScriptEnginePrivate::get): | |
3098 | * qt/api/qscriptvalue.cpp: | |
3099 | (QScriptValue::QScriptValue): | |
3100 | * qt/api/qscriptvalue_p.h: | |
3101 | (QScriptValuePrivate::QScriptValuePrivate): | |
3102 | ||
3103 | 2010-04-29 Kwang Yul Seo <skyul@company100.net> | |
3104 | ||
3105 | Reviewed by Simon Hausmann. | |
3106 | ||
3107 | [WINCE] Export g_stackBase with JS_EXPORTDATA | |
3108 | https://bugs.webkit.org/show_bug.cgi?id=37437 | |
3109 | ||
3110 | Export g_stackBase with JS_EXPORTDATA as it is used by SharedTimerWince.cpp. | |
3111 | ||
3112 | * runtime/Collector.cpp: | |
3113 | ||
3114 | 2010-04-28 Oliver Hunt <oliver@apple.com> | |
3115 | ||
3116 | Do an unordered compare so that we don't treat NaN incorrectly. | |
3117 | ||
3118 | RS=Gavin Barraclough | |
3119 | ||
3120 | * jit/ThunkGenerators.cpp: | |
3121 | (JSC::powThunkGenerator): | |
3122 | ||
3123 | 2010-04-28 Oliver Hunt <oliver@apple.com> | |
3124 | ||
3125 | Reviewed by Gavin Barraclough. | |
3126 | ||
3127 | Add fast paths for Math.pow and Math.sqrt | |
3128 | https://bugs.webkit.org/show_bug.cgi?id=38294 | |
3129 | ||
3130 | Add specialized thunks for Math.pow and Math.sqrt. | |
3131 | This requires adding a sqrtDouble function to the MacroAssembler | |
3132 | and sqrtsd to the x86 assembler. | |
3133 | ||
3134 | Math.pow is slightly more complicated, in that we have | |
3135 | to implement exponentiation ourselves rather than relying | |
3136 | on hardware support. The inline exponentiation is restricted | |
3137 | to positive integer exponents on a numeric base. Exponentiation | |
3138 | is finally performed through the "Exponentiation by Squaring" | |
3139 | algorithm. | |
3140 | ||
3141 | * assembler/AbstractMacroAssembler.h: | |
3142 | (JSC::AbstractMacroAssembler::ImmPtr::ImmPtr): | |
3143 | * assembler/MacroAssemblerARM.h: | |
3144 | (JSC::MacroAssemblerARM::supportsFloatingPointSqrt): | |
3145 | (JSC::MacroAssemblerARM::loadDouble): | |
3146 | (JSC::MacroAssemblerARM::sqrtDouble): | |
3147 | * assembler/MacroAssemblerARMv7.h: | |
3148 | (JSC::MacroAssemblerARMv7::supportsFloatingPointSqrt): | |
3149 | (JSC::MacroAssemblerARMv7::sqrtDouble): | |
3150 | * assembler/MacroAssemblerX86.h: | |
3151 | (JSC::MacroAssemblerX86::loadDouble): | |
3152 | (JSC::MacroAssemblerX86::supportsFloatingPointSqrt): | |
3153 | * assembler/MacroAssemblerX86Common.h: | |
3154 | (JSC::MacroAssemblerX86Common::sqrtDouble): | |
3155 | * assembler/MacroAssemblerX86_64.h: | |
3156 | (JSC::MacroAssemblerX86_64::loadDouble): | |
3157 | (JSC::MacroAssemblerX86_64::supportsFloatingPointSqrt): | |
3158 | * assembler/X86Assembler.h: | |
3159 | (JSC::X86Assembler::): | |
3160 | (JSC::X86Assembler::movsd_mr): | |
3161 | (JSC::X86Assembler::sqrtsd_rr): | |
3162 | (JSC::X86Assembler::X86InstructionFormatter::twoByteOp): | |
3163 | (JSC::X86Assembler::X86InstructionFormatter::memoryModRM): | |
3164 | * create_hash_table: | |
3165 | * jit/JIT.h: | |
3166 | * jit/JITInlineMethods.h: | |
3167 | * jit/JITOpcodes.cpp: | |
3168 | * jit/JITStubs.h: | |
3169 | (JSC::JITThunks::ctiNativeCallThunk): | |
3170 | * jit/JSInterfaceJIT.h: | |
3171 | (JSC::JSInterfaceJIT::emitLoadDouble): | |
3172 | (JSC::JSInterfaceJIT::emitJumpIfImmediateNumber): | |
3173 | (JSC::JSInterfaceJIT::emitJumpIfNotImmediateNumber): | |
3174 | (JSC::JSInterfaceJIT::emitLoadInt32): | |
3175 | * jit/SpecializedThunkJIT.h: | |
3176 | (JSC::SpecializedThunkJIT::loadDoubleArgument): | |
3177 | (JSC::SpecializedThunkJIT::loadInt32Argument): | |
3178 | (JSC::SpecializedThunkJIT::returnJSValue): | |
3179 | (JSC::SpecializedThunkJIT::returnDouble): | |
3180 | (JSC::SpecializedThunkJIT::finalize): | |
3181 | * jit/ThunkGenerators.cpp: | |
3182 | (JSC::sqrtThunkGenerator): | |
3183 | (JSC::powThunkGenerator): | |
3184 | * jit/ThunkGenerators.h: | |
3185 | * runtime/Executable.h: | |
3186 | (JSC::NativeExecutable::NativeExecutable): | |
3187 | * runtime/JSFunction.cpp: | |
3188 | (JSC::JSFunction::JSFunction): | |
3189 | ||
3190 | 2010-04-28 Mike Thole <mthole@apple.com> | |
3191 | ||
3192 | Reviewed by Mark Rowe. | |
3193 | ||
3194 | Reenable WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK now that an | |
3195 | exports file for it has been added. | |
3196 | ||
3197 | * wtf/Platform.h: | |
3198 | ||
3199 | 2010-04-28 Mike Thole <mthole@apple.com> | |
3200 | ||
3201 | Build fix, not reviewed. | |
3202 | ||
3203 | * wtf/Platform.h: | |
3204 | Disable WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK until an exports file is created. | |
3205 | ||
3206 | 2010-04-28 Mike Thole <mthole@apple.com> | |
3207 | ||
3208 | Reviewed by David Kilzer. | |
3209 | ||
3210 | Add canAuthenticateAgainstProtectionSpace() to frame loader so that a protection space | |
3211 | can be inspected before attempting to authenticate against it | |
3212 | https://bugs.webkit.org/show_bug.cgi?id=38271 | |
3213 | ||
3214 | * wtf/Platform.h: Add WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK define. | |
3215 | ||
3216 | 2010-04-28 Darin Adler <darin@apple.com> | |
3217 | ||
3218 | Reviewed by Sam Weinig. | |
3219 | ||
3220 | Don't use CFAbsoluteTimeGetCurrent on Mac OS X, since it's just a cover | |
3221 | for gettimeofday anyway. | |
3222 | ||
3223 | * wtf/CurrentTime.cpp: | |
3224 | (WTF::currentTime): Remove the CF version of this. Change the "other POSIX" | |
3225 | version to pass 0 for the time zone instead of ignoring a return value. | |
3226 | Also get rid of unneeded type casts, since operations involving both | |
3227 | integers and doubles are always evaluated as doubles in C without explicit | |
3228 | type casting. | |
3229 | ||
3230 | 2010-04-28 Darin Fisher <darin@chromium.org> | |
3231 | ||
3232 | Reviewed by David Levin. | |
3233 | ||
3234 | [Chromium] callOnMainThread should equate to MessageLoop::PostTask | |
3235 | https://bugs.webkit.org/show_bug.cgi?id=38276 | |
3236 | ||
3237 | * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
3238 | * wtf/MainThread.cpp: | |
3239 | * wtf/chromium/ChromiumThreading.h: | |
3240 | * wtf/chromium/MainThreadChromium.cpp: | |
3241 | (WTF::initializeMainThread): | |
3242 | (WTF::callOnMainThread): | |
3243 | (WTF::callOnMainThreadAndWait): | |
3244 | (WTF::setMainThreadCallbacksPaused): | |
3245 | (WTF::isMainThread): | |
3246 | ||
3247 | 2010-04-28 Simon Hausmann <simon.hausmann@nokia.com>, Kent Hansen <kent.hansen@nokia.com> | |
3248 | ||
3249 | Reviewed by Darin Adler. | |
3250 | ||
3251 | JSC's currentThreadStackBase is not reentrant on some platforms | |
3252 | https://bugs.webkit.org/show_bug.cgi?id=37195 | |
3253 | ||
3254 | This function needs to be reentrant to avoid memory corruption on platforms where | |
3255 | the implementation uses global variables. | |
3256 | ||
3257 | This patch adds a mutex lock where necessary and makes the Symbian implementation | |
3258 | reentrant. | |
3259 | ||
3260 | * runtime/Collector.cpp: | |
3261 | (JSC::currentThreadStackBaseMutex): | |
3262 | (JSC::currentThreadStackBase): | |
3263 | ||
3264 | 2010-04-28 Thiago Macieira <thiago.macieira@nokia.com> | |
3265 | ||
3266 | Reviewed by Simon Hausmann. | |
3267 | ||
3268 | Fix compilation with gcc 3.4. | |
3269 | ||
3270 | AtomicStringImpl.h:29: error: base `WebCore::StringImpl' with only | |
3271 | non-default constructor in class without a constructor | |
3272 | ||
3273 | * wtf/text/AtomicStringImpl.h: | |
3274 | (WebCore::AtomicStringImpl::AtomicStringImpl): Provide a default constructor. | |
3275 | * wtf/text/StringImpl.h: Allow AtomicStringImpl to call a StringImpl constructor through a friend declaration. | |
3276 | ||
3277 | 2010-04-27 Stephanie Lewis <slewis@apple.com> | |
3278 | ||
3279 | Fix Tiger build. | |
3280 | ||
3281 | * wtf/FastMalloc.cpp: | |
3282 | (WTF::TCMalloc_PageHeap::Carve): | |
3283 | ||
3284 | 2010-04-26 Stephanie Lewis <slewis@apple.com> | |
3285 | ||
3286 | Reviewed by Geoff Garen. | |
3287 | ||
3288 | https://bugs.webkit.org/show_bug.cgi?id=38154 FastMalloc calls madvise too often. | |
3289 | <rdar://problem/7834433> REGRESSSION: 1.5% PLT regression due to 56028 (return memory quicker). | |
3290 | To save on madvise calls when recommitting memory recommit the entire span and then carve it | |
3291 | instead of carving the span up and only committing the part that will be used immediately. | |
3292 | ||
3293 | * wtf/FastMalloc.cpp: | |
3294 | (WTF::TCMalloc_PageHeap::New): | |
3295 | (WTF::TCMalloc_PageHeap::AllocLarge): | |
3296 | (WTF::TCMalloc_PageHeap::Carve): | |
3297 | ||
3298 | 2010-04-26 Oliver Hunt <oliver@apple.com> | |
3299 | ||
3300 | Reviewed by Maciej Stachowiak. | |
3301 | ||
3302 | Add specialized thunks for a char code related string functions | |
3303 | https://bugs.webkit.org/show_bug.cgi?id=38177 | |
3304 | ||
3305 | This is a simple extension to my prior patch. Basically hoist the | |
3306 | existing character loading logic from the charCodeAt thunk and into | |
3307 | a helper function, then add a helper to load strings from the small | |
3308 | string cache. This allows trivial implementations of fromCharCode | |
3309 | and charAt. | |
3310 | ||
3311 | * create_hash_table: | |
3312 | * jit/SpecializedThunkJIT.h: | |
3313 | (JSC::SpecializedThunkJIT::returnJSCell): | |
3314 | (JSC::SpecializedThunkJIT::tagReturnAsJSCell): | |
3315 | * jit/ThunkGenerators.cpp: | |
3316 | (JSC::stringCharLoad): | |
3317 | (JSC::charToString): | |
3318 | (JSC::charCodeAtThunkGenerator): | |
3319 | (JSC::charAtThunkGenerator): | |
3320 | (JSC::fromCharCodeThunkGenerator): | |
3321 | * jit/ThunkGenerators.h: | |
3322 | * runtime/SmallStrings.h: | |
3323 | (JSC::SmallStrings::singleCharacterStrings): | |
3324 | * runtime/StringConstructor.cpp: | |
3325 | (JSC::StringConstructor::StringConstructor): | |
3326 | ||
3327 | 2010-04-27 Thomas Zander <t.zander@nokia.com> | |
3328 | ||
3329 | Reviewed by Simon Hausmann. | |
3330 | ||
3331 | [Qt] Fix the build on Symbian on Linux using the Makefile based mkspec | |
3332 | ||
3333 | * JavaScriptCore.pri: It is necessary to specify the library search path | |
3334 | when linking against JavaScriptCore. | |
3335 | ||
3336 | 2010-04-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
3337 | ||
3338 | Reviewed by Simon Hausmann. | |
3339 | ||
3340 | Compile fix for Visual Studio 2010 | |
3341 | https://bugs.webkit.org/show_bug.cgi?id=37867 | |
3342 | ||
3343 | Patch by Prasanth Ullattil <prasanth.ullattil@nokia.com> | |
3344 | ||
3345 | * runtime/Structure.cpp: | |
3346 | (JSC::Structure::transitionTableAdd): | |
3347 | * wtf/MathExtras.h: | |
3348 | * wtf/Platform.h: | |
3349 | ||
3350 | 2010-04-27 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
3351 | ||
3352 | Reviewed by Simon Hausmann. | |
3353 | ||
3354 | Rename COMPILER(MSVC7) to COMPILER(MSVC7_OR_LOWER) | |
3355 | ||
3356 | * config.h: | |
3357 | (JSC::Structure::transitionTableAdd): | |
3358 | * wtf/Assertions.h: | |
3359 | * wtf/Atomics.h: | |
3360 | * wtf/CurrentTime.h: | |
3361 | (WTF::getLocalTime): | |
3362 | * wtf/Platform.h: | |
3363 | * wtf/StaticConstructors.h: | |
3364 | * wtf/StringExtras.h: | |
3365 | * wtf/Vector.h: | |
3366 | (WTF::::append): | |
3367 | ||
3368 | 2010-04-15 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
3369 | ||
3370 | Reviewed by Tor Arne Vestbø. | |
3371 | ||
3372 | [Qt] Fix Mac build break. | |
3373 | ||
3374 | https://bugs.webkit.org/show_bug.cgi?id=37867 | |
3375 | - Make sure JavaScriptCore's debug_and_release config follows that | |
3376 | of WebCore. | |
3377 | - Use different name for JavaScriptCore target in debug and release | |
3378 | since they might be written in the same path at the same time on | |
3379 | parallel builds | |
3380 | - Consolidate the DESTDIR determination logic in JavaScriptCore.pri | |
3381 | ||
3382 | * JavaScriptCore.pri: | |
3383 | * JavaScriptCore.pro: | |
3384 | ||
3385 | 2010-04-21 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
3386 | ||
3387 | Reviewed by Kenneth Rohde Christiansen. | |
3388 | ||
3389 | [Qt] Make sure WebKit is not compiled using C++0x. | |
3390 | https://bugs.webkit.org/show_bug.cgi?id=37867 | |
3391 | ||
3392 | As the rest of Qt compiles in the C++0x mode, people might start | |
3393 | compiling it in this mode. WebKit don't support this yet. | |
3394 | ||
3395 | Patch by Thiago Macieira <thiago.macieira@nokia.com> | |
3396 | ||
3397 | * JavaScriptCore.pro: | |
3398 | ||
3399 | 2010-04-26 Oliver Hunt <oliver@apple.com> | |
3400 | ||
3401 | Fix windows | |
3402 | ||
3403 | * jit/SpecializedThunkJIT.h: | |
3404 | (JSC::SpecializedThunkJIT::argumentToVirtualRegister): | |
3405 | ||
3406 | 2010-04-26 Oliver Hunt <oliver@apple.com> | |
3407 | ||
3408 | Reviewed by Gavin Barraclough. | |
3409 | ||
3410 | Need to support more efficient dispatch of lightweight builtins | |
3411 | https://bugs.webkit.org/show_bug.cgi?id=38155 | |
3412 | ||
3413 | The problem with calling lightweight builtins is that marshalling | |
3414 | the call from the nitro calling convention to the system calling | |
3415 | convention is very expensive relative to the cost of the actually | |
3416 | evaluating the function. To work around this problem this patch | |
3417 | adds the ability to define a custom thunk for a builtin. | |
3418 | ||
3419 | This allows us to use high performance custom implementations of | |
3420 | the common and sensible versions of simple builtins. This patch | |
3421 | includes a simple (use of which is currently hardcoded) thunk for | |
3422 | charCodeAt. | |
3423 | ||
3424 | This adds a JSInterfaceJIT subclass called SpecializedThunkJIT | |
3425 | that has helper functions to remove (or at least reduce) the need | |
3426 | to have separate thunk implementations for each JSValue encoding. | |
3427 | ||
3428 | * GNUmakefile.am: | |
3429 | * JavaScriptCore.pro: | |
3430 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
3431 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
3432 | Many project file updates | |
3433 | ||
3434 | * create_hash_table: | |
3435 | Add thunk generation callbacks to the hash tables, currently | |
3436 | we hardcode the script to only support charCodeAt | |
3437 | ||
3438 | * jit/JITStubCall.h: | |
3439 | * jit/JITStubs.cpp: | |
3440 | (JSC::JITThunks::~JITThunks): | |
3441 | (JSC::JITThunks::specializedThunk): | |
3442 | * jit/JITStubs.h: | |
3443 | * jit/SpecializedThunkJIT.h: Added. | |
3444 | (JSC::SpecializedThunkJIT::SpecializedThunkJIT): | |
3445 | (JSC::SpecializedThunkJIT::loadCellArgument): | |
3446 | (JSC::SpecializedThunkJIT::loadJSStringArgument): | |
3447 | (JSC::SpecializedThunkJIT::loadInt32Argument): | |
3448 | (JSC::SpecializedThunkJIT::appendFailure): | |
3449 | (JSC::SpecializedThunkJIT::returnInt32): | |
3450 | (JSC::SpecializedThunkJIT::finalize): | |
3451 | (JSC::SpecializedThunkJIT::argumentToVirtualRegister): | |
3452 | (JSC::SpecializedThunkJIT::tagReturnAsInt32): | |
3453 | * jit/ThunkGenerators.cpp: Added. | |
3454 | (JSC::ThunkHelpers::stringImplDataOffset): | |
3455 | (JSC::ThunkHelpers::jsStringLengthOffset): | |
3456 | (JSC::ThunkHelpers::jsStringValueOffset): | |
3457 | (JSC::charCodeAtThunkGenerator): | |
3458 | * jit/ThunkGenerators.h: Added. | |
3459 | * runtime/Executable.h: | |
3460 | (JSC::NativeExecutable::NativeExecutable): | |
3461 | * runtime/JSFunction.cpp: | |
3462 | (JSC::JSFunction::JSFunction): | |
3463 | * runtime/JSFunction.h: | |
3464 | * runtime/JSGlobalData.h: | |
3465 | (JSC::JSGlobalData::getThunk): | |
3466 | * runtime/JSString.h: | |
3467 | (JSC::): | |
3468 | * runtime/JSValue.h: | |
3469 | Protect some of the JSVALUE32 and JSVALUE32_64 only constants | |
3470 | and function behind appropriate USE() guards to make it harder | |
3471 | to use the wrong flags for the target build. | |
3472 | * runtime/Lookup.cpp: | |
3473 | (JSC::HashTable::createTable): | |
3474 | (JSC::setUpStaticFunctionSlot): | |
3475 | * runtime/Lookup.h: | |
3476 | (JSC::HashEntry::initialize): | |
3477 | (JSC::HashEntry::generator): | |
3478 | (JSC::HashEntry::): | |
3479 | Make the lookup tables use a specialized thunkGenerator | |
3480 | if present | |
3481 | * wtf/text/StringImpl.h: | |
3482 | ||
3483 | 2010-04-26 Oliver Hunt <oliver@apple.com> | |
3484 | ||
3485 | Build fix | |
3486 | ||
3487 | * runtime/JSImmediate.h: | |
3488 | * runtime/JSValue.h: | |
3489 | ||
3490 | 2010-04-26 Oliver Hunt <oliver@apple.com> | |
3491 | ||
3492 | Reviewed by Gavin Barraclough. | |
3493 | ||
3494 | Factor some basic JS interface logic out of JIT and into a superclass | |
3495 | https://bugs.webkit.org/show_bug.cgi?id=38163 | |
3496 | ||
3497 | Create JSInterfaceJIT to hold some common low level functions for | |
3498 | interacting with the JS RegisterFile. Doing this separately from | |
3499 | https://bugs.webkit.org/show_bug.cgi?id=38155 to ease reviewing. | |
3500 | ||
3501 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
3502 | * jit/JIT.h: | |
3503 | * jit/JITInlineMethods.h: | |
3504 | (JSC::JIT::emitJumpSlowCaseIfNotJSCell): | |
3505 | * jit/JSInterfaceJIT.h: Added. | |
3506 | (JSC::JSInterfaceJIT::emitLoadJSCell): | |
3507 | (JSC::JSInterfaceJIT::emitJumpIfNotJSCell): | |
3508 | (JSC::JSInterfaceJIT::emitLoadInt32): | |
3509 | (JSC::JSInterfaceJIT::tagFor): | |
3510 | (JSC::JSInterfaceJIT::payloadFor): | |
3511 | (JSC::JSInterfaceJIT::addressFor): | |
3512 | ||
3513 | 2010-04-26 Sam Weinig <sam@webkit.org> | |
3514 | ||
3515 | Fix Tiger build. | |
3516 | ||
3517 | * wtf/mac/MainThreadMac.mm: | |
3518 | (WTF::isMainThread): | |
3519 | ||
3520 | 2010-04-26 Geoffrey Garen <ggaren@apple.com> | |
3521 | ||
3522 | Reviewed by Sam Weinig. | |
3523 | ||
3524 | <rdar://problem/7766413> | |
3525 | ||
3526 | Fixed a crash seen when using the JavaScriptCore API with WebKit. | |
3527 | ||
3528 | No layout test because DumpRenderTree doesn't use the JavaScriptCore API | |
3529 | in this way. | |
3530 | ||
3531 | * interpreter/RegisterFile.cpp: | |
3532 | (JSC::RegisterFile::setGlobalObject): | |
3533 | (JSC::RegisterFile::clearGlobalObject): | |
3534 | (JSC::RegisterFile::globalObject): | |
3535 | * interpreter/RegisterFile.h: | |
3536 | (JSC::RegisterFile::RegisterFile): Use WeakGCPtr for managing m_globalObject, | |
3537 | since it's a weak pointer. (We never noticed this error before because, | |
3538 | in WebKit, global objects always have a self-reference in a global variable, | |
3539 | so marking the register file's global variables would keep m_globalObject | |
3540 | alive. In the JavaScriptCore API, you can allocate a global object with | |
3541 | no self-reference.) | |
3542 | ||
3543 | * runtime/JSActivation.h: Removed unneeded #include. | |
3544 | ||
3545 | * runtime/JSGlobalObject.cpp: | |
3546 | (JSC::JSGlobalObject::~JSGlobalObject): Don't use ==, since a weak | |
3547 | pointer is 0 when the object it points to runs its destructor. | |
3548 | ||
3549 | * runtime/WeakGCPtr.h: | |
3550 | (JSC::WeakGCPtr::clear): Changed to return a bool indicating whether the | |
3551 | clear actually happened. | |
3552 | (JSC::WeakGCPtr::assign): Changed to forbid assignment of 0 as a shorthand | |
3553 | for calling clear(). A client should never clear by assigning 0, since | |
3554 | clear() should be conditional on whether the object doing the clearing | |
3555 | is still pointed to by the weak pointer. (Otherwise, a zombie object might | |
3556 | clear a pointer to a new, valid object.) | |
3557 | ||
3558 | 2010-04-25 Sam Weinig <sam@webkit.org> | |
3559 | ||
3560 | Reviewed by Maciej Stachowiak. | |
3561 | ||
3562 | Fix for https://bugs.webkit.org/show_bug.cgi?id=38097 | |
3563 | Disentangle initializing the main thread from initializing threading | |
3564 | ||
3565 | This is the first step in getting rid of the WEB_THREAD #define and | |
3566 | paving the way to allowing mac both WebKit and WebKit2 to use the same | |
3567 | WebCore. | |
3568 | ||
3569 | * JavaScriptCore.exp: Export initializeMainThread and initializeMainThreadToProcessMainThread. | |
3570 | * JavaScriptCore.xcodeproj/project.pbxproj: Sort files. | |
3571 | ||
3572 | * wtf/MainThread.cpp: | |
3573 | (WTF::mainThreadInitializationMutex): | |
3574 | (WTF::mainThreadFunctionQueueMutex): | |
3575 | (WTF::initializeMainThread): | |
3576 | (WTF::deprecatedInitializeMainThread): | |
3577 | * wtf/MainThread.h: | |
3578 | Added Mac only initializeMainThreadToProcessMainThread which sets up callOnMainThread | |
3579 | and isMainThead calls to assume that WebCore's main thread is also the | |
3580 | process's main thread. Since it is possible that both initializeMainThread | |
3581 | and initializeMainThreadToProcessMainThread could be called, the first one called | |
3582 | wins (either will work). | |
3583 | ||
3584 | * wtf/Threading.h: Moved to top of file. | |
3585 | ||
3586 | * wtf/ThreadingPthreads.cpp: | |
3587 | (WTF::initializeThreading): Remove call to initializeMainThread. | |
3588 | * wtf/ThreadingWin.cpp: | |
3589 | (WTF::initializeThreading): Ditto. | |
3590 | * wtf/gtk/ThreadingGtk.cpp: | |
3591 | (WTF::initializeThreading): Ditto. | |
3592 | ||
3593 | * wtf/mac/MainThreadMac.mm: | |
3594 | (WTF::initializeMainThreadPlatform): | |
3595 | (WTF::initializeMainThreadToProcessMainThread): | |
3596 | (WTF::scheduleDispatchFunctionsOnMainThread): | |
3597 | (WTF::isMainThread): | |
3598 | Add runtime switch between the old behavior of using the system's main | |
3599 | thread and a stored pointer to the main thread. Tiger always uses the | |
3600 | system's main thread. | |
3601 | ||
3602 | * wtf/qt/ThreadingQt.cpp: | |
3603 | (WTF::initializeThreading): Remove call to initializeMainThread. | |
3604 | * wtf/win/MainThreadWin.cpp: | |
3605 | (WTF::initializeMainThreadPlatform): Add call to initializeCurrentThreadInternal | |
3606 | removed from initializeThreading. | |
3607 | ||
3608 | 2010-04-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
3609 | ||
3610 | Reviewed by Kenneth Rohde Christiansen. | |
3611 | ||
3612 | Fix a memory leak in the QScriptString. | |
3613 | ||
3614 | QScriptStringPrivate's constructor shouldn't call JSStringRetain as | |
3615 | QScriptConverter implicitly pass a JSStringRef ownership. | |
3616 | ||
3617 | [Qt] QScriptStringPrivate c'tor problem | |
3618 | https://bugs.webkit.org/show_bug.cgi?id=38110 | |
3619 | ||
3620 | * qt/api/qscriptstring_p.h: | |
3621 | (QScriptStringPrivate::QScriptStringPrivate): | |
3622 | ||
3623 | 2010-04-24 Darin Adler <darin@apple.com> | |
3624 | ||
3625 | Reviewed by Dan Bernstein. | |
3626 | ||
3627 | REGRESSION (r56560): Crash in parseFloat if passed invalid UTF-16 data | |
3628 | https://bugs.webkit.org/show_bug.cgi?id=38083 | |
3629 | rdar://problem/7901044 | |
3630 | ||
3631 | Tests: fast/js/ToNumber.html | |
3632 | fast/js/parseFloat.html | |
3633 | ||
3634 | * runtime/JSGlobalObjectFunctions.cpp: | |
3635 | (JSC::parseInt): Added a FIXME comment about a problem I noticed. | |
3636 | (JSC::parseFloat): Added a FIXME comment about a problem I noticed; | |
3637 | covered by test cases in the test I added. | |
3638 | * runtime/UString.cpp: | |
3639 | (JSC::UString::toDouble): Added FIXME comments about two problems I | |
3640 | noticed; covered by test cases in the tests I added. Added a return | |
3641 | statement so we don't crash when illegal UTF-16 sequences are present. | |
3642 | ||
3643 | 2010-04-24 Anton Muhin <antonm@chromium.org> | |
3644 | ||
3645 | Reviewed by Darin Adler. | |
3646 | ||
3647 | Allow to construct HashTraits<WebCore::QualifiedName>::constructDeletedValue | |
3648 | ||
3649 | Former implementation attempted to use AtomicString(HashTableDeletedValue) | |
3650 | however those values cannot be used that way: one cannot construct | |
3651 | QualifiedNameImpl out of such AtomicString as we'll try to lookup this string | |
3652 | in the table, for example. | |
3653 | https://bugs.webkit.org/show_bug.cgi?id=37722 | |
3654 | ||
3655 | * wtf/RefPtr.h: expose hash table deleted value | |
3656 | ||
3657 | 2010-04-23 Sam Weinig <sam@webkit.org> | |
3658 | ||
3659 | Reviewed by David Levin. | |
3660 | ||
3661 | Fix for https://bugs.webkit.org/show_bug.cgi?id=38060 | |
3662 | Split up Threading.h | |
3663 | ||
3664 | Move bits for of Threading.h into 3 new files. | |
3665 | - Atomics.h for atomic operations. | |
3666 | - ThreadSafeShared.h for the ThreadSafeShared class. | |
3667 | - ThreadingPrimitives.h for the primitives and platform types. | |
3668 | ||
3669 | Basic threading operations (creation, etc.) remain in Threading.h. | |
3670 | ||
3671 | * GNUmakefile.am: | |
3672 | * JavaScriptCore.gypi: | |
3673 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
3674 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
3675 | * wtf/Atomics.h: Copied from wtf/Threading.h. | |
3676 | * wtf/ThreadSafeShared.h: Copied from wtf/Threading.h. | |
3677 | * wtf/Threading.h: | |
3678 | * wtf/ThreadingPrimitives.h: Copied from wtf/Threading.h. | |
3679 | ||
3680 | 2010-04-23 Sam Weinig <sam@webkit.org> | |
3681 | ||
3682 | Fix Qt build. | |
3683 | ||
3684 | * wtf/qt/MainThreadQt.cpp: #include <QThread> | |
3685 | ||
3686 | 2010-04-22 Sam Weinig <sam@webkit.org> | |
3687 | ||
3688 | Reviewed by Anders Carlsson. | |
3689 | ||
3690 | Fix for https://bugs.webkit.org/show_bug.cgi?id=38022 | |
3691 | Move isMainThread predicate function to MainThread.h | |
3692 | ||
3693 | * wtf/MainThread.cpp: | |
3694 | (WTF::initializeMainThread): | |
3695 | (WTF::isMainThread): | |
3696 | * wtf/MainThread.h: | |
3697 | * wtf/Threading.h: | |
3698 | * wtf/ThreadingPthreads.cpp: | |
3699 | (WTF::initializeThreading): | |
3700 | * wtf/ThreadingWin.cpp: | |
3701 | (WTF::initializeThreading): | |
3702 | * wtf/gtk/ThreadingGtk.cpp: | |
3703 | (WTF::initializeThreading): | |
3704 | * wtf/mac/MainThreadMac.mm: | |
3705 | (WTF::initializeMainThreadPlatform): | |
3706 | (WTF::isMainThread): | |
3707 | * wtf/qt/MainThreadQt.cpp: | |
3708 | (WTF::isMainThread): | |
3709 | * wtf/qt/ThreadingQt.cpp: | |
3710 | (WTF::initializeThreading): | |
3711 | * wtf/text/AtomicString.cpp: | |
3712 | ||
3713 | 2010-04-23 Gabor Rapcsanyi <rgabor@inf.u-szeged.hu> | |
3714 | ||
3715 | Reviewed by Laszlo Gombos. | |
3716 | ||
3717 | Add RVCT support for Linux | |
3718 | ||
3719 | Developed in cooperation with Gabor Loki. | |
3720 | ||
3721 | * API/JSStringRef.h: | |
3722 | * jit/ExecutableAllocator.h: | |
3723 | * jit/ExecutableAllocatorPosix.cpp: | |
3724 | (JSC::ExecutableAllocator::cacheFlush): | |
3725 | * jit/JITStubs.cpp: | |
3726 | * wtf/MathExtras.h: | |
3727 | * wtf/unicode/qt4/UnicodeQt4.h: | |
3728 | ||
3729 | 2010-04-23 Patrick Gansterer <paroga@paroga.com> | |
3730 | ||
3731 | Reviewed by Laszlo Gombos. | |
3732 | ||
3733 | [WIN] Move OwnPtrWin.cpp into platform specific folder. | |
3734 | https://bugs.webkit.org/show_bug.cgi?id=38042 | |
3735 | ||
3736 | * JavaScriptCore.gypi: | |
3737 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
3738 | * wtf/OwnPtrWin.cpp: Removed. | |
3739 | * wtf/win/OwnPtrWin.cpp: Copied from JavaScriptCore/wtf/OwnPtrWin.cpp. | |
3740 | ||
3741 | 2010-04-23 Patrick Gansterer <paroga@paroga.com> | |
3742 | ||
3743 | Reviewed by Laszlo Gombos. | |
3744 | ||
3745 | [BREWMP] Move OwnPtrBrew.cpp into platform specific folder. | |
3746 | https://bugs.webkit.org/show_bug.cgi?id=38042 | |
3747 | ||
3748 | * wtf/OwnPtrBrew.cpp: Removed. | |
3749 | * wtf/brew/OwnPtrBrew.cpp: Copied from JavaScriptCore/wtf/OwnPtrBrew.cpp. | |
3750 | ||
3751 | 2010-04-22 Steve Block <steveblock@google.com> | |
3752 | ||
3753 | Reviewed by Adam Barth. | |
3754 | ||
3755 | Update Android to use isfinite, isinf, isnan and signbit from namespace std. | |
3756 | https://bugs.webkit.org/show_bug.cgi?id=37948 | |
3757 | ||
3758 | * wtf/MathExtras.h: | |
3759 | ||
3760 | 2010-04-22 Fumitoshi Ukai <ukai@chromium.org> | |
3761 | ||
3762 | Unreviewed build fix. | |
3763 | ||
3764 | * wtf/MD5.cpp: fix include path of CString.h | |
3765 | ||
3766 | 2010-04-22 Fumitoshi Ukai <ukai@chromium.org> | |
3767 | ||
3768 | Reviewed by Adam Barth. | |
3769 | ||
3770 | MD5 is required for WebSocket new protocol implementation | |
3771 | https://bugs.webkit.org/show_bug.cgi?id=37913 | |
3772 | ||
3773 | * GNUmakefile.am: | |
3774 | * JavaScriptCore.exp: | |
3775 | * JavaScriptCore.gypi: | |
3776 | * JavaScriptCore.pro: | |
3777 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
3778 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
3779 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
3780 | * wtf/MD5.cpp: Added. | |
3781 | * wtf/MD5.h: Added. | |
3782 | ||
3783 | 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
3784 | ||
3785 | Reviewed by NOBODY (build fix). | |
3786 | Errk, accidentally committed commenting out two ASSERTs! reverting. | |
3787 | ||
3788 | * runtime/Collector.cpp: | |
3789 | (JSC::Heap::protect): | |
3790 | (JSC::Heap::unprotect): | |
3791 | ||
3792 | 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
3793 | ||
3794 | Reviewed by Geoff Garen. | |
3795 | ||
3796 | https://bugs.webkit.org/show_bug.cgi?id=38006 | |
3797 | Change lifetime of JSC::IdentifierTables used by WebCores to match AtomicStringTable | |
3798 | ||
3799 | Presently JSC's IdentifierTables are owned by the JSGlobalData. For | |
3800 | JSGlobalData objects created via the API this should continue to be the case, | |
3801 | but for the JSGlobalData objects used by WebCore (the main thread's common | |
3802 | global data, and those for workers) use a IdentifierTable provided (and owned) | |
3803 | by wtfThreadData. This allow the lifetime of these IdentifierTable to match | |
3804 | those of the corresponding AtomicStringTables. | |
3805 | ||
3806 | * API/APIShims.h: | |
3807 | (JSC::APIEntryShim::APIEntryShim): | |
3808 | * API/JSContextRef.cpp: | |
3809 | (JSContextGroupCreate): | |
3810 | * runtime/Collector.cpp: | |
3811 | (JSC::Heap::protect): | |
3812 | (JSC::Heap::unprotect): | |
3813 | (JSC::Heap::markRoots): | |
3814 | * runtime/JSGlobalData.cpp: | |
3815 | (JSC::JSGlobalData::JSGlobalData): | |
3816 | (JSC::JSGlobalData::~JSGlobalData): | |
3817 | (JSC::JSGlobalData::createContextGroup): | |
3818 | (JSC::JSGlobalData::create): | |
3819 | (JSC::JSGlobalData::sharedInstance): | |
3820 | * runtime/JSGlobalData.h: | |
3821 | (JSC::JSGlobalData::): | |
3822 | (JSC::JSGlobalData::isSharedInstance): | |
3823 | * runtime/JSLock.cpp: | |
3824 | (JSC::JSLock::JSLock): | |
3825 | (JSC::JSLock::lock): | |
3826 | (JSC::JSLock::unlock): | |
3827 | (JSC::JSLock::DropAllLocks::DropAllLocks): | |
3828 | * wtf/WTFThreadData.cpp: | |
3829 | (WTF::WTFThreadData::WTFThreadData): | |
3830 | (WTF::WTFThreadData::~WTFThreadData): | |
3831 | ||
3832 | 2010-04-22 Sheriff Bot <webkit.review.bot@gmail.com> | |
3833 | ||
3834 | Unreviewed, rolling out r58110. | |
3835 | http://trac.webkit.org/changeset/58110 | |
3836 | https://bugs.webkit.org/show_bug.cgi?id=38007 | |
3837 | ||
3838 | Caused an internal compiler error on Qt (Requested by abarth | |
3839 | on #webkit). | |
3840 | ||
3841 | * wtf/MathExtras.h: | |
3842 | ||
3843 | 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
3844 | ||
3845 | Reviewed by NOBODY (windows build fix). | |
3846 | ||
3847 | * API/JSWeakObjectMapRefPrivate.cpp: | |
3848 | ||
3849 | 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
3850 | ||
3851 | Reviewed by NOBODY (windows build fix). | |
3852 | ||
3853 | * API/JSBase.cpp: | |
3854 | * API/JSCallbackObject.cpp: | |
3855 | ||
3856 | 2010-04-22 Gavin Barraclough <barraclough@apple.com> | |
3857 | ||
3858 | Reviewed by Geoff Garen. | |
3859 | ||
3860 | https://bugs.webkit.org/show_bug.cgi?id=37978 | |
3861 | Unify JSC::IdentifierTable and WebCore::AtomicStringTable implementations. | |
3862 | ||
3863 | These two classes both implement a HashSet of uniqued StringImpls, with | |
3864 | translator classes to avoid unnecessary object creation. The only difference | |
3865 | between the classes is which flag (isIdentifier or inTable) is set. | |
3866 | Combine the two classes using a template predicated on which flag to use. | |
3867 | ||
3868 | New class AtomicStringTable created, containing all the goodness from | |
3869 | IdentifierTable & AtomicStringTable, expect for Identifier's literalTable, | |
3870 | which has been moved onto JSGlobalData. Removed duplicate string translator | |
3871 | classes. Renamed StringImpl's inTable flag to more explicit 'isAtomic', | |
3872 | and set this on the empty string (which matches Identifier behaviour, and | |
3873 | removes a redundant check for zero-length). | |
3874 | ||
3875 | * GNUmakefile.am: | |
3876 | * JavaScriptCore.gypi: | |
3877 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
3878 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
3879 | * runtime/Identifier.cpp: | |
3880 | (JSC::createLiteralTable): | |
3881 | (JSC::deleteLiteralTable): | |
3882 | (JSC::Identifier::add): | |
3883 | (JSC::Identifier::addSlowCase): | |
3884 | * runtime/Identifier.h: | |
3885 | * runtime/JSGlobalData.cpp: | |
3886 | (JSC::JSGlobalData::JSGlobalData): | |
3887 | (JSC::JSGlobalData::~JSGlobalData): | |
3888 | * runtime/JSGlobalData.h: | |
3889 | * wtf/WTFThreadData.cpp: | |
3890 | (WTF::WTFThreadData::WTFThreadData): | |
3891 | (WTF::WTFThreadData::~WTFThreadData): | |
3892 | * wtf/WTFThreadData.h: | |
3893 | (WTF::WTFThreadData::atomicStringTable): | |
3894 | * wtf/text/AtomicString.cpp: | |
3895 | (WebCore::table): | |
3896 | (WebCore::operator==): | |
3897 | (WebCore::AtomicString::add): | |
3898 | (WebCore::AtomicString::find): | |
3899 | (WebCore::AtomicString::remove): | |
3900 | * wtf/text/AtomicStringTable.h: Added. | |
3901 | (WTF::CStringTranslator::hash): | |
3902 | (WTF::CStringTranslator::equal): | |
3903 | (WTF::CStringTranslator::translate): | |
3904 | (WTF::UCharBufferTranslator::hash): | |
3905 | (WTF::UCharBufferTranslator::equal): | |
3906 | (WTF::UCharBufferTranslator::translate): | |
3907 | (WTF::HashAndCharactersTranslator::hash): | |
3908 | (WTF::HashAndCharactersTranslator::equal): | |
3909 | (WTF::HashAndCharactersTranslator::translate): | |
3910 | (WTF::IdentifierOrAtomicStringTable::remove): | |
3911 | (WTF::::~IdentifierOrAtomicStringTable): | |
3912 | (WTF::::add): | |
3913 | (WTF::::find): | |
3914 | * wtf/text/StringImpl.cpp: | |
3915 | (WebCore::StringImpl::~StringImpl): | |
3916 | * wtf/text/StringImpl.h: | |
3917 | (WebCore::StringImpl::isAtomic): | |
3918 | (WebCore::StringImpl::setIsAtomic): | |
3919 | (WebCore::equal): | |
3920 | * wtf/text/StringImplBase.h: | |
3921 | (WTF::StringImplBase::StringImplBase): | |
3922 | ||
3923 | 2010-04-22 Steve Block <steveblock@google.com> | |
3924 | ||
3925 | Reviewed by Adam Barth. | |
3926 | ||
3927 | Update Android to use isfinite, isinf, isnan and signbit from namespace std. | |
3928 | https://bugs.webkit.org/show_bug.cgi?id=37948 | |
3929 | ||
3930 | * wtf/MathExtras.h: | |
3931 | ||
3932 | 2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
3933 | ||
3934 | Reviewed by Kenneth Rohde Christiansen. | |
3935 | ||
3936 | [Qt] Remove dependency of JSC to QtGui | |
3937 | https://bugs.webkit.org/show_bug.cgi?id=37867 | |
3938 | ||
3939 | The patch also make sure that hal.h is in the include path on Symbian. | |
3940 | The dependency to QtGui took care of that before. | |
3941 | ||
3942 | Patch by Thiago Macieira <thiago.macieira@nokia.com> | |
3943 | and Rohan McGovern <rohan.mcgovern@nokia.com> | |
3944 | ||
3945 | * JavaScriptCore.pri: | |
3946 | * JavaScriptCore.pro: | |
3947 | ||
3948 | 2010-04-22 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
3949 | ||
3950 | Reviewed by Tor Arne Vestbø. | |
3951 | ||
3952 | [Qt] Corrects symbols visibility for JavaScriptCore. | |
3953 | ||
3954 | https://bugs.webkit.org/show_bug.cgi?id=37867 | |
3955 | ||
3956 | * JavaScriptCore.pro: | |
3957 | ||
3958 | 2010-04-22 Gabor Loki <loki@webkit.org> | |
3959 | ||
3960 | Reviewed by Gavin Barraclough. | |
3961 | ||
3962 | Use BLX and BX to keep happy the return stack predictor above ARMv4 | |
3963 | https://bugs.webkit.org/show_bug.cgi?id=37862 | |
3964 | ||
3965 | Inspired by Jacob Bramley's patch from JaegerMonkey | |
3966 | ||
3967 | * assembler/ARMAssembler.cpp: | |
3968 | (JSC::ARMAssembler::executableCopy): | |
3969 | * assembler/ARMAssembler.h: | |
3970 | (JSC::ARMAssembler::): | |
3971 | (JSC::ARMAssembler::bx): | |
3972 | (JSC::ARMAssembler::blx): | |
3973 | (JSC::ARMAssembler::loadBranchTarget): | |
3974 | (JSC::ARMAssembler::jmp): | |
3975 | (JSC::ARMAssembler::getLdrImmAddress): | |
3976 | * assembler/MacroAssemblerARM.h: | |
3977 | (JSC::MacroAssemblerARM::jump): | |
3978 | (JSC::MacroAssemblerARM::nearCall): | |
3979 | (JSC::MacroAssemblerARM::call): | |
3980 | (JSC::MacroAssemblerARM::ret): | |
3981 | (JSC::MacroAssemblerARM::prepareCall): | |
3982 | (JSC::MacroAssemblerARM::call32): | |
3983 | ||
3984 | 2010-04-21 Andy Estes <aestes@apple.com> | |
3985 | ||
3986 | Rubber stamped by Mark Rowe. | |
3987 | ||
3988 | Export WTF::deleteOwnedPtr(HFONT). | |
3989 | ||
3990 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
3991 | ||
3992 | 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
3993 | ||
3994 | Rubber Stamped by Oliver Hunt. | |
3995 | ||
3996 | Make SmallStrings store an array of RefPtr<StringImpl>, | |
3997 | instead of a direct array of StringImpls. This allows | |
3998 | us to remove a friend (and a layering violation) from | |
3999 | WTF::StringImpl, and makes it so that all StringImpls | |
4000 | are individually heap allocated. | |
4001 | ||
4002 | * runtime/SmallStrings.cpp: | |
4003 | (JSC::SmallStringsStorage::rep): | |
4004 | (JSC::SmallStringsStorage::SmallStringsStorage): | |
4005 | * wtf/text/StringImpl.h: | |
4006 | ||
4007 | 2010-04-21 Sam Weinig <sam@webkit.org> | |
4008 | ||
4009 | Reviewed by Geoffrey Garen. | |
4010 | ||
4011 | Fix for https://bugs.webkit.org/show_bug.cgi?id=37937 | |
4012 | Wean JavaScriptCore off calls to isMainThread() | |
4013 | ||
4014 | - Replace use of isMainThread() for interpreter reentry checks | |
4015 | with a stored value on the JSGlobalData. | |
4016 | - Replace use of isMainThread() for useMainThread only check in the | |
4017 | collector with a stored exclusive thread. | |
4018 | ||
4019 | * API/JSContextRef.cpp: | |
4020 | (JSContextGroupCreate): | |
4021 | Always default to a small stack type for uses of the JSC API. It is | |
4022 | unlikely that the interpreter reentry required on the web will be as | |
4023 | important for other uses of JavaScriptCore. | |
4024 | ||
4025 | * JavaScriptCore.exp: | |
4026 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
4027 | Update exports. | |
4028 | ||
4029 | * interpreter/Interpreter.cpp: | |
4030 | (JSC::Interpreter::execute): | |
4031 | (JSC::Interpreter::prepareForRepeatCall): | |
4032 | Use new stored JSGlobalData::maxReentryDepth instead of isMainThread(). | |
4033 | ||
4034 | * interpreter/Interpreter.h: | |
4035 | Rename MaxMainThreadReentryDepth to MaxLargeThreadReentryDepth and | |
4036 | MaxSecondaryThreadReentryDepth to MaxSmallThreadReentryDepth. | |
4037 | ||
4038 | * jsc.cpp: | |
4039 | (main): Use the a large stack for jsc since it is always using the | |
4040 | main thread. | |
4041 | ||
4042 | * runtime/ArrayPrototype.cpp: | |
4043 | (JSC::arrayProtoFuncToString): | |
4044 | (JSC::arrayProtoFuncToLocaleString): | |
4045 | (JSC::arrayProtoFuncJoin): | |
4046 | Use new stored JSGlobalData::maxReentryDepth instead of isMainThread(). | |
4047 | ||
4048 | * runtime/Collector.cpp: | |
4049 | (JSC::Heap::registerThread): | |
4050 | Use the concept of making JSC run on an exclusiveThread instead of | |
4051 | forcing a mainThreadOnly assertion. | |
4052 | ||
4053 | * runtime/JSGlobalData.cpp: | |
4054 | (JSC::JSGlobalData::JSGlobalData): | |
4055 | (JSC::JSGlobalData::createNonDefault): | |
4056 | (JSC::JSGlobalData::create): | |
4057 | (JSC::JSGlobalData::createLeaked): | |
4058 | (JSC::JSGlobalData::sharedInstance): | |
4059 | * runtime/JSGlobalData.h: | |
4060 | Add ThreadStackType argument to JSGlobalData constructors and set | |
4061 | maxReentryDepth based on it. | |
4062 | ||
4063 | 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
4064 | ||
4065 | Reviewed by NOBODY (windows build fix pt. 3). | |
4066 | ||
4067 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
4068 | ||
4069 | 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
4070 | ||
4071 | Reviewed by NOBODY (windows build fix pt. 2). | |
4072 | ||
4073 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
4074 | ||
4075 | 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
4076 | ||
4077 | Reviewed by NOBODY (Qt build fix). | |
4078 | ||
4079 | * JavaScriptCore.gypi: | |
4080 | * JavaScriptCore.pro: | |
4081 | * wtf/qt/StringQt.cpp: Copied from WebCore/platform/text/qt/StringQt.cpp. | |
4082 | ||
4083 | 2010-04-21 Gavin Barraclough <barraclough@apple.com> | |
4084 | ||
4085 | Reviewed by NOBODY (windows build fix). | |
4086 | ||
4087 | * API/JSValueRef.cpp: | |
4088 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
4089 | * runtime/Identifier.cpp: | |
4090 | (JSC::IdentifierTable::~IdentifierTable): | |
4091 | (JSC::IdentifierTable::add): | |
4092 | * runtime/Identifier.h: | |
4093 | * wtf/WTFThreadData.h: | |
4094 | (JSC::IdentifierTable::remove): | |
4095 | (JSC::IdentifierTable::literalTable): | |
4096 | * wtf/text/StringImpl.cpp: | |
4097 | (WebCore::StringImpl::~StringImpl): | |
4098 | ||
4099 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4100 | ||
4101 | Reviewed by Oliver Hunt, Darin Adler. | |
4102 | ||
4103 | Bug 37906 - Remove JSC::UStringImpl; unify with StringImpl. | |
4104 | ||
4105 | JSC::UStringImpl and WebCore::StringImpl (soon to be renamed to | |
4106 | WTF::StringImpl) are almost identical. Remove duplication of code by unifying | |
4107 | the two, move missing features from UStringImpl into StringImpl & delete the | |
4108 | class UStringImpl. | |
4109 | ||
4110 | * API/JSClassRef.cpp: | |
4111 | * API/JSContextRef.cpp: | |
4112 | * GNUmakefile.am: | |
4113 | * JavaScriptCore.exp: | |
4114 | * JavaScriptCore.pro: | |
4115 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4116 | * bytecode/EvalCodeCache.h: | |
4117 | * bytecode/JumpTable.cpp: | |
4118 | * profiler/ProfileNode.cpp: | |
4119 | * runtime/Identifier.cpp: | |
4120 | (JSC::Identifier::add): | |
4121 | * runtime/Identifier.h: | |
4122 | (JSC::Identifier::equal): | |
4123 | * runtime/UString.cpp: | |
4124 | * runtime/UString.h: | |
4125 | (WTF::): | |
4126 | * runtime/UStringImpl.cpp: Removed. | |
4127 | * runtime/UStringImpl.h: | |
4128 | * wtf/text/StringHash.h: | |
4129 | (WebCore::StringHash::equal): | |
4130 | (WebCore::CaseFoldingHash::equal): | |
4131 | * wtf/text/StringImpl.cpp: | |
4132 | (WebCore::StringImpl::~StringImpl): | |
4133 | (WebCore::StringImpl::empty): | |
4134 | (WebCore::StringImpl::sharedBuffer): | |
4135 | (WebCore::equal): | |
4136 | * wtf/text/StringImpl.h: | |
4137 | (WebCore::StringImpl::StringImpl): | |
4138 | (WebCore::StringImpl::create): | |
4139 | (WebCore::StringImpl::tryCreateUninitialized): | |
4140 | (WebCore::StringImpl::cost): | |
4141 | (WebCore::StringImpl::isIdentifier): | |
4142 | (WebCore::StringImpl::setIsIdentifier): | |
4143 | (WebCore::StringImpl::computeHash): | |
4144 | (WebCore::StringImpl::copyChars): | |
4145 | (WebCore::StringImpl::): | |
4146 | ||
4147 | 2010-04-21 Patrick Gansterer <paroga@paroga.com> | |
4148 | ||
4149 | Reviewed by Darin Adler. | |
4150 | ||
4151 | Added missing #include "Lookup.h" in LUT source files. | |
4152 | https://bugs.webkit.org/show_bug.cgi?id=37903 | |
4153 | ||
4154 | * runtime/ArrayPrototype.cpp: | |
4155 | * runtime/DatePrototype.cpp: | |
4156 | * runtime/JSONObject.cpp: | |
4157 | * runtime/MathObject.cpp: | |
4158 | * runtime/NumberConstructor.cpp: | |
4159 | * runtime/RegExpConstructor.cpp: | |
4160 | * runtime/RegExpObject.cpp: | |
4161 | * runtime/StringPrototype.cpp: | |
4162 | ||
4163 | 2010-04-21 Gustavo Sverzut Barbieri <barbieri@profusion.mobi> | |
4164 | ||
4165 | Reviewed by Nikolas Zimmermann. | |
4166 | ||
4167 | Add missing EFL JavaScriptCore file. | |
4168 | http://webkit.org/b/37854 | |
4169 | ||
4170 | * wtf/efl: Added. | |
4171 | * wtf/efl/MainThreadEfl.cpp: Added. | |
4172 | (WTF::initializeMainThreadPlatform): | |
4173 | (WTF::timeoutFired): | |
4174 | (WTF::scheduleDispatchFunctionsOnMainThread): | |
4175 | ||
4176 | 2010-04-20 Xan Lopez <xlopez@igalia.com> | |
4177 | ||
4178 | Another attempt to fix the build. | |
4179 | ||
4180 | * GNUmakefile.am: | |
4181 | ||
4182 | 2010-04-20 Oliver Hunt <oliver@apple.com> | |
4183 | ||
4184 | Reviewed by Maciej Stachowiak. | |
4185 | ||
4186 | [ES5] RegExp literals are constants that should be persistent across multiple function calls. | |
4187 | https://bugs.webkit.org/show_bug.cgi?id=37908 | |
4188 | ||
4189 | Dump the separate RegExp constant pool, and just use the standard JS constant pool | |
4190 | in codeblock. This allows us to drop op_new_regexp and all associated code as well. | |
4191 | ||
4192 | * bytecode/CodeBlock.cpp: | |
4193 | (JSC::CodeBlock::dump): | |
4194 | (JSC::CodeBlock::shrinkToFit): | |
4195 | * bytecode/CodeBlock.h: | |
4196 | * bytecode/Opcode.h: | |
4197 | * bytecompiler/BytecodeGenerator.cpp: | |
4198 | (JSC::BytecodeGenerator::emitLoad): | |
4199 | * bytecompiler/BytecodeGenerator.h: | |
4200 | * bytecompiler/NodesCodegen.cpp: | |
4201 | (JSC::RegExpNode::emitBytecode): | |
4202 | * interpreter/Interpreter.cpp: | |
4203 | (JSC::Interpreter::privateExecute): | |
4204 | * jit/JIT.cpp: | |
4205 | (JSC::JIT::privateCompileMainPass): | |
4206 | * jit/JIT.h: | |
4207 | * jit/JITOpcodes.cpp: | |
4208 | * jit/JITStubs.cpp: | |
4209 | * jit/JITStubs.h: | |
4210 | (JSC::): | |
4211 | ||
4212 | 2010-04-20 Oliver Hunt <oliver@apple.com> | |
4213 | ||
4214 | Fix license on create_regex_tables | |
4215 | ||
4216 | * create_regex_tables: | |
4217 | ||
4218 | 2010-04-20 Oliver Hunt <oliver@apple.com> | |
4219 | ||
4220 | Reviewed by NOBODY (Build fix). | |
4221 | ||
4222 | Fix gtk | |
4223 | ||
4224 | * GNUmakefile.am: | |
4225 | * make-generated-sources.sh: | |
4226 | ||
4227 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4228 | ||
4229 | Reviewed by Oliver Hunt. | |
4230 | ||
4231 | Bug 37895 - Share common code from UStringImplBase with StringImpl | |
4232 | ||
4233 | The implementation of StringImpl & UStringImpl is very similar. Restructure | |
4234 | StringImpl to match UStringImpl, moving the flags and length into a base class, | |
4235 | so that this can be shared between both string types to increase code reuse. | |
4236 | ||
4237 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4238 | * runtime/RopeImpl.h: | |
4239 | (JSC::RopeImpl::RopeImpl): | |
4240 | * runtime/UStringImpl.h: | |
4241 | (JSC::UStringImpl::UStringImpl): | |
4242 | * wtf/text/StringImpl.h: | |
4243 | (WebCore::StringImpl::StringImpl): | |
4244 | (WebCore::StringImpl::characters): | |
4245 | * wtf/text/StringImplBase.h: Copied from JavaScriptCore/runtime/UStringImpl.h. | |
4246 | (WTF::StringImplBase::length): | |
4247 | (WTF::StringImplBase::operator new): | |
4248 | (WTF::StringImplBase::StringImplBase): | |
4249 | ||
4250 | 2010-04-20 Oliver Hunt <oliver@apple.com> | |
4251 | ||
4252 | Reviewed by Gavin Barraclough. | |
4253 | ||
4254 | Autogenerate yarr character tables | |
4255 | https://bugs.webkit.org/show_bug.cgi?id=37877 | |
4256 | ||
4257 | Use a python script to automatically generate character tables | |
4258 | for the builtin YARR character classes. This allows us to generate | |
4259 | actual tables as well, by using these tables we can both increase | |
4260 | performance of the check (for complex builtins) and reduce the actual | |
4261 | code size. | |
4262 | ||
4263 | 4-8% win on string-unpack-code, but lots of noise on other tests so | |
4264 | i'm only confident saying its a 1% win overall. | |
4265 | ||
4266 | * DerivedSources.make: | |
4267 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4268 | * assembler/AbstractMacroAssembler.h: | |
4269 | (JSC::AbstractMacroAssembler::ExtendedAddress::ExtendedAddress): | |
4270 | * assembler/MacroAssembler.h: | |
4271 | (JSC::MacroAssembler::branchTest8): | |
4272 | * assembler/MacroAssemblerX86Common.h: | |
4273 | (JSC::MacroAssemblerX86Common::branchTest8): | |
4274 | * assembler/MacroAssemblerX86_64.h: | |
4275 | (JSC::MacroAssemblerX86_64::branchTest8): | |
4276 | * assembler/X86Assembler.h: | |
4277 | (JSC::X86Assembler::cmpb_im): | |
4278 | (JSC::X86Assembler::testb_im): | |
4279 | * bytecode/SamplingTool.cpp: | |
4280 | (JSC::SamplingTool::dump): | |
4281 | * create_regex_tables: Added. | |
4282 | * yarr/RegexCompiler.cpp: | |
4283 | (JSC::Yarr::CharacterClassConstructor::charClass): | |
4284 | * yarr/RegexJIT.cpp: | |
4285 | (JSC::Yarr::RegexGenerator::matchCharacterClass): | |
4286 | (JSC::Yarr::RegexGenerator::generatePatternCharacterGreedy): | |
4287 | (JSC::Yarr::RegexGenerator::generatePatternCharacterNonGreedy): | |
4288 | (JSC::Yarr::RegexGenerator::generateCharacterClassGreedy): | |
4289 | * yarr/RegexPattern.h: | |
4290 | (JSC::Yarr::CharacterClassTable::create): | |
4291 | (JSC::Yarr::CharacterClassTable::CharacterClassTable): | |
4292 | (JSC::Yarr::CharacterClass::CharacterClass): | |
4293 | ||
4294 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4295 | ||
4296 | Reviewed by NOBODY (speculative windows fix - missed a bit!). | |
4297 | ||
4298 | * wtf/text/AtomicString.h: | |
4299 | ||
4300 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4301 | ||
4302 | Reviewed by NOBODY (speculative windows fix). | |
4303 | ||
4304 | * wtf/text/AtomicString.h: | |
4305 | ||
4306 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4307 | ||
4308 | Reviewed by NOBODY (windows build fix). | |
4309 | ||
4310 | Add missing .def file entries. | |
4311 | ||
4312 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
4313 | ||
4314 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4315 | ||
4316 | Reviewed by Geoff Garen. | |
4317 | ||
4318 | Bug 37869 - Move URopeImpl to its own .h/.cpp | |
4319 | ||
4320 | Currently Ropes are implemented by the class URopeImpl, which is defined in | |
4321 | UStringImpl.h, and then typedefed to the name JSString::Rope. Remove the | |
4322 | typedef, and rename all uses of URopeImpl and JSString::Rope to just RopeImpl. | |
4323 | ||
4324 | Move RopeImpl to its own header, and remove all remaining references to ropes | |
4325 | from UStringImpl (rename UStringOrRopeImpl to UStringImplBase, rename or move | |
4326 | the isRope & deref methods from UStringOrRopeImpl). | |
4327 | ||
4328 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4329 | * runtime/JSString.cpp: | |
4330 | (JSC::JSString::resolveRope): | |
4331 | * runtime/JSString.h: | |
4332 | (JSC::): | |
4333 | (JSC::RopeBuilder::JSString): | |
4334 | (JSC::RopeBuilder::~JSString): | |
4335 | (JSC::RopeBuilder::appendStringInConstruct): | |
4336 | (JSC::RopeBuilder::JSStringFinalizerStruct::): | |
4337 | * runtime/RopeImpl.cpp: Copied from JavaScriptCore/runtime/UStringImpl.cpp. | |
4338 | (JSC::RopeImpl::derefFibersNonRecursive): | |
4339 | (JSC::RopeImpl::destructNonRecursive): | |
4340 | * runtime/RopeImpl.h: Copied from JavaScriptCore/runtime/UStringImpl.h. | |
4341 | (JSC::RopeImpl::tryCreateUninitialized): | |
4342 | (JSC::RopeImpl::isRope): | |
4343 | (JSC::RopeImpl::deref): | |
4344 | (JSC::RopeImpl::RopeImpl): | |
4345 | * runtime/UStringImpl.cpp: | |
4346 | * runtime/UStringImpl.h: | |
4347 | (JSC::UStringImplBase::isInvalid): | |
4348 | (JSC::UStringImplBase::ref): | |
4349 | (JSC::UStringImplBase::UStringImplBase): | |
4350 | (JSC::UStringImplBase::): | |
4351 | (JSC::UStringImpl::UStringImpl): | |
4352 | ||
4353 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4354 | ||
4355 | Reviewed by Geoff Garen. | |
4356 | ||
4357 | Bug 37828 - Move WebCore's String classes to WTF | |
4358 | ||
4359 | Move these classes up to WTF so they are available to all clients of WTF (in | |
4360 | particular JSC). | |
4361 | ||
4362 | As a first patch, making the most minimal change possible, since this patch | |
4363 | could easily grow rather large since we'll have to change every class forward | |
4364 | declaration ( e.g. every "namespace WebCore { class String; }" much change to | |
4365 | "namespace WTF { class String; }"). | |
4366 | ||
4367 | Moving the files, but leaving the classes logically in the WebCore namespace - | |
4368 | which is technically a layering violation - I'll come back and fix this up in a | |
4369 | subsequent patch. | |
4370 | ||
4371 | * Android.mk: | |
4372 | * Android.v8.wtf.mk: | |
4373 | * GNUmakefile.am: | |
4374 | * JavaScriptCore.exp: | |
4375 | * JavaScriptCore.gypi: | |
4376 | * JavaScriptCore.pro: | |
4377 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
4378 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4379 | * config.h: | |
4380 | * wtf/StaticConstructors.h: Copied from WebCore/platform/StaticConstructors.h. | |
4381 | * wtf/text/AtomicString.cpp: Copied from WebCore/platform/text/AtomicString.cpp. | |
4382 | * wtf/text/AtomicString.h: Copied from WebCore/platform/text/AtomicString.h. | |
4383 | * wtf/text/AtomicStringImpl.h: Copied from WebCore/platform/text/AtomicStringImpl.h. | |
4384 | * wtf/text/StringBuffer.h: Copied from WebCore/platform/text/StringBuffer.h. | |
4385 | * wtf/text/StringHash.h: Copied from WebCore/platform/text/StringHash.h. | |
4386 | * wtf/text/StringImpl.cpp: Copied from WebCore/platform/text/StringImpl.cpp. | |
4387 | * wtf/text/StringImpl.h: Copied from WebCore/platform/text/StringImpl.h. | |
4388 | * wtf/text/WTFString.cpp: Copied from WebCore/platform/text/String.cpp. | |
4389 | (WebCore::charactersToFloat): | |
4390 | * wtf/text/WTFString.h: Copied from WebCore/platform/text/PlatformString.h. | |
4391 | ||
4392 | 2010-04-20 Csaba Osztrogonác <ossy@webkit.org> | |
4393 | ||
4394 | [Qt] Unreviewed speculative buildfix for WinCE after r57882 | |
4395 | https://bugs.webkit.org/show_bug.cgi?id=37701 | |
4396 | ||
4397 | * JavaScriptCore.pri: missing wince* case added. | |
4398 | ||
4399 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4400 | ||
4401 | Reviewed by NOBODY (build fix). | |
4402 | Speculative Chromium/Win build fix, attempt #2. | |
4403 | ||
4404 | * config.h: | |
4405 | ||
4406 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4407 | ||
4408 | Reviewed by NOBODY (build fix). | |
4409 | Speculative Chromium/Win build fix. | |
4410 | ||
4411 | * config.h: JS_EXPORTDATA should do nothing on !JSC builds. | |
4412 | ||
4413 | 2010-04-20 Csaba Osztrogonác <ossy@webkit.org> | |
4414 | ||
4415 | Reviewed by Simon Hausmann. | |
4416 | ||
4417 | [Qt] Target(WebCore,jsc,...) must depends on static library of JavaScriptCore | |
4418 | https://bugs.webkit.org/show_bug.cgi?id=37701 | |
4419 | ||
4420 | * JavaScriptCore.pri: dependency added. | |
4421 | ||
4422 | 2010-04-20 Gavin Barraclough <barraclough@apple.com> | |
4423 | ||
4424 | Rubber stamped by Maciej Stachowiak (relanding r57829). | |
4425 | Added missing JS_EXPORTDATA | |
4426 | ||
4427 | * API/APIShims.h: | |
4428 | (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
4429 | (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
4430 | (JSC::APICallbackShim::APICallbackShim): | |
4431 | (JSC::APICallbackShim::~APICallbackShim): | |
4432 | * API/JSContextRef.cpp: | |
4433 | * Android.mk: | |
4434 | * Android.v8.wtf.mk: | |
4435 | * GNUmakefile.am: | |
4436 | * JavaScriptCore.exp: | |
4437 | * JavaScriptCore.gypi: | |
4438 | * JavaScriptCore.pro: | |
4439 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
4440 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
4441 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4442 | * runtime/Completion.cpp: | |
4443 | (JSC::checkSyntax): | |
4444 | (JSC::evaluate): | |
4445 | * runtime/Identifier.cpp: | |
4446 | (JSC::Identifier::remove): | |
4447 | (JSC::Identifier::checkCurrentIdentifierTable): | |
4448 | * runtime/Identifier.h: | |
4449 | * runtime/InitializeThreading.cpp: | |
4450 | (JSC::initializeThreadingOnce): | |
4451 | * runtime/JSGlobalData.cpp: | |
4452 | (JSC::JSGlobalData::create): | |
4453 | * wtf/WTFThreadData.cpp: Copied from JavaScriptCore/wtf/WTFThreadData.cpp. | |
4454 | * wtf/WTFThreadData.h: Copied from JavaScriptCore/wtf/WTFThreadData.h. | |
4455 | ||
4456 | 2010-04-19 Gavin Barraclough <barraclough@apple.com> | |
4457 | ||
4458 | Reviewed by NOBODY (rolling out r57829). | |
4459 | This broke windows. | |
4460 | ||
4461 | * API/APIShims.h: | |
4462 | (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
4463 | (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
4464 | (JSC::APICallbackShim::APICallbackShim): | |
4465 | (JSC::APICallbackShim::~APICallbackShim): | |
4466 | * API/JSContextRef.cpp: | |
4467 | * Android.mk: | |
4468 | * Android.v8.wtf.mk: | |
4469 | * GNUmakefile.am: | |
4470 | * JavaScriptCore.exp: | |
4471 | * JavaScriptCore.gypi: | |
4472 | * JavaScriptCore.pro: | |
4473 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
4474 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
4475 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4476 | * runtime/Completion.cpp: | |
4477 | (JSC::checkSyntax): | |
4478 | (JSC::evaluate): | |
4479 | * runtime/Identifier.cpp: | |
4480 | (JSC::Identifier::remove): | |
4481 | (JSC::Identifier::checkCurrentIdentifierTable): | |
4482 | (JSC::createIdentifierTableSpecificCallback): | |
4483 | (JSC::createIdentifierTableSpecific): | |
4484 | * runtime/Identifier.h: | |
4485 | (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData): | |
4486 | (JSC::defaultIdentifierTable): | |
4487 | (JSC::setDefaultIdentifierTable): | |
4488 | (JSC::currentIdentifierTable): | |
4489 | (JSC::setCurrentIdentifierTable): | |
4490 | (JSC::resetCurrentIdentifierTable): | |
4491 | * runtime/InitializeThreading.cpp: | |
4492 | (JSC::initializeThreadingOnce): | |
4493 | * runtime/JSGlobalData.cpp: | |
4494 | (JSC::JSGlobalData::create): | |
4495 | * wtf/WTFThreadData.cpp: Removed. | |
4496 | * wtf/WTFThreadData.h: Removed. | |
4497 | ||
4498 | 2010-04-19 Douglas Gregor <dgregor@apple.com> | |
4499 | ||
4500 | Reviewed and landed by Anders Carlsson. | |
4501 | ||
4502 | * runtime/UStringImpl.h: | |
4503 | Fix class/struct declaration mismatches. | |
4504 | ||
4505 | 2010-04-19 Geoffrey Garen <ggaren@apple.com> | |
4506 | ||
4507 | Reviewed by Beth Dakin. | |
4508 | ||
4509 | Checked in these tests I wrote becuase Balazs Kelemen wanted to use them. | |
4510 | ||
4511 | * tests/perf: Added. | |
4512 | * tests/perf/bench-allocate-nonretained.js: Added. | |
4513 | * tests/perf/bench-allocate-retained.js: Added. | |
4514 | ||
4515 | 2010-04-19 Gavin Barraclough <barraclough@apple.com> | |
4516 | ||
4517 | Reviewed by NOBODY (windows build fix). | |
4518 | ||
4519 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
4520 | ||
4521 | 2010-04-16 Gavin Barraclough <barraclough@apple.com> | |
4522 | ||
4523 | Reviewed by Sam Weinig. | |
4524 | ||
4525 | https://bugs.webkit.org/show_bug.cgi?id=37745 | |
4526 | Move string uniquing tables to (new) WTFThreadData class. | |
4527 | ||
4528 | Remove AtomicString's dependency on ThreadGlobalData so that we can move | |
4529 | WebCore's string classes up to WTF. | |
4530 | ||
4531 | WTFThreadData.cpp/.h are based on ThreadGlobalData from WebCore. | |
4532 | Moved JSC & WebCore's string uniquing tables to this class. | |
4533 | ||
4534 | This patch introduces a temporary layering violation in providing forward | |
4535 | declarations of classes from JSC and WTF; this will be resolved as we move | |
4536 | more string code up to WTF. | |
4537 | ||
4538 | * API/APIShims.h: | |
4539 | (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
4540 | (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
4541 | (JSC::APICallbackShim::APICallbackShim): | |
4542 | (JSC::APICallbackShim::~APICallbackShim): | |
4543 | * API/JSContextRef.cpp: | |
4544 | * JavaScriptCore.exp: | |
4545 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4546 | * runtime/Completion.cpp: | |
4547 | (JSC::checkSyntax): | |
4548 | (JSC::evaluate): | |
4549 | * runtime/Identifier.cpp: | |
4550 | (JSC::Identifier::remove): | |
4551 | (JSC::Identifier::checkCurrentIdentifierTable): | |
4552 | * runtime/Identifier.h: | |
4553 | * runtime/InitializeThreading.cpp: | |
4554 | (JSC::initializeThreadingOnce): | |
4555 | * runtime/JSGlobalData.cpp: | |
4556 | (JSC::JSGlobalData::create): | |
4557 | * wtf/WTFThreadData.cpp: Copied from WebCore/platform/ThreadGlobalData.cpp. | |
4558 | (WTF::WTFThreadData::WTFThreadData): | |
4559 | (WTF::WTFThreadData::~WTFThreadData): | |
4560 | * wtf/WTFThreadData.h: Copied from WebCore/platform/ThreadGlobalData.h. | |
4561 | (WTF::WTFThreadData::atomicStringTable): | |
4562 | (WTF::WTFThreadData::initializeIdentifierTable): | |
4563 | (WTF::WTFThreadData::currentIdentifierTable): | |
4564 | (WTF::WTFThreadData::setCurrentIdentifierTable): | |
4565 | (WTF::WTFThreadData::resetCurrentIdentifierTable): | |
4566 | (WTF::wtfThreadData): | |
4567 | ||
4568 | 2010-04-19 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
4569 | ||
4570 | Reviewed by Simon Hausmann. | |
4571 | ||
4572 | [Qt] Build fix for WinCE. | |
4573 | ||
4574 | Moved the include of the non-existing errno.h header file inside | |
4575 | platform guard macros. | |
4576 | ||
4577 | * jit/ExecutableAllocatorFixedVMPool.cpp: | |
4578 | ||
4579 | 2010-04-18 Kwang Yul Seo <skyul@company100.net> | |
4580 | ||
4581 | Reviewed by Laszlo Gombos. | |
4582 | ||
4583 | [WINCE] Don't define WTF_CPU_MIDDLE_ENDIAN=1 | |
4584 | https://bugs.webkit.org/show_bug.cgi?id=37434 | |
4585 | ||
4586 | Windows CE supports little-endian format only, so don't define | |
4587 | WTF_CPU_MIDDLE_ENDIAN=1. | |
4588 | ||
4589 | * wtf/Platform.h: | |
4590 | ||
4591 | 2010-04-18 Simon Hausmann <simon.hausmann@nokia.com> | |
4592 | ||
4593 | Reviewed by Laszlo Gombos. | |
4594 | ||
4595 | [Qt] Fix JavaScriptCore's include path for WinCE builds | |
4596 | ||
4597 | https://bugs.webkit.org/show_bug.cgi?id=36751 | |
4598 | ||
4599 | * JavaScriptCore.pri: | |
4600 | ||
4601 | 2010-04-16 Gavin Barraclough <barraclough@apple.com> | |
4602 | ||
4603 | Reviewed by nobody, build fix. | |
4604 | ||
4605 | 2010-04-16 Gavin Barraclough <barraclough@apple.com> | |
4606 | ||
4607 | Reviewed by nobody, build fix. | |
4608 | ||
4609 | 2010-04-16 Gavin Barraclough <barraclough@apple.com> | |
4610 | ||
4611 | Reviewed by Oliver Hunt. | |
4612 | ||
4613 | Bug 37730 - Remove JSC::UString dependencies from WebCore::StringImpl | |
4614 | (Following on from bug #37675). | |
4615 | ||
4616 | Make the argument ordering for UStringImpl's constructor & create | |
4617 | methods match, when passed a shared buffer. | |
4618 | ||
4619 | * JavaScriptCore.exp: | |
4620 | * runtime/UStringImpl.cpp: | |
4621 | (JSC::UStringImpl::create): | |
4622 | * runtime/UStringImpl.h: | |
4623 | ||
4624 | 2010-04-15 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
4625 | ||
4626 | Reviewed by Kenneth Rohde Christiansen. | |
4627 | ||
4628 | Fix memory leak in QScriptEngine::evaluate(). | |
4629 | ||
4630 | QScriptEnginePrivate::evaluate should release temporary variables. | |
4631 | ||
4632 | [Qt] QScriptEngine::evaluate has memory leak. | |
4633 | https://bugs.webkit.org/show_bug.cgi?id=37596 | |
4634 | ||
4635 | * qt/api/qscriptengine_p.cpp: | |
4636 | (QScriptEnginePrivate::evaluate): | |
4637 | * qt/api/qscriptengine_p.h: | |
4638 | ||
4639 | 2010-04-14 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
4640 | ||
4641 | Reviewed by Kenneth Rohde Christiansen. | |
4642 | ||
4643 | Fix a memory leak in QScriptValue::inherits. | |
4644 | ||
4645 | [Qt] QScriptValue::inherits has a memory leak. | |
4646 | https://bugs.webkit.org/show_bug.cgi?id=37617 | |
4647 | ||
4648 | * qt/api/qscriptvalue_p.h: | |
4649 | (QScriptValuePrivate::inherits): | |
4650 | ||
4651 | 2010-04-14 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
4652 | ||
4653 | Reviewed by Kenneth Rohde Christiansen. | |
4654 | ||
4655 | Fix a few memory leaks in QScriptEngine. | |
4656 | ||
4657 | Syntax checking caused memory leak, not all temporary variables were released. | |
4658 | ||
4659 | [Qt] Syntax checking in the QtScript cause a memory leak. | |
4660 | https://bugs.webkit.org/show_bug.cgi?id=37610 | |
4661 | ||
4662 | * qt/api/qscriptengine_p.cpp: | |
4663 | (QScriptEnginePrivate::checkSyntax): | |
4664 | * qt/api/qscriptsyntaxcheckresult.cpp: | |
4665 | (QScriptSyntaxCheckResultPrivate::errorMessage): | |
4666 | (QScriptSyntaxCheckResultPrivate::errorLineNumber): | |
4667 | ||
4668 | 2010-04-14 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
4669 | ||
4670 | Reviewed by Kenneth Rohde Christiansen. | |
4671 | ||
4672 | Fix memory leak inside QScriptEnginePrivate::makeJSValue. | |
4673 | ||
4674 | QScriptEnginePrivate::makeJSValue should release temporary JSStringRef variable. | |
4675 | ||
4676 | [Qt] tst_QScriptValue::toString has a memory leak. | |
4677 | https://bugs.webkit.org/show_bug.cgi?id=37598 | |
4678 | ||
4679 | * qt/api/qscriptengine_p.h: | |
4680 | (QScriptEnginePrivate::makeJSValue): | |
4681 | ||
4682 | 2010-04-14 Peter Varga <pvarga@inf.u-szeged.hu> | |
4683 | ||
4684 | Reviewed by Geoffrey Garen. | |
4685 | ||
4686 | Move the YARR JIT fallback detection from RegexJIT.cpp to | |
4687 | RegexCompiler.cpp. | |
4688 | ||
4689 | https://bugs.webkit.org/show_bug.cgi?id=37571 | |
4690 | ||
4691 | * yarr/RegexCompiler.cpp: | |
4692 | (JSC::Yarr::RegexPatternConstructor::atomBackReference): | |
4693 | (JSC::Yarr::RegexPatternConstructor::quantifyAtom): | |
4694 | * yarr/RegexJIT.cpp: | |
4695 | (JSC::Yarr::RegexGenerator::generateTerm): | |
4696 | (JSC::Yarr::RegexGenerator::RegexGenerator): | |
4697 | (JSC::Yarr::jitCompileRegex): | |
4698 | * yarr/RegexJIT.h: | |
4699 | (JSC::Yarr::RegexCodeBlock::operator!): | |
4700 | * yarr/RegexPattern.h: | |
4701 | (JSC::Yarr::RegexPattern::RegexPattern): | |
4702 | (JSC::Yarr::RegexPattern::reset): | |
4703 | ||
4704 | 2010-04-14 Kent Hansen <kent.hansen@nokia.com> | |
4705 | ||
4706 | Reviewed by Maciej Stachowiak. | |
4707 | ||
4708 | Mac OS X: Use deployment target to determine whether memory tagging should be enabled | |
4709 | https://bugs.webkit.org/show_bug.cgi?id=34888 | |
4710 | ||
4711 | When building on (Snow) Leopard but targeting Tiger | |
4712 | (TARGETING_TIGER defined, BUILDING_ON_TIGER not defined), | |
4713 | WebKit would crash on Tiger because the tags passed to mmap | |
4714 | caused those function calls to fail. | |
4715 | ||
4716 | Conversely, when building on Tiger but targeting Leopard | |
4717 | (BUILDING_ON_TIGER defined, TARGETING_LEOPARD defined), WebKit | |
4718 | would crash on Leopard because the tags passed to vm_map and | |
4719 | vm_allocate caused those function calls to fail. | |
4720 | ||
4721 | Solution: Use TARGETING_TIGER rather than BUILDING_ON_TIGER to | |
4722 | govern the tag definitions. Use the same tags for vm_map and | |
4723 | vm_allocate regardless of target, since they work on | |
4724 | both. Fall back to the mmap tags that work on Tiger (that is, | |
4725 | "no tags") if targeting Tiger, since those tags also work on | |
4726 | Leopard. | |
4727 | ||
4728 | * wtf/VMTags.h: | |
4729 | ||
4730 | 2010-04-12 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
4731 | ||
4732 | Reviewed by nobody, build fix. | |
4733 | ||
4734 | [Qt] Build fix for Mac when building with build-webkit --qt | |
4735 | ||
4736 | Specifying no configuration on Mac builds WebCore both in debug | |
4737 | and release. JavaScriptCore has to follow this rule as well. | |
4738 | ||
4739 | * JavaScriptCore.pro: | |
4740 | ||
4741 | 2010-04-11 Mark Rowe <mrowe@apple.com> | |
4742 | ||
4743 | Reviewed by Sam Weinig. | |
4744 | ||
4745 | <rdar://problem/7851332> Fix the build. | |
4746 | ||
4747 | * wtf/FastMalloc.cpp: | |
4748 | (WTF::TCMallocStats::): Initialize extra members of malloc_introspection_t to zero. | |
4749 | ||
4750 | 2010-04-09 Mikhail Naganov <mnaganov@chromium.org> | |
4751 | ||
4752 | Reviewed by Pavel Feldman. | |
4753 | ||
4754 | Make CallIdentifier constructor to handle null urls. | |
4755 | ||
4756 | https://bugs.webkit.org/show_bug.cgi?id=37341 | |
4757 | ||
4758 | * profiler/CallIdentifier.h: | |
4759 | (JSC::CallIdentifier::CallIdentifier): | |
4760 | ||
4761 | 2010-04-09 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
4762 | ||
4763 | Reviewed by Simon Hausmann. | |
4764 | ||
4765 | [Qt] Fix crashes with package builds in release | |
4766 | ||
4767 | Add NDEBUG to the defines for package build in JavaScriptCore.pri, | |
4768 | so that it's consistently used for JavaScriptCore, WebCore, jsc and all | |
4769 | other tools using wtf, etc. data structures directly. Mixing NDEBUG with | |
4770 | non-NDEBUG builds causes crashes due to differences in data structures when | |
4771 | assertions/checks are enabled. | |
4772 | ||
4773 | * JavaScriptCore.pri: | |
4774 | ||
4775 | 2010-04-09 Patrick Gansterer <paroga@paroga.com> | |
4776 | ||
4777 | Reviewed by Darin Adler. | |
4778 | ||
4779 | Implement NO_RETURN for COMPILER(MSVC). | |
4780 | https://bugs.webkit.org/show_bug.cgi?id=33056 | |
4781 | ||
4782 | Added NO_RETURN_WITH_VALUE for functions with non-void return type. | |
4783 | ||
4784 | * jsc.cpp: | |
4785 | * wtf/AlwaysInline.h: | |
4786 | * wtf/FastMalloc.cpp: | |
4787 | ||
4788 | 2010-04-08 Kwang Yul Seo <skyul@company100.net> | |
4789 | ||
4790 | Reviewed by Simon Hausmann. | |
4791 | ||
4792 | [WINCE] Check if ARM or _ARM_ is defined | |
4793 | https://bugs.webkit.org/show_bug.cgi?id=37200 | |
4794 | ||
4795 | MSVC defines ARM and _ARM_ for Windows CE ARM. Define WTF_CPU_ARM=1 | |
4796 | when either ARM or _ARM_ is defined. | |
4797 | ||
4798 | * wtf/Platform.h: | |
4799 | ||
4800 | 2010-04-08 Csaba Osztrogonác <ossy@webkit.org> | |
4801 | ||
4802 | Reviewed Oliver Hunt. | |
4803 | ||
4804 | [Qt]r57240 broke Qt build (might be a gcc bug) | |
4805 | https://bugs.webkit.org/show_bug.cgi?id=37253 | |
4806 | ||
4807 | Workaround until fix. On PLATFORM(QT) use inline instead of ALWAYS_INLINE. | |
4808 | ||
4809 | * wtf/PassRefPtr.h: Qt guards added. | |
4810 | ||
4811 | 2010-04-07 Oliver Hunt <oliver@apple.com> | |
4812 | ||
4813 | Reviewed by Anders Carlsson. | |
4814 | ||
4815 | Vector<UString> makes many needless calls to UString::UString and UString::~UString | |
4816 | ||
4817 | Add a VectorTrait<UString> specialisation to allow vector to simply memset/memcpy | |
4818 | data around. Only difference from the VectorTrait<RefPtr<T> > traits is the inability | |
4819 | to use memset to initialize data. | |
4820 | ||
4821 | * runtime/UString.h: | |
4822 | (WTF::): | |
4823 | ||
4824 | 2010-04-07 Oliver Hunt <oliver@apple.com> | |
4825 | ||
4826 | Reviewed by Geoff Garen. | |
4827 | ||
4828 | Beat gcc with a clue bat -- force inlining of refIfNotNull and derefIfNotNull | |
4829 | ||
4830 | * wtf/PassRefPtr.h: | |
4831 | ||
4832 | 2010-04-07 Kwang Yul Seo <skyul@company100.net> | |
4833 | ||
4834 | Reviewed by Darin Adler. | |
4835 | ||
4836 | Replace isprint with isASCIIPrintable | |
4837 | https://bugs.webkit.org/show_bug.cgi?id=37223 | |
4838 | ||
4839 | WebKit does not use functions in <ctype.h> as they are dependent on the current | |
4840 | locale. Use the equivalent functions in <wtf/ASCIICType.h>. isASCIIPrintable | |
4841 | replaces isprint. | |
4842 | ||
4843 | * pcre/pcre_exec.cpp: | |
4844 | (pchars): | |
4845 | ||
4846 | 2010-04-07 Enrica Casucci <enrica@apple.com> | |
4847 | ||
4848 | Reviewed by Darin Adler. | |
4849 | ||
4850 | https://bugs.webkit.org/show_bug.cgi?id=37219 | |
4851 | ||
4852 | This change disables text caret for the iPhone platflorm. | |
4853 | ||
4854 | * wtf/Platform.h: Disabled text caret for iPhone. | |
4855 | ||
4856 | 2010-04-06 Adam Barth <abarth@webkit.org> | |
4857 | ||
4858 | Reviewed by Eric Seidel. | |
4859 | ||
4860 | REGRESSION: Worker termination via JS timeout may cause worker tests like fast/workers/worker-terminate.html fail. | |
4861 | https://bugs.webkit.org/show_bug.cgi?id=36646 | |
4862 | ||
4863 | Add a new exception type for forcibly terminating a JavaScript stack. | |
4864 | The new exception functions similarly to the | |
4865 | InterruptedExecutionException but is conceptually different because | |
4866 | execution is terminated instead of just interrupted. | |
4867 | ||
4868 | * GNUmakefile.am: | |
4869 | - Added new Terminator.h file. | |
4870 | * JavaScriptCore.gypi: | |
4871 | - Added new Terminator.h file. | |
4872 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
4873 | - Added new Terminator.h file. | |
4874 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4875 | - Added new Terminator.h file. | |
4876 | * interpreter/Interpreter.cpp: | |
4877 | (JSC::Interpreter::throwException): | |
4878 | - Fully unwind the stack for TerminatedExecutionException. | |
4879 | (JSC::Interpreter::privateExecute): | |
4880 | - Check if we've been terminated at the same time we check if we've | |
4881 | timed out. | |
4882 | * jit/JITStubs.cpp: | |
4883 | (JSC::DEFINE_STUB_FUNCTION): | |
4884 | - Check if we've been terminated at the same time we check if we've | |
4885 | timed out. | |
4886 | * runtime/Completion.cpp: | |
4887 | - Some exceptions define special completion types so that calls can | |
4888 | see why we terminated evaluation. | |
4889 | (JSC::evaluate): | |
4890 | * runtime/Completion.h: | |
4891 | - Define a new completion type for termination. | |
4892 | (JSC::): | |
4893 | * runtime/ExceptionHelpers.cpp: | |
4894 | - Define TerminatedExecutionException and refactor pseudo-RTTI | |
4895 | virtual function to be more semantic. | |
4896 | (JSC::InterruptedExecutionError::exceptionType): | |
4897 | (JSC::TerminatedExecutionError::TerminatedExecutionError): | |
4898 | (JSC::TerminatedExecutionError::exceptionType): | |
4899 | (JSC::TerminatedExecutionError::toString): | |
4900 | (JSC::createTerminatedExecutionException): | |
4901 | * runtime/ExceptionHelpers.h: | |
4902 | - Entry point for generating a TerminatedExecutionException. | |
4903 | * runtime/JSGlobalData.cpp: | |
4904 | (JSC::JSGlobalData::JSGlobalData): | |
4905 | - Add a Terminator object that can be used to asynchronously | |
4906 | terminate a JavaScript execution stack. | |
4907 | * runtime/JSGlobalData.h: | |
4908 | * runtime/JSObject.h: | |
4909 | (JSC::JSObject::exceptionType): | |
4910 | - Define that, by default, thrown objects have a normal exception | |
4911 | type. | |
4912 | * runtime/Terminator.h: Added. | |
4913 | - Added a new controller object that can be used to terminate | |
4914 | execution asynchronously. This object is more or less a | |
4915 | glorified bool. | |
4916 | (JSC::Terminator::Terminator): | |
4917 | (JSC::Terminator::termianteSoon): | |
4918 | (JSC::Terminator::shouldTerminate): | |
4919 | ||
4920 | 2010-04-05 Oliver Hunt <oliver@apple.com> | |
4921 | ||
4922 | And another one. | |
4923 | ||
4924 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
4925 | ||
4926 | 2010-04-05 Oliver Hunt <oliver@apple.com> | |
4927 | ||
4928 | And another build fix. | |
4929 | ||
4930 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: | |
4931 | ||
4932 | 2010-04-05 Oliver Hunt <oliver@apple.com> | |
4933 | ||
4934 | Build fix | |
4935 | ||
4936 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
4937 | ||
4938 | 2010-04-05 Oliver Hunt <oliver@apple.com> | |
4939 | ||
4940 | Reviewed by Gavin Barraclough. | |
4941 | ||
4942 | Support weak maps in JSC | |
4943 | https://bugs.webkit.org/show_bug.cgi?id=37132 | |
4944 | ||
4945 | Expose an API to allow creation of a map for storing | |
4946 | weak JS references. | |
4947 | ||
4948 | * API/JSWeakObjectMapRefInternal.h: Added. | |
4949 | (OpaqueJSWeakObjectMap::create): | |
4950 | (OpaqueJSWeakObjectMap::map): | |
4951 | (OpaqueJSWeakObjectMap::~OpaqueJSWeakObjectMap): | |
4952 | (OpaqueJSWeakObjectMap::OpaqueJSWeakObjectMap): | |
4953 | * API/JSWeakObjectMapRefPrivate.cpp: Added. | |
4954 | * API/JSWeakObjectMapRefPrivate.h: Added. | |
4955 | * JavaScriptCore.exp: | |
4956 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
4957 | * runtime/JSGlobalObject.h: | |
4958 | (JSC::JSGlobalObject::registerWeakMap): | |
4959 | (JSC::JSGlobalObject::deregisterWeakMap): | |
4960 | ||
4961 | 2010-04-05 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
4962 | ||
4963 | Reviewed by Kenneth Rohde Christiansen. | |
4964 | ||
4965 | [Symbian] Consolidate Symbian WINSCW environment configuration | |
4966 | https://bugs.webkit.org/show_bug.cgi?id=37100 | |
4967 | ||
4968 | Move the "undefinition" of WIN32 and _WIN32 from WebCore/config.h | |
4969 | to JavaScriptCore/wtf/Platform.h as it is not specific to WebCore. | |
4970 | ||
4971 | PLATFORM(WIN) and OS(WIN) no longer needs to be undefined as | |
4972 | undefining WIN32 takes care of it. | |
4973 | ||
4974 | * wtf/Platform.h: | |
4975 | ||
4976 | 2010-04-03 Gavin Barraclough <barraclough@apple.com> | |
4977 | ||
4978 | Reviewed by Oliver Hunt. | |
4979 | ||
4980 | https://bugs.webkit.org/show_bug.cgi?id=37068 | |
4981 | Change UString to use a 0 rep for null strings instead of a null object. | |
4982 | ||
4983 | No performance impact. | |
4984 | ||
4985 | * JavaScriptCore.exp: | |
4986 | * runtime/InternalFunction.cpp: | |
4987 | (JSC::InternalFunction::InternalFunction): | |
4988 | * runtime/JSString.h: | |
4989 | (JSC::RopeBuilder::JSString): | |
4990 | * runtime/UString.cpp: | |
4991 | (JSC::initializeUString): | |
4992 | * runtime/UString.h: | |
4993 | (JSC::UString::UString): | |
4994 | (JSC::UString::data): | |
4995 | (JSC::UString::size): | |
4996 | (JSC::UString::isNull): | |
4997 | (JSC::UString::isEmpty): | |
4998 | (JSC::UString::cost): | |
4999 | ||
5000 | 2010-04-03 Balazs Kelemen <kb@inf.u-szeged.hu> | |
5001 | ||
5002 | Reviewed by Oliver Hunt. | |
5003 | ||
5004 | Fix uninitalised members in CallLinkInfo and BytecodeGenerator. | |
5005 | ||
5006 | https://bugs.webkit.org/show_bug.cgi?id=36816 | |
5007 | ||
5008 | * bytecode/CodeBlock.cpp: | |
5009 | (JSC::CodeBlock::CodeBlock): | |
5010 | * bytecode/CodeBlock.h: | |
5011 | (JSC::CallLinkInfo::CallLinkInfo): | |
5012 | ||
5013 | 2010-04-03 yael aharon <yael.aharon@nokia.com> | |
5014 | ||
5015 | Reviewed by Darin Adler. | |
5016 | ||
5017 | Enable HTMLProgressElement for Safari on OSX | |
5018 | https://bugs.webkit.org/show_bug.cgi?id=36961 | |
5019 | ||
5020 | * Configurations/FeatureDefines.xcconfig: | |
5021 | ||
5022 | 2010-04-02 Ruben Van Boxem <vanboxem.ruben@gmail.com> | |
5023 | ||
5024 | Reviewed by Eric Seidel. | |
5025 | ||
5026 | Mingw-w64 fixes for JavaScriptCore | |
5027 | https://bugs.webkit.org/show_bug.cgi?id=35607 | |
5028 | ||
5029 | * runtime/Collector.cpp: use the msvc code for mingw-w64 (but not mingw-w32) | |
5030 | (JSC::Heap::allocateBlock): | |
5031 | (JSC::Heap::freeBlockPtr): | |
5032 | (JSC::currentThreadStackBase): | |
5033 | (JSC::currentThreadStackBase): | |
5034 | * wtf/Platform.h: added COMPILER(MINGW64) check to differentiate between mingw.org and mingw-w64 functions | |
5035 | ||
5036 | 2010-04-02 Geoffrey Garen <ggaren@apple.com> | |
5037 | ||
5038 | Build fix: updated the .def file. | |
5039 | ||
5040 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
5041 | ||
5042 | 2010-04-02 Geoffrey Garen <ggaren@apple.com> | |
5043 | ||
5044 | Reviewed by Oliver Hunt. | |
5045 | ||
5046 | Inlined toThisString and toThisJSString to avoid virtual function call overhead | |
5047 | https://bugs.webkit.org/show_bug.cgi?id=37039 | |
5048 | ||
5049 | Maybe a 1% speedup on iBench JS. | |
5050 | ||
5051 | * JavaScriptCore.exp: New exports. | |
5052 | ||
5053 | * runtime/JSCell.cpp: | |
5054 | * runtime/JSCell.h: | |
5055 | * runtime/JSNumberCell.cpp: | |
5056 | * runtime/JSNumberCell.h: | |
5057 | * runtime/JSString.cpp: | |
5058 | * runtime/JSString.h: | |
5059 | * runtime/JSValue.h: | |
5060 | * runtime/JSZombie.h: | |
5061 | (JSC::JSZombie::toThisObject): Nixed the old virtual-type implementation. | |
5062 | ||
5063 | * runtime/JSObject.h: | |
5064 | (JSC::JSValue::toThisString): | |
5065 | (JSC::JSValue::toThisJSString): Added the inlined implementation. | |
5066 | ||
5067 | 2010-04-02 Jeremy Moskovich <jeremy@chromium.org> | |
5068 | ||
5069 | Reviewed by Geoffrey Garen. | |
5070 | ||
5071 | Beef up documentation for ASSERT* and CRASH macros a bit. | |
5072 | ||
5073 | https://bugs.webkit.org/show_bug.cgi?id=36527 | |
5074 | ||
5075 | * wtf/Assertions.h: | |
5076 | ||
5077 | 2010-04-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
5078 | ||
5079 | Unreviewed, minor build fix. | |
5080 | ||
5081 | Change the order of the member initialisation list | |
5082 | in constructor to match declaration order | |
5083 | ||
5084 | * runtime/Collector.cpp: | |
5085 | (JSC::Heap::Heap): | |
5086 | ||
5087 | 2010-04-01 Kinuko Yasuda <kinuko@chromium.org> | |
5088 | ||
5089 | Reviewed by Dmitry Titov. | |
5090 | ||
5091 | Add FileThread for async file operation support in FileReader and FileWriter | |
5092 | https://bugs.webkit.org/show_bug.cgi?id=36896 | |
5093 | ||
5094 | Add ENABLE_FILE_READER and ENABLE_FILE_WRITER flags. | |
5095 | ||
5096 | * Configurations/FeatureDefines.xcconfig: | |
5097 | ||
5098 | 2010-03-31 Gavin Barraclough <barraclough@apple.com> | |
5099 | ||
5100 | Reviewed by NOBODY (windows build fix pt II). | |
5101 | ||
5102 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
5103 | ||
5104 | 2010-03-31 Gavin Barraclough <barraclough@apple.com> | |
5105 | ||
5106 | Reviewed by NOBODY (windows build fix). | |
5107 | ||
5108 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
5109 | ||
5110 | 2010-03-31 Gavin Barraclough <barraclough@apple.com> | |
5111 | ||
5112 | Reviewed by Geoff Garen. | |
5113 | ||
5114 | Bug 36871 - Remove JSC::CString | |
5115 | Use WTF::CString instead (which until recently was WebCore::CString). | |
5116 | ||
5117 | * JavaScriptCore.exp: | |
5118 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
5119 | * runtime/UString.cpp: | |
5120 | * runtime/UString.h: | |
5121 | ||
5122 | 2010-03-31 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
5123 | ||
5124 | Unreviewed, fix after r56842. | |
5125 | ||
5126 | Add UNUSED_PARAM a to silence warning. | |
5127 | ||
5128 | * jit/JITStubs.cpp: | |
5129 | (JSC::DEFINE_STUB_FUNCTION): | |
5130 | ||
5131 | 2010-03-31 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
5132 | ||
5133 | Unreviewed, Symbian build fix. | |
5134 | ||
5135 | Refactor JITStubs.cpp so that the list of STUB_FUNCTIONs | |
5136 | are not dependent on the JSVALUE32_64 guard. | |
5137 | ||
5138 | * jit/JITStubs.cpp: Place the JSVALUE32_64 guard inside | |
5139 | the body of cti_op_eq_strings. | |
5140 | * jit/JITStubs.h: Remove JSVALUE32_64 guard from | |
5141 | cti_op_eq_strings stub. | |
5142 | ||
5143 | 2010-03-30 Gavin Barraclough <barraclough@apple.com> | |
5144 | ||
5145 | Reviewed by NOBODY (windows build fix). | |
5146 | ||
5147 | Fixing b0rked version of JavaScriptCore.vcproj - added lines were truncated. | |
5148 | ||
5149 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
5150 | ||
5151 | 2010-03-30 Gavin Barraclough <barraclough@apple.com> | |
5152 | ||
5153 | Rubber stamped by Sam Weinig. | |
5154 | ||
5155 | https://bugs.webkit.org/show_bug.cgi?id=36866 | |
5156 | Move CString to WTF | |
5157 | ||
5158 | * Android.mk: | |
5159 | * GNUmakefile.am: | |
5160 | * JavaScriptCore.exp: | |
5161 | * JavaScriptCore.gypi: | |
5162 | * JavaScriptCore.pro: | |
5163 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
5164 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
5165 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
5166 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
5167 | * wtf/text: Added. | |
5168 | * wtf/text/CString.cpp: Copied from WebCore/platform/text/CString.cpp. | |
5169 | * wtf/text/CString.h: Copied from WebCore/platform/text/CString.h. | |
5170 | (WTF::CStringBuffer::data): | |
5171 | (WTF::CStringBuffer::length): | |
5172 | (WTF::CStringBuffer::create): | |
5173 | (WTF::CStringBuffer::CStringBuffer): | |
5174 | (WTF::CStringBuffer::mutableData): | |
5175 | (WTF::CString::CString): | |
5176 | (WTF::CString::isNull): | |
5177 | (WTF::CString::buffer): | |
5178 | (WTF::operator!=): | |
5179 | ||
5180 | 2010-03-30 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
5181 | ||
5182 | Reviewed by nobody, build break. | |
5183 | ||
5184 | [Qt] Fix build break on Qt Mac. | |
5185 | ||
5186 | DESTDIR path on Mac do not include the configuration path by default | |
5187 | like on Windows. Have to force it. | |
5188 | ||
5189 | * JavaScriptCore.pro: | |
5190 | ||
5191 | 2010-03-29 Alice Liu <alice.liu@apple.com> | |
5192 | ||
5193 | Reviewed by NOBODY (build fix). | |
5194 | ||
5195 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: | |
5196 | add JSObjectRefPrivate.h | |
5197 | ||
5198 | 2010-03-29 Chao-ying Fu <fu@mips.com> | |
5199 | ||
5200 | Reviewed by Oliver Hunt. | |
5201 | ||
5202 | MIPS JIT Supports | |
5203 | https://bugs.webkit.org/show_bug.cgi?id=30144 | |
5204 | ||
5205 | The following changes enable MIPS JIT. | |
5206 | ||
5207 | * assembler/MIPSAssembler.h: | |
5208 | (JSC::MIPSAssembler::lbu): | |
5209 | (JSC::MIPSAssembler::linkWithOffset): | |
5210 | * assembler/MacroAssemblerMIPS.h: | |
5211 | (JSC::MacroAssemblerMIPS::load8): | |
5212 | (JSC::MacroAssemblerMIPS::branch8): | |
5213 | (JSC::MacroAssemblerMIPS::branchTest8): | |
5214 | (JSC::MacroAssemblerMIPS::setTest8): | |
5215 | (JSC::MacroAssemblerMIPS::setTest32): | |
5216 | * jit/JIT.h: | |
5217 | * jit/JITInlineMethods.h: | |
5218 | (JSC::JIT::preserveReturnAddressAfterCall): | |
5219 | (JSC::JIT::restoreReturnAddressBeforeReturn): | |
5220 | * jit/JITOpcodes.cpp: | |
5221 | * jit/JITStubs.cpp: | |
5222 | (JSC::JITThunks::JITThunks): | |
5223 | * jit/JITStubs.h: | |
5224 | (JSC::JITStackFrame::returnAddressSlot): | |
5225 | * wtf/Platform.h: | |
5226 | ||
5227 | 2010-02-26 Kenneth Rohde Christiansen <kenneth@webkit.org> | |
5228 | ||
5229 | Reviewed by Simon Fraser. | |
5230 | ||
5231 | Add support for Widgets 1.0: View Mode Media Feature | |
5232 | https://bugs.webkit.org/show_bug.cgi?id=35446 | |
5233 | ||
5234 | Add an enable flag for the Widgets (http://www.w3.org/TR/widgets-reqs/) | |
5235 | and turn it on for Qt only. | |
5236 | ||
5237 | * wtf/Platform.h: | |
5238 | ||
5239 | 2010-03-29 Patrick Gansterer <paroga@paroga.com> | |
5240 | ||
5241 | Reviewed by Darin Adler. | |
5242 | ||
5243 | Corrected name of (u)int64_t compile time assert. | |
5244 | https://bugs.webkit.org/show_bug.cgi?id=36739 | |
5245 | ||
5246 | int64_t_is_four_bytes -> int64_t_is_eight_bytes | |
5247 | ||
5248 | * os-win32/stdint.h: | |
5249 | ||
5250 | 2010-03-29 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
5251 | ||
5252 | Reviewed by Simon Hausmann. | |
5253 | ||
5254 | [Qt] Use the -l syntax for linking against JavaScriptCore on Windows. | |
5255 | This allow qmake to extract dependencies correctly when generating VS | |
5256 | solutions. | |
5257 | ||
5258 | * JavaScriptCore.pri: | |
5259 | ||
5260 | 2010-03-29 Thomas Zander <t.zander@nokia.com> | |
5261 | ||
5262 | Reviewed by Simon Hausmann. | |
5263 | ||
5264 | https://bugs.webkit.org/show_bug.cgi?id=36742 | |
5265 | ||
5266 | gcc for Symbian doesn't support gcc extensions like atomicity.h - disable | |
5267 | ||
5268 | * wtf/Threading.h: also detect os symbian | |
5269 | ||
5270 | 2010-03-28 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
5271 | ||
5272 | Reviewed by Simon Hausmann. | |
5273 | ||
5274 | [Qt] Remove the definition of WTF_CHANGES guards from the build system | |
5275 | https://bugs.webkit.org/show_bug.cgi?id=31670 | |
5276 | ||
5277 | * JavaScriptCore.pro: Remove the definition of WTF_CHANGES | |
5278 | as it is already defined in config.h | |
5279 | ||
5280 | 2010-03-28 Kent Hansen <kent.hansen@nokia.com> | |
5281 | ||
5282 | Reviewed by Simon Hausmann. | |
5283 | ||
5284 | [Qt] Add API for reporting additional memory cost of JavaScript objects | |
5285 | https://bugs.webkit.org/show_bug.cgi?id=36650 | |
5286 | ||
5287 | * qt/api/qscriptengine.cpp: | |
5288 | (QScriptEngine::reportAdditionalMemoryCost): | |
5289 | * qt/api/qscriptengine.h: | |
5290 | * qt/api/qscriptengine_p.h: | |
5291 | (QScriptEnginePrivate::reportAdditionalMemoryCost): | |
5292 | * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
5293 | (tst_QScriptEngine::reportAdditionalMemoryCost): | |
5294 | ||
5295 | 2010-03-28 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
5296 | ||
5297 | Reviewed by Simon Hausmann. | |
5298 | ||
5299 | QScriptEngine API was enriched by globalObject() method | |
5300 | which give an access to the global object. | |
5301 | ||
5302 | [Qt] QScriptEngine doesn't give an access to global object | |
5303 | https://bugs.webkit.org/show_bug.cgi?id=36603 | |
5304 | ||
5305 | * qt/api/qscriptengine.cpp: | |
5306 | (QScriptEngine::globalObject): | |
5307 | * qt/api/qscriptengine.h: | |
5308 | * qt/api/qscriptengine_p.cpp: | |
5309 | (QScriptEnginePrivate::globalObject): | |
5310 | * qt/api/qscriptengine_p.h: | |
5311 | * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
5312 | (tst_QScriptEngine::globalObject): | |
5313 | ||
5314 | 2010-03-26 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
5315 | ||
5316 | Reviewed by Simon Hausmann. | |
5317 | ||
5318 | [Qt] Build JavaScriptCore as a static library. | |
5319 | https://bugs.webkit.org/show_bug.cgi?id=36590 | |
5320 | ||
5321 | This patch takes what was left of the unused JavaScriptCore.pro | |
5322 | and moved the compilation logic from JavaScriptCore.pri to | |
5323 | JavaScriptCore.pro. | |
5324 | ||
5325 | * JavaScriptCore.pri: | |
5326 | * JavaScriptCore.pro: | |
5327 | * jsc.pro: | |
5328 | * qt/api/QtScript.pro: | |
5329 | ||
5330 | 2010-03-25 Gavin Barraclough <barraclough@apple.com> | |
5331 | ||
5332 | Reviewed by NOBODY (build fix). | |
5333 | ||
5334 | * profiler/ProfileGenerator.cpp: | |
5335 | (JSC::ProfileGenerator::willExecute): | |
5336 | (JSC::ProfileGenerator::didExecute): | |
5337 | ||
5338 | 2010-03-25 Gavin Barraclough <barraclough@apple.com> | |
5339 | ||
5340 | Reviewed by Geoff Garen. | |
5341 | ||
5342 | Bug 36611 - Cleanup JSC::CString | |
5343 | Rename CString::c_str() -> CString::data(), CString::size() -> CString::length(), | |
5344 | remove UString::getCString() (all uses are wrong, should use UString::UTF8String()). | |
5345 | ||
5346 | * bytecode/CodeBlock.cpp: | |
5347 | (JSC::CodeBlock::printUnaryOp): | |
5348 | (JSC::CodeBlock::printBinaryOp): | |
5349 | (JSC::CodeBlock::printConditionalJump): | |
5350 | (JSC::CodeBlock::printGetByIdOp): | |
5351 | (JSC::CodeBlock::printPutByIdOp): | |
5352 | (JSC::printGlobalResolveInfo): | |
5353 | (JSC::printStructureStubInfo): | |
5354 | (JSC::CodeBlock::printStructure): | |
5355 | (JSC::CodeBlock::printStructures): | |
5356 | (JSC::CodeBlock::dump): | |
5357 | * jsc.cpp: | |
5358 | (functionPrint): | |
5359 | (functionDebug): | |
5360 | (runInteractive): | |
5361 | (fillBufferWithContentsOfFile): | |
5362 | * profiler/CallIdentifier.h: | |
5363 | (JSC::CallIdentifier::c_str): | |
5364 | * profiler/Profile.cpp: | |
5365 | (JSC::Profile::debugPrintDataSampleStyle): | |
5366 | * profiler/ProfileNode.cpp: | |
5367 | (JSC::ProfileNode::debugPrintData): | |
5368 | (JSC::ProfileNode::debugPrintDataSampleStyle): | |
5369 | * runtime/DateConversion.cpp: | |
5370 | (JSC::parseDate): | |
5371 | * runtime/JSGlobalObjectFunctions.cpp: | |
5372 | (JSC::encode): | |
5373 | (JSC::globalFuncJSCPrint): | |
5374 | * runtime/UString.cpp: | |
5375 | (JSC::operator==): | |
5376 | (JSC::UString::toDouble): | |
5377 | * runtime/UString.h: | |
5378 | (JSC::CString::length): | |
5379 | (JSC::CString::data): | |
5380 | ||
5381 | 2010-03-25 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
5382 | ||
5383 | Reviewed by nobody, build fix. | |
5384 | ||
5385 | [Qt] Build fix on MSVC. Reverts r55633 for stdint.h | |
5386 | ||
5387 | This file gets included in generated moc files which don't | |
5388 | include the prefix header. | |
5389 | ||
5390 | * os-win32/stdint.h: | |
5391 | ||
5392 | 2010-03-24 Gavin Barraclough <barraclough@apple.com> | |
5393 | ||
5394 | Reviewed by NOBODY (windows build fix). | |
5395 | ||
5396 | 2010-03-24 Gavin Barraclough <barraclough@apple.com> | |
5397 | ||
5398 | Reviewed by Sam Weinig. | |
5399 | ||
5400 | Switch String::latin1, String::utf8, String::fromUTF8 to | |
5401 | use WTF's Unicode conversion methods rather than TextEncoder. | |
5402 | These methods only perform simple conversion, and don't need | |
5403 | really require TextEncoder's full capability (to look up arbitrary | |
5404 | encodings by name), switching to only be dependent on WTF will | |
5405 | make it easier if we chose to move WebCore::String to WTF. | |
5406 | ||
5407 | * JavaScriptCore.exp: | |
5408 | ||
5409 | 2010-03-24 Alexey Proskuryakov <ap@apple.com> | |
5410 | ||
5411 | Reviewed by Geoff Garen. | |
5412 | ||
5413 | * wtf/FastMalloc.h: Added a using directive for fastMallocSize, like we do for all public | |
5414 | WTF symbols. Also sorted the list alphabetically. | |
5415 | ||
5416 | 2010-03-23 Gavin Barraclough <barraclough@apple.com> | |
5417 | ||
5418 | Reviewed by NOBODY (speculative windows build fix part II). | |
5419 | ||
5420 | 2010-03-23 Gavin Barraclough <barraclough@apple.com> | |
5421 | ||
5422 | Reviewed by NOBODY (speculative windows build fix). | |
5423 | ||
5424 | 2010-03-23 Gavin Barraclough <barraclough@apple.com> | |
5425 | ||
5426 | Reviewed by Oliver Hunt. | |
5427 | ||
5428 | Bug 36519 - JSGlobalContextRelease is unnecessarily slow | |
5429 | ||
5430 | Since [ http://trac.webkit.org/changeset/35917 ], calling | |
5431 | JSGlobalContextRelease always triggers a GC heap collection | |
5432 | (if not a full destroy). As per 35917's changelog "This is | |
5433 | only really necessary when the (JSGlobalObject's) last | |
5434 | reference is released, but there is no way to determine that, | |
5435 | and no harm in collecting slightly more often." | |
5436 | ||
5437 | Well, we now know of cases of API clients who are harmed by | |
5438 | the performance penalty of collecting too often, so it's time | |
5439 | to add a way to determine whether a call to JSGlobalContextRelease | |
5440 | is removing the last protect from it's global object. If further | |
5441 | protects are retaining the global object (likely from other | |
5442 | JSGlobalContextRefs), then don't trigger a GC collection. | |
5443 | ||
5444 | * API/JSContextRef.cpp: | |
5445 | * runtime/Collector.cpp: | |
5446 | (JSC::Heap::unprotect): return a boolean indicating that the value is now unprotected. | |
5447 | * runtime/Collector.h: | |
5448 | * wtf/HashCountedSet.h: | |
5449 | (WTF::::remove): return a boolean indicating whether the value was removed from the set. | |
5450 | ||
5451 | 2010-03-23 Mark Rowe <mrowe@apple.com> | |
5452 | ||
5453 | Build fix. | |
5454 | ||
5455 | * runtime/ArrayPrototype.cpp: | |
5456 | (JSC::arrayProtoFuncSplice): Some versions of GCC emit a warning about the implicit 64- to 32-bit truncation | |
5457 | that takes place here. An explicit cast is sufficient to silence it. | |
5458 | ||
5459 | 2010-03-23 Alexey Proskuryakov <ap@apple.com> | |
5460 | ||
5461 | Build fix. | |
5462 | ||
5463 | * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): Fixed a typo - length doesn't | |
5464 | need to be converted with toInteger(). | |
5465 | ||
5466 | 2010-03-23 Alexey Proskuryakov <ap@apple.com> | |
5467 | ||
5468 | Reviewed by Geoff Garen. | |
5469 | ||
5470 | https://bugs.webkit.org/show_bug.cgi?id=36511 | |
5471 | <rdar://problem/7753498> Safari freezes when using SPUTNIK JavaScript conformance check | |
5472 | ||
5473 | Test: fast/js/sputnik-S15.4.4.12_A3_T3.html | |
5474 | ||
5475 | * runtime/ArrayPrototype.cpp: (JSC::arrayProtoFuncSplice): We were incorrectly computing | |
5476 | the start offset, and iterated over (almost) all integers. Note that this can be fixed | |
5477 | without using doubles, but the code would be much more complicated, and there is no important | |
5478 | reason to stick to integers here. | |
5479 | ||
5480 | 2010-03-23 Kent Hansen <kent.hansen@nokia.com> | |
5481 | ||
5482 | Reviewed by Darin Adler. | |
5483 | ||
5484 | Fix compilation on Itanium in 32-bit mode | |
5485 | https://bugs.webkit.org/show_bug.cgi?id=36494 | |
5486 | ||
5487 | * wtf/Platform.h: Introduce CPU(IA64_32). Don't define | |
5488 | WTF_USE_JSVALUE64 if the CPU is in 32-bit mode. | |
5489 | ||
5490 | 2010-03-23 Geoffrey Garen <ggaren@apple.com> | |
5491 | ||
5492 | Reviewed by Mark Rowe. | |
5493 | ||
5494 | Interpreter fix for <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648) | |
5495 | evaluates to -2147483648 on 32 bit (35842) | |
5496 | ||
5497 | * interpreter/Interpreter.cpp: | |
5498 | (JSC::Interpreter::privateExecute): Only take the fast negate path if | |
5499 | a bit other than bit 31 is set. If none of bits 0-30 are set, then the | |
5500 | value we're negating can only be 0 or -2147483648, and neither can be | |
5501 | negated in int space. | |
5502 | ||
5503 | * jit/JITArithmetic.cpp: | |
5504 | (JSC::JIT::emit_op_negate): | |
5505 | (JSC::JIT::emitSlow_op_negate): Updated the JIT implementation to match | |
5506 | the interpreter, since it's slightly simpler. | |
5507 | ||
5508 | 2010-03-22 Siddharth Mathur <siddharth.mathur@nokia.com> | |
5509 | ||
5510 | Reviewed by Laszlo Gombos. | |
5511 | ||
5512 | [Symbian] More efficient aligned memory allocation for JSC Collector | |
5513 | https://bugs.webkit.org/show_bug.cgi?id=34350 | |
5514 | ||
5515 | * JavaScriptCore.pri: Added 2 new Symbian source files and HAL linkage | |
5516 | ||
5517 | * runtime/Collector.cpp: Reduced port-specific code and added private data member | |
5518 | (JSC::Heap::Heap): | |
5519 | (JSC::Heap::~Heap): | |
5520 | (JSC::Heap::destroy): | |
5521 | (JSC::Heap::allocateBlock): | |
5522 | (JSC::Heap::freeBlockPtr): | |
5523 | ||
5524 | * runtime/Collector.h: Added private data member | |
5525 | ||
5526 | * wtf/symbian: Added. | |
5527 | * wtf/symbian/BlockAllocatorSymbian.cpp: Added. | |
5528 | (WTF::AlignedBlockAllocator::AlignedBlockAllocator): Helper class to allocate | |
5529 | aligned blocks more efficiently as required by Collector | |
5530 | (WTF::AlignedBlockAllocator::alloc): | |
5531 | (WTF::AlignedBlockAllocator::free): | |
5532 | (WTF::AlignedBlockAllocator::destroy): | |
5533 | (WTF::AlignedBlockAllocator::~AlignedBlockAllocator): | |
5534 | * wtf/symbian/BlockAllocatorSymbian.h: Added. | |
5535 | ||
5536 | 2010-03-22 Geoffrey Garen <ggaren@apple.com> | |
5537 | ||
5538 | Reviewed by Sam Weinig. | |
5539 | ||
5540 | Fixed <rdar://problem/7728196> REGRESSION (r46701): -(-2147483648) | |
5541 | evaluates to -2147483648 on 32 bit (35842) | |
5542 | ||
5543 | Two ways to fix the same bug: | |
5544 | ||
5545 | 1. Check for overflow when negating, since negating the largest negative | |
5546 | int causes overflow. | |
5547 | ||
5548 | 2. Constant-fold even when negating a negative, since, like they say in | |
5549 | high school, "math works." | |
5550 | ||
5551 | * assembler/MacroAssemblerARM.h: | |
5552 | (JSC::MacroAssemblerARM::branchNeg32): | |
5553 | * assembler/MacroAssemblerX86Common.h: | |
5554 | (JSC::MacroAssemblerX86Common::branchNeg32): Added a branching version | |
5555 | of the negate operator. | |
5556 | ||
5557 | * jit/JITArithmetic.cpp: | |
5558 | (JSC::JIT::emit_op_negate): Use the branching version of the negate | |
5559 | operator to check for overflow. | |
5560 | ||
5561 | (JSC::JIT::emitSlow_op_negate): Link the check for overflow to a slow case. | |
5562 | (We could emit inline code for this, since we know what the result would | |
5563 | be, but that's probably just a waste of generated code.) | |
5564 | ||
5565 | * parser/Grammar.y: Constant fold even when negating a negative. | |
5566 | ||
5567 | 2010-03-22 David Kilzer <ddkilzer@apple.com> | |
5568 | ||
5569 | <http://webkit.org/b/36431> Clean up 'int' use in UString.cpp after r54789 | |
5570 | ||
5571 | Reviewed by Darin Adler. | |
5572 | ||
5573 | * runtime/UString.cpp: | |
5574 | (JSC::UString::from): Changed argument type from 'unsigned int' | |
5575 | to 'unsigned' to match WebKit coding style. | |
5576 | (JSC::UString::find): Changed static_cast<int>() to | |
5577 | static_cast<unsigned>() now that this method returns unsigned. | |
5578 | (JSC::UString::rfind): Ditto. | |
5579 | * runtime/UString.h: | |
5580 | (JSC::UString::from): Changed argument type from 'unsigned int' | |
5581 | to 'unsigned' to match WebKit coding style. | |
5582 | ||
5583 | 2010-03-22 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
5584 | ||
5585 | Reviewed by Kenneth Rohde Christiansen. | |
5586 | ||
5587 | Add support for syntax checking in the QtScript API. | |
5588 | ||
5589 | New class was created; the QScriptSyntaxCheckResult which main | |
5590 | responsibility is to provide results of the ECMA Script code | |
5591 | syntax check. The class is not fully functional as the JSC C API | |
5592 | doesn't expose an error column number, but it is a good start point | |
5593 | for a future development. | |
5594 | ||
5595 | [Qt] QtScript functionality should be extended by syntax checking. | |
5596 | https://bugs.webkit.org/show_bug.cgi?id=36123 | |
5597 | ||
5598 | * qt/api/QtScript.pro: | |
5599 | * qt/api/qscriptengine.cpp: | |
5600 | (QScriptEngine::checkSyntax): | |
5601 | * qt/api/qscriptengine.h: | |
5602 | * qt/api/qscriptengine_p.cpp: | |
5603 | (QScriptEnginePrivate::checkSyntax): | |
5604 | * qt/api/qscriptengine_p.h: | |
5605 | * qt/api/qscriptsyntaxcheckresult.cpp: Added. | |
5606 | (QScriptSyntaxCheckResult::QScriptSyntaxCheckResult): | |
5607 | (QScriptSyntaxCheckResult::~QScriptSyntaxCheckResult): | |
5608 | (QScriptSyntaxCheckResult::operator=): | |
5609 | (QScriptSyntaxCheckResult::state): | |
5610 | (QScriptSyntaxCheckResult::errorLineNumber): | |
5611 | (QScriptSyntaxCheckResult::errorColumnNumber): | |
5612 | (QScriptSyntaxCheckResult::errorMessage): | |
5613 | * qt/api/qscriptsyntaxcheckresult.h: Added. | |
5614 | * qt/api/qscriptsyntaxcheckresult_p.cpp: Added. | |
5615 | (QScriptSyntaxCheckResultPrivate::~QScriptSyntaxCheckResultPrivate): | |
5616 | (QScriptSyntaxCheckResultPrivate::errorMessage): | |
5617 | (QScriptSyntaxCheckResultPrivate::errorLineNumber): | |
5618 | * qt/api/qscriptsyntaxcheckresult_p.h: Added. | |
5619 | (QScriptSyntaxCheckResultPrivate::get): | |
5620 | (QScriptSyntaxCheckResultPrivate::QScriptSyntaxCheckResultPrivate): | |
5621 | (QScriptSyntaxCheckResultPrivate::state): | |
5622 | (QScriptSyntaxCheckResultPrivate::errorColumnNumber): | |
5623 | * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
5624 | (tst_QScriptEngine::checkSyntax_data): | |
5625 | (tst_QScriptEngine::checkSyntax): | |
5626 | ||
5627 | 2010-03-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
5628 | ||
5629 | Reviewed by Simon Hausmann. | |
5630 | ||
5631 | New class; QScriptProgram. | |
5632 | ||
5633 | The class should be used to evaluate the same script multiple times | |
5634 | more efficiently. | |
5635 | ||
5636 | [Qt] QtScript should have QScriptProgram class | |
5637 | https://bugs.webkit.org/show_bug.cgi?id=36008 | |
5638 | ||
5639 | * qt/api/QtScript.pro: | |
5640 | * qt/api/qscriptengine.cpp: | |
5641 | (QScriptEngine::evaluate): | |
5642 | * qt/api/qscriptengine.h: | |
5643 | * qt/api/qscriptengine_p.cpp: | |
5644 | (QScriptEnginePrivate::evaluate): | |
5645 | * qt/api/qscriptengine_p.h: | |
5646 | (QScriptEnginePrivate::evaluate): | |
5647 | * qt/api/qscriptprogram.cpp: Added. | |
5648 | (QScriptProgram::QScriptProgram): | |
5649 | (QScriptProgram::~QScriptProgram): | |
5650 | (QScriptProgram::operator=): | |
5651 | (QScriptProgram::isNull): | |
5652 | (QScriptProgram::sourceCode): | |
5653 | (QScriptProgram::fileName): | |
5654 | (QScriptProgram::firstLineNumber): | |
5655 | (QScriptProgram::operator==): | |
5656 | (QScriptProgram::operator!=): | |
5657 | * qt/api/qscriptprogram.h: Added. | |
5658 | * qt/api/qscriptprogram_p.h: Added. | |
5659 | (QScriptProgramPrivate::get): | |
5660 | (QScriptProgramPrivate::QScriptProgramPrivate): | |
5661 | (QScriptProgramPrivate::~QScriptProgramPrivate): | |
5662 | (QScriptProgramPrivate::isNull): | |
5663 | (QScriptProgramPrivate::sourceCode): | |
5664 | (QScriptProgramPrivate::fileName): | |
5665 | (QScriptProgramPrivate::firstLineNumber): | |
5666 | (QScriptProgramPrivate::operator==): | |
5667 | (QScriptProgramPrivate::operator!=): | |
5668 | (QScriptProgramPrivate::program): | |
5669 | (QScriptProgramPrivate::file): | |
5670 | (QScriptProgramPrivate::line): | |
5671 | * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
5672 | (tst_QScriptEngine::evaluateProgram): | |
5673 | ||
5674 | 2010-03-21 David Kilzer <ddkilzer@apple.com> | |
5675 | ||
5676 | Blind attempt #2 to fix the Windows build after r56314 | |
5677 | ||
5678 | * API/tests/testapi.c: Include JSObjectRefPrivate.h for the new | |
5679 | methods instead of declaring them locally (and non-extern). | |
5680 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
5681 | Backed out previous change. | |
5682 | ||
5683 | 2010-03-21 David Kilzer <ddkilzer@apple.com> | |
5684 | ||
5685 | Blind attempt to fix the Windows build after r56314 | |
5686 | ||
5687 | Try to fix the following errors on the Windows buildbot: | |
5688 | ||
5689 | Linking... | |
5690 | testapi.obj : error LNK2001: unresolved external symbol "bool __cdecl JSObjectSetPrivateProperty(struct OpaqueJSContext const *,struct OpaqueJSValue *,struct OpaqueJSString *,struct OpaqueJSValue const *)" (?JSObjectSetPrivateProperty@@YA_NPBUOpaqueJSContext@@PAUOpaqueJSValue@@PAUOpaqueJSString@@PBU2@@Z) | |
5691 | testapi.obj : error LNK2001: unresolved external symbol "struct OpaqueJSValue const * __cdecl JSObjectGetPrivateProperty(struct OpaqueJSContext const *,struct OpaqueJSValue *,struct OpaqueJSString *)" (?JSObjectGetPrivateProperty@@YAPBUOpaqueJSValue@@PBUOpaqueJSContext@@PAU1@PAUOpaqueJSString@@@Z) | |
5692 | C:\cygwin\home\buildbot\slave\win-release\build\WebKitBuild\bin\testapi.exe : fatal error LNK1120: 2 unresolved externals | |
5693 | ||
5694 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Added | |
5695 | missing symbols to be exported. | |
5696 | ||
5697 | 2010-03-21 Oliver Hunt <oliver@apple.com> | |
5698 | ||
5699 | Reviewed by Maciej Stachowiak. | |
5700 | ||
5701 | Documentation fix for previous patch. | |
5702 | ||
5703 | * API/JSObjectRefPrivate.h: | |
5704 | ||
5705 | 2010-03-20 Oliver Hunt <oliver@apple.com> | |
5706 | ||
5707 | Reviewed by Maciej Stachowiak. | |
5708 | ||
5709 | JSC needs an API to allow custom objects to have aprivate GC-accessible properties | |
5710 | https://bugs.webkit.org/show_bug.cgi?id=36420 | |
5711 | ||
5712 | Add new API methods to support "private" properties on custom | |
5713 | objects. | |
5714 | ||
5715 | * API/JSCallbackObject.h: | |
5716 | (JSC::JSCallbackObjectData::JSCallbackObjectData): | |
5717 | (JSC::JSCallbackObjectData::~JSCallbackObjectData): | |
5718 | (JSC::JSCallbackObjectData::getPrivateProperty): | |
5719 | (JSC::JSCallbackObjectData::setPrivateProperty): | |
5720 | (JSC::JSCallbackObjectData::deletePrivateProperty): | |
5721 | (JSC::JSCallbackObjectData::markChildren): | |
5722 | (JSC::JSCallbackObjectData::JSPrivatePropertyMap::getPrivateProperty): | |
5723 | (JSC::JSCallbackObjectData::JSPrivatePropertyMap::setPrivateProperty): | |
5724 | (JSC::JSCallbackObjectData::JSPrivatePropertyMap::deletePrivateProperty): | |
5725 | (JSC::JSCallbackObjectData::JSPrivatePropertyMap::markChildren): | |
5726 | (JSC::JSCallbackObject::getPrivateProperty): | |
5727 | (JSC::JSCallbackObject::setPrivateProperty): | |
5728 | (JSC::JSCallbackObject::deletePrivateProperty): | |
5729 | (JSC::JSCallbackObject::markChildren): | |
5730 | * API/JSObjectRef.cpp: | |
5731 | (JSObjectGetPrivateProperty): | |
5732 | (JSObjectSetPrivateProperty): | |
5733 | (JSObjectDeletePrivateProperty): | |
5734 | * API/JSObjectRefPrivate.h: Added. | |
5735 | * API/tests/testapi.c: | |
5736 | (main): | |
5737 | * JavaScriptCore.exp: | |
5738 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
5739 | ||
5740 | 2010-03-20 Kevin Ollivier <kevino@theolliviers.com> | |
5741 | ||
5742 | [wx] Build fixes after introduction of Brew files. | |
5743 | ||
5744 | * wscript: | |
5745 | ||
5746 | 2010-03-18 Tom Callaway <tcallawa@redhat.com> | |
5747 | ||
5748 | Reviewed by Darin Adler. | |
5749 | ||
5750 | Bug 35429: Fix compile on SPARC64 | |
5751 | https://bugs.webkit.org/show_bug.cgi?id=35429 | |
5752 | ||
5753 | * wtf/Platform.h: Set WTF_USE_JSVALUE64 for SPARC64 | |
5754 | ||
5755 | 2010-03-18 Oliver Hunt <oliver@apple.com> | |
5756 | ||
5757 | Reviewed by Sam Weinig. | |
5758 | ||
5759 | Add API to directly expose JSON parsing | |
5760 | https://bugs.webkit.org/show_bug.cgi?id=34887 | |
5761 | ||
5762 | Add API to expose JSON parsing directly, and add tests to testapi | |
5763 | ||
5764 | * API/JSValueRef.cpp: | |
5765 | (JSValueMakeFromJSONString): | |
5766 | (JSValueCreateJSONString): | |
5767 | * API/tests/testapi.c: | |
5768 | (main): | |
5769 | * JavaScriptCore.exp: | |
5770 | * runtime/JSONObject.cpp: | |
5771 | (JSC::JSONStringify): | |
5772 | * runtime/JSONObject.h: | |
5773 | ||
5774 | 2010-03-16 Sam Weinig <sam@webkit.org> | |
5775 | ||
5776 | Reviewed by Darin Adler and Mark Rowe. | |
5777 | ||
5778 | Update WebKit availability macros for release after 4.0. | |
5779 | ||
5780 | * API/WebKitAvailability.h: | |
5781 | ||
5782 | 2010-03-17 Oliver Hunt <oliver@apple.com> | |
5783 | ||
5784 | Reviewed by Gavin Barraclough. | |
5785 | ||
5786 | undefined, NaN, and Infinity should be ReadOnly | |
5787 | https://bugs.webkit.org/show_bug.cgi?id=36263 | |
5788 | ||
5789 | Simply add the ReadOnly flag to these properties. | |
5790 | ||
5791 | * runtime/JSGlobalObject.cpp: | |
5792 | (JSC::JSGlobalObject::reset): | |
5793 | ||
5794 | 2010-03-17 Darin Adler <darin@apple.com> | |
5795 | ||
5796 | Reviewed by Oliver Hunt. | |
5797 | ||
5798 | Speed up Math.round a little by removing unneeded special case | |
5799 | https://bugs.webkit.org/show_bug.cgi?id=36107 | |
5800 | ||
5801 | Test: fast/js/math.html | |
5802 | ||
5803 | * runtime/MathObject.cpp: | |
5804 | (JSC::mathProtoFuncRound): This function had a special case for numbers | |
5805 | between -0.5 and -0.0 to return -0.0. But the algorithm in the function | |
5806 | already yields -0.0 for those cases, so the extra checking and branching | |
5807 | is unneeded. | |
5808 | ||
5809 | 2010-03-17 Mike Homey <glandium@debian.org> | |
5810 | ||
5811 | Reviewed by Gustavo Noronha. | |
5812 | ||
5813 | Build fix for SPARC. Fix missing macro value. | |
5814 | ||
5815 | * wtf/Platform.h: | |
5816 | ||
5817 | 2010-03-16 Gavin Barraclough <barraclough@apple.com> | |
5818 | ||
5819 | Reviewed by Oliver Hunt, Darin Adler. | |
5820 | ||
5821 | Bug 36083 - REGRESSION (r55772-r55834): Crash in JavaScriptCore RegExp code on PowerPC | |
5822 | ||
5823 | The problem is a bug in our port of PCRE - that a read may take place from the first character in an | |
5824 | empty string. For the time being, revert to using a valid pointer in the data segment rather than | |
5825 | an invalid non-null pointer into the zero-page for the empty string's data pointer. A better fix for | |
5826 | this will be to remove PCRE. | |
5827 | ||
5828 | * runtime/UStringImpl.cpp: | |
5829 | (JSC::UStringImpl::empty): | |
5830 | ||
5831 | 2010-03-16 Darin Adler <darin@apple.com> | |
5832 | ||
5833 | Rolled out r56081 since it broke the Windows build. | |
5834 | ||
5835 | 2010-03-16 Zoltan Horvath <zoltan@webkit.org> | |
5836 | ||
5837 | Reviewed by Darin Adler. | |
5838 | ||
5839 | Remove extra <new> include and add guards to operator new/delete definitions | |
5840 | https://bugs.webkit.org/show_bug.cgi?id=35967 | |
5841 | ||
5842 | Remove extra <new> header include from FastAlloc.cpp since it is included in | |
5843 | FastAlloc.h. Add ENABLE(GLOBAL_FASTMALLOC_NEW) macro guard to operator | |
5844 | new/delete/new []/delete [] definitions. | |
5845 | ||
5846 | * wtf/FastMalloc.cpp: | |
5847 | ||
5848 | 2010-03-15 Kwang Yul Seo <skyul@company100.net> | |
5849 | ||
5850 | Reviewed by Eric Seidel. | |
5851 | ||
5852 | [BREWMP] Add a function to create a BREW instance without local variable declarations. | |
5853 | https://bugs.webkit.org/show_bug.cgi?id=34705 | |
5854 | ||
5855 | Add a template function to create a BREW instance in one line. | |
5856 | ||
5857 | * wtf/brew/ShellBrew.h: Added. | |
5858 | (WTF::createInstance): | |
5859 | ||
5860 | 2010-03-15 Geoffrey Garen <ggaren@apple.com> | |
5861 | ||
5862 | Not reviewed. | |
5863 | ||
5864 | Removed a now-incorrect comment I forgot to remove in my last check-in. | |
5865 | ||
5866 | * wtf/FastMalloc.cpp: | |
5867 | (WTF::TCMalloc_PageHeap::scavenge): | |
5868 | ||
5869 | 2010-03-15 Geoffrey Garen <ggaren@apple.com> | |
5870 | ||
5871 | Reviewed by Sam Weinig. | |
5872 | ||
5873 | Fixed a portion of: | |
5874 | <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676 | |
5875 | Safari 4 does not release memory back to the operating system fast enough (28676) | |
5876 | ||
5877 | Every few seconds, release a percentage of the minimum unused page count | |
5878 | during that time period. | |
5879 | ||
5880 | SunSpider reports no change, command-line or in-browser, Mac or Windows. | |
5881 | ||
5882 | * wtf/FastMalloc.cpp: | |
5883 | (WTF::TCMalloc_PageHeap::init): | |
5884 | (WTF::TCMalloc_PageHeap::signalScavenger): | |
5885 | (WTF::TCMalloc_PageHeap::initializeScavenger): Renamed shouldContinueScavenging | |
5886 | to shouldScavenge, since scavenging is no longer something that we interrupt. | |
5887 | ||
5888 | (WTF::TCMalloc_PageHeap::scavenge): The new scavenging algorithm. Fixes | |
5889 | a bug where the old code would release only one item from each size class | |
5890 | per scavenge, potentially leaving large numbers of large-sized objects | |
5891 | unreleased for a long time. | |
5892 | ||
5893 | (WTF::TCMalloc_PageHeap::shouldScavenge): | |
5894 | (WTF::TCMalloc_PageHeap::New): | |
5895 | (WTF::TCMalloc_PageHeap::AllocLarge): | |
5896 | (WTF::TCMalloc_PageHeap::Delete): | |
5897 | (WTF::TCMalloc_PageHeap::GrowHeap): | |
5898 | (WTF::TCMalloc_PageHeap::scavengerThread): | |
5899 | (WTF::TCMalloc_PageHeap::periodicScavenge): Updated to track the minimum | |
5900 | value of free_committed_pages_ during a given scavenge period. | |
5901 | ||
5902 | 2010-03-15 Gavin Barraclough <barraclough@apple.com> | |
5903 | ||
5904 | Reviewed by Sam Weinig. | |
5905 | ||
5906 | https://bugs.webkit.org/show_bug.cgi?id=35843 | |
5907 | Re-land reverted fix to JSString::getIndex() | |
5908 | ||
5909 | Calling getIndex() on a JSString in rope form may result in a JSException being thrown | |
5910 | if there is insuficient memory so value(exec) returns UString() with length zero, | |
5911 | which will be passed to jsSingleCharacterSubstring. | |
5912 | Add a slow case function to trap the error & return a safe null value, until the | |
5913 | exception is handled. | |
5914 | ||
5915 | * runtime/JSString.cpp: | |
5916 | (JSC::JSString::getIndexSlowCase): | |
5917 | (JSC::JSString::getStringPropertyDescriptor): | |
5918 | * runtime/JSString.h: | |
5919 | (JSC::jsSingleCharacterSubstring): | |
5920 | (JSC::JSString::getIndex): | |
5921 | (JSC::jsSingleCharacterString): | |
5922 | (JSC::JSString::getStringPropertySlot): | |
5923 | ||
5924 | 2010-03-04 Kenneth Rohde Christiansen <kenneth@webkit.org> | |
5925 | ||
5926 | Reviewed by Adam Roben. | |
5927 | ||
5928 | Add a long long version of abs() for MSVC. | |
5929 | ||
5930 | * wtf/MathExtras.h: | |
5931 | (abs): | |
5932 | ||
5933 | 2010-03-15 Gabor Loki <loki@webkit.org> | |
5934 | ||
5935 | Reviewed by Gavin Barraclough. | |
5936 | ||
5937 | Combine ctiTrampolines on ARM and Thumb-2 | |
5938 | https://bugs.webkit.org/show_bug.cgi?id=36014 | |
5939 | ||
5940 | * jit/JITStubs.cpp: | |
5941 | (JSC::JITThunks::JITThunks): | |
5942 | ||
5943 | 2010-03-12 Gavin Barraclough <barraclough@apple.com> | |
5944 | ||
5945 | Reviewed by NOBODY (build fix). | |
5946 | ||
5947 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
5948 | ||
5949 | 2010-03-12 Gavin Barraclough <barraclough@apple.com> | |
5950 | ||
5951 | Reviewed by NOBODY (build fix). | |
5952 | ||
5953 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
5954 | ||
5955 | 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
5956 | ||
5957 | Reviewed by Oliver Hunt. | |
5958 | ||
5959 | Bug 36075 - Clean up screwyness re static string impls & Identifiers. | |
5960 | ||
5961 | * API/JSClassRef.cpp: | |
5962 | (OpaqueJSClass::~OpaqueJSClass): Classname may be null/empty, and these are an identifer. This is okay, since the null/empty strings are shared across all threads. | |
5963 | * JavaScriptCore.exp: | |
5964 | * runtime/Identifier.cpp: | |
5965 | (JSC::Identifier::add): No need to explicitly hash null reps, this is done in the ststic UStringImpl constructor. | |
5966 | (JSC::Identifier::addSlowCase): UStringImpl::empty() handled & checkCurrentIdentifierTable now called in the header. | |
5967 | (JSC::Identifier::checkCurrentIdentifierTable): Replaces checkSameIdentifierTable (this no longer checked the rep since the identifierTable pointer was removed from UString::Rep long ago). | |
5968 | * runtime/Identifier.h: | |
5969 | (JSC::Identifier::add): Replace call to checkSameIdentifierTable with call to checkCurrentIdentifierTable at head of function. | |
5970 | * runtime/UStringImpl.cpp: | |
5971 | (JSC::UStringImpl::~UStringImpl): Remove call to checkConsistency - this function no longer checks anything interesting. | |
5972 | * runtime/UStringImpl.h: | |
5973 | (JSC::UStringOrRopeImpl::UStringOrRopeImpl): Set s_refCountFlagIsIdentifier in static constructor. | |
5974 | (JSC::UStringImpl::UStringImpl): remove calls to checkConsistency (see above), add new ASSERT to substring constructor. | |
5975 | (JSC::UStringImpl::setHash): ASSERT not static (static strings set the hash in their constructor, should not reach this code path). | |
5976 | (JSC::UStringImpl::create): Add missing ASSERT. | |
5977 | (JSC::UStringImpl::setIsIdentifier): ASSERT !isStatic() (static strings hash set in constructor). | |
5978 | ||
5979 | 2010-03-12 Peter Varga <pvarga@inf.u-szeged.hu> | |
5980 | ||
5981 | Reviewed by David Levin. | |
5982 | ||
5983 | Two functions tryConsumeCharacter() and tryConsumeCharacterClass() are | |
5984 | removed from yarr/RegexInterpreter.cpp because they are never called. | |
5985 | ||
5986 | * yarr/RegexInterpreter.cpp: | |
5987 | ||
5988 | 2010-03-11 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
5989 | ||
5990 | Reviewed by Simon Hausmann. | |
5991 | ||
5992 | The JSNative state was renamed to JSPrimitive. The new name better | |
5993 | coresponds to the ECMAScript standard. | |
5994 | ||
5995 | Enum QScriptValuePrivate::States was renamed to State to obey Qt | |
5996 | coding style rules ("States" name suggests that a state could | |
5997 | mixed together with an other state using bitwise logic operators. | |
5998 | ||
5999 | [Qt] QScriptValuePrivate::States has naming issues | |
6000 | https://bugs.webkit.org/show_bug.cgi?id=35968 | |
6001 | ||
6002 | * qt/api/qscriptvalue_p.h: | |
6003 | (QScriptValuePrivate::): | |
6004 | (QScriptValuePrivate::QScriptValuePrivate): | |
6005 | (QScriptValuePrivate::isBool): | |
6006 | (QScriptValuePrivate::isNumber): | |
6007 | (QScriptValuePrivate::isNull): | |
6008 | (QScriptValuePrivate::isString): | |
6009 | (QScriptValuePrivate::isUndefined): | |
6010 | (QScriptValuePrivate::toString): | |
6011 | (QScriptValuePrivate::toNumber): | |
6012 | (QScriptValuePrivate::toBool): | |
6013 | (QScriptValuePrivate::assignEngine): | |
6014 | (QScriptValuePrivate::refinedJSValue): | |
6015 | ||
6016 | 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
6017 | ||
6018 | Reviewed by NOBODY (Windows build fix). | |
6019 | ||
6020 | Add export. | |
6021 | ||
6022 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
6023 | ||
6024 | 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
6025 | ||
6026 | Reviewed by NOBODY (Windows build fix). | |
6027 | ||
6028 | Add export. | |
6029 | ||
6030 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
6031 | ||
6032 | 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
6033 | ||
6034 | Rubber stamped by Oliver Hunt. | |
6035 | ||
6036 | Remove nonsense comments used in development & commited in error. | |
6037 | ||
6038 | * runtime/UStringImpl.h: | |
6039 | ||
6040 | 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
6041 | ||
6042 | Reviewed by NOBODY (Windows build fix). | |
6043 | ||
6044 | Remove export. | |
6045 | ||
6046 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
6047 | ||
6048 | 2010-03-11 Gavin Barraclough <barraclough@apple.com> | |
6049 | ||
6050 | Reviewed by Oliver Hunt. | |
6051 | ||
6052 | https://bugs.webkit.org/show_bug.cgi?id=36041 | |
6053 | Remove unnecessary differences in common code between WebCore::StringImpl & JSC::UStringImpl | |
6054 | ||
6055 | Much of the code in WebCore::StringImpl and JSC::UStringImpl is now very similar, | |
6056 | but has trivial and unnecessary formatting differences, such as the exact wording | |
6057 | of comments, missing ASSERTs, functions implemented in the .h vs .cpp etc. | |
6058 | ||
6059 | * runtime/Identifier.cpp: | |
6060 | (JSC::Identifier::add): UStringImpl::empty() now automatically hashes, uas per WebCore strings. | |
6061 | (JSC::Identifier::addSlowCase): UStringImpl::empty() now automatically hashes, uas per WebCore strings. | |
6062 | * runtime/UStringImpl.cpp: | |
6063 | (JSC::UStringImpl::~UStringImpl): Only call bufferOwnership() once, add missing ASSERTs. | |
6064 | (JSC::UStringImpl::createUninitialized): Move from .h, not commonly called, no need to inline. | |
6065 | (JSC::UStringImpl::create): Move from .h, not commonly called, no need to inline. | |
6066 | (JSC::UStringImpl::sharedBuffer): Rewritten to more closely match WebCore implementation, remove need for separate baseSharedBuffer() method. | |
6067 | * runtime/UStringImpl.h: | |
6068 | (JSC::UStringImpl::UStringImpl): Automatically hash static strings, ASSERT m_data & m_length are non-null/non-zero in non-static strings. | |
6069 | (JSC::UStringImpl::setHash): Add missing ASSERT. | |
6070 | (JSC::UStringImpl::create): Moved to .cpp / added missing check for empty string creation. | |
6071 | (JSC::UStringImpl::adopt): Vector.size() returns size_t, not unsigned. | |
6072 | (JSC::UStringImpl::cost): Renamed m_bufferSubstring -> m_substringBuffer | |
6073 | (JSC::UStringImpl::hash): Reordered in file. | |
6074 | (JSC::UStringImpl::existingHash): Reordered in file. | |
6075 | (JSC::UStringImpl::computeHash): Reordered in file, renamed parameter. | |
6076 | (JSC::UStringImpl::checkConsistency): rewrote ASSERT. | |
6077 | (JSC::UStringImpl::bufferOwnership): Return type should be BufferOwnership. | |
6078 | (JSC::UStringImpl::): Moved friends to head of class. | |
6079 | ||
6080 | 2010-03-11 Mark Rowe <mrowe@apple.com> | |
6081 | ||
6082 | Reviewed by David Kilzer. | |
6083 | ||
6084 | <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version | |
6085 | ||
6086 | Default to using the appropriate SDK if the target Mac OS X version is not the current Mac OS X version. | |
6087 | ||
6088 | * Configurations/Base.xcconfig: | |
6089 | ||
6090 | 2010-03-11 Mark Rowe <mrowe@apple.com> | |
6091 | ||
6092 | Reviewed by Tim Hatcher. | |
6093 | ||
6094 | <rdar://problem/7745082> Make it possible to build WebKit for older Mac OS X versions from the current Mac OS X version | |
6095 | ||
6096 | Introduce TARGET_MAC_OS_X_VERSION_MAJOR to represent the Mac OS X version that is being targeted. It defaults to the | |
6097 | current Mac OS X version unless otherwise specified. | |
6098 | ||
6099 | Key off TARGET_MAC_OS_X_VERSION_MAJOR where we'd previously been keying off MAC_OS_X_VERSION_MAJOR. | |
6100 | ||
6101 | Explicitly map from the target Mac OS X version to the preferred compiler since Xcode's default compiler choice | |
6102 | may not be usable when targetting a different Mac OS X version. | |
6103 | ||
6104 | Key off TARGET_GCC_VERSION rather than MAC_OS_X_VERSION_MAJOR in locations where we'd previously been keying off | |
6105 | MAC_OS_X_VERSION_MAJOR but the decision is really related to the compiler version being used. | |
6106 | ||
6107 | * Configurations/Base.xcconfig: | |
6108 | * Configurations/DebugRelease.xcconfig: | |
6109 | * Configurations/FeatureDefines.xcconfig: | |
6110 | * Configurations/JavaScriptCore.xcconfig: | |
6111 | * Configurations/Version.xcconfig: | |
6112 | ||
6113 | 2010-03-11 Simon Fraser <simon.fraser@apple.com> | |
6114 | ||
6115 | Reviewed by Mark Rowe. | |
6116 | ||
6117 | Sort the project file. | |
6118 | ||
6119 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
6120 | ||
6121 | 2010-03-11 Simon Fraser <simon.fraser@apple.com> | |
6122 | ||
6123 | Reviewed by Mark Rowe. | |
6124 | ||
6125 | Sort the project file . | |
6126 | ||
6127 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
6128 | ||
6129 | 2010-03-11 Gabor Loki <loki@webkit.org> | |
6130 | ||
6131 | Reviewed by Gavin Barraclough. | |
6132 | ||
6133 | Buildfix for Thumb-2 after r55684. Add branch8 and branchTest8 functions. | |
6134 | https://bugs.webkit.org/show_bug.cgi?id=35892 | |
6135 | ||
6136 | * assembler/ARMv7Assembler.h: | |
6137 | (JSC::ARMv7Assembler::): | |
6138 | (JSC::ARMv7Assembler::ldrb): | |
6139 | * assembler/MacroAssemblerARMv7.h: | |
6140 | (JSC::MacroAssemblerARMv7::load8): | |
6141 | (JSC::MacroAssemblerARMv7::branch8): | |
6142 | (JSC::MacroAssemblerARMv7::branchTest8): | |
6143 | (JSC::MacroAssemblerARMv7::setTest8): | |
6144 | ||
6145 | 2010-03-10 Gavin Barraclough <barraclough@apple.com> | |
6146 | ||
6147 | Rubber stamped by Oliver Hunt. | |
6148 | ||
6149 | Rename JSC::UStringImpl::data() to characters(), to match WebCore::StringImpl. | |
6150 | ||
6151 | * API/JSClassRef.cpp: | |
6152 | (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
6153 | * bytecompiler/BytecodeGenerator.cpp: | |
6154 | (JSC::keyForCharacterSwitch): | |
6155 | * bytecompiler/NodesCodegen.cpp: | |
6156 | (JSC::processClauseList): | |
6157 | * interpreter/Interpreter.cpp: | |
6158 | (JSC::Interpreter::privateExecute): | |
6159 | * jit/JITStubs.cpp: | |
6160 | (JSC::DEFINE_STUB_FUNCTION): | |
6161 | * runtime/ArrayPrototype.cpp: | |
6162 | (JSC::arrayProtoFuncToString): | |
6163 | * runtime/Identifier.cpp: | |
6164 | (JSC::Identifier::equal): | |
6165 | (JSC::Identifier::addSlowCase): | |
6166 | * runtime/JSString.cpp: | |
6167 | (JSC::JSString::resolveRope): | |
6168 | * runtime/UString.cpp: | |
6169 | (JSC::UString::toStrictUInt32): | |
6170 | (JSC::equal): | |
6171 | * runtime/UString.h: | |
6172 | (JSC::UString::data): | |
6173 | * runtime/UStringImpl.h: | |
6174 | (JSC::UStringImpl::characters): | |
6175 | (JSC::UStringImpl::hash): | |
6176 | (JSC::UStringImpl::setHash): | |
6177 | ||
6178 | 2010-03-10 Gavin Barraclough <barraclough@apple.com> | |
6179 | ||
6180 | Reviewed by Darin Adler, Geoffrey Garen, Maciej Stachowiak. | |
6181 | ||
6182 | https://bugs.webkit.org/show_bug.cgi?id=35991 | |
6183 | Would be faster to not use a thread specific to implement StringImpl::empty() | |
6184 | ||
6185 | Change JSC::UStringImpl's implementation of empty() match to match StringImpl's new implementation | |
6186 | (use a static defined within the empty() method), and change the interface to match too (return | |
6187 | a pointer not a reference). | |
6188 | ||
6189 | ~0% performance impact (possible minor progression from moving empty() from .h to .cpp). | |
6190 | ||
6191 | * JavaScriptCore.exp: | |
6192 | * runtime/Identifier.cpp: | |
6193 | (JSC::Identifier::add): | |
6194 | (JSC::Identifier::addSlowCase): | |
6195 | * runtime/PropertyNameArray.cpp: | |
6196 | (JSC::PropertyNameArray::add): | |
6197 | * runtime/UString.cpp: | |
6198 | (JSC::initializeUString): | |
6199 | (JSC::UString::UString): | |
6200 | * runtime/UStringImpl.cpp: | |
6201 | (JSC::UStringImpl::empty): | |
6202 | (JSC::UStringImpl::create): | |
6203 | * runtime/UStringImpl.h: | |
6204 | (JSC::UStringImpl::adopt): | |
6205 | (JSC::UStringImpl::createUninitialized): | |
6206 | (JSC::UStringImpl::tryCreateUninitialized): | |
6207 | ||
6208 | 2010-03-10 Dmitry Titov <dimich@chromium.org> | |
6209 | ||
6210 | Not reviewed, fixing Snow Leopard build. | |
6211 | ||
6212 | * wtf/mac/MainThreadMac.mm: Forgot 'static' for a new local function. | |
6213 | (WTF::postTimer): | |
6214 | ||
6215 | 2010-03-10 Dmitry Titov <dimich@chromium.org> | |
6216 | ||
6217 | Reviewed by Darin Adler. | |
6218 | ||
6219 | Make Document::postTask to use a single queue of tasks, to fire them in order | |
6220 | https://bugs.webkit.org/show_bug.cgi?id=35943 | |
6221 | ||
6222 | The patch uses CFRunLoopTimer to schedule execution of tasks instead of performSelectorOnMainThread which apparently can starve other event sources. | |
6223 | The timer is used when the schedule request is coming on the main thread itself. This happens when the task is posted on the main thread or | |
6224 | when too many tasks are posted and the queue does 'stop and re-schedule' to make sure run loop has a chance to execute other events. | |
6225 | ||
6226 | * wtf/mac/MainThreadMac.mm: | |
6227 | (WTF::timerFired): | |
6228 | (WTF::postTimer): | |
6229 | (WTF::scheduleDispatchFunctionsOnMainThread): Use timer posted to the current RunLoop if scheduling the task execution while on the main thread. | |
6230 | ||
6231 | 2010-03-10 Geoffrey Garen <ggaren@apple.com> | |
6232 | ||
6233 | Windows build fix: added new symbol. | |
6234 | ||
6235 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
6236 | ||
6237 | 2010-03-10 Geoffrey Garen <ggaren@apple.com> | |
6238 | ||
6239 | Windows build fix: removed old symbol. | |
6240 | ||
6241 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
6242 | ||
6243 | 2010-03-09 Geoffrey Garen <ggaren@apple.com> | |
6244 | ||
6245 | Reviewed by Alexey Proskuryakov, Darin Adler, and Sam Weinig. | |
6246 | ||
6247 | Refactored fastCheckConsistency to match some review comments: | |
6248 | - renamed fastCheckConsistency to fastMallocSize, and changed ValueCheck | |
6249 | to ASSERT that a pointer's fastMallocSize is not 0. | |
6250 | - implemented a version of fastMallocSize for tcmalloc. | |
6251 | ||
6252 | Also moved some pre-existing code around to avoid a problem related to | |
6253 | mismatched #define/#undef of malloc/free in this source file. | |
6254 | ||
6255 | * JavaScriptCore.exp: | |
6256 | * wtf/FastMalloc.cpp: | |
6257 | (WTF::fastMallocSize): Renamed. Fixed indentation. | |
6258 | ||
6259 | (WTF::TCMalloc_PageHeap::scavenge): Removed an incorrect ASSERT that | |
6260 | got in the way of testing the tcmalloc implementation. (More information | |
6261 | on why this ASSERT is incorrect is in <rdar://problem/7165917>.) | |
6262 | ||
6263 | (WTF::TCMallocStats::fastMallocSize): Implemented for tcmalloc. | |
6264 | ||
6265 | * wtf/FastMalloc.h: Updated for rename. | |
6266 | ||
6267 | * wtf/ValueCheck.h: | |
6268 | (WTF::): Moved the ASSERT that used to be in fastCheckConsistency here. | |
6269 | ||
6270 | 2010-03-10 Kevin Ollivier <kevino@theolliviers.com> | |
6271 | ||
6272 | Reviewed by Eric Seidel. | |
6273 | ||
6274 | Make global new/delete operators configurable for all ports and disable it | |
6275 | for the wx port for now. | |
6276 | ||
6277 | * wtf/FastMalloc.h: | |
6278 | * wtf/Platform.h: | |
6279 | ||
6280 | 2010-03-09 Gavin Barraclough <barraclough@apple.com> | |
6281 | ||
6282 | Reviewed by NOBODY (reverting r54510). | |
6283 | ||
6284 | This caused a performance regression, by breaking the code | |
6285 | generator's logic to calculate the skip level for resolving | |
6286 | variables (traced by rdar:7683350) Reverting for now. | |
6287 | ||
6288 | * parser/Grammar.y: | |
6289 | * parser/NodeConstructors.h: | |
6290 | (JSC::ContinueNode::ContinueNode): | |
6291 | (JSC::BreakNode::BreakNode): | |
6292 | (JSC::ForInNode::ForInNode): | |
6293 | * runtime/CommonIdentifiers.cpp: | |
6294 | (JSC::CommonIdentifiers::CommonIdentifiers): | |
6295 | * runtime/CommonIdentifiers.h: | |
6296 | * runtime/FunctionPrototype.cpp: | |
6297 | (JSC::FunctionPrototype::FunctionPrototype): | |
6298 | * runtime/Identifier.cpp: | |
6299 | (JSC::Identifier::add): | |
6300 | * runtime/PropertyNameArray.cpp: | |
6301 | (JSC::PropertyNameArray::add): | |
6302 | ||
6303 | 2010-03-09 Geoffrey Garen <ggaren@apple.com> | |
6304 | ||
6305 | Reviewed by Darin Adler. | |
6306 | ||
6307 | Changed FastMalloc statistics reporting to be a bit clearer. We now | |
6308 | report: | |
6309 | - Reserved VM Bytes: the VM that has been mapped into the process. | |
6310 | - Committed VM Bytes: the subset of Reserved VM Bytes actually in use. | |
6311 | - Free List Bytes: the subset of Committed VM Bytes in a free list. | |
6312 | ||
6313 | * wtf/FastMalloc.cpp: | |
6314 | (WTF::fastMallocStatistics): | |
6315 | (WTF::TCMallocStats::fastMallocStatistics): Updated to report the statistics | |
6316 | above. Standardized use of "ifdef WTF_CHANGES". Added a SpinLockHolder | |
6317 | around all statistics gathering, since it reads from the page heap. | |
6318 | ||
6319 | * wtf/FastMalloc.h: Updated to report the statistics above. | |
6320 | ||
6321 | 2010-03-09 Gabor Loki <loki@webkit.org> | |
6322 | ||
6323 | Rubber-stamped by Maciej Stachowiak. | |
6324 | ||
6325 | Buildfix for ARM after r55684. Add branch8 and branchTest8 functions. | |
6326 | https://bugs.webkit.org/show_bug.cgi?id=35892 | |
6327 | ||
6328 | * assembler/ARMAssembler.cpp: | |
6329 | (JSC::ARMAssembler::dataTransfer32): | |
6330 | * assembler/ARMAssembler.h: | |
6331 | (JSC::ARMAssembler::): | |
6332 | * assembler/MacroAssemblerARM.h: | |
6333 | (JSC::MacroAssemblerARM::load8): | |
6334 | (JSC::MacroAssemblerARM::branch8): | |
6335 | (JSC::MacroAssemblerARM::branchTest8): | |
6336 | ||
6337 | 2010-03-08 Geoffrey Garen <ggaren@apple.com> | |
6338 | ||
6339 | Windows build fix: 'P' is not a type. Luckily, 'void' is. | |
6340 | ||
6341 | * wtf/FastMalloc.cpp: | |
6342 | (WTF::fastCheckConsistency): | |
6343 | ||
6344 | 2010-03-08 Geoffrey Garen <ggaren@apple.com> | |
6345 | ||
6346 | Windows build fix: export a new symbol. | |
6347 | ||
6348 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
6349 | ||
6350 | 2010-03-08 Geoffrey Garen <ggaren@apple.com> | |
6351 | ||
6352 | Reviewed by Maciej Stachowiak. | |
6353 | ||
6354 | Switching malloc implementations requires a world rebuild | |
6355 | https://bugs.webkit.org/show_bug.cgi?id=35899 | |
6356 | ||
6357 | * wtf/FastMalloc.cpp: | |
6358 | (WTF::fastCheckConsistency): | |
6359 | (WTF::TCMallocStats::fastCheckConsistency): | |
6360 | * wtf/FastMalloc.h: | |
6361 | * wtf/ValueCheck.h: | |
6362 | (WTF::): Moved pointer checking into a helper function in FastMalloc.cpp, | |
6363 | so you can switch malloc implementations without rebuilding the world. | |
6364 | ||
6365 | 2010-03-07 Oliver Hunt <oliver@apple.com> | |
6366 | ||
6367 | Reviewed by Darin Adler. | |
6368 | ||
6369 | TypeInfo is unnecessarily large | |
6370 | https://bugs.webkit.org/show_bug.cgi?id=35850 | |
6371 | ||
6372 | Reduce the size of the type and flags members to a single | |
6373 | byte each, reducing the size of Structure by 8 bytes. | |
6374 | ||
6375 | * assembler/MacroAssemblerX86Common.h: | |
6376 | (JSC::MacroAssemblerX86Common::branch8): | |
6377 | (JSC::MacroAssemblerX86Common::branchTest8): | |
6378 | (JSC::MacroAssemblerX86Common::setTest8): | |
6379 | Add single byte branches, and correct setTest8 to do a | |
6380 | single byte read from memory, and actually store the result | |
6381 | * assembler/X86Assembler.h: | |
6382 | (JSC::X86Assembler::): | |
6383 | (JSC::X86Assembler::cmpb_im): | |
6384 | (JSC::X86Assembler::testb_im): | |
6385 | * jit/JITCall.cpp: | |
6386 | (JSC::JIT::emit_op_construct_verify): | |
6387 | * jit/JITOpcodes.cpp: | |
6388 | (JSC::JIT::emit_op_instanceof): | |
6389 | (JSC::JIT::emit_op_jeq_null): | |
6390 | (JSC::JIT::emit_op_jneq_null): | |
6391 | (JSC::JIT::emit_op_get_pnames): | |
6392 | (JSC::JIT::emit_op_convert_this): | |
6393 | (JSC::JIT::emit_op_construct_verify): | |
6394 | (JSC::JIT::emit_op_to_jsnumber): | |
6395 | (JSC::JIT::emit_op_eq_null): | |
6396 | (JSC::JIT::emit_op_neq_null): | |
6397 | * runtime/JSTypeInfo.h: | |
6398 | (JSC::TypeInfo::TypeInfo): | |
6399 | (JSC::TypeInfo::type): | |
6400 | ||
6401 | 2010-03-08 Gavin Barraclough <barraclough@apple.com> | |
6402 | ||
6403 | Reviewed by NOBODY (reverting regression). | |
6404 | ||
6405 | Reverting 55035, this caused a regression. | |
6406 | (https://bugs.webkit.org/show_bug.cgi?id=35843) | |
6407 | ||
6408 | * runtime/JSString.cpp: | |
6409 | (JSC::JSString::resolveRope): | |
6410 | (JSC::JSString::getStringPropertyDescriptor): | |
6411 | * runtime/JSString.h: | |
6412 | (JSC::jsSingleCharacterSubstring): | |
6413 | (JSC::JSString::getIndex): | |
6414 | (JSC::JSString::getStringPropertySlot): | |
6415 | * runtime/UStringImpl.cpp: | |
6416 | * runtime/UStringImpl.h: | |
6417 | ||
6418 | 2010-03-08 Stuart Morgan <stuartmorgan@chromium.org> | |
6419 | ||
6420 | Reviewed by Darin Adler. | |
6421 | ||
6422 | Added a new USE definition for secure text mode on the Mac. | |
6423 | https://bugs.webkit.org/show_bug.cgi?id=31265 | |
6424 | ||
6425 | * wtf/Platform.h: | |
6426 | ||
6427 | 2010-03-08 Jian Li <jianli@chromium.org> | |
6428 | ||
6429 | Reviewed by Dmitry Titov. | |
6430 | ||
6431 | Blob.slice support. | |
6432 | https://bugs.webkit.org/show_bug.cgi?id=32993 | |
6433 | ||
6434 | Add ENABLE_BLOB_SLICE feature define. | |
6435 | Also fix a problem that JSValue.toInteger is not exposed on Windows. | |
6436 | ||
6437 | * Configurations/FeatureDefines.xcconfig: | |
6438 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
6439 | ||
6440 | 2010-03-07 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
6441 | ||
6442 | Reviewed by Simon Hausmann. | |
6443 | ||
6444 | Small performance fix in the QScriptConverter::toString(). | |
6445 | ||
6446 | The QByteArray was replaced by the QVarLengthArray which doesn't | |
6447 | have to allocate any memory on heap. | |
6448 | ||
6449 | [Qt] QScriptConverter::toString() should use QVarLengthArray instead of QByteArray | |
6450 | https://bugs.webkit.org/show_bug.cgi?id=35577 | |
6451 | ||
6452 | * qt/api/qscriptconverter_p.h: | |
6453 | (QScriptConverter::toString): | |
6454 | ||
6455 | 2010-03-06 Mark Rowe <mrowe@apple.com> | |
6456 | ||
6457 | Rubber-stamped by Sam Weinig. | |
6458 | ||
6459 | Remove unnecessary includes of wtf/Platform.h. This is already pulled in by config.h. | |
6460 | ||
6461 | * API/APICast.h: | |
6462 | * API/JSCallbackFunction.cpp: | |
6463 | * API/JSContextRef.cpp: | |
6464 | * API/JSObjectRef.cpp: | |
6465 | * API/JSValueRef.cpp: | |
6466 | * assembler/ARMAssembler.h: | |
6467 | * assembler/ARMv7Assembler.h: | |
6468 | * assembler/AbstractMacroAssembler.h: | |
6469 | * assembler/AssemblerBuffer.h: | |
6470 | * assembler/AssemblerBufferWithConstantPool.h: | |
6471 | * assembler/CodeLocation.h: | |
6472 | * assembler/LinkBuffer.h: | |
6473 | * assembler/MIPSAssembler.h: | |
6474 | * assembler/MacroAssembler.h: | |
6475 | * assembler/MacroAssemblerARM.h: | |
6476 | * assembler/MacroAssemblerARMv7.h: | |
6477 | * assembler/MacroAssemblerCodeRef.h: | |
6478 | * assembler/MacroAssemblerMIPS.h: | |
6479 | * assembler/MacroAssemblerX86.h: | |
6480 | * assembler/MacroAssemblerX86Common.h: | |
6481 | * assembler/MacroAssemblerX86_64.h: | |
6482 | * assembler/RepatchBuffer.h: | |
6483 | * assembler/X86Assembler.h: | |
6484 | * jit/JIT.h: | |
6485 | * jit/JITCode.h: | |
6486 | * jit/JITInlineMethods.h: | |
6487 | * jit/JITStubs.h: | |
6488 | * os-win32/stdint.h: | |
6489 | * runtime/JSAPIValueWrapper.h: | |
6490 | * runtime/JSImmediate.h: | |
6491 | * wtf/ASCIICType.h: | |
6492 | * wtf/StdLibExtras.h: | |
6493 | * wtf/VMTags.h: | |
6494 | * yarr/RegexCompiler.h: | |
6495 | * yarr/RegexInterpreter.h: | |
6496 | * yarr/RegexJIT.h: | |
6497 | * yarr/RegexParser.h: | |
6498 | * yarr/RegexPattern.h: | |
6499 | ||
6500 | 2010-03-06 Kwang Yul Seo <skyul@company100.net> | |
6501 | ||
6502 | Reviewed by Eric Seidel. | |
6503 | ||
6504 | [BREWMP] Share OwnPtr. | |
6505 | https://bugs.webkit.org/show_bug.cgi?id=35776 | |
6506 | ||
6507 | Share OwnPtr implementation with BREW MP and remove OwnPtrBrew. | |
6508 | ||
6509 | * wtf/OwnPtrBrew.cpp: Added. | |
6510 | (WTF::deleteOwnedPtr): | |
6511 | * wtf/OwnPtrCommon.h: | |
6512 | * wtf/brew/OwnPtrBrew.cpp: Removed. | |
6513 | * wtf/brew/OwnPtrBrew.h: Removed. | |
6514 | ||
6515 | 2010-03-06 Patrick Gansterer <paroga@paroga.com> | |
6516 | ||
6517 | Reviewed by Eric Seidel. | |
6518 | ||
6519 | Implemented JIT_OPTIMIZE_NATIVE_CALL for WinCE | |
6520 | https://bugs.webkit.org/show_bug.cgi?id=33426 | |
6521 | ||
6522 | * jit/JITOpcodes.cpp: | |
6523 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
6524 | ||
6525 | 2010-03-05 Oliver Hunt <oliver@apple.com> | |
6526 | ||
6527 | Reviewed by NOBODY (build fix). | |
6528 | ||
6529 | Add enw exports to windows | |
6530 | ||
6531 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
6532 | ||
6533 | 2010-03-05 Oliver Hunt <oliver@apple.com> | |
6534 | ||
6535 | Reviewed by Gavin Barraclough. | |
6536 | ||
6537 | JSC should cache int to Identifier conversion as it does for ordinary strings | |
6538 | https://bugs.webkit.org/show_bug.cgi?id=35814 | |
6539 | ||
6540 | Make the NumericStrings cache cache unsigned ints in addition to signed. | |
6541 | We keep them separate from the int cache as it both simplifies code, and | |
6542 | also because the unsigned path is exclusive to property access and therefore | |
6543 | seems to have different usage patterns. | |
6544 | ||
6545 | The primary trigger for the unsigned to Identifier propertyName conversion | |
6546 | is the construction of array-like objects out of normal objects. Given these | |
6547 | tend to be relative small numbers, and the array-like behaviour lends itself | |
6548 | to sequential values this patch also adds a non-colliding cache for all small | |
6549 | numbers. | |
6550 | ||
6551 | * JavaScriptCore.exp: | |
6552 | * runtime/Identifier.cpp: | |
6553 | (JSC::Identifier::from): | |
6554 | * runtime/Identifier.h: | |
6555 | * runtime/NumericStrings.h: | |
6556 | (JSC::NumericStrings::add): | |
6557 | (JSC::NumericStrings::lookup): | |
6558 | (JSC::NumericStrings::lookupSmallString): | |
6559 | ||
6560 | 2010-03-03 Oliver Hunt <oliver@apple.com> | |
6561 | ||
6562 | Reviewed by Gavin Barraclough. | |
6563 | ||
6564 | Allow static property getters to interact with JSCs caching | |
6565 | https://bugs.webkit.org/show_bug.cgi?id=35716 | |
6566 | ||
6567 | Add new opcodes for handling cached lookup of static value getters. | |
6568 | More or less the same as with JS getters, all that changes is that | |
6569 | instead of calling through a JSFunction we always know that we have | |
6570 | a C function to call. | |
6571 | ||
6572 | For the patching routines in the JIT we now need to pass a few | |
6573 | new parameters to allow us to pass enough information to the stub | |
6574 | function to allow us to call the C function correctly. Logically | |
6575 | this shouldn't actually be necessary as all of these functions ignore | |
6576 | the identifier, but removing the ident parameter would require | |
6577 | somewhat involved changes to the way we implement getOwnPropertySlot, | |
6578 | etc. | |
6579 | ||
6580 | * bytecode/CodeBlock.cpp: | |
6581 | (JSC::CodeBlock::dump): | |
6582 | (JSC::CodeBlock::derefStructures): | |
6583 | (JSC::CodeBlock::refStructures): | |
6584 | * bytecode/Instruction.h: | |
6585 | (JSC::Instruction::Instruction): | |
6586 | (JSC::Instruction::): | |
6587 | * bytecode/Opcode.h: | |
6588 | * interpreter/Interpreter.cpp: | |
6589 | (JSC::Interpreter::tryCacheGetByID): | |
6590 | (JSC::Interpreter::privateExecute): | |
6591 | * jit/JIT.cpp: | |
6592 | (JSC::JIT::privateCompileMainPass): | |
6593 | * jit/JIT.h: | |
6594 | (JSC::JIT::compileGetByIdProto): | |
6595 | (JSC::JIT::compileGetByIdSelfList): | |
6596 | (JSC::JIT::compileGetByIdProtoList): | |
6597 | (JSC::JIT::compileGetByIdChainList): | |
6598 | (JSC::JIT::compileGetByIdChain): | |
6599 | * jit/JITPropertyAccess.cpp: | |
6600 | (JSC::JIT::privateCompileGetByIdProto): | |
6601 | (JSC::JIT::privateCompileGetByIdSelfList): | |
6602 | (JSC::JIT::privateCompileGetByIdProtoList): | |
6603 | (JSC::JIT::privateCompileGetByIdChainList): | |
6604 | (JSC::JIT::privateCompileGetByIdChain): | |
6605 | * jit/JITPropertyAccess32_64.cpp: | |
6606 | (JSC::JIT::privateCompileGetByIdProto): | |
6607 | (JSC::JIT::privateCompileGetByIdSelfList): | |
6608 | (JSC::JIT::privateCompileGetByIdProtoList): | |
6609 | (JSC::JIT::privateCompileGetByIdChainList): | |
6610 | (JSC::JIT::privateCompileGetByIdChain): | |
6611 | * jit/JITStubs.cpp: | |
6612 | (JSC::JITThunks::tryCacheGetByID): | |
6613 | (JSC::DEFINE_STUB_FUNCTION): | |
6614 | * jit/JITStubs.h: | |
6615 | (JSC::): | |
6616 | * runtime/JSFunction.cpp: | |
6617 | (JSC::JSFunction::getOwnPropertySlot): | |
6618 | * runtime/Lookup.h: | |
6619 | (JSC::getStaticPropertySlot): | |
6620 | (JSC::getStaticValueSlot): | |
6621 | * runtime/PropertySlot.h: | |
6622 | (JSC::PropertySlot::): | |
6623 | (JSC::PropertySlot::PropertySlot): | |
6624 | (JSC::PropertySlot::cachedPropertyType): | |
6625 | (JSC::PropertySlot::isCacheable): | |
6626 | (JSC::PropertySlot::isCacheableValue): | |
6627 | (JSC::PropertySlot::setValueSlot): | |
6628 | (JSC::PropertySlot::setCacheableCustom): | |
6629 | (JSC::PropertySlot::setGetterSlot): | |
6630 | (JSC::PropertySlot::setCacheableGetterSlot): | |
6631 | (JSC::PropertySlot::clearOffset): | |
6632 | (JSC::PropertySlot::customGetter): | |
6633 | ||
6634 | 2010-03-04 Shinichiro Hamaji <hamaji@chromium.org> | |
6635 | ||
6636 | Unreviewed. Remove a non-ASCII character introduced in the following bug. | |
6637 | ||
6638 | put_by_id does will incorrectly cache writes where a specific value exists, where at the point of caching the same value is being written. | |
6639 | https://bugs.webkit.org/show_bug.cgi?id=35537 | |
6640 | ||
6641 | * runtime/JSObject.h: | |
6642 | (JSC::JSObject::putDirectInternal): | |
6643 | ||
6644 | 2010-03-04 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
6645 | ||
6646 | Reviewed by Tor Arne Vestbø. | |
6647 | ||
6648 | [Qt] Make the OUTPUT_DIR variable in qmake projects independent of build-webkit's logic. | |
6649 | ||
6650 | This also allows shadow builds relying only on qmake to work properly. | |
6651 | * jsc.pro: | |
6652 | * qt/api/QtScript.pro: | |
6653 | * qt/tests/qscriptengine/qscriptengine.pro: | |
6654 | * qt/tests/qscriptvalue/qscriptvalue.pro: | |
6655 | * qt/tests/tests.pri: | |
6656 | ||
6657 | 2010-03-03 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
6658 | ||
6659 | Reviewed by Simon Hausmann. | |
6660 | ||
6661 | QScriptValue::isObject fix. | |
6662 | ||
6663 | Fix broken internal state evaluation from JSValue to JSNative / JSObject. | |
6664 | New function was introduced which should take care about promoting | |
6665 | JSValue state inside QScriptValuePrivate. It should be used instead of a | |
6666 | direct JSC C API call. | |
6667 | ||
6668 | The bug exposed a weakness in autotest suite, as the QScriptValuePrivate | |
6669 | is based on state machine with lazy state evaluation, there is a possibility | |
6670 | that serial sequencial calls to the same public const function could return | |
6671 | different results. The patch fix the issue. | |
6672 | ||
6673 | [Qt] Sometimes QScriptValue::isObject returns an incorrect value | |
6674 | https://bugs.webkit.org/show_bug.cgi?id=35387 | |
6675 | ||
6676 | * qt/api/qscriptvalue_p.h: | |
6677 | (QScriptValuePrivate::isBool): | |
6678 | (QScriptValuePrivate::isNumber): | |
6679 | (QScriptValuePrivate::isNull): | |
6680 | (QScriptValuePrivate::isString): | |
6681 | (QScriptValuePrivate::isUndefined): | |
6682 | (QScriptValuePrivate::isError): | |
6683 | (QScriptValuePrivate::isObject): | |
6684 | (QScriptValuePrivate::isFunction): | |
6685 | (QScriptValuePrivate::call): | |
6686 | (QScriptValuePrivate::refineJSValue): | |
6687 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
6688 | (tst_QScriptValue::initScriptValues): | |
6689 | (tst_QScriptValue::isValid_makeData): | |
6690 | (tst_QScriptValue::isValid_test): | |
6691 | (tst_QScriptValue::isBool_makeData): | |
6692 | (tst_QScriptValue::isBool_test): | |
6693 | (tst_QScriptValue::isBoolean_makeData): | |
6694 | (tst_QScriptValue::isBoolean_test): | |
6695 | (tst_QScriptValue::isNumber_makeData): | |
6696 | (tst_QScriptValue::isNumber_test): | |
6697 | (tst_QScriptValue::isFunction_test): | |
6698 | (tst_QScriptValue::isNull_makeData): | |
6699 | (tst_QScriptValue::isNull_test): | |
6700 | (tst_QScriptValue::isString_makeData): | |
6701 | (tst_QScriptValue::isString_test): | |
6702 | (tst_QScriptValue::isUndefined_makeData): | |
6703 | (tst_QScriptValue::isUndefined_test): | |
6704 | (tst_QScriptValue::isObject_makeData): | |
6705 | (tst_QScriptValue::isObject_test): | |
6706 | (tst_QScriptValue::toString_makeData): | |
6707 | (tst_QScriptValue::toString_test): | |
6708 | (tst_QScriptValue::toNumber_makeData): | |
6709 | (tst_QScriptValue::toNumber_test): | |
6710 | (tst_QScriptValue::toBool_makeData): | |
6711 | (tst_QScriptValue::toBool_test): | |
6712 | (tst_QScriptValue::toBoolean_makeData): | |
6713 | (tst_QScriptValue::toBoolean_test): | |
6714 | (tst_QScriptValue::toInteger_makeData): | |
6715 | (tst_QScriptValue::toInteger_test): | |
6716 | (tst_QScriptValue::toInt32_makeData): | |
6717 | (tst_QScriptValue::toInt32_test): | |
6718 | (tst_QScriptValue::toUInt32_makeData): | |
6719 | (tst_QScriptValue::toUInt32_test): | |
6720 | (tst_QScriptValue::toUInt16_makeData): | |
6721 | (tst_QScriptValue::toUInt16_test): | |
6722 | ||
6723 | 2010-03-03 Chao-ying Fu <fu@mips.com> | |
6724 | ||
6725 | Reviewed by Gavin Barraclough. | |
6726 | ||
6727 | MIPS JIT Supports | |
6728 | https://bugs.webkit.org/show_bug.cgi?id=30144 | |
6729 | ||
6730 | The following changes enable MIPS YARR and YARR_JIT. | |
6731 | ||
6732 | * assembler/AbstractMacroAssembler.h: | |
6733 | (JSC::AbstractMacroAssembler::Imm32::Imm32): | |
6734 | * assembler/MIPSAssembler.h: Added. | |
6735 | (JSC::MIPSRegisters::): | |
6736 | (JSC::MIPSAssembler::MIPSAssembler): | |
6737 | (JSC::MIPSAssembler::): | |
6738 | (JSC::MIPSAssembler::JmpSrc::JmpSrc): | |
6739 | (JSC::MIPSAssembler::JmpDst::JmpDst): | |
6740 | (JSC::MIPSAssembler::JmpDst::isUsed): | |
6741 | (JSC::MIPSAssembler::JmpDst::used): | |
6742 | (JSC::MIPSAssembler::emitInst): | |
6743 | (JSC::MIPSAssembler::nop): | |
6744 | (JSC::MIPSAssembler::loadDelayNop): | |
6745 | (JSC::MIPSAssembler::copDelayNop): | |
6746 | (JSC::MIPSAssembler::move): | |
6747 | (JSC::MIPSAssembler::li): | |
6748 | (JSC::MIPSAssembler::lui): | |
6749 | (JSC::MIPSAssembler::addiu): | |
6750 | (JSC::MIPSAssembler::addu): | |
6751 | (JSC::MIPSAssembler::subu): | |
6752 | (JSC::MIPSAssembler::mult): | |
6753 | (JSC::MIPSAssembler::mfhi): | |
6754 | (JSC::MIPSAssembler::mflo): | |
6755 | (JSC::MIPSAssembler::mul): | |
6756 | (JSC::MIPSAssembler::andInsn): | |
6757 | (JSC::MIPSAssembler::andi): | |
6758 | (JSC::MIPSAssembler::nor): | |
6759 | (JSC::MIPSAssembler::orInsn): | |
6760 | (JSC::MIPSAssembler::ori): | |
6761 | (JSC::MIPSAssembler::xorInsn): | |
6762 | (JSC::MIPSAssembler::xori): | |
6763 | (JSC::MIPSAssembler::slt): | |
6764 | (JSC::MIPSAssembler::sltu): | |
6765 | (JSC::MIPSAssembler::sltiu): | |
6766 | (JSC::MIPSAssembler::sll): | |
6767 | (JSC::MIPSAssembler::sllv): | |
6768 | (JSC::MIPSAssembler::sra): | |
6769 | (JSC::MIPSAssembler::srav): | |
6770 | (JSC::MIPSAssembler::lw): | |
6771 | (JSC::MIPSAssembler::lwl): | |
6772 | (JSC::MIPSAssembler::lwr): | |
6773 | (JSC::MIPSAssembler::lhu): | |
6774 | (JSC::MIPSAssembler::sw): | |
6775 | (JSC::MIPSAssembler::jr): | |
6776 | (JSC::MIPSAssembler::jalr): | |
6777 | (JSC::MIPSAssembler::jal): | |
6778 | (JSC::MIPSAssembler::bkpt): | |
6779 | (JSC::MIPSAssembler::bgez): | |
6780 | (JSC::MIPSAssembler::bltz): | |
6781 | (JSC::MIPSAssembler::beq): | |
6782 | (JSC::MIPSAssembler::bne): | |
6783 | (JSC::MIPSAssembler::bc1t): | |
6784 | (JSC::MIPSAssembler::bc1f): | |
6785 | (JSC::MIPSAssembler::newJmpSrc): | |
6786 | (JSC::MIPSAssembler::appendJump): | |
6787 | (JSC::MIPSAssembler::addd): | |
6788 | (JSC::MIPSAssembler::subd): | |
6789 | (JSC::MIPSAssembler::muld): | |
6790 | (JSC::MIPSAssembler::lwc1): | |
6791 | (JSC::MIPSAssembler::ldc1): | |
6792 | (JSC::MIPSAssembler::swc1): | |
6793 | (JSC::MIPSAssembler::sdc1): | |
6794 | (JSC::MIPSAssembler::mtc1): | |
6795 | (JSC::MIPSAssembler::mfc1): | |
6796 | (JSC::MIPSAssembler::truncwd): | |
6797 | (JSC::MIPSAssembler::cvtdw): | |
6798 | (JSC::MIPSAssembler::ceqd): | |
6799 | (JSC::MIPSAssembler::cngtd): | |
6800 | (JSC::MIPSAssembler::cnged): | |
6801 | (JSC::MIPSAssembler::cltd): | |
6802 | (JSC::MIPSAssembler::cled): | |
6803 | (JSC::MIPSAssembler::cueqd): | |
6804 | (JSC::MIPSAssembler::coled): | |
6805 | (JSC::MIPSAssembler::coltd): | |
6806 | (JSC::MIPSAssembler::culed): | |
6807 | (JSC::MIPSAssembler::cultd): | |
6808 | (JSC::MIPSAssembler::label): | |
6809 | (JSC::MIPSAssembler::align): | |
6810 | (JSC::MIPSAssembler::getRelocatedAddress): | |
6811 | (JSC::MIPSAssembler::getDifferenceBetweenLabels): | |
6812 | (JSC::MIPSAssembler::size): | |
6813 | (JSC::MIPSAssembler::executableCopy): | |
6814 | (JSC::MIPSAssembler::getCallReturnOffset): | |
6815 | (JSC::MIPSAssembler::linkJump): | |
6816 | (JSC::MIPSAssembler::linkCall): | |
6817 | (JSC::MIPSAssembler::linkPointer): | |
6818 | (JSC::MIPSAssembler::relinkJump): | |
6819 | (JSC::MIPSAssembler::relinkCall): | |
6820 | (JSC::MIPSAssembler::repatchInt32): | |
6821 | (JSC::MIPSAssembler::repatchPointer): | |
6822 | (JSC::MIPSAssembler::repatchLoadPtrToLEA): | |
6823 | (JSC::MIPSAssembler::relocateJumps): | |
6824 | (JSC::MIPSAssembler::linkWithOffset): | |
6825 | (JSC::MIPSAssembler::linkCallInternal): | |
6826 | * assembler/MacroAssembler.h: | |
6827 | * assembler/MacroAssemblerMIPS.h: Added. | |
6828 | (JSC::MacroAssemblerMIPS::MacroAssemblerMIPS): | |
6829 | (JSC::MacroAssemblerMIPS::): | |
6830 | (JSC::MacroAssemblerMIPS::add32): | |
6831 | (JSC::MacroAssemblerMIPS::and32): | |
6832 | (JSC::MacroAssemblerMIPS::lshift32): | |
6833 | (JSC::MacroAssemblerMIPS::mul32): | |
6834 | (JSC::MacroAssemblerMIPS::not32): | |
6835 | (JSC::MacroAssemblerMIPS::or32): | |
6836 | (JSC::MacroAssemblerMIPS::rshift32): | |
6837 | (JSC::MacroAssemblerMIPS::sub32): | |
6838 | (JSC::MacroAssemblerMIPS::xor32): | |
6839 | (JSC::MacroAssemblerMIPS::load32): | |
6840 | (JSC::MacroAssemblerMIPS::load32WithUnalignedHalfWords): | |
6841 | (JSC::MacroAssemblerMIPS::load32WithAddressOffsetPatch): | |
6842 | (JSC::MacroAssemblerMIPS::loadPtrWithPatchToLEA): | |
6843 | (JSC::MacroAssemblerMIPS::loadPtrWithAddressOffsetPatch): | |
6844 | (JSC::MacroAssemblerMIPS::load16): | |
6845 | (JSC::MacroAssemblerMIPS::store32WithAddressOffsetPatch): | |
6846 | (JSC::MacroAssemblerMIPS::store32): | |
6847 | (JSC::MacroAssemblerMIPS::supportsFloatingPoint): | |
6848 | (JSC::MacroAssemblerMIPS::supportsFloatingPointTruncate): | |
6849 | (JSC::MacroAssemblerMIPS::pop): | |
6850 | (JSC::MacroAssemblerMIPS::push): | |
6851 | (JSC::MacroAssemblerMIPS::move): | |
6852 | (JSC::MacroAssemblerMIPS::swap): | |
6853 | (JSC::MacroAssemblerMIPS::signExtend32ToPtr): | |
6854 | (JSC::MacroAssemblerMIPS::zeroExtend32ToPtr): | |
6855 | (JSC::MacroAssemblerMIPS::branch32): | |
6856 | (JSC::MacroAssemblerMIPS::branch32WithUnalignedHalfWords): | |
6857 | (JSC::MacroAssemblerMIPS::branch16): | |
6858 | (JSC::MacroAssemblerMIPS::branchTest32): | |
6859 | (JSC::MacroAssemblerMIPS::jump): | |
6860 | (JSC::MacroAssemblerMIPS::branchAdd32): | |
6861 | (JSC::MacroAssemblerMIPS::branchMul32): | |
6862 | (JSC::MacroAssemblerMIPS::branchSub32): | |
6863 | (JSC::MacroAssemblerMIPS::breakpoint): | |
6864 | (JSC::MacroAssemblerMIPS::nearCall): | |
6865 | (JSC::MacroAssemblerMIPS::call): | |
6866 | (JSC::MacroAssemblerMIPS::ret): | |
6867 | (JSC::MacroAssemblerMIPS::set32): | |
6868 | (JSC::MacroAssemblerMIPS::setTest32): | |
6869 | (JSC::MacroAssemblerMIPS::moveWithPatch): | |
6870 | (JSC::MacroAssemblerMIPS::branchPtrWithPatch): | |
6871 | (JSC::MacroAssemblerMIPS::storePtrWithPatch): | |
6872 | (JSC::MacroAssemblerMIPS::tailRecursiveCall): | |
6873 | (JSC::MacroAssemblerMIPS::makeTailRecursiveCall): | |
6874 | (JSC::MacroAssemblerMIPS::loadDouble): | |
6875 | (JSC::MacroAssemblerMIPS::storeDouble): | |
6876 | (JSC::MacroAssemblerMIPS::addDouble): | |
6877 | (JSC::MacroAssemblerMIPS::subDouble): | |
6878 | (JSC::MacroAssemblerMIPS::mulDouble): | |
6879 | (JSC::MacroAssemblerMIPS::convertInt32ToDouble): | |
6880 | (JSC::MacroAssemblerMIPS::insertRelaxationWords): | |
6881 | (JSC::MacroAssemblerMIPS::branchTrue): | |
6882 | (JSC::MacroAssemblerMIPS::branchFalse): | |
6883 | (JSC::MacroAssemblerMIPS::branchEqual): | |
6884 | (JSC::MacroAssemblerMIPS::branchNotEqual): | |
6885 | (JSC::MacroAssemblerMIPS::branchDouble): | |
6886 | (JSC::MacroAssemblerMIPS::branchTruncateDoubleToInt32): | |
6887 | (JSC::MacroAssemblerMIPS::linkCall): | |
6888 | (JSC::MacroAssemblerMIPS::repatchCall): | |
6889 | * jit/ExecutableAllocator.h: | |
6890 | (JSC::ExecutableAllocator::cacheFlush): | |
6891 | * wtf/Platform.h: | |
6892 | * yarr/RegexJIT.cpp: | |
6893 | (JSC::Yarr::RegexGenerator::generateEnter): | |
6894 | (JSC::Yarr::RegexGenerator::generateReturn): | |
6895 | ||
6896 | 2010-03-03 Steve Falkenburg <sfalken@apple.com> | |
6897 | ||
6898 | Windows build fix. | |
6899 | ||
6900 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: | |
6901 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
6902 | ||
6903 | 2010-03-03 Steve Falkenburg <sfalken@apple.com> | |
6904 | ||
6905 | Windows build fix. | |
6906 | ||
6907 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: | |
6908 | ||
6909 | 2010-03-03 Mark Rowe <mrowe@apple.com> | |
6910 | ||
6911 | Reviewed by Geoff Garen. | |
6912 | ||
6913 | Add virtual memory tags for TCMalloc and WebCore's purgeable buffers. | |
6914 | ||
6915 | * wtf/TCSystemAlloc.cpp: | |
6916 | (TryMmap): Use the VM tag. | |
6917 | * wtf/VMTags.h: Make use of VM_MEMORY_TCMALLOC and VM_MEMORY_WEBCORE_PURGEABLE_BUFFERS. | |
6918 | ||
6919 | 2010-03-03 Steve Falkenburg <sfalken@apple.com> | |
6920 | ||
6921 | Rubber stamped by Adam Roben. | |
6922 | ||
6923 | Fix bogus xcopy that was polluting source tree at build time. | |
6924 | ||
6925 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
6926 | ||
6927 | 2010-03-02 Fridrich Strba <fridrich.strba@bluewin.ch> | |
6928 | ||
6929 | Reviewed by Oliver Hunt. | |
6930 | ||
6931 | Allow building smoothly on win32 and win64 using GCC | |
6932 | https://bugs.webkit.org/show_bug.cgi?id=35607 | |
6933 | ||
6934 | * jit/JITStubs.h: | |
6935 | * runtime/Collector.cpp: | |
6936 | (JSC::Heap::allocateBlock): | |
6937 | (JSC::Heap::freeBlockPtr): | |
6938 | (JSC::currentThreadStackBase): | |
6939 | ||
6940 | 2010-03-02 Jeremy Orlow <jorlow@chromium.org> | |
6941 | ||
6942 | Reviewed by David Levin. | |
6943 | ||
6944 | Revert database thread changes that are no longer required | |
6945 | https://bugs.webkit.org/show_bug.cgi?id=35519 | |
6946 | ||
6947 | Jochen Eisinger created 55214 and 55247 to track which database | |
6948 | owns which thread. Dmitry suggested that this could also | |
6949 | be done via TLS, though. After exploring the options, Jochen | |
6950 | chose to go the TLS route, so these patches are no longer needed. | |
6951 | ||
6952 | * wtf/Threading.h: | |
6953 | * wtf/ThreadingNone.cpp: | |
6954 | (WTF::isMainThread): | |
6955 | * wtf/ThreadingPthreads.cpp: | |
6956 | (WTF::identifierByPthreadHandle): | |
6957 | (WTF::establishIdentifierForPthreadHandle): | |
6958 | (WTF::pthreadHandleForIdentifier): | |
6959 | (WTF::createThreadInternal): | |
6960 | (WTF::currentThread): | |
6961 | * wtf/ThreadingWin.cpp: | |
6962 | (WTF::threadMap): | |
6963 | (WTF::storeThreadHandleByIdentifier): | |
6964 | (WTF::threadHandleForIdentifier): | |
6965 | (WTF::createThreadInternal): | |
6966 | ||
6967 | 2010-03-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
6968 | ||
6969 | Reviewed by Simon Hausmann. | |
6970 | ||
6971 | Fix QScriptValue::toString(). | |
6972 | ||
6973 | More ECMA Script compliance, especially for values as NaN, Inifinite | |
6974 | and really big/small numbers. | |
6975 | ||
6976 | [Qt] QScriptValue::toString() returns incorrect values | |
6977 | https://bugs.webkit.org/show_bug.cgi?id=34850 | |
6978 | ||
6979 | * qt/api/qscriptconverter_p.h: | |
6980 | (QScriptConverter::toString): | |
6981 | * qt/api/qscriptvalue_p.h: | |
6982 | (QScriptValuePrivate::toString): | |
6983 | * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: | |
6984 | * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
6985 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
6986 | (tst_QScriptValue::toString_initData): | |
6987 | (tst_QScriptValue::toString_makeData): | |
6988 | (tst_QScriptValue::toString_test): | |
6989 | ||
6990 | 2010-03-02 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
6991 | ||
6992 | Reviewed by Simon Hausmann. | |
6993 | ||
6994 | Introduce a new class; QScriptString. | |
6995 | ||
6996 | The QScriptString class should act as a handle to "interned" | |
6997 | strings in a QScriptEngine. | |
6998 | ||
6999 | [Qt] QtScript should provide QScriptString | |
7000 | https://bugs.webkit.org/show_bug.cgi?id=34843 | |
7001 | ||
7002 | * qt/api/QtScript.pro: | |
7003 | * qt/api/qscriptengine.cpp: | |
7004 | (QScriptEngine::toStringHandle): | |
7005 | * qt/api/qscriptengine.h: | |
7006 | * qt/api/qscriptengine_p.h: | |
7007 | (QScriptEnginePrivate::toStringHandle): | |
7008 | * qt/api/qscriptstring.cpp: Added. | |
7009 | (QScriptString::QScriptString): | |
7010 | (QScriptString::~QScriptString): | |
7011 | (QScriptString::operator=): | |
7012 | (QScriptString::isValid): | |
7013 | (QScriptString::operator==): | |
7014 | (QScriptString::operator!=): | |
7015 | (QScriptString::toArrayIndex): | |
7016 | (QScriptString::toString): | |
7017 | (QScriptString::operator QString): | |
7018 | (qHash): | |
7019 | * qt/api/qscriptstring.h: Added. | |
7020 | * qt/api/qscriptstring_p.h: Added. | |
7021 | (QScriptStringPrivate::QScriptStringPrivate): | |
7022 | (QScriptStringPrivate::~QScriptStringPrivate): | |
7023 | (QScriptStringPrivate::get): | |
7024 | (QScriptStringPrivate::isValid): | |
7025 | (QScriptStringPrivate::operator==): | |
7026 | (QScriptStringPrivate::operator!=): | |
7027 | (QScriptStringPrivate::toArrayIndex): | |
7028 | (QScriptStringPrivate::toString): | |
7029 | (QScriptStringPrivate::id): | |
7030 | * qt/tests/qscriptstring/qscriptstring.pro: Added. | |
7031 | * qt/tests/qscriptstring/tst_qscriptstring.cpp: Added. | |
7032 | (tst_QScriptString::tst_QScriptString): | |
7033 | (tst_QScriptString::~tst_QScriptString): | |
7034 | (tst_QScriptString::test): | |
7035 | (tst_QScriptString::hash): | |
7036 | (tst_QScriptString::toArrayIndex_data): | |
7037 | (tst_QScriptString::toArrayIndex): | |
7038 | * qt/tests/tests.pro: | |
7039 | ||
7040 | 2010-03-02 Oliver Hunt <oliver@apple.com> | |
7041 | ||
7042 | Reviewed by NOBODY (Build fix). | |
7043 | ||
7044 | Export function on windows. | |
7045 | ||
7046 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
7047 | ||
7048 | 2010-03-01 Oliver Hunt <oliver@apple.com> | |
7049 | ||
7050 | Reviewed by Maciej Stachowiak. | |
7051 | ||
7052 | Refactor named getter function signature to be in line with indexing getter signature | |
7053 | https://bugs.webkit.org/show_bug.cgi?id=35563 | |
7054 | ||
7055 | This removes the PropertySlot argument from getter functions, and makes them directly | |
7056 | pass the slot base. This makes the semantics for the functions match that of the | |
7057 | indexing getters. | |
7058 | ||
7059 | On the down side, this means that we can no longer simply use a proxy function for | |
7060 | JS getters, so we now add another marker value to indicate that a getter is present | |
7061 | and branch accordingly. | |
7062 | ||
7063 | Against all rationality sunspider reports this as a perf win, but i suspect it's just noise. | |
7064 | ||
7065 | * API/JSCallbackObject.h: | |
7066 | * API/JSCallbackObjectFunctions.h: | |
7067 | (JSC::::staticValueGetter): | |
7068 | (JSC::::staticFunctionGetter): | |
7069 | (JSC::::callbackGetter): | |
7070 | * JavaScriptCore.exp: | |
7071 | * runtime/JSActivation.cpp: | |
7072 | (JSC::JSActivation::argumentsGetter): | |
7073 | * runtime/JSActivation.h: | |
7074 | * runtime/JSFunction.cpp: | |
7075 | (JSC::JSFunction::argumentsGetter): | |
7076 | (JSC::JSFunction::callerGetter): | |
7077 | (JSC::JSFunction::lengthGetter): | |
7078 | * runtime/JSFunction.h: | |
7079 | * runtime/NumberConstructor.cpp: | |
7080 | (JSC::numberConstructorNaNValue): | |
7081 | (JSC::numberConstructorNegInfinity): | |
7082 | (JSC::numberConstructorPosInfinity): | |
7083 | (JSC::numberConstructorMaxValue): | |
7084 | (JSC::numberConstructorMinValue): | |
7085 | * runtime/PropertySlot.cpp: | |
7086 | (JSC::PropertySlot::functionGetter): | |
7087 | * runtime/PropertySlot.h: | |
7088 | (JSC::PropertySlot::getValue): | |
7089 | (JSC::PropertySlot::setGetterSlot): | |
7090 | (JSC::PropertySlot::setCacheableGetterSlot): | |
7091 | * runtime/RegExpConstructor.cpp: | |
7092 | (JSC::regExpConstructorDollar1): | |
7093 | (JSC::regExpConstructorDollar2): | |
7094 | (JSC::regExpConstructorDollar3): | |
7095 | (JSC::regExpConstructorDollar4): | |
7096 | (JSC::regExpConstructorDollar5): | |
7097 | (JSC::regExpConstructorDollar6): | |
7098 | (JSC::regExpConstructorDollar7): | |
7099 | (JSC::regExpConstructorDollar8): | |
7100 | (JSC::regExpConstructorDollar9): | |
7101 | (JSC::regExpConstructorInput): | |
7102 | (JSC::regExpConstructorMultiline): | |
7103 | (JSC::regExpConstructorLastMatch): | |
7104 | (JSC::regExpConstructorLastParen): | |
7105 | (JSC::regExpConstructorLeftContext): | |
7106 | (JSC::regExpConstructorRightContext): | |
7107 | * runtime/RegExpObject.cpp: | |
7108 | (JSC::regExpObjectGlobal): | |
7109 | (JSC::regExpObjectIgnoreCase): | |
7110 | (JSC::regExpObjectMultiline): | |
7111 | (JSC::regExpObjectSource): | |
7112 | (JSC::regExpObjectLastIndex): | |
7113 | ||
7114 | 2010-03-01 Oliver Hunt <oliver@apple.com> | |
7115 | ||
7116 | Reviewed by Gavin Barraclough. | |
7117 | ||
7118 | PropertySlot::getValue(ExecState, unsigned) unnecessarily converts index to an Identifier | |
7119 | https://bugs.webkit.org/show_bug.cgi?id=35561 | |
7120 | ||
7121 | Fix this by defining a separate property getter function for index getters. This allows | |
7122 | us to pass an unsigned number without the conversion to an Identifier. We then update | |
7123 | setCustomIndex to take this new getter type. | |
7124 | ||
7125 | * runtime/PropertySlot.h: | |
7126 | (JSC::PropertySlot::getValue): | |
7127 | (JSC::PropertySlot::setCustom): | |
7128 | (JSC::PropertySlot::setCustomIndex): | |
7129 | ||
7130 | 2010-03-01 Gavin Barraclough <barraclough@apple.com> | |
7131 | ||
7132 | Reviewed by Oliver Hunt. | |
7133 | ||
7134 | Bug 35537 - put_by_id does will incorrectly cache writes where a specific value exists, | |
7135 | where at the point of caching the same value is being written. | |
7136 | ||
7137 | When performing a put_by_id that is replacing a property already present on the object, | |
7138 | there are three interesting cases regarding the state of the specific value: | |
7139 | ||
7140 | (1) No specific value set - nothing to do, leave the structure in it's current state, | |
7141 | can cache. | |
7142 | (2) A specific value was set, the new put is not of a specified value (i.e. function), | |
7143 | or is of a different specific value - in these cases we need to perform a despecifying | |
7144 | transition to clear the specific value in the structure, but having done so this is a | |
7145 | normal property so as such we can again cache normally. | |
7146 | (3) A specific value was set, and we are overwriting with the same value - in these cases | |
7147 | leave the structure unchanged, but since a specific value is set we cannot cache this | |
7148 | put (we would need the JIT to dynamically check the value being written matched). | |
7149 | ||
7150 | Unfortunately, the current behaviour does not match this. the checks for a specific value | |
7151 | being present & the value matching are combined in such a way that in case (2), above we | |
7152 | will unnecessarily prevent the transition being cached, but in case (3) we will incorrectly | |
7153 | fail to prevent caching. | |
7154 | ||
7155 | The bug exposes itself if multiple puts of the same specific value are performed to a | |
7156 | property, and erroneously the put is allowed to be cached by the JIT. Method checks may be | |
7157 | generated caching calls of this structure. Subsequent puts performed from JIT code may | |
7158 | write different values without triggering a despecify transition, and as such cached method | |
7159 | checks will continue to pass, despite the value having changed. | |
7160 | ||
7161 | * runtime/JSObject.h: | |
7162 | (JSC::JSObject::putDirectInternal): | |
7163 | ||
7164 | 2010-03-01 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
7165 | ||
7166 | Reviewed by Simon Hausmann. | |
7167 | ||
7168 | Fix the Qt build on Mac OS X/Cocoa 64-bit | |
7169 | ||
7170 | * JavaScriptCore.pri: Add missing implementation file to resolve JSC symbols | |
7171 | ||
7172 | 2010-02-26 Gavin Barraclough <barraclough@apple.com> | |
7173 | ||
7174 | Rubber Stamped by Geoff Garen. | |
7175 | ||
7176 | Remove wrec. All builds should have switched to yarr by now. | |
7177 | ||
7178 | * Android.mk: | |
7179 | * GNUmakefile.am: | |
7180 | * JavaScriptCore.gypi: | |
7181 | * JavaScriptCore.pri: | |
7182 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
7183 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
7184 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
7185 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
7186 | * runtime/RegExp.cpp: | |
7187 | (JSC::RegExp::match): | |
7188 | * runtime/RegExp.h: | |
7189 | * wrec: Removed. | |
7190 | * wrec/CharacterClass.cpp: Removed. | |
7191 | * wrec/CharacterClass.h: Removed. | |
7192 | * wrec/CharacterClassConstructor.cpp: Removed. | |
7193 | * wrec/CharacterClassConstructor.h: Removed. | |
7194 | * wrec/Escapes.h: Removed. | |
7195 | * wrec/Quantifier.h: Removed. | |
7196 | * wrec/WREC.cpp: Removed. | |
7197 | * wrec/WREC.h: Removed. | |
7198 | * wrec/WRECFunctors.cpp: Removed. | |
7199 | * wrec/WRECFunctors.h: Removed. | |
7200 | * wrec/WRECGenerator.cpp: Removed. | |
7201 | * wrec/WRECGenerator.h: Removed. | |
7202 | * wrec/WRECParser.cpp: Removed. | |
7203 | * wrec/WRECParser.h: Removed. | |
7204 | * wscript: | |
7205 | ||
7206 | 2010-02-26 Oliver Hunt <oliver@apple.com> | |
7207 | ||
7208 | Reviewed by Geoff Garen. | |
7209 | ||
7210 | Make the lookup table generator include an explicit cast to expected | |
7211 | type of the function. We do this because otherwise the blind intptr_t | |
7212 | cast that is subsequently applied allows incorrectly typed functions | |
7213 | to be inserted into the table, where they will only fail at runtime. | |
7214 | This change makes such errors produce a compile time failure. | |
7215 | ||
7216 | * create_hash_table: | |
7217 | ||
7218 | 2010-02-26 Janne Koskinen <janne.p.koskinen@digia.com> | |
7219 | ||
7220 | Reviewed by Simon Hausmann. | |
7221 | ||
7222 | [Qt] Symbian specific getCPUTime implemetation | |
7223 | https://bugs.webkit.org/show_bug.cgi?id=34742 | |
7224 | ||
7225 | Default implementation doesn't work on Symbian devices. | |
7226 | This change adds a proper implementation by | |
7227 | asking thread execution time from the current thread. | |
7228 | ||
7229 | * runtime/TimeoutChecker.cpp: | |
7230 | (JSC::getCPUTime): | |
7231 | ||
7232 | 2010-02-25 Alexey Proskuryakov <ap@apple.com> | |
7233 | ||
7234 | Reviewed by Anders Carlsson. | |
7235 | ||
7236 | https://bugs.webkit.org/show_bug.cgi?id=35406 | |
7237 | <rdar://problem/6945502> Make generic array methods work with JavaArray | |
7238 | ||
7239 | Renamed lazyCreationData to subclassData. This is extra data that can be used by JSArray | |
7240 | subclasses (you can't add new data members, because it wouldn't fit in JSCell otherwise). | |
7241 | ||
7242 | * JavaScriptCore.exp: | |
7243 | * runtime/JSArray.cpp: | |
7244 | (JSC::JSArray::JSArray): | |
7245 | (JSC::JSArray::subclassData): | |
7246 | (JSC::JSArray::setSubclassData): | |
7247 | * runtime/JSArray.h: | |
7248 | * runtime/RegExpConstructor.cpp: | |
7249 | (JSC::RegExpMatchesArray::RegExpMatchesArray): | |
7250 | (JSC::RegExpMatchesArray::~RegExpMatchesArray): | |
7251 | (JSC::RegExpMatchesArray::fillArrayInstance): | |
7252 | * runtime/RegExpMatchesArray.h: | |
7253 | (JSC::RegExpMatchesArray::getOwnPropertySlot): | |
7254 | (JSC::RegExpMatchesArray::getOwnPropertyDescriptor): | |
7255 | (JSC::RegExpMatchesArray::put): | |
7256 | (JSC::RegExpMatchesArray::deleteProperty): | |
7257 | (JSC::RegExpMatchesArray::getOwnPropertyNames): | |
7258 | ||
7259 | 2010-02-25 Oliver Hunt <oliver@apple.com> | |
7260 | ||
7261 | Reviewed by Geoff Garen. | |
7262 | ||
7263 | JSC crashes like crazy in the JSPropertyNameIterator destructor | |
7264 | ||
7265 | Add back null check of m_cachedStructure. Curse last minute changes. | |
7266 | ||
7267 | * runtime/JSPropertyNameIterator.cpp: | |
7268 | (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): | |
7269 | ||
7270 | 2010-02-25 Oliver Hunt <oliver@apple.com> | |
7271 | ||
7272 | Reviewed by Maciej Stachowiak. | |
7273 | ||
7274 | Race condition in JSPropertyNameIterator and Structure destruction | |
7275 | https://bugs.webkit.org/show_bug.cgi?id=35398 | |
7276 | ||
7277 | JSPropertyNameIterator and Structure have a cyclic dependency that they | |
7278 | manage by clearing the appropriate reference in each other during their | |
7279 | destruction. However if the Structure is destroyed while the | |
7280 | JSPropertyNameIterator is dead but not yet finalized the Structures | |
7281 | WeakGCPtr will return null, and so prevent Structure from clearing | |
7282 | the m_cachedStructure pointer of the iterator. When the iterator is | |
7283 | then finalised the m_cachedStructure is invalid, and the attempt to | |
7284 | clear the structures back reference fails. | |
7285 | ||
7286 | To fix this we simply make JSPropertyNameIterator keep the Structure | |
7287 | alive, using the weak pointer to break the ref cycle. | |
7288 | ||
7289 | * runtime/JSPropertyNameIterator.cpp: | |
7290 | (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): | |
7291 | The iterator now keeps m_cachedStructure alive itself, so no longer needs | |
7292 | to check for it being cleared | |
7293 | * runtime/JSPropertyNameIterator.h: | |
7294 | (JSC::JSPropertyNameIterator::setCachedStructure): | |
7295 | Add an assertion to ensure correct usage | |
7296 | (JSC::JSPropertyNameIterator::cachedStructure): | |
7297 | Add .get() | |
7298 | * runtime/Structure.cpp: | |
7299 | (JSC::Structure::~Structure): | |
7300 | Add an assertion that our iterator isn't already dead, and remove | |
7301 | the now unnecessary attempt to clear the ref in the iterator | |
7302 | * runtime/WeakGCPtr.h: | |
7303 | (JSC::WeakGCPtr::hasDeadObject): | |
7304 | An assert-only function to allow us to assert correct behaviour | |
7305 | in the Structure destructor | |
7306 | ||
7307 | 2010-02-25 Jochen Eisinger <jochen@chromium.org> | |
7308 | ||
7309 | Reviewed by Jeremy Orlow. | |
7310 | ||
7311 | Make the context that was passed to the ThreadFunction accessible. | |
7312 | https://bugs.webkit.org/show_bug.cgi?id=35379 | |
7313 | ||
7314 | When a database is opened, right now you | |
7315 | don't have any context from where it is opened. The problem is that | |
7316 | the actual calls that open a database go through the sqlite3 vfs | |
7317 | layer, so there's no easy way to pass this function down to to | |
7318 | platform/sql/chromium/SQLFileSystemChromium*.cpp | |
7319 | ||
7320 | This patch will allow you to get from anywhere within webkit a pointer | |
7321 | to the Thread object that actually created the thread you're currently | |
7322 | on (in case of the database, this can be either a thread forked of | |
7323 | from the main thread or from a worker thread), and query the object | |
7324 | for context information. | |
7325 | ||
7326 | * wtf/Threading.h: | |
7327 | * wtf/ThreadingNone.cpp: | |
7328 | (WTF::threadContext): | |
7329 | * wtf/ThreadingPthreads.cpp: | |
7330 | (WTF::): | |
7331 | (WTF::identifierByPthreadHandle): | |
7332 | (WTF::establishIdentifierForPthreadHandle): | |
7333 | (WTF::pthreadHandleForIdentifier): | |
7334 | (WTF::contextForIdentifier): | |
7335 | (WTF::createThreadInternal): | |
7336 | (WTF::currentThread): | |
7337 | (WTF::threadContext): | |
7338 | * wtf/ThreadingWin.cpp: | |
7339 | (WTF::): | |
7340 | (WTF::threadMap): | |
7341 | (WTF::storeThreadHandleByIdentifier): | |
7342 | (WTF::threadHandleForIdentifier): | |
7343 | (WTF::contextForIdentifier): | |
7344 | (WTF::createThreadInternal): | |
7345 | (WTF::threadContext): | |
7346 | ||
7347 | 2010-02-25 Jeremy Orlow <jorlow@chromium.org> | |
7348 | ||
7349 | Reverting to re-submit with better change log. | |
7350 | ||
7351 | * wtf/Threading.h: | |
7352 | * wtf/ThreadingNone.cpp: | |
7353 | (WTF::isMainThread): | |
7354 | * wtf/ThreadingPthreads.cpp: | |
7355 | (WTF::identifierByPthreadHandle): | |
7356 | (WTF::establishIdentifierForPthreadHandle): | |
7357 | (WTF::pthreadHandleForIdentifier): | |
7358 | (WTF::createThreadInternal): | |
7359 | (WTF::currentThread): | |
7360 | * wtf/ThreadingWin.cpp: | |
7361 | (WTF::threadMap): | |
7362 | (WTF::storeThreadHandleByIdentifier): | |
7363 | (WTF::threadHandleForIdentifier): | |
7364 | (WTF::createThreadInternal): | |
7365 | ||
7366 | 2010-02-25 Jochen Eisinger <jochen@chromium.org> | |
7367 | ||
7368 | Reviewed by Jeremy Orlow. | |
7369 | ||
7370 | Make the context that was passed to the ThreadFunction accessible. | |
7371 | https://bugs.webkit.org/show_bug.cgi?id=35379 | |
7372 | ||
7373 | * wtf/Threading.h: | |
7374 | * wtf/ThreadingNone.cpp: | |
7375 | (WTF::threadContext): | |
7376 | * wtf/ThreadingPthreads.cpp: | |
7377 | (WTF::): | |
7378 | (WTF::identifierByPthreadHandle): | |
7379 | (WTF::establishIdentifierForPthreadHandle): | |
7380 | (WTF::pthreadHandleForIdentifier): | |
7381 | (WTF::contextForIdentifier): | |
7382 | (WTF::createThreadInternal): | |
7383 | (WTF::currentThread): | |
7384 | (WTF::threadContext): | |
7385 | * wtf/ThreadingWin.cpp: | |
7386 | (WTF::): | |
7387 | (WTF::threadMap): | |
7388 | (WTF::storeThreadHandleByIdentifier): | |
7389 | (WTF::threadHandleForIdentifier): | |
7390 | (WTF::contextForIdentifier): | |
7391 | (WTF::createThreadInternal): | |
7392 | (WTF::threadContext): | |
7393 | ||
7394 | 2010-02-24 Oliver Hunt <oliver@apple.com> | |
7395 | ||
7396 | Reviewed by Geoffrey Garen. | |
7397 | ||
7398 | [REGRESSION in r55185] EXC_BAD_ACCESS on opening inspector. | |
7399 | https://bugs.webkit.org/show_bug.cgi?id=35335 | |
7400 | ||
7401 | compileGetDirectOffset modifies the contents of the object register | |
7402 | when the object is not using the inline storage array. As the object | |
7403 | register contains our 'this' pointer we can't allow it to be clobbered. | |
7404 | The fix is simply to copy the register into a separate scratch register | |
7405 | when we're loading off an object that doesn't use inline storage. | |
7406 | ||
7407 | * jit/JITPropertyAccess.cpp: | |
7408 | (JSC::JIT::privateCompileGetByIdSelfList): | |
7409 | * jit/JITPropertyAccess32_64.cpp: | |
7410 | (JSC::JIT::privateCompileGetByIdSelfList): | |
7411 | ||
7412 | 2010-02-24 Oliver Hunt <oliver@apple.com> | |
7413 | ||
7414 | Reviewed by Gavin Barraclough. | |
7415 | ||
7416 | Speed up getter performance in the jit | |
7417 | https://bugs.webkit.org/show_bug.cgi?id=35332 | |
7418 | ||
7419 | Implement getter lookup caching in the interpreter. | |
7420 | The getter stubs are generated through basically the | |
7421 | same code paths as the normal get_by_id caching. | |
7422 | Instead of simply loading a property and returning, | |
7423 | we load the getter slot, and pass the getter, base value | |
7424 | and return address to a shared stub used for getter | |
7425 | dispatch. | |
7426 | ||
7427 | * jit/JIT.h: | |
7428 | (JSC::JIT::compileGetByIdProto): | |
7429 | (JSC::JIT::compileGetByIdSelfList): | |
7430 | (JSC::JIT::compileGetByIdProtoList): | |
7431 | (JSC::JIT::compileGetByIdChainList): | |
7432 | (JSC::JIT::compileGetByIdChain): | |
7433 | * jit/JITPropertyAccess.cpp: | |
7434 | (JSC::JIT::privateCompileGetByIdProto): | |
7435 | (JSC::JIT::privateCompileGetByIdSelfList): | |
7436 | (JSC::JIT::privateCompileGetByIdProtoList): | |
7437 | (JSC::JIT::privateCompileGetByIdChainList): | |
7438 | (JSC::JIT::privateCompileGetByIdChain): | |
7439 | * jit/JITPropertyAccess32_64.cpp: | |
7440 | (JSC::JIT::privateCompileGetByIdProto): | |
7441 | (JSC::JIT::privateCompileGetByIdSelfList): | |
7442 | (JSC::JIT::privateCompileGetByIdProtoList): | |
7443 | (JSC::JIT::privateCompileGetByIdChainList): | |
7444 | (JSC::JIT::privateCompileGetByIdChain): | |
7445 | * jit/JITStubs.cpp: | |
7446 | (JSC::JITThunks::tryCacheGetByID): | |
7447 | (JSC::DEFINE_STUB_FUNCTION): | |
7448 | * jit/JITStubs.h: | |
7449 | (JSC::): | |
7450 | * runtime/GetterSetter.h: | |
7451 | ||
7452 | 2010-02-23 Oliver Hunt <oliver@apple.com> | |
7453 | ||
7454 | Reviewed by Maciej Stachowiak. | |
7455 | ||
7456 | Web Inspector: Regression: r55027+: Inspector broken | |
7457 | https://bugs.webkit.org/show_bug.cgi?id=35253 | |
7458 | ||
7459 | op_get_by_id_getter_chain was not passing the correct this parameter. | |
7460 | The bug was caused by incorrect use of baseCell instead of baseValue, | |
7461 | baseValue contains the original object for the lookup (and hence the | |
7462 | correct this object), baseCell is clobbered as part of walking the | |
7463 | prototype chain. | |
7464 | ||
7465 | * interpreter/Interpreter.cpp: | |
7466 | (JSC::Interpreter::privateExecute): | |
7467 | ||
7468 | 2010-02-23 Gustavo Noronha Silva <gns@gnome.org> | |
7469 | ||
7470 | Rubber-stamped by Dimitri Glazkov. | |
7471 | ||
7472 | Chromium build fix. | |
7473 | ||
7474 | * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
7475 | ||
7476 | 2010-02-23 Leandro Pereira <leandro@profusion.mobi> | |
7477 | ||
7478 | Reviewed by Gustavo Noronha Silva. | |
7479 | ||
7480 | Changes references of GOwnPtr to reflect their new place. | |
7481 | http://webkit.org/b/35084 | |
7482 | ||
7483 | * JavaScriptCore/JavaScriptCore.gypi: | |
7484 | * JavaScriptCore/wtf/Threading.h: | |
7485 | * JavaScriptCore/wtf/unicode/glib/UnicodeGLib.h: | |
7486 | ||
7487 | 2010-02-23 Leandro Pereira <leandro@profusion.mobi> | |
7488 | ||
7489 | Reviewed by Kenneth Rohde Christiansen. | |
7490 | ||
7491 | Adding the EFL implementation of JavaScriptCore. | |
7492 | See https://bugs.webkit.org/show_bug.cgi?id=35084 for details. | |
7493 | ||
7494 | * GNUmakefile.am: Updated to reflect the new location of GOwnPtr and | |
7495 | GRefPtr. | |
7496 | * wtf/efl/MainThreadEfl.cpp: Added. | |
7497 | * wtf/gobject/GOwnPtr.cpp: Moved from wtf/gtk. | |
7498 | * wtf/gobject/GOwnPtr.h: Moved from wtf/gtk. | |
7499 | * wtf/gobject/GRefPtr.cpp: Moved from wtf/gtk. | |
7500 | * wtf/gobject/GRefPtr.h: Moved from wtf/gtk. | |
7501 | ||
7502 | 2010-02-22 Julien Chaffraix <jchaffraix@webkit.org> | |
7503 | ||
7504 | Reviewed by Darin Adler. | |
7505 | ||
7506 | Remove auto_ptr usage in JavaScriptCore. | |
7507 | https://bugs.webkit.org/show_bug.cgi?id=35221 | |
7508 | ||
7509 | * parser/Nodes.h: Removed now unneeded adopt method. | |
7510 | * parser/Parser.cpp: Removed <memory> include as it is not required anymore. | |
7511 | * wtf/OwnPtr.h: Removed the constructor from auto_ptr. | |
7512 | * wtf/VectorTraits.h: Removed a template specialization for auto_ptr. | |
7513 | * wtf/unicode/Collator.h: Made userDefault return a PassOwnPtr. | |
7514 | * wtf/unicode/CollatorDefault.cpp: | |
7515 | (WTF::Collator::userDefault): Changed the method to match the next signature. | |
7516 | * wtf/unicode/icu/CollatorICU.cpp: | |
7517 | (WTF::Collator::userDefault): Ditto. | |
7518 | ||
7519 | 2010-02-22 Huahui Wu <hwu@google.com> | |
7520 | ||
7521 | Reviewed by Eric Seidel. | |
7522 | ||
7523 | Add code that enables SquirrelFish Extreme (a.k.a JSCX, JSC JIT) | |
7524 | in Android. It's disabled by default, but is enabled when the | |
7525 | enveronment variable ENABLE_JSC_JIT is set to true. | |
7526 | https://bugs.webkit.org/show_bug.cgi?id=34855 | |
7527 | ||
7528 | * Android.mk: | |
7529 | * wtf/Platform.h: | |
7530 | ||
7531 | 2010-02-22 Gavin Barraclough <barraclough@apple.com> | |
7532 | ||
7533 | Reviewed by Oliver Hunt. | |
7534 | ||
7535 | JSStringBuilder should not CRASH if allocation fails, it should throw a JSException. | |
7536 | ||
7537 | * runtime/JSGlobalObjectFunctions.cpp: | |
7538 | * runtime/JSStringBuilder.h: | |
7539 | (JSC::JSStringBuilder::JSStringBuilder): | |
7540 | (JSC::JSStringBuilder::append): | |
7541 | (JSC::JSStringBuilder::build): | |
7542 | * runtime/StringBuilder.h: | |
7543 | (JSC::StringBuilder::build): | |
7544 | * wtf/Vector.h: | |
7545 | (WTF::VectorBufferBase::tryAllocateBuffer): | |
7546 | (WTF::): | |
7547 | (WTF::VectorBuffer::tryAllocateBuffer): | |
7548 | (WTF::::tryExpandCapacity): | |
7549 | (WTF::::tryReserveCapacity): | |
7550 | (WTF::::tryAppend): | |
7551 | ||
7552 | 2010-02-22 Kwang Yul Seo <skyul@company100.net> | |
7553 | ||
7554 | Reviewed by Eric Seidel. | |
7555 | ||
7556 | [BREWMP] Map FastMalloc to BREW memory allocator | |
7557 | https://bugs.webkit.org/show_bug.cgi?id=33570 | |
7558 | ||
7559 | Use MALLOC macro instead of the standard malloc function. | |
7560 | Although RVCT provides malloc, we can't use it in BREW | |
7561 | because the loader does not initialize the base address properly. | |
7562 | ||
7563 | * wtf/FastMalloc.cpp: | |
7564 | * wtf/brew/SystemMallocBrew.h: Added. | |
7565 | (mallocBrew): | |
7566 | (callocBrew): | |
7567 | (freeBrew): | |
7568 | (reallocBrew): | |
7569 | ||
7570 | 2010-02-22 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
7571 | ||
7572 | Build fix for make distcheck. | |
7573 | ||
7574 | * GNUmakefile.am: | |
7575 | ||
7576 | 2010-02-22 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
7577 | ||
7578 | Unreviewed build fix. | |
7579 | ||
7580 | [Qt] Build fix for RVCT. | |
7581 | ||
7582 | Fix after r55024. The "-i" option is for perl not for the | |
7583 | script. | |
7584 | ||
7585 | * DerivedSources.pro: | |
7586 | ||
7587 | 2010-02-21 Gavin Barraclough <barraclough@apple.com> | |
7588 | ||
7589 | Reviewed by Oliver Hunt. | |
7590 | ||
7591 | Make UString::m_data be const, and make the UChar owned/ref-counted by CrossThreadRefCounted be const too. | |
7592 | ||
7593 | * runtime/UStringImpl.cpp: | |
7594 | (JSC::UStringImpl::baseSharedBuffer): | |
7595 | (JSC::UStringImpl::~UStringImpl): | |
7596 | * runtime/UStringImpl.h: | |
7597 | (JSC::UStringImpl::create): | |
7598 | (JSC::UStringImpl::data): | |
7599 | (JSC::UStringImpl::UStringImpl): | |
7600 | * wtf/OwnFastMallocPtr.h: | |
7601 | (WTF::OwnFastMallocPtr::~OwnFastMallocPtr): | |
7602 | ||
7603 | 2010-02-21 Yuta Kitamura <yutak@chromium.org> | |
7604 | ||
7605 | Reviewed by Darin Adler. | |
7606 | ||
7607 | HashMapTranslatorAdapter::translate() needs to set the mapped value. | |
7608 | ||
7609 | HTTPHeaderMap::add(const char*, const String&) does not work | |
7610 | https://bugs.webkit.org/show_bug.cgi?id=35227 | |
7611 | ||
7612 | * wtf/HashMap.h: | |
7613 | (WTF::HashMapTranslatorAdapter::translate): | |
7614 | ||
7615 | 2010-02-19 Maciej Stachowiak <mjs@apple.com> | |
7616 | ||
7617 | Reviewed by David Levin. | |
7618 | ||
7619 | Add an ENABLE flag for sandboxed iframes to make it possible to disable it in releases | |
7620 | https://bugs.webkit.org/show_bug.cgi?id=35147 | |
7621 | ||
7622 | * Configurations/FeatureDefines.xcconfig: | |
7623 | ||
7624 | 2010-02-19 Gavin Barraclough <barraclough@apple.com> | |
7625 | ||
7626 | Reviewed by Oliver Hunt. | |
7627 | ||
7628 | JSString::getIndex() calls value() to resolve the string value (is a rope) | |
7629 | to a UString, then passes the result to jsSingleCharacterSubstring without | |
7630 | checking for an exception. In case of out-of-memory the returned UString | |
7631 | is null(), which may result in an out-of-buounds substring being created. | |
7632 | This is bad. | |
7633 | ||
7634 | Simple fix is to be able to get an index from a rope without resolving to | |
7635 | UString. This may be a useful optimization in some test cases. | |
7636 | ||
7637 | The same bug exists in some other methods is JSString, these can be fixed | |
7638 | by changing them to call getIndex(). | |
7639 | ||
7640 | * runtime/JSString.cpp: | |
7641 | (JSC::JSString::resolveRope): | |
7642 | (JSC::JSString::getStringPropertyDescriptor): | |
7643 | * runtime/JSString.h: | |
7644 | (JSC::jsSingleCharacterSubstring): | |
7645 | (JSC::JSString::getIndex): | |
7646 | (JSC::jsSingleCharacterString): | |
7647 | (JSC::JSString::getStringPropertySlot): | |
7648 | * runtime/UStringImpl.cpp: | |
7649 | (JSC::singleCharacterSubstring): | |
7650 | * runtime/UStringImpl.h: | |
7651 | (JSC::UStringImpl::singleCharacterSubstring): | |
7652 | ||
7653 | 2010-02-19 Oliver Hunt <oliver@apple.com> | |
7654 | ||
7655 | RS = Gavin Barraclough. | |
7656 | ||
7657 | Split the 32/64 version of JITPropertyAccess into a separate file. | |
7658 | ||
7659 | * GNUmakefile.am: | |
7660 | * JavaScriptCore.gypi: | |
7661 | * JavaScriptCore.pri: | |
7662 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
7663 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
7664 | * jit/JITPropertyAccess.cpp: | |
7665 | * jit/JITPropertyAccess32_64.cpp: Added. | |
7666 | (JSC::JIT::emit_op_put_by_index): | |
7667 | (JSC::JIT::emit_op_put_getter): | |
7668 | (JSC::JIT::emit_op_put_setter): | |
7669 | (JSC::JIT::emit_op_del_by_id): | |
7670 | (JSC::JIT::emit_op_method_check): | |
7671 | (JSC::JIT::emitSlow_op_method_check): | |
7672 | (JSC::JIT::emit_op_get_by_val): | |
7673 | (JSC::JIT::emitSlow_op_get_by_val): | |
7674 | (JSC::JIT::emit_op_put_by_val): | |
7675 | (JSC::JIT::emitSlow_op_put_by_val): | |
7676 | (JSC::JIT::emit_op_get_by_id): | |
7677 | (JSC::JIT::emitSlow_op_get_by_id): | |
7678 | (JSC::JIT::emit_op_put_by_id): | |
7679 | (JSC::JIT::emitSlow_op_put_by_id): | |
7680 | (JSC::JIT::compileGetByIdHotPath): | |
7681 | (JSC::JIT::compileGetByIdSlowCase): | |
7682 | (JSC::JIT::compilePutDirectOffset): | |
7683 | (JSC::JIT::compileGetDirectOffset): | |
7684 | (JSC::JIT::testPrototype): | |
7685 | (JSC::JIT::privateCompilePutByIdTransition): | |
7686 | (JSC::JIT::patchGetByIdSelf): | |
7687 | (JSC::JIT::patchMethodCallProto): | |
7688 | (JSC::JIT::patchPutByIdReplace): | |
7689 | (JSC::JIT::privateCompilePatchGetArrayLength): | |
7690 | (JSC::JIT::privateCompileGetByIdProto): | |
7691 | (JSC::JIT::privateCompileGetByIdSelfList): | |
7692 | (JSC::JIT::privateCompileGetByIdProtoList): | |
7693 | (JSC::JIT::privateCompileGetByIdChainList): | |
7694 | (JSC::JIT::privateCompileGetByIdChain): | |
7695 | (JSC::JIT::emit_op_get_by_pname): | |
7696 | (JSC::JIT::emitSlow_op_get_by_pname): | |
7697 | ||
7698 | 2010-02-19 Patrick Gansterer <paroga@paroga.com> | |
7699 | ||
7700 | Reviewed by Laszlo Gombos. | |
7701 | ||
7702 | Added additional parameter to create_rvct_stubs | |
7703 | for setting the regularexpression prefix. | |
7704 | Renamed it because it now works for other platforms too. | |
7705 | https://bugs.webkit.org/show_bug.cgi?id=34951 | |
7706 | ||
7707 | * DerivedSources.pro: | |
7708 | * create_jit_stubs: Copied from JavaScriptCore/create_rvct_stubs. | |
7709 | * create_rvct_stubs: Removed. | |
7710 | ||
7711 | 2010-02-18 Oliver Hunt <oliver@apple.com> | |
7712 | ||
7713 | Reviewed by Gavin Barraclough. | |
7714 | ||
7715 | Improve interpreter getter performance | |
7716 | https://bugs.webkit.org/show_bug.cgi?id=35138 | |
7717 | ||
7718 | Improve the performance of getter dispatch by making it possible | |
7719 | for the interpreter to cache the GetterSetter object lookup. | |
7720 | ||
7721 | To do this we simply need to make PropertySlot aware of getters | |
7722 | as a potentially cacheable property, and record the base and this | |
7723 | objects for a getter access. This allows us to use more-or-less | |
7724 | identical code to that used by the normal get_by_id caching, with | |
7725 | the dispatch being the only actual difference. | |
7726 | ||
7727 | I'm holding off of implementing this in the JIT until I do some | |
7728 | cleanup to try and making coding in the JIT not be as horrible | |
7729 | as it is currently. | |
7730 | ||
7731 | * bytecode/CodeBlock.cpp: | |
7732 | (JSC::CodeBlock::dump): | |
7733 | (JSC::CodeBlock::derefStructures): | |
7734 | (JSC::CodeBlock::refStructures): | |
7735 | * bytecode/Opcode.h: | |
7736 | * interpreter/Interpreter.cpp: | |
7737 | (JSC::Interpreter::resolveGlobal): | |
7738 | (JSC::Interpreter::tryCacheGetByID): | |
7739 | (JSC::Interpreter::privateExecute): | |
7740 | * jit/JIT.cpp: | |
7741 | (JSC::JIT::privateCompileMainPass): | |
7742 | * jit/JITStubs.cpp: | |
7743 | (JSC::JITThunks::tryCacheGetByID): | |
7744 | (JSC::DEFINE_STUB_FUNCTION): | |
7745 | * runtime/JSObject.cpp: | |
7746 | (JSC::JSObject::fillGetterPropertySlot): | |
7747 | * runtime/PropertySlot.cpp: | |
7748 | (JSC::PropertySlot::functionGetter): | |
7749 | * runtime/PropertySlot.h: | |
7750 | (JSC::PropertySlot::isGetter): | |
7751 | (JSC::PropertySlot::isCacheable): | |
7752 | (JSC::PropertySlot::isCacheableValue): | |
7753 | (JSC::PropertySlot::setValueSlot): | |
7754 | (JSC::PropertySlot::setGetterSlot): | |
7755 | (JSC::PropertySlot::setCacheableGetterSlot): | |
7756 | (JSC::PropertySlot::clearOffset): | |
7757 | (JSC::PropertySlot::thisValue): | |
7758 | ||
7759 | 2010-02-17 Geoffrey Garen <ggaren@apple.com> | |
7760 | ||
7761 | Reviewed by Oliver Hunt. | |
7762 | ||
7763 | Fixed a portion of: | |
7764 | <rdar://problem/7165917> | https://bugs.webkit.org/show_bug.cgi?id=28676 | |
7765 | Safari 4 does not release memory back to the operating system fast enough (28676) | |
7766 | ||
7767 | This patch fixes a surprisingly common edge case in which the page heap | |
7768 | would have only one free span, but that span would be larger than the | |
7769 | minimum free size, so we would decide not to free it, even though it | |
7770 | could be as large as 100MB or more! | |
7771 | ||
7772 | SunSpider reports no change on Mac or Windows. | |
7773 | ||
7774 | * wtf/FastMalloc.cpp: | |
7775 | (WTF::TCMalloc_PageHeap::scavenge): Call shouldContinueScavenging() instead | |
7776 | of doing the math ourselves. Don't keep a local value for pagesDecommitted | |
7777 | because that lets free_committed_pages_ be wrong temporarily. Instead, | |
7778 | update free_committed_pages_ as we go. ASSERT that we aren't releasing | |
7779 | a span that has already been released, because we think this is impossible. | |
7780 | Finally, don't be afraid to release all free memory in the page heap when | |
7781 | scavenging. We only scavenge after 5 seconds of the application's working | |
7782 | set not growing, and we keep both thread caches and a central cache on | |
7783 | top of the page heap, so the extra free pages in the page heap were just | |
7784 | overkill. | |
7785 | ||
7786 | 2010-02-17 Gavin Barraclough <barraclough@apple.com> | |
7787 | ||
7788 | Reviewed by Oliver Hunt. | |
7789 | ||
7790 | https://bugs.webkit.org/show_bug.cgi?id=35070 | |
7791 | Addition of 2 strings of length 2^31 may result in a string of length 0. | |
7792 | ||
7793 | Check for overflow when creating a new JSString as a result of an addition | |
7794 | or concatenation, throw an out of memory exception. | |
7795 | ||
7796 | * runtime/JSString.h: | |
7797 | (JSC::): | |
7798 | * runtime/Operations.h: | |
7799 | (JSC::jsString): | |
7800 | ||
7801 | 2010-02-17 Xan Lopez <xlopez@igalia.com> | |
7802 | ||
7803 | Reviewed by Gustavo Noronha. | |
7804 | ||
7805 | [Linux] Webkit incompatible with Java plugins | |
7806 | https://bugs.webkit.org/show_bug.cgi?id=24912 | |
7807 | ||
7808 | Add support for GFile to GOwnPtr. | |
7809 | ||
7810 | Based on original work by Gustavo Noronha. | |
7811 | ||
7812 | * wtf/gtk/GOwnPtr.cpp: | |
7813 | (WTF::GFile): | |
7814 | * wtf/gtk/GOwnPtr.h: | |
7815 | ||
7816 | 2010-02-16 Gavin Barraclough <barraclough@apple.com> | |
7817 | ||
7818 | Reviewed by Mark Rowe. | |
7819 | ||
7820 | Fix a handful of other leaks seen on the buildbot. | |
7821 | ||
7822 | * runtime/UStringImpl.h: | |
7823 | (JSC::UStringOrRopeImpl::deref): Delegate through to the subclass version of deref to ensure that | |
7824 | the correct cleanup takes place. This function previously featured some code that attempted to | |
7825 | skip deletion of static UStringImpl's. Closer inspection revealed that it was in fact equivalent | |
7826 | to "if (false)", meaning that UStringImpl's which had their final deref performed via this function | |
7827 | were leaked. | |
7828 | ||
7829 | 2010-02-16 Mark Rowe <mrowe@apple.com> | |
7830 | ||
7831 | Reviewed by Gavin Barraclough. | |
7832 | ||
7833 | Fix a handful of leaks seen on the buildbot. | |
7834 | ||
7835 | * runtime/UStringImpl.h: | |
7836 | (JSC::UStringOrRopeImpl::deref): Call URopeImpl::destructNonRecursive rather than delete | |
7837 | to ensure that the rope's fibers are also destroyed. | |
7838 | ||
7839 | 2010-02-16 Gavin Barraclough <barraclough@apple.com> | |
7840 | ||
7841 | Reviewed by Oliver Hunt. | |
7842 | ||
7843 | https://bugs.webkit.org/show_bug.cgi?id=34964 | |
7844 | Leaks tool reports false memory leaks due to Rope implementation. | |
7845 | ||
7846 | A rope is a recursive data structure where each node in the rope holds a set of | |
7847 | pointers, each of which may reference either a string (in UStringImpl form) or | |
7848 | another rope node. A low bit in each pointer is used to distinguish between | |
7849 | rope & string elements, in a fashion similar to the recently-removed | |
7850 | PtrAndFlags class (see https://bugs.webkit.org/show_bug.cgi?id=33731 ). Again, | |
7851 | this causes a problem for Leaks - refactor to remove the magic pointer | |
7852 | mangling. | |
7853 | ||
7854 | Move Rope out from JSString.h and rename to URopeImpl, to match UStringImpl. | |
7855 | Give UStringImpl and URopeImpl a common parent class, UStringOrRopeImpl. | |
7856 | Repurpose an otherwise invalid permutation to flags (static & should report | |
7857 | memory cost) to identify ropes. | |
7858 | ||
7859 | This allows us to change the rope's fibers to interrogate the object rather | |
7860 | than storing a bool within the low bits of the pointer (or in some cases the | |
7861 | use of a common parent class removes the need to determine the type at all - | |
7862 | there is a common interface to ref or get the length of either ropes or strings). | |
7863 | ||
7864 | * API/JSClassRef.cpp: | |
7865 | (OpaqueJSClass::OpaqueJSClass): | |
7866 | (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
7867 | * bytecompiler/BytecodeGenerator.cpp: | |
7868 | (JSC::keyForCharacterSwitch): | |
7869 | * interpreter/Interpreter.cpp: | |
7870 | (JSC::Interpreter::privateExecute): | |
7871 | * jit/JITStubs.cpp: | |
7872 | (JSC::DEFINE_STUB_FUNCTION): | |
7873 | * runtime/ArrayPrototype.cpp: | |
7874 | (JSC::arrayProtoFuncToString): | |
7875 | * runtime/Identifier.cpp: | |
7876 | (JSC::Identifier::equal): | |
7877 | (JSC::Identifier::addSlowCase): | |
7878 | * runtime/JSString.cpp: | |
7879 | (JSC::JSString::resolveRope): | |
7880 | * runtime/JSString.h: | |
7881 | (JSC::): | |
7882 | (JSC::RopeBuilder::JSString): | |
7883 | (JSC::RopeBuilder::~JSString): | |
7884 | (JSC::RopeBuilder::appendStringInConstruct): | |
7885 | (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): | |
7886 | (JSC::RopeBuilder::JSStringFinalizerStruct::JSStringFinalizerStruct): | |
7887 | (JSC::RopeBuilder::JSStringFinalizerStruct::): | |
7888 | * runtime/UString.cpp: | |
7889 | (JSC::UString::toStrictUInt32): | |
7890 | (JSC::equal): | |
7891 | * runtime/UString.h: | |
7892 | (JSC::UString::isEmpty): | |
7893 | (JSC::UString::size): | |
7894 | * runtime/UStringImpl.cpp: | |
7895 | (JSC::URopeImpl::derefFibersNonRecursive): | |
7896 | (JSC::URopeImpl::destructNonRecursive): | |
7897 | * runtime/UStringImpl.h: | |
7898 | (JSC::UStringOrRopeImpl::isRope): | |
7899 | (JSC::UStringOrRopeImpl::length): | |
7900 | (JSC::UStringOrRopeImpl::ref): | |
7901 | (JSC::UStringOrRopeImpl::): | |
7902 | (JSC::UStringOrRopeImpl::operator new): | |
7903 | (JSC::UStringOrRopeImpl::UStringOrRopeImpl): | |
7904 | (JSC::UStringImpl::adopt): | |
7905 | (JSC::UStringImpl::createUninitialized): | |
7906 | (JSC::UStringImpl::tryCreateUninitialized): | |
7907 | (JSC::UStringImpl::data): | |
7908 | (JSC::UStringImpl::cost): | |
7909 | (JSC::UStringImpl::deref): | |
7910 | (JSC::UStringImpl::UStringImpl): | |
7911 | (JSC::UStringImpl::): | |
7912 | (JSC::URopeImpl::tryCreateUninitialized): | |
7913 | (JSC::URopeImpl::initializeFiber): | |
7914 | (JSC::URopeImpl::fiberCount): | |
7915 | (JSC::URopeImpl::fibers): | |
7916 | (JSC::URopeImpl::deref): | |
7917 | (JSC::URopeImpl::URopeImpl): | |
7918 | (JSC::URopeImpl::hasOneRef): | |
7919 | (JSC::UStringOrRopeImpl::deref): | |
7920 | ||
7921 | 2010-02-15 Gabor Loki <loki@webkit.org> | |
7922 | ||
7923 | Reviewed by Gavin Barraclough. | |
7924 | ||
7925 | Fix the SP at ctiOpThrowNotCaught on Thumb2 (JSVALUE32) | |
7926 | https://bugs.webkit.org/show_bug.cgi?id=34939 | |
7927 | ||
7928 | * jit/JITStubs.cpp: | |
7929 | ||
7930 | 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
7931 | ||
7932 | Reviewed by NOBODY (Build Fix!). | |
7933 | ||
7934 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
7935 | ||
7936 | 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
7937 | ||
7938 | Reviewed by Oliver Hunt. | |
7939 | ||
7940 | Some general Rope related refactoring. | |
7941 | ||
7942 | Rename Rope::m_ropeLength to m_fiberCount, to be more descriptive. | |
7943 | Rename Rope::m_stringLength to simply m_length (since this is the | |
7944 | more conventional name for the length of a string). Move append | |
7945 | behaviour out into a new RopeBuilder class, so that Rope no longer | |
7946 | needs any knowledge of the JSString or UString implementation. | |
7947 | ||
7948 | Make Rope no longer be nested within JSString. | |
7949 | (Rope now no-longer need reside within JSString.h, but leaving | |
7950 | the change of moving this out to a different header as a separate | |
7951 | change from these renames). | |
7952 | ||
7953 | * JavaScriptCore.exp: | |
7954 | * jit/JITOpcodes.cpp: | |
7955 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
7956 | * runtime/JSString.cpp: | |
7957 | (JSC::Rope::destructNonRecursive): | |
7958 | (JSC::Rope::~Rope): | |
7959 | (JSC::JSString::resolveRope): | |
7960 | (JSC::JSString::toBoolean): | |
7961 | (JSC::JSString::getStringPropertyDescriptor): | |
7962 | * runtime/JSString.h: | |
7963 | (JSC::Rope::Fiber::Fiber): | |
7964 | (JSC::Rope::Fiber::deref): | |
7965 | (JSC::Rope::Fiber::ref): | |
7966 | (JSC::Rope::Fiber::refAndGetLength): | |
7967 | (JSC::Rope::Fiber::isRope): | |
7968 | (JSC::Rope::Fiber::rope): | |
7969 | (JSC::Rope::Fiber::isString): | |
7970 | (JSC::Rope::Fiber::string): | |
7971 | (JSC::Rope::Fiber::nonFiber): | |
7972 | (JSC::Rope::tryCreateUninitialized): | |
7973 | (JSC::Rope::append): | |
7974 | (JSC::Rope::fiberCount): | |
7975 | (JSC::Rope::length): | |
7976 | (JSC::Rope::fibers): | |
7977 | (JSC::Rope::Rope): | |
7978 | (JSC::Rope::operator new): | |
7979 | (JSC::): | |
7980 | (JSC::RopeBuilder::JSString): | |
7981 | (JSC::RopeBuilder::~JSString): | |
7982 | (JSC::RopeBuilder::length): | |
7983 | (JSC::RopeBuilder::canGetIndex): | |
7984 | (JSC::RopeBuilder::appendStringInConstruct): | |
7985 | (JSC::RopeBuilder::appendValueInConstructAndIncrementLength): | |
7986 | (JSC::RopeBuilder::isRope): | |
7987 | (JSC::RopeBuilder::fiberCount): | |
7988 | (JSC::JSString::getStringPropertySlot): | |
7989 | * runtime/Operations.h: | |
7990 | (JSC::jsString): | |
7991 | ||
7992 | 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
7993 | ||
7994 | Reviewed by NOBODY (Build fix). | |
7995 | ||
7996 | Add missing cast for !YARR (PPC) builds. | |
7997 | ||
7998 | * runtime/RegExp.cpp: | |
7999 | (JSC::RegExp::match): | |
8000 | ||
8001 | 2010-02-14 Gavin Barraclough <barraclough@apple.com> | |
8002 | ||
8003 | Reviewed by Darin Adler. | |
8004 | ||
8005 | https://bugs.webkit.org/show_bug.cgi?id=33731 | |
8006 | Many false leaks in release builds due to PtrAndFlags | |
8007 | ||
8008 | StructureTransitionTable was effectively a smart pointer type, | |
8009 | one machine word in size and wholly contained as a member of | |
8010 | of Structure. It either pointed to an actual table, or could | |
8011 | be used to describe a single transtion entry without use of a | |
8012 | table. | |
8013 | ||
8014 | This, however, worked by using a PtrAndFlags, which is not | |
8015 | compatible with the leaks tool. Since there is no clear way to | |
8016 | obtain another bit for 'free' here, and since there are bits | |
8017 | available up in Structure, merge this functionality back up into | |
8018 | Structure. Having this in a separate class was quite clean | |
8019 | from an enacapsulation perspective, but this solution doesn't | |
8020 | seem to bad - all table access is now intermediated through the | |
8021 | Structure::structureTransitionTableFoo methods, keeping the | |
8022 | optimization fairly well contained. | |
8023 | ||
8024 | This was the last use of PtrAndFlags, so removing the file too. | |
8025 | ||
8026 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
8027 | * bytecode/CodeBlock.h: | |
8028 | * runtime/Structure.cpp: | |
8029 | (JSC::Structure::Structure): | |
8030 | (JSC::Structure::~Structure): | |
8031 | (JSC::Structure::addPropertyTransitionToExistingStructure): | |
8032 | (JSC::Structure::addPropertyTransition): | |
8033 | (JSC::Structure::hasTransition): | |
8034 | * runtime/Structure.h: | |
8035 | (JSC::Structure::): | |
8036 | (JSC::Structure::structureTransitionTableContains): | |
8037 | (JSC::Structure::structureTransitionTableGet): | |
8038 | (JSC::Structure::structureTransitionTableHasTransition): | |
8039 | (JSC::Structure::structureTransitionTableRemove): | |
8040 | (JSC::Structure::structureTransitionTableAdd): | |
8041 | (JSC::Structure::structureTransitionTable): | |
8042 | (JSC::Structure::setStructureTransitionTable): | |
8043 | (JSC::Structure::singleTransition): | |
8044 | (JSC::Structure::setSingleTransition): | |
8045 | * runtime/StructureTransitionTable.h: | |
8046 | * wtf/PtrAndFlags.h: Removed. | |
8047 | ||
8048 | 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
8049 | ||
8050 | Rubber Stamped by Geoff Garen. | |
8051 | ||
8052 | Bug 34948 - tryMakeString should fail on error in length calculation | |
8053 | ||
8054 | Ooops! - "bool overflow" argument should have been "bool& overflow". | |
8055 | ||
8056 | * runtime/UString.h: | |
8057 | (JSC::sumWithOverflow): | |
8058 | (JSC::tryMakeString): | |
8059 | ||
8060 | 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
8061 | ||
8062 | Reviewed by NOBODY (Build Fix (pt 2!)). | |
8063 | ||
8064 | Some symbol names have changed, remove, will readd if required. | |
8065 | ||
8066 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
8067 | ||
8068 | 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
8069 | ||
8070 | Reviewed by NOBODY (Build Fix (pt 1?)). | |
8071 | ||
8072 | Some symbol names have changed, remove, will readd if required. | |
8073 | ||
8074 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
8075 | ||
8076 | 2010-02-15 Geoffrey Garen <ggaren@apple.com> | |
8077 | ||
8078 | Reviewed by Oliver Hunt. | |
8079 | ||
8080 | Removed some mistaken code added in http://trac.webkit.org/changeset/53860. | |
8081 | ||
8082 | * API/APIShims.h: | |
8083 | (JSC::APICallbackShim::APICallbackShim): | |
8084 | (JSC::APICallbackShim::~APICallbackShim): No need to start/stop the | |
8085 | timeout checker when calling out from the API to the client; we want to | |
8086 | monitor the VM for timeouts, not the client. This mistake was harmless / | |
8087 | undetectable, since it's totally redundant with the APIEntryShim, which | |
8088 | also starts / stops the timeout checker. | |
8089 | ||
8090 | 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
8091 | ||
8092 | Reviewed by Geoff Garen. | |
8093 | ||
8094 | Bug 34952 - String lengths in UString should be unsigned. | |
8095 | This matches WebCore::StringImpl, and better unifies behaviour throughout JSC. | |
8096 | ||
8097 | * JavaScriptCore.exp: | |
8098 | * bytecode/EvalCodeCache.h: | |
8099 | * runtime/Identifier.cpp: | |
8100 | (JSC::Identifier::equal): | |
8101 | * runtime/Identifier.h: | |
8102 | * runtime/JSGlobalObjectFunctions.cpp: | |
8103 | (JSC::globalFuncEscape): | |
8104 | * runtime/JSONObject.cpp: | |
8105 | (JSC::gap): | |
8106 | (JSC::Stringifier::indent): | |
8107 | * runtime/NumberPrototype.cpp: | |
8108 | (JSC::numberProtoFuncToFixed): | |
8109 | (JSC::numberProtoFuncToPrecision): | |
8110 | * runtime/RegExp.cpp: | |
8111 | (JSC::RegExp::match): | |
8112 | * runtime/StringPrototype.cpp: | |
8113 | (JSC::substituteBackreferencesSlow): | |
8114 | (JSC::stringProtoFuncReplace): | |
8115 | (JSC::stringProtoFuncSplit): | |
8116 | (JSC::trimString): | |
8117 | * runtime/UString.cpp: | |
8118 | (JSC::UString::UString): | |
8119 | (JSC::UString::from): | |
8120 | (JSC::UString::getCString): | |
8121 | (JSC::UString::ascii): | |
8122 | (JSC::UString::operator[]): | |
8123 | (JSC::UString::toStrictUInt32): | |
8124 | (JSC::UString::find): | |
8125 | (JSC::UString::rfind): | |
8126 | (JSC::UString::substr): | |
8127 | (JSC::operator<): | |
8128 | (JSC::operator>): | |
8129 | (JSC::compare): | |
8130 | (JSC::equal): | |
8131 | (JSC::UString::UTF8String): | |
8132 | * runtime/UString.h: | |
8133 | (JSC::UString::size): | |
8134 | (JSC::operator==): | |
8135 | * runtime/UStringImpl.cpp: | |
8136 | (JSC::UStringImpl::create): | |
8137 | * runtime/UStringImpl.h: | |
8138 | (JSC::UStringImpl::create): | |
8139 | (JSC::UStringImpl::size): | |
8140 | (JSC::UStringImpl::computeHash): | |
8141 | (JSC::UStringImpl::UStringImpl): | |
8142 | ||
8143 | 2010-02-15 Gavin Barraclough <barraclough@apple.com> | |
8144 | ||
8145 | Reviewed by Geoff Garen. | |
8146 | ||
8147 | Bug 34948 - tryMakeString should fail on error in length calculation | |
8148 | ||
8149 | The sum of the length of substrings could overflow. | |
8150 | ||
8151 | * runtime/UString.h: | |
8152 | (JSC::sumWithOverflow): | |
8153 | (JSC::tryMakeString): | |
8154 | ||
8155 | 2010-02-15 Geoffrey Garen <ggaren@apple.com> | |
8156 | ||
8157 | Reviewed by Oliver Hunt. | |
8158 | ||
8159 | Fixed <rdar://problem/7628524> Crash beneath JSGlobalContextRelease when | |
8160 | typing in Google search field with GuardMalloc/full page heap enabled | |
8161 | ||
8162 | * API/JSContextRef.cpp: Don't use APIEntryShim, since that requires | |
8163 | a JSGlobalData, which this function destroys. Do use setCurrentIdentifierTable | |
8164 | and JSLock instead, since those are the two features of APIEntryShim we | |
8165 | require. | |
8166 | ||
8167 | 2010-02-15 Patrick Gansterer <paroga@paroga.com> | |
8168 | ||
8169 | Reviewed by Laszlo Gombos. | |
8170 | ||
8171 | Added additional parameter to create_rvct_stubs | |
8172 | for setting the offset of thunkReturnAddress. | |
8173 | https://bugs.webkit.org/show_bug.cgi?id=34657 | |
8174 | ||
8175 | * create_rvct_stubs: | |
8176 | * jit/JITStubs.cpp: | |
8177 | ||
8178 | 2010-02-15 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
8179 | ||
8180 | Reviewed by Simon Hausmann. | |
8181 | ||
8182 | Fix QScriptValue::toIntXX methods. | |
8183 | ||
8184 | More ECMA Script compliance. | |
8185 | ||
8186 | [Qt] QScriptValue::toIntXX returns incorrect values | |
8187 | https://bugs.webkit.org/show_bug.cgi?id=34847 | |
8188 | ||
8189 | * qt/api/qscriptvalue_p.h: | |
8190 | (QScriptValuePrivate::toInteger): | |
8191 | (QScriptValuePrivate::toInt32): | |
8192 | (QScriptValuePrivate::toUInt32): | |
8193 | (QScriptValuePrivate::toUInt16): | |
8194 | * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
8195 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
8196 | (tst_QScriptValue::toInteger_initData): | |
8197 | (tst_QScriptValue::toInteger_makeData): | |
8198 | (tst_QScriptValue::toInteger_test): | |
8199 | (tst_QScriptValue::toInt32_initData): | |
8200 | (tst_QScriptValue::toInt32_makeData): | |
8201 | (tst_QScriptValue::toInt32_test): | |
8202 | (tst_QScriptValue::toUInt32_initData): | |
8203 | (tst_QScriptValue::toUInt32_makeData): | |
8204 | (tst_QScriptValue::toUInt32_test): | |
8205 | (tst_QScriptValue::toUInt16_initData): | |
8206 | (tst_QScriptValue::toUInt16_makeData): | |
8207 | (tst_QScriptValue::toUInt16_test): | |
8208 | ||
8209 | 2010-02-14 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
8210 | ||
8211 | Reviewed by Adam Barth. | |
8212 | ||
8213 | Implement NEVER_INLINE and NO_RETURN for RVCT | |
8214 | https://bugs.webkit.org/show_bug.cgi?id=34740 | |
8215 | ||
8216 | * wtf/AlwaysInline.h: | |
8217 | ||
8218 | 2010-02-12 Gavin Barraclough <barraclough@apple.com> | |
8219 | ||
8220 | Reviewed by Oliver Hunt. | |
8221 | ||
8222 | https://bugs.webkit.org/show_bug.cgi?id=33731 | |
8223 | Remove uses of PtrAndFlags from JIT data stuctures. | |
8224 | ||
8225 | These break the OS X Leaks tool. Free up a bit in CallLinkInfo, and invalid | |
8226 | permutation of pointer states in MethodCallLinkInfo to represent the removed bits. | |
8227 | ||
8228 | * bytecode/CodeBlock.h: | |
8229 | (JSC::CallLinkInfo::seenOnce): | |
8230 | (JSC::CallLinkInfo::setSeen): | |
8231 | (JSC::MethodCallLinkInfo::MethodCallLinkInfo): | |
8232 | (JSC::MethodCallLinkInfo::seenOnce): | |
8233 | (JSC::MethodCallLinkInfo::setSeen): | |
8234 | * jit/JIT.cpp: | |
8235 | (JSC::JIT::unlinkCall): | |
8236 | * jit/JITPropertyAccess.cpp: | |
8237 | (JSC::JIT::patchMethodCallProto): | |
8238 | * runtime/UString.h: | |
8239 | ||
8240 | 2010-02-12 Gavin Barraclough <barraclough@apple.com> | |
8241 | ||
8242 | Reviewed by Darin Adler. | |
8243 | ||
8244 | https://bugs.webkit.org/show_bug.cgi?id=33731 | |
8245 | Many false leaks in release builds due to PtrAndFlags | |
8246 | ||
8247 | Remove UntypedPtrAndBitfield (similar to PtrAndFlags) in UStringImpl, | |
8248 | and steal bits from the refCount instead. | |
8249 | ||
8250 | * runtime/UStringImpl.cpp: | |
8251 | (JSC::UStringImpl::baseSharedBuffer): | |
8252 | (JSC::UStringImpl::~UStringImpl): | |
8253 | * runtime/UStringImpl.h: | |
8254 | (JSC::UStringImpl::cost): | |
8255 | (JSC::UStringImpl::isIdentifier): | |
8256 | (JSC::UStringImpl::setIsIdentifier): | |
8257 | (JSC::UStringImpl::ref): | |
8258 | (JSC::UStringImpl::deref): | |
8259 | (JSC::UStringImpl::UStringImpl): | |
8260 | (JSC::UStringImpl::bufferOwnerString): | |
8261 | (JSC::UStringImpl::bufferOwnership): | |
8262 | (JSC::UStringImpl::isStatic): | |
8263 | (JSC::UStringImpl::): | |
8264 | ||
8265 | 2010-02-12 Geoffrey Garen <ggaren@apple.com> | |
8266 | ||
8267 | Reviewed by Darin Adler. | |
8268 | ||
8269 | Removed an unnecessary data dependency from my last patch. | |
8270 | ||
8271 | * runtime/SmallStrings.cpp: | |
8272 | (JSC::SmallStrings::markChildren): Since isAnyStringMarked being false | |
8273 | is a condition of entering the loop, we can just use '=' instead of '|='. | |
8274 | ||
8275 | 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> | |
8276 | ||
8277 | Reviewed by Tor Arne Vestbø. | |
8278 | ||
8279 | Additional refptr/passrefptr workarounds for WINSCW compiler | |
8280 | https://bugs.webkit.org/show_bug.cgi?id=28054 | |
8281 | ||
8282 | * wtf/PassRefPtr.h: | |
8283 | (WTF::refIfNotNull): | |
8284 | (WTF::PassRefPtr::PassRefPtr): | |
8285 | (WTF::PassRefPtr::~PassRefPtr): | |
8286 | (WTF::PassRefPtr::clear): | |
8287 | (WTF::::operator): | |
8288 | * wtf/RefPtr.h: | |
8289 | (WTF::RefPtr::RefPtr): | |
8290 | (WTF::::operator): | |
8291 | ||
8292 | 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> | |
8293 | ||
8294 | Reviewed by Tor Arne Vestbø. | |
8295 | ||
8296 | Additional refptr/passrefptr workarounds for WINSCW compiler | |
8297 | https://bugs.webkit.org/show_bug.cgi?id=28054 | |
8298 | ||
8299 | * wtf/PassRefPtr.h: | |
8300 | (WTF::refIfNotNull): | |
8301 | (WTF::PassRefPtr::PassRefPtr): | |
8302 | (WTF::PassRefPtr::~PassRefPtr): | |
8303 | (WTF::PassRefPtr::clear): | |
8304 | (WTF::::operator): | |
8305 | * wtf/RefPtr.h: | |
8306 | (WTF::RefPtr::RefPtr): | |
8307 | (WTF::::operator): | |
8308 | ||
8309 | 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> | |
8310 | ||
8311 | Reviewed by Tor Arne Vestbø. | |
8312 | ||
8313 | Additional refptr/passrefptr workarounds for WINSCW compiler | |
8314 | https://bugs.webkit.org/show_bug.cgi?id=28054 | |
8315 | ||
8316 | * wtf/PassRefPtr.h: | |
8317 | (WTF::refIfNotNull): | |
8318 | (WTF::PassRefPtr::PassRefPtr): | |
8319 | (WTF::PassRefPtr::~PassRefPtr): | |
8320 | (WTF::PassRefPtr::clear): | |
8321 | (WTF::::operator): | |
8322 | * wtf/RefPtr.h: | |
8323 | (WTF::RefPtr::RefPtr): | |
8324 | (WTF::::operator): | |
8325 | ||
8326 | 2010-02-12 Janne Koskinen <janne.p.koskinen@digia.com> | |
8327 | ||
8328 | Reviewed by Simon Hausmann. | |
8329 | ||
8330 | Don't import the cmath functions from std:: for WINSCW. | |
8331 | ||
8332 | * wtf/MathExtras.h: | |
8333 | ||
8334 | 2010-02-12 Kwang Yul Seo <skyul@company100.net> | |
8335 | ||
8336 | Reviewed by Adam Barth. | |
8337 | ||
8338 | Typedef both JSChar and UChar to wchar_t in RVCT. | |
8339 | https://bugs.webkit.org/show_bug.cgi?id=34560 | |
8340 | ||
8341 | Define both JSChar and UChar to wchar_t as the size | |
8342 | of wchar_t is 2 bytes in RVCT. | |
8343 | ||
8344 | * API/JSStringRef.h: | |
8345 | * wtf/unicode/qt4/UnicodeQt4.h: | |
8346 | ||
8347 | 2010-02-11 Geoffrey Garen <ggaren@apple.com> | |
8348 | ||
8349 | Reviewed by Oliver Hunt and Darin Adler. | |
8350 | ||
8351 | The rest of the fix for | |
8352 | https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198> | |
8353 | Many objects left uncollected after visiting mail.google.com and closing | |
8354 | window | |
8355 | ||
8356 | Don't unconditionally hang onto small strings. Instead, hang onto all | |
8357 | small strings as long as any small string is still referenced. | |
8358 | ||
8359 | SunSpider reports no change. | |
8360 | ||
8361 | * runtime/Collector.cpp: | |
8362 | (JSC::Heap::markRoots): Mark the small strings cache last, so it can | |
8363 | check if anything else has kept any strings alive. | |
8364 | ||
8365 | * runtime/SmallStrings.cpp: | |
8366 | (JSC::isMarked): | |
8367 | (JSC::SmallStrings::markChildren): Only keep our strings alive if some | |
8368 | other reference to at least one of them exists, too. | |
8369 | ||
8370 | 2010-02-11 Geoffrey Garen <ggaren@apple.com> | |
8371 | ||
8372 | Reviewed by Gavin Barraclough. | |
8373 | ||
8374 | Some progress toward fixing | |
8375 | https://bugs.webkit.org/show_bug.cgi?id=34864 | <rdar://problem/7594198> | |
8376 | Many objects left uncollected after visiting mail.google.com and closing | |
8377 | window | |
8378 | ||
8379 | SunSpider reports no change. | |
8380 | ||
8381 | Keep weak references, rather than protected references, to cached for-in | |
8382 | property name enumerators. | |
8383 | ||
8384 | One problem with protected references is that a chain like | |
8385 | [ gc object 1 ] => [ non-gc object ] => [ gc object 2 ] | |
8386 | takes two GC passes to break, since the first pass collects [ gc object 1 ], | |
8387 | releasing [ non-gc object ] and unprotecting [ gc object 2 ], and only | |
8388 | then can a second pass collect [ gc object 2 ]. | |
8389 | ||
8390 | Another problem with protected references is that they can keep a bunch | |
8391 | of strings alive long after they're useful. In SunSpider and a few popular | |
8392 | websites, the size-speed tradeoff seems to favor weak references. | |
8393 | ||
8394 | * runtime/JSPropertyNameIterator.cpp: | |
8395 | (JSC::JSPropertyNameIterator::JSPropertyNameIterator): Moved this constructor | |
8396 | into the .cpp file, since it's not used elsewhere. | |
8397 | ||
8398 | (JSC::JSPropertyNameIterator::~JSPropertyNameIterator): Added a destructor | |
8399 | to support our weak reference. | |
8400 | ||
8401 | * runtime/JSPropertyNameIterator.h: | |
8402 | (JSC::Structure::setEnumerationCache): | |
8403 | (JSC::Structure::clearEnumerationCache): | |
8404 | (JSC::Structure::enumerationCache): Added a function for clearing a | |
8405 | Structure's enumeration cache, used by our new destructor. Also fixed | |
8406 | indentation to match the rest of the file. | |
8407 | ||
8408 | * runtime/Structure.h: Changed from protected pointer to weak pointer. | |
8409 | ||
8410 | 2010-02-11 Chris Rogers <crogers@google.com> | |
8411 | ||
8412 | Reviewed by David Levin. | |
8413 | ||
8414 | audio engine: add Complex number class | |
8415 | https://bugs.webkit.org/show_bug.cgi?id=34538 | |
8416 | ||
8417 | * wtf/Complex.h: Added. | |
8418 | (WebCore::complexFromMagnitudePhase): | |
8419 | ||
8420 | 2010-02-10 Geoffrey Garen <ggaren@apple.com> | |
8421 | ||
8422 | Reviewed by Oliver Hunt. | |
8423 | ||
8424 | Added an SPI for asking about all the different live objects on the heap. | |
8425 | Useful for memory debugging. | |
8426 | ||
8427 | * JavaScriptCore.exp: Export the new SPI. | |
8428 | ||
8429 | * runtime/Collector.cpp: | |
8430 | (JSC::typeName): Use a little capitalization. Don't crash in the case of | |
8431 | a non-object cell, since it might just be an uninitialized cell. | |
8432 | ||
8433 | (JSC::Heap::objectTypeCounts): The new SPI. | |
8434 | ||
8435 | * runtime/Collector.h: | |
8436 | * runtime/CollectorHeapIterator.h: | |
8437 | (JSC::CollectorHeapIterator::advance): | |
8438 | (JSC::LiveObjectIterator::operator++): | |
8439 | (JSC::DeadObjectIterator::operator++): | |
8440 | (JSC::ObjectIterator::operator++): Made 2 tweaks to these iterators: | |
8441 | (1) Skip the last cell in the block, since it's a dummy sentinel, and | |
8442 | we don't want it to confuse the object count; (2) Fixed a logic error | |
8443 | in LiveObjectIterator that could cause it to iterate dead objects if | |
8444 | m_block were equal to m_heap.nextBlock and m_cell were less than | |
8445 | m_heap.nextCell. No test for this since I can't think of a way that this | |
8446 | could make WebKit behave badly. | |
8447 | ||
8448 | 2010-02-11 Steve Block <steveblock@google.com> | |
8449 | ||
8450 | Reviewed by Darin Adler. | |
8451 | ||
8452 | Guard cmath using declarations in MathExtras.h on Android | |
8453 | https://bugs.webkit.org/show_bug.cgi?id=34840 | |
8454 | ||
8455 | Android does not provide these functions. | |
8456 | ||
8457 | * wtf/MathExtras.h: | |
8458 | ||
8459 | 2010-02-08 Maciej Stachowiak <mjs@apple.com> | |
8460 | ||
8461 | Reviewed by Cameron Zwarich. | |
8462 | ||
8463 | Restore ENABLE_RUBY flag so vendors can ship with Ruby disabled if they choose. | |
8464 | https://bugs.webkit.org/show_bug.cgi?id=34698 | |
8465 | ||
8466 | * Configurations/FeatureDefines.xcconfig: | |
8467 | ||
8468 | 2010-02-10 Kevin Watters <kevinwatters@gmail.com> | |
8469 | ||
8470 | Reviewed by Kevin Ollivier. | |
8471 | ||
8472 | [wx] Add Windows complex text support and Mac support for containsCharacters. | |
8473 | ||
8474 | https://bugs.webkit.org/show_bug.cgi?id=34759 | |
8475 | ||
8476 | * wscript: | |
8477 | ||
8478 | 2010-02-10 Alexey Proskuryakov <ap@apple.com> | |
8479 | ||
8480 | Addressing issues found by style bot. | |
8481 | ||
8482 | * wtf/ValueCheck.h: Renamed header guard to match final file name. | |
8483 | ||
8484 | * wtf/Vector.h: (WTF::::checkConsistency): Remove braces around a one-line clause. | |
8485 | ||
8486 | 2010-02-09 Alexey Proskuryakov <ap@apple.com> | |
8487 | ||
8488 | Reviewed by Geoffrey Garen. | |
8489 | ||
8490 | https://bugs.webkit.org/show_bug.cgi?id=34490 | |
8491 | WebCore::ImageEventSender::dispatchPendingEvents() crashes in certain conditions | |
8492 | ||
8493 | * GNUmakefile.am: | |
8494 | * JavaScriptCore.gypi: | |
8495 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
8496 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
8497 | Added ValueCheck.h. | |
8498 | ||
8499 | * wtf/ValueCheck.h: Added. Moved code out of HashTraits, since it would be awkward to | |
8500 | include that from Vector.h. | |
8501 | (WTF::ValueCheck::checkConsistency): Allow null pointers, those are pretty consistent. | |
8502 | ||
8503 | * wtf/HashTraits.h: Moved value checking code out of here. | |
8504 | ||
8505 | * wtf/HashTable.h: (WTF::::checkTableConsistencyExceptSize): Updated for the above changes. | |
8506 | ||
8507 | * wtf/Vector.h: | |
8508 | (WTF::::checkConsistency): Check all vector elements. | |
8509 | (WTF::ValueCheck): Support checking a Vector as an element in other containers. Currently | |
8510 | unused. | |
8511 | ||
8512 | 2010-02-10 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
8513 | ||
8514 | Reviewed by Simon Hausmann. | |
8515 | ||
8516 | Fix QScriptValue::toBool. | |
8517 | ||
8518 | Fix ECMA compliance in the QScriptValue for values like 0, NaN and | |
8519 | empty strings. | |
8520 | ||
8521 | [Qt] QScriptValue::toBool problem | |
8522 | https://bugs.webkit.org/show_bug.cgi?id=34793 | |
8523 | ||
8524 | * qt/api/qscriptvalue_p.h: | |
8525 | (QScriptValuePrivate::toBool): | |
8526 | * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
8527 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
8528 | (tst_QScriptValue::toBool_initData): | |
8529 | (tst_QScriptValue::toBool_makeData): | |
8530 | (tst_QScriptValue::toBool_test): | |
8531 | (tst_QScriptValue::toBoolean_initData): | |
8532 | (tst_QScriptValue::toBoolean_makeData): | |
8533 | (tst_QScriptValue::toBoolean_test): | |
8534 | ||
8535 | 2009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com> | |
8536 | ||
8537 | Reviewed by Simon Hausmann. | |
8538 | ||
8539 | Use derefIfNotNull() to work around WINSCW compiler forward declaration bug | |
8540 | ||
8541 | The compiler bug is reported at | |
8542 | https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812. | |
8543 | ||
8544 | The change should be reverted when the above bug is fixed in WINSCW compiler. | |
8545 | ||
8546 | https://bugs.webkit.org/show_bug.cgi?id=28054 | |
8547 | ||
8548 | 2009-10-06 Yongjun Zhang <yongjun.zhang@nokia.com> | |
8549 | ||
8550 | Reviewed by Simon Hausmann. | |
8551 | ||
8552 | Get rid of WINSCW hack for UnSpecifiedBoolType | |
8553 | ||
8554 | Add parenthesis around (RefPtr::*UnspecifiedBoolType) to make the WINSCW | |
8555 | compiler work with the default UnSpecifiedBoolType() operator. | |
8556 | ||
8557 | https://bugs.webkit.org/show_bug.cgi?id=28054 | |
8558 | ||
8559 | * wtf/RefPtr.h: | |
8560 | ||
8561 | 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
8562 | ||
8563 | Reviewed by Simon Hausmann. | |
8564 | ||
8565 | New functions nullValue() and undefinedValue(). | |
8566 | ||
8567 | [Qt] QScriptEngine should contain nullValue and undefinedValue methods | |
8568 | https://bugs.webkit.org/show_bug.cgi?id=34749 | |
8569 | ||
8570 | * qt/api/qscriptengine.cpp: | |
8571 | (QScriptEngine::nullValue): | |
8572 | (QScriptEngine::undefinedValue): | |
8573 | * qt/api/qscriptengine.h: | |
8574 | * qt/tests/qscriptengine/tst_qscriptengine.cpp: | |
8575 | (tst_QScriptEngine::nullValue): | |
8576 | (tst_QScriptEngine::undefinedValue): | |
8577 | ||
8578 | 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
8579 | ||
8580 | Reviewed by Simon Hausmann. | |
8581 | ||
8582 | Fixes for QScriptValue::toNumber(). | |
8583 | ||
8584 | Fix ECMA compliance in QScriptValue for values unbound | |
8585 | to a QScriptEngine. | |
8586 | ||
8587 | [Qt] QScriptValue::toNumber() is broken | |
8588 | https://bugs.webkit.org/show_bug.cgi?id=34592 | |
8589 | ||
8590 | * qt/api/qscriptvalue_p.h: | |
8591 | (QScriptValuePrivate::toNumber): | |
8592 | * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
8593 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
8594 | (tst_QScriptValue::toNumber_initData): | |
8595 | (tst_QScriptValue::toNumber_makeData): | |
8596 | (tst_QScriptValue::toNumber_test): | |
8597 | ||
8598 | 2010-02-09 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
8599 | ||
8600 | Reviewed by Simon Hausmann. | |
8601 | ||
8602 | Fix QScriptValue::isNumber(). | |
8603 | ||
8604 | The isNumber() should return 'true' if the value is in the CNumber | |
8605 | state. | |
8606 | ||
8607 | [Qt] QScriptValue::isNumber() returns an incorrect value | |
8608 | https://bugs.webkit.org/show_bug.cgi?id=34575 | |
8609 | ||
8610 | * qt/api/qscriptvalue_p.h: | |
8611 | (QScriptValuePrivate::isNumber): | |
8612 | * qt/tests/qscriptvalue/tst_qscriptvalue.h: | |
8613 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: | |
8614 | (tst_QScriptValue::isNumber_initData): | |
8615 | (tst_QScriptValue::isNumber_makeData): | |
8616 | (tst_QScriptValue::isNumber_test): | |
8617 | ||
8618 | 2010-02-09 Geoffrey Garen <ggaren@apple.com> | |
8619 | ||
8620 | Reviewed by Oliver Hunt. | |
8621 | ||
8622 | Small refactoring to the small strings cache to allow it to be cleared | |
8623 | dynamically. | |
8624 | ||
8625 | * runtime/SmallStrings.cpp: | |
8626 | (JSC::SmallStrings::SmallStrings): | |
8627 | (JSC::SmallStrings::clear): | |
8628 | * runtime/SmallStrings.h: Moved initialization code into a shared function, | |
8629 | and changed the constructor to call it. | |
8630 | ||
8631 | 2010-02-09 Gavin Barraclough <barraclough@apple.com> | |
8632 | ||
8633 | Rubber Stamped by Geoff Garen. | |
8634 | ||
8635 | Rename StringBuilder::release && JSStringBuilder::releaseJSString | |
8636 | to 'build()'. | |
8637 | ||
8638 | * runtime/ArrayPrototype.cpp: | |
8639 | (JSC::arrayProtoFuncToLocaleString): | |
8640 | (JSC::arrayProtoFuncJoin): | |
8641 | * runtime/Executable.cpp: | |
8642 | (JSC::FunctionExecutable::paramString): | |
8643 | * runtime/FunctionConstructor.cpp: | |
8644 | (JSC::constructFunction): | |
8645 | * runtime/JSGlobalObjectFunctions.cpp: | |
8646 | (JSC::encode): | |
8647 | (JSC::decode): | |
8648 | (JSC::globalFuncEscape): | |
8649 | (JSC::globalFuncUnescape): | |
8650 | * runtime/JSONObject.cpp: | |
8651 | (JSC::Stringifier::stringify): | |
8652 | * runtime/JSStringBuilder.h: | |
8653 | (JSC::JSStringBuilder::build): | |
8654 | * runtime/LiteralParser.cpp: | |
8655 | (JSC::LiteralParser::Lexer::lexString): | |
8656 | * runtime/NumberPrototype.cpp: | |
8657 | (JSC::integerPartNoExp): | |
8658 | (JSC::numberProtoFuncToFixed): | |
8659 | * runtime/StringBuilder.h: | |
8660 | (JSC::StringBuilder::build): | |
8661 | ||
8662 | 2010-02-09 John Sullivan <sullivan@apple.com> | |
8663 | ||
8664 | https://bugs.webkit.org/show_bug.cgi?id=34772 | |
8665 | Overzealous new assertion in URStringImpl::adopt() | |
8666 | ||
8667 | Reviewed by Adam Barth. | |
8668 | ||
8669 | * runtime/UStringImpl.h: | |
8670 | (JSC::UStringImpl::adopt): | |
8671 | Only assert that vector.data() is non-zero if vector.size() is non-zero. | |
8672 | ||
8673 | 2010-02-09 Nikolas Zimmermann <nzimmermann@rim.com> | |
8674 | ||
8675 | Not reviewed. Try to fix build problem on SnowLeopard slaves to bring them back. | |
8676 | ||
8677 | * API/JSClassRef.cpp: | |
8678 | (tryCreateStringFromUTF8): Mark method as 'static inline' to suppress "warning: no previous prototype for ..." | |
8679 | ||
8680 | 2010-02-09 Gavin Barraclough <barraclough@apple.com> | |
8681 | ||
8682 | Reviewed by Oliver Hunt. | |
8683 | ||
8684 | Three small string fixes: | |
8685 | (1) StringBuilder::release should CRASH if the buffer allocation failed. | |
8686 | (2) Remove weird, dead code from JSString::tryGetValue, replace with an ASSERT. | |
8687 | (3) Move UString::createFromUTF8 out to the API, as tryCreateStringFromUTF8. | |
8688 | This is only used from the API, and (now) unlike other UString::create | |
8689 | methods may return UString::null() to indicate failure cases. Better | |
8690 | handle these in the API. | |
8691 | ||
8692 | * API/JSClassRef.cpp: | |
8693 | (tryCreateStringFromUTF8): | |
8694 | (OpaqueJSClass::OpaqueJSClass): | |
8695 | (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
8696 | * runtime/JSString.h: | |
8697 | (JSC::Fiber::tryGetValue): | |
8698 | * runtime/StringBuilder.h: | |
8699 | (JSC::StringBuilder::release): | |
8700 | * runtime/UString.cpp: | |
8701 | (JSC::UString::UString): | |
8702 | (JSC::UString::from): | |
8703 | (JSC::UString::find): | |
8704 | * runtime/UString.h: | |
8705 | ||
8706 | 2010-02-09 Janne Koskinen <janne.p.koskinen@digia.com> | |
8707 | ||
8708 | Reviewed by Laszlo Gombos. | |
8709 | ||
8710 | [Qt] use nanval() for Symbian as nonInlineNaN | |
8711 | https://bugs.webkit.org/show_bug.cgi?id=34170 | |
8712 | ||
8713 | numeric_limits<double>::quiet_NaN is broken in Symbian | |
8714 | causing NaN to be evaluated as a number. | |
8715 | ||
8716 | * runtime/JSValue.cpp: | |
8717 | (JSC::nonInlineNaN): | |
8718 | ||
8719 | 2010-02-09 Tamas Szirbucz <szirbucz@inf.u-szeged.hu> | |
8720 | ||
8721 | Reviewed by Gavin Barraclough. | |
8722 | ||
8723 | Add a soft modulo operation to ARM JIT using a trampoline function. | |
8724 | The performance progression is about ~1.8% on ARMv7 | |
8725 | https://bugs.webkit.org/show_bug.cgi?id=34424 | |
8726 | ||
8727 | Developed in cooperation with Gabor Loki. | |
8728 | ||
8729 | * jit/JIT.h: | |
8730 | * jit/JITArithmetic.cpp: | |
8731 | (JSC::JIT::emit_op_mod): | |
8732 | (JSC::JIT::emitSlow_op_mod): | |
8733 | * jit/JITOpcodes.cpp: | |
8734 | (JSC::JIT::softModulo): | |
8735 | * jit/JITStubs.h: | |
8736 | (JSC::JITThunks::ctiSoftModulo): | |
8737 | * wtf/Platform.h: | |
8738 | ||
8739 | 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
8740 | ||
8741 | Reviewed by NOBODY (SL/win build fixes). | |
8742 | ||
8743 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
8744 | * runtime/StringPrototype.cpp: | |
8745 | ||
8746 | 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
8747 | ||
8748 | Reviewed by Oliver Hunt | |
8749 | ||
8750 | Make String.replace throw an exception on out-of-memory, rather than | |
8751 | returning a null (err, empty-ish) string. Move String::replaceRange | |
8752 | and String::spliceSubstringsWithSeparators out to StringPrototype - | |
8753 | these were fairly specific use anyway, and we can better integrate | |
8754 | throwing the JS expcetion this way. | |
8755 | ||
8756 | Also removes redundant assignment operator from UString. | |
8757 | ||
8758 | * JavaScriptCore.exp: | |
8759 | * runtime/StringPrototype.cpp: | |
8760 | (JSC::StringRange::StringRange): | |
8761 | (JSC::jsSpliceSubstringsWithSeparators): | |
8762 | (JSC::jsReplaceRange): | |
8763 | (JSC::stringProtoFuncReplace): | |
8764 | * runtime/UString.cpp: | |
8765 | * runtime/UString.h: | |
8766 | ||
8767 | 2010-02-08 Kwang Yul Seo <skyul@company100.net> | |
8768 | ||
8769 | Reviewed by Eric Seidel. | |
8770 | ||
8771 | [BREWMP] Undefine WTF_OS_WINDOWS and WTF_PLATFORM_WIN | |
8772 | https://bugs.webkit.org/show_bug.cgi?id=34561 | |
8773 | ||
8774 | As the binary for simulator is built with MSVC 2005, | |
8775 | WTF_OS_WINDOWS and WTF_PLATFORM_WIN are defined. | |
8776 | Undefine them as we don't target Windows. | |
8777 | ||
8778 | * wtf/Platform.h: | |
8779 | ||
8780 | 2010-02-08 Chris Rogers <crogers@google.com> | |
8781 | ||
8782 | Reviewed by Darin Adler. | |
8783 | ||
8784 | audio engine: add Vector3 class | |
8785 | https://bugs.webkit.org/show_bug.cgi?id=34548 | |
8786 | ||
8787 | * wtf/Vector3.h: Added. | |
8788 | (WebCore::Vector3::Vector3): | |
8789 | (WebCore::Vector3::abs): | |
8790 | (WebCore::Vector3::isZero): | |
8791 | (WebCore::Vector3::normalize): | |
8792 | (WebCore::Vector3::x): | |
8793 | (WebCore::Vector3::y): | |
8794 | (WebCore::Vector3::z): | |
8795 | (WebCore::operator+): | |
8796 | (WebCore::operator-): | |
8797 | (WebCore::operator*): | |
8798 | (WebCore::dot): | |
8799 | (WebCore::cross): | |
8800 | (WebCore::distance): | |
8801 | ||
8802 | 2010-02-08 Oliver Hunt <oliver@apple.com> | |
8803 | ||
8804 | Reviewed by Gavin Barraclough. | |
8805 | ||
8806 | Fix warning in clang++ | |
8807 | ||
8808 | * runtime/Structure.h: | |
8809 | (JSC::Structure::propertyStorageSize): | |
8810 | ||
8811 | 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
8812 | ||
8813 | Reviewed by Geoff Garen. | |
8814 | ||
8815 | Make makeString CRASH if we fail to allocate a string. | |
8816 | ||
8817 | (tryMakeString or jsMakeNontrivialString can be used where we | |
8818 | expect allocation may fail and want to handle the error). | |
8819 | ||
8820 | * runtime/JSStringBuilder.h: | |
8821 | (JSC::jsMakeNontrivialString): | |
8822 | * runtime/UString.h: | |
8823 | (JSC::tryMakeString): | |
8824 | (JSC::makeString): | |
8825 | ||
8826 | 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
8827 | ||
8828 | Rubber Stamped by Oliver Hunt. | |
8829 | ||
8830 | Remove a couple of unnecesary C-style casts spotted by Darin. | |
8831 | ||
8832 | * runtime/JSGlobalObjectFunctions.cpp: | |
8833 | (JSC::encode): | |
8834 | (JSC::globalFuncEscape): | |
8835 | ||
8836 | 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
8837 | ||
8838 | Reviewed by Geoff Garen. | |
8839 | ||
8840 | Switch some more StringBuilder/jsNontrivialString code to use | |
8841 | JSStringBuilder/jsMakeNontrivialString - these methods will | |
8842 | throw an exception if we hit out-of-memory, rather than just | |
8843 | CRASHing. | |
8844 | ||
8845 | * runtime/FunctionPrototype.cpp: | |
8846 | (JSC::functionProtoFuncToString): | |
8847 | * runtime/JSGlobalObjectFunctions.cpp: | |
8848 | (JSC::encode): | |
8849 | (JSC::decode): | |
8850 | (JSC::globalFuncEscape): | |
8851 | ||
8852 | 2010-02-08 Gavin Barraclough <barraclough@apple.com> | |
8853 | ||
8854 | Reviewed by Sam Weinig. | |
8855 | ||
8856 | Use an empty identifier instead of a null identifier for parse | |
8857 | tokens without an identifier. | |
8858 | ||
8859 | This helps encapsulate the null UStringImpl within UString. | |
8860 | ||
8861 | * parser/Grammar.y: | |
8862 | * parser/NodeConstructors.h: | |
8863 | (JSC::ContinueNode::ContinueNode): | |
8864 | (JSC::BreakNode::BreakNode): | |
8865 | (JSC::ForInNode::ForInNode): | |
8866 | * runtime/CommonIdentifiers.cpp: | |
8867 | (JSC::CommonIdentifiers::CommonIdentifiers): | |
8868 | * runtime/CommonIdentifiers.h: | |
8869 | * runtime/FunctionPrototype.cpp: | |
8870 | (JSC::FunctionPrototype::FunctionPrototype): | |
8871 | ||
8872 | 2010-02-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
8873 | ||
8874 | Build fix for make distcheck. | |
8875 | ||
8876 | * GNUmakefile.am: | |
8877 | ||
8878 | 2010-02-08 Simon Hausmann <simon.hausmann@nokia.com> | |
8879 | ||
8880 | Unreviewed RVCT build fix. | |
8881 | ||
8882 | Similar to r54391, don't import the cmath functions from std:: for RVCT. | |
8883 | ||
8884 | * wtf/MathExtras.h: | |
8885 | ||
8886 | 2010-02-05 Gavin Barraclough <barraclough@apple.com> | |
8887 | ||
8888 | Reviewed by Geoff Garen. | |
8889 | ||
8890 | Change UStringImpl::create to CRASH if the string cannot be allocated, | |
8891 | rather than returning a null string (which will behave like a zero-length | |
8892 | string if used). | |
8893 | ||
8894 | Also move createRep function from UString to become new overloaded | |
8895 | UStringImpl::create methods. In doing so, bring their behaviour closer to | |
8896 | being in line with WebCore::StringImpl, in removing the behaviour that they | |
8897 | can be used to produce null UStrings (ASSERT the char* provided is non-null). | |
8898 | This behaviour of converting null C-strings to null UStrings is inefficient | |
8899 | (cmompared to just using UString::null()), incompatible with WebCore::StringImpl's | |
8900 | behaviour, and may generate unexpected behaviour, since in many cases a null | |
8901 | UString can be used like an empty string. | |
8902 | ||
8903 | With these changes UStringImpl need not have a concept of null impls, we can | |
8904 | start transitioning this to become an implementation detail of UString, that | |
8905 | internally it chooses to use a null-object rather than an actually zero impl | |
8906 | pointer. | |
8907 | ||
8908 | * JavaScriptCore.exp: | |
8909 | * debugger/Debugger.cpp: | |
8910 | (JSC::Debugger::recompileAllJSFunctions): | |
8911 | * debugger/DebuggerCallFrame.cpp: | |
8912 | (JSC::DebuggerCallFrame::calculatedFunctionName): | |
8913 | * parser/Parser.cpp: | |
8914 | (JSC::Parser::parse): | |
8915 | * profiler/Profile.cpp: | |
8916 | (JSC::Profile::Profile): | |
8917 | * profiler/ProfileGenerator.cpp: | |
8918 | (JSC::ProfileGenerator::stopProfiling): | |
8919 | * runtime/Error.cpp: | |
8920 | (JSC::Error::create): | |
8921 | (JSC::throwError): | |
8922 | * runtime/ExceptionHelpers.cpp: | |
8923 | (JSC::createError): | |
8924 | * runtime/Identifier.cpp: | |
8925 | (JSC::Identifier::add): | |
8926 | * runtime/PropertyNameArray.cpp: | |
8927 | (JSC::PropertyNameArray::add): | |
8928 | * runtime/UString.cpp: | |
8929 | (JSC::initializeUString): | |
8930 | (JSC::UString::UString): | |
8931 | (JSC::UString::operator=): | |
8932 | * runtime/UString.h: | |
8933 | (JSC::UString::isNull): | |
8934 | (JSC::UString::null): | |
8935 | (JSC::UString::rep): | |
8936 | (JSC::UString::UString): | |
8937 | * runtime/UStringImpl.cpp: | |
8938 | (JSC::UStringImpl::create): | |
8939 | * runtime/UStringImpl.h: | |
8940 | ||
8941 | 2010-02-05 Kwang Yul Seo <skyul@company100.net> | |
8942 | ||
8943 | Reviewed by Eric Seidel. | |
8944 | ||
8945 | [BREWMP] Define SYSTEM_MALLOC 1 | |
8946 | https://bugs.webkit.org/show_bug.cgi?id=34640 | |
8947 | ||
8948 | Make BREWMP use system malloc because FastMalloc is not ported. | |
8949 | ||
8950 | * wtf/Platform.h: | |
8951 | ||
8952 | 2010-02-05 Kwang Yul Seo <skyul@company100.net> | |
8953 | ||
8954 | Reviewed by Alexey Proskuryakov. | |
8955 | ||
8956 | Don't call CRASH() in fastMalloc and fastCalloc when the requested memory size is 0 | |
8957 | https://bugs.webkit.org/show_bug.cgi?id=34569 | |
8958 | ||
8959 | With USE_SYSTEM_MALLOC=1, fastMalloc and fastCalloc call CRASH() | |
8960 | if the return value of malloc and calloc is 0. | |
8961 | ||
8962 | However, these functions can return 0 when the request size is 0. | |
8963 | Libc manual says, "If size is 0, then malloc() returns either NULL, | |
8964 | or a unique pointer value that can later be successfully passed to free()." | |
8965 | Though malloc returns a unique pointer in most systems, | |
8966 | 0 can be returned in some systems. For instance, BREW's MALLOC returns 0 | |
8967 | when size is 0. | |
8968 | ||
8969 | If malloc or calloc returns 0 due to allocation size, increase the size | |
8970 | to 1 and try again. | |
8971 | ||
8972 | * wtf/FastMalloc.cpp: | |
8973 | (WTF::fastMalloc): | |
8974 | (WTF::fastCalloc): | |
8975 | ||
8976 | 2010-02-04 Mark Rowe <mrowe@apple.com> | |
8977 | ||
8978 | Reviewed by Timothy Hatcher. | |
8979 | ||
8980 | Build fix. Remove a symbol corresponding to an inline function from the linker export | |
8981 | file to prevent a weak external failure. | |
8982 | ||
8983 | * JavaScriptCore.xcodeproj/project.pbxproj: Accommodate rename of script. | |
8984 | ||
8985 | 2010-02-04 Daniel Bates <dbates@webkit.org> | |
8986 | ||
8987 | [Qt] Unreviewed, build fix for Qt bot. | |
8988 | ||
8989 | * runtime/JSStringBuilder.h: Changed #include <X.h> notation #include "X.h". | |
8990 | ||
8991 | 2010-02-04 Geoffrey Garen <ggaren@apple.com> | |
8992 | ||
8993 | Reviewed by Oliver Hunt. | |
8994 | ||
8995 | Clearing a WeakGCPtr is weird | |
8996 | https://bugs.webkit.org/show_bug.cgi?id=34627 | |
8997 | ||
8998 | Added a WeakGCPtr::clear interface. | |
8999 | ||
9000 | As discussed in https://bugs.webkit.org/show_bug.cgi?id=33383, the old | |
9001 | interface made it pretty weird for a client to conditionally clear a | |
9002 | WeakGCPtr, which is exactly what clients want to do when objects are | |
9003 | finalized. | |
9004 | ||
9005 | * API/JSClassRef.cpp: | |
9006 | (clearReferenceToPrototype): Use the new WeakGCPtr::clear() interface. | |
9007 | ||
9008 | * runtime/WeakGCPtr.h: | |
9009 | (JSC::WeakGCPtr::clear): Added an interface for clearing a WeakGCPtr, | |
9010 | iff its current value is the value passed in. It's cumbersome for the | |
9011 | client to do this test, since WeakGCPtr sometimes pretends to be null. | |
9012 | ||
9013 | 2010-02-04 Geoffrey Garen <ggaren@apple.com> | |
9014 | ||
9015 | Build fix: export a header. | |
9016 | ||
9017 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
9018 | ||
9019 | 2010-02-04 Gavin Barraclough <barraclough@apple.com> | |
9020 | ||
9021 | Reviewed by Oliver Hunt. | |
9022 | ||
9023 | Add a JSStringBuilder class (similar-to, and derived-from StringBuilder) to | |
9024 | construct JSStrings, throwing a JS exception should we run out of memory whilst | |
9025 | allocating storage for the string. | |
9026 | ||
9027 | Similarly, add jsMakeNontrivialString methods to use in cases where previously | |
9028 | we were calling makeString & passing the result to jsNontrivialString. Again, | |
9029 | these new methods throw if we hit an out of memory condition. | |
9030 | ||
9031 | Move throwOutOfMemoryError into ExceptionHelpers, to make it more widely available. | |
9032 | ||
9033 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
9034 | * runtime/ArrayPrototype.cpp: | |
9035 | (JSC::arrayProtoFuncToString): | |
9036 | (JSC::arrayProtoFuncToLocaleString): | |
9037 | (JSC::arrayProtoFuncJoin): | |
9038 | * runtime/DateConstructor.cpp: | |
9039 | (JSC::callDate): | |
9040 | * runtime/DatePrototype.cpp: | |
9041 | (JSC::dateProtoFuncToString): | |
9042 | (JSC::dateProtoFuncToUTCString): | |
9043 | (JSC::dateProtoFuncToGMTString): | |
9044 | * runtime/ErrorPrototype.cpp: | |
9045 | (JSC::errorProtoFuncToString): | |
9046 | * runtime/ExceptionHelpers.cpp: | |
9047 | (JSC::throwOutOfMemoryError): | |
9048 | * runtime/ExceptionHelpers.h: | |
9049 | * runtime/JSStringBuilder.h: Added. | |
9050 | (JSC::JSStringBuilder::releaseJSString): | |
9051 | (JSC::jsMakeNontrivialString): | |
9052 | * runtime/NumberPrototype.cpp: | |
9053 | (JSC::numberProtoFuncToPrecision): | |
9054 | * runtime/ObjectPrototype.cpp: | |
9055 | (JSC::objectProtoFuncToString): | |
9056 | * runtime/Operations.cpp: | |
9057 | * runtime/Operations.h: | |
9058 | * runtime/RegExpPrototype.cpp: | |
9059 | (JSC::regExpProtoFuncToString): | |
9060 | * runtime/StringBuilder.h: | |
9061 | (JSC::StringBuilder::append): | |
9062 | * runtime/StringPrototype.cpp: | |
9063 | (JSC::stringProtoFuncBig): | |
9064 | (JSC::stringProtoFuncSmall): | |
9065 | (JSC::stringProtoFuncBlink): | |
9066 | (JSC::stringProtoFuncBold): | |
9067 | (JSC::stringProtoFuncFixed): | |
9068 | (JSC::stringProtoFuncItalics): | |
9069 | (JSC::stringProtoFuncStrike): | |
9070 | (JSC::stringProtoFuncSub): | |
9071 | (JSC::stringProtoFuncSup): | |
9072 | (JSC::stringProtoFuncFontcolor): | |
9073 | (JSC::stringProtoFuncFontsize): | |
9074 | (JSC::stringProtoFuncAnchor): | |
9075 | ||
9076 | 2010-02-04 Steve Falkenburg <sfalken@apple.com> | |
9077 | ||
9078 | Windows build fix. | |
9079 | ||
9080 | * wtf/MathExtras.h: | |
9081 | ||
9082 | 2010-02-04 Darin Adler <darin@apple.com> | |
9083 | ||
9084 | Reviewed by David Levin. | |
9085 | ||
9086 | Make MathExtras.h compatible with <cmath> | |
9087 | https://bugs.webkit.org/show_bug.cgi?id=34618 | |
9088 | ||
9089 | * wtf/MathExtras.h: Include <cmath> instead of <math.h>. | |
9090 | Use "using" as we do elsewhere in WTF for the four functions from <cmath> | |
9091 | we want to use without the prefix. Later we could consider making the std | |
9092 | explicit at call sites instead. | |
9093 | ||
9094 | 2010-02-04 Tamas Szirbucz <szirbucz@inf.u-szeged.hu> | |
9095 | ||
9096 | Reviewed by Gavin Barraclough. | |
9097 | ||
9098 | Use an easily appendable structure for trampolines instead of pointer parameters. | |
9099 | https://bugs.webkit.org/show_bug.cgi?id=34424 | |
9100 | ||
9101 | * assembler/ARMAssembler.cpp: | |
9102 | (JSC::ARMAssembler::executableCopy): | |
9103 | * jit/JIT.h: | |
9104 | (JSC::JIT::compileCTIMachineTrampolines): | |
9105 | * jit/JITOpcodes.cpp: | |
9106 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
9107 | * jit/JITStubs.cpp: | |
9108 | (JSC::JITThunks::JITThunks): | |
9109 | * jit/JITStubs.h: | |
9110 | (JSC::JITThunks::ctiStringLengthTrampoline): | |
9111 | (JSC::JITThunks::ctiVirtualCallLink): | |
9112 | (JSC::JITThunks::ctiVirtualCall): | |
9113 | (JSC::JITThunks::ctiNativeCallThunk): | |
9114 | ||
9115 | 2010-02-04 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
9116 | ||
9117 | Reviewed by Simon Hausmann. | |
9118 | ||
9119 | Increase test coverage for the QScriptValue. | |
9120 | ||
9121 | https://bugs.webkit.org/show_bug.cgi?id=34533 | |
9122 | ||
9123 | * qt/tests/qscriptvalue/qscriptvalue.pro: | |
9124 | * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: | |
9125 | (tst_QScriptValue::tst_QScriptValue): | |
9126 | (tst_QScriptValue::~tst_QScriptValue): | |
9127 | (tst_QScriptValue::dataHelper): | |
9128 | (tst_QScriptValue::newRow): | |
9129 | (tst_QScriptValue::testHelper): | |
9130 | (tst_QScriptValue::ctor): | |
9131 | * qt/tests/qscriptvalue/tst_qscriptvalue.h: Added. | |
9132 | * qt/tests/qscriptvalue/tst_qscriptvalue_generated.cpp: Added. | |
9133 | (tst_QScriptValue::initScriptValues): | |
9134 | (tst_QScriptValue::isValid_initData): | |
9135 | (tst_QScriptValue::isValid_makeData): | |
9136 | (tst_QScriptValue::isValid_test): | |
9137 | (tst_QScriptValue::isBool_initData): | |
9138 | (tst_QScriptValue::isBool_makeData): | |
9139 | (tst_QScriptValue::isBool_test): | |
9140 | (tst_QScriptValue::isBoolean_initData): | |
9141 | (tst_QScriptValue::isBoolean_makeData): | |
9142 | (tst_QScriptValue::isBoolean_test): | |
9143 | (tst_QScriptValue::isFunction_initData): | |
9144 | (tst_QScriptValue::isFunction_makeData): | |
9145 | (tst_QScriptValue::isFunction_test): | |
9146 | (tst_QScriptValue::isNull_initData): | |
9147 | (tst_QScriptValue::isNull_makeData): | |
9148 | (tst_QScriptValue::isNull_test): | |
9149 | (tst_QScriptValue::isString_initData): | |
9150 | (tst_QScriptValue::isString_makeData): | |
9151 | (tst_QScriptValue::isString_test): | |
9152 | (tst_QScriptValue::isUndefined_initData): | |
9153 | (tst_QScriptValue::isUndefined_makeData): | |
9154 | (tst_QScriptValue::isUndefined_test): | |
9155 | (tst_QScriptValue::isObject_initData): | |
9156 | (tst_QScriptValue::isObject_makeData): | |
9157 | (tst_QScriptValue::isObject_test): | |
9158 | ||
9159 | 2010-02-03 Kwang Yul Seo <skyul@company100.net> | |
9160 | ||
9161 | Reviewed by Eric Seidel. | |
9162 | ||
9163 | [BREWMP] Define WTF_PLATFORM_BREWMP_SIMULATOR when AEE_SIMULATOR is defined | |
9164 | https://bugs.webkit.org/show_bug.cgi?id=34514 | |
9165 | ||
9166 | PLATFORM(BREWMP_SIMULATOR) guard is needed to make distinction between BREWMP | |
9167 | and BREWMP simulator. | |
9168 | ||
9169 | * wtf/Platform.h: | |
9170 | ||
9171 | 2010-02-03 Kwang Yul Seo <skyul@company100.net> | |
9172 | ||
9173 | Reviewed by Eric Seidel. | |
9174 | ||
9175 | [BREWMP] Remove COMPILE_ASSERT conflict with the underlying PLATFORM | |
9176 | https://bugs.webkit.org/show_bug.cgi?id=34190 | |
9177 | ||
9178 | COMPILE_ASSERT conflicts with the underlying PLATFORM because it is defined | |
9179 | both in WTF's Assertions.h and BREWMP's AEEClassIDs.h. Include AEEClassIDs.h | |
9180 | in Assertions.h and undef COMPILE_ASSERT to avoid redefining COMPILE_ASSERT. | |
9181 | ||
9182 | * wtf/Assertions.h: | |
9183 | ||
9184 | 2010-02-03 Kwang Yul Seo <skyul@company100.net> | |
9185 | ||
9186 | Reviewed by Eric Seidel. | |
9187 | ||
9188 | [BREWMP] Implement OwnPtrBrew to make sure BREW instances are freed. | |
9189 | https://bugs.webkit.org/show_bug.cgi?id=34518 | |
9190 | ||
9191 | Add OwnPtrBrew to release IFile, IFileMgr and IBitmap instances. | |
9192 | ||
9193 | * wtf/brew/OwnPtrBrew.cpp: Added. | |
9194 | (WTF::IFileMgr): | |
9195 | (WTF::IFile): | |
9196 | (WTF::IBitmap): | |
9197 | (WTF::freeOwnedPtrBrew): | |
9198 | * wtf/brew/OwnPtrBrew.h: Added. | |
9199 | (WTF::OwnPtrBrew::OwnPtrBrew): | |
9200 | (WTF::OwnPtrBrew::~OwnPtrBrew): | |
9201 | (WTF::OwnPtrBrew::get): | |
9202 | (WTF::OwnPtrBrew::release): | |
9203 | (WTF::OwnPtrBrew::outPtr): | |
9204 | (WTF::OwnPtrBrew::set): | |
9205 | (WTF::OwnPtrBrew::clear): | |
9206 | (WTF::OwnPtrBrew::operator*): | |
9207 | (WTF::OwnPtrBrew::operator->): | |
9208 | (WTF::OwnPtrBrew::operator!): | |
9209 | (WTF::OwnPtrBrew::operator UnspecifiedBoolType): | |
9210 | (WTF::OwnPtrBrew::swap): | |
9211 | (WTF::swap): | |
9212 | (WTF::operator==): | |
9213 | (WTF::operator!=): | |
9214 | (WTF::getPtr): | |
9215 | ||
9216 | 2010-02-03 Kwang Yul Seo <skyul@company100.net> | |
9217 | ||
9218 | Reviewed by Darin Adler. | |
9219 | ||
9220 | Export WTF::fastStrDup symbol | |
9221 | https://bugs.webkit.org/show_bug.cgi?id=34526 | |
9222 | ||
9223 | * JavaScriptCore.exp: | |
9224 | ||
9225 | 2010-02-03 Kevin Watters <kevinwatters@gmail.com> | |
9226 | ||
9227 | Reviewed by Kevin Ollivier. | |
9228 | ||
9229 | [wx] Enable JIT compilation for wx. | |
9230 | ||
9231 | https://bugs.webkit.org/show_bug.cgi?id=34536 | |
9232 | ||
9233 | * wtf/Platform.h: | |
9234 | ||
9235 | 2010-02-02 Oliver Hunt <oliver@apple.com> | |
9236 | ||
9237 | Reviewed by Geoffrey Garen. | |
9238 | ||
9239 | Crash in CollectorBitmap::get at nbcolympics.com | |
9240 | https://bugs.webkit.org/show_bug.cgi?id=34504 | |
9241 | ||
9242 | This was caused by the use of m_offset to determine the offset of | |
9243 | a new property into the property storage. This patch corrects | |
9244 | the effected cases by incorporating the anonymous slot count. It | |
9245 | also removes the duplicate copy of anonymous slot count from the | |
9246 | property table as keeping this up to date merely increased the | |
9247 | chance of a mismatch. Finally I've added a large number of | |
9248 | assertions in an attempt to prevent such a bug from happening | |
9249 | again. | |
9250 | ||
9251 | With the new assertions in place the existing anonymous slot tests | |
9252 | all fail without the m_offset fixes. | |
9253 | ||
9254 | * runtime/PropertyMapHashTable.h: | |
9255 | * runtime/Structure.cpp: | |
9256 | (JSC::Structure::materializePropertyMap): | |
9257 | (JSC::Structure::addPropertyTransitionToExistingStructure): | |
9258 | (JSC::Structure::addPropertyTransition): | |
9259 | (JSC::Structure::removePropertyTransition): | |
9260 | (JSC::Structure::flattenDictionaryStructure): | |
9261 | (JSC::Structure::addPropertyWithoutTransition): | |
9262 | (JSC::Structure::removePropertyWithoutTransition): | |
9263 | (JSC::Structure::copyPropertyTable): | |
9264 | (JSC::Structure::get): | |
9265 | (JSC::Structure::put): | |
9266 | (JSC::Structure::remove): | |
9267 | (JSC::Structure::insertIntoPropertyMapHashTable): | |
9268 | (JSC::Structure::createPropertyMapHashTable): | |
9269 | (JSC::Structure::rehashPropertyMapHashTable): | |
9270 | (JSC::Structure::checkConsistency): | |
9271 | ||
9272 | 2010-02-02 Steve Falkenburg <sfalken@apple.com> | |
9273 | ||
9274 | Reviewed by Darin Adler. | |
9275 | ||
9276 | Copyright year updating for Windows version resources should be automatic | |
9277 | https://bugs.webkit.org/show_bug.cgi?id=34503 | |
9278 | ||
9279 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: | |
9280 | ||
9281 | 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
9282 | ||
9283 | Reviewed by Eric Seidel. | |
9284 | ||
9285 | [BREWMP] Add dummy main thread functions | |
9286 | https://bugs.webkit.org/show_bug.cgi?id=33569 | |
9287 | ||
9288 | Add dummy initializeMainThreadPlatform and | |
9289 | scheduleDispatchFunctionsOnMainThread. | |
9290 | ||
9291 | * wtf/brew/MainThreadBrew.cpp: Added. | |
9292 | (WTF::initializeMainThreadPlatform): | |
9293 | (WTF::scheduleDispatchFunctionsOnMainThread): | |
9294 | ||
9295 | 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
9296 | ||
9297 | Reviewed by Darin Adler. | |
9298 | ||
9299 | Add using WTF::getLocalTime to CurrentTime.h | |
9300 | https://bugs.webkit.org/show_bug.cgi?id=34493 | |
9301 | ||
9302 | * wtf/CurrentTime.h: | |
9303 | ||
9304 | 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
9305 | ||
9306 | Reviewed by Eric Seidel. | |
9307 | ||
9308 | [BREWMP] Add HAVE_XXX definitions | |
9309 | https://bugs.webkit.org/show_bug.cgi?id=34414 | |
9310 | ||
9311 | Add HAVE_ERRNO_H=1 | |
9312 | ||
9313 | * wtf/Platform.h: | |
9314 | ||
9315 | 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
9316 | ||
9317 | Reviewed by Eric Seidel. | |
9318 | ||
9319 | [BREWMP] Don't define HAVE_TM_GMTOFF, HAVE_TM_ZONE and HAVE_TIMEGM | |
9320 | https://bugs.webkit.org/show_bug.cgi?id=34388 | |
9321 | ||
9322 | BREWMP does not have these features. | |
9323 | ||
9324 | * wtf/Platform.h: | |
9325 | ||
9326 | 2010-02-02 Kwang Yul Seo <skyul@company100.net> | |
9327 | ||
9328 | Reviewed by Eric Seidel. | |
9329 | ||
9330 | [BREWMP] Define WTF_PLATFORM_BREWMP=1 when BUILDING_BREWMP is defined | |
9331 | https://bugs.webkit.org/show_bug.cgi?id=34386 | |
9332 | ||
9333 | Define WTF_PLATFORM_BREWMP=1 so that PLATFORM(BREWMP) guard can be used. | |
9334 | ||
9335 | * wtf/Platform.h: | |
9336 | ||
9337 | 2010-02-01 Kent Tamura <tkent@chromium.org> | |
9338 | ||
9339 | Reviewed by Darin Adler. | |
9340 | ||
9341 | Date.UTC() should apply TimeClip operation. | |
9342 | https://bugs.webkit.org/show_bug.cgi?id=34461 | |
9343 | ||
9344 | ECMAScript 5 15.9.4.3: | |
9345 | > 9 Return TimeClip(MakeDate(MakeDay(yr, m, dt), MakeTime(h, min, s, milli))). | |
9346 | ||
9347 | * runtime/DateConstructor.cpp: | |
9348 | (JSC::dateUTC): Calls WTF::timeClip(). | |
9349 | ||
9350 | 2010-02-01 Kent Tamura <tkent@chromium.org> | |
9351 | ||
9352 | Reviewed by Darin Adler. | |
9353 | ||
9354 | Fix a bug that Math.round() retunrs incorrect results for huge integers | |
9355 | https://bugs.webkit.org/show_bug.cgi?id=34462 | |
9356 | ||
9357 | * runtime/MathObject.cpp: | |
9358 | (JSC::mathProtoFuncRound): Avoid "arg + 0.5". | |
9359 | ||
9360 | 2010-02-01 Kwang Yul Seo <skyul@company100.net> | |
9361 | ||
9362 | Reviewed by Eric Seidel. | |
9363 | ||
9364 | [BREWMP] Port WTF's currentTime | |
9365 | https://bugs.webkit.org/show_bug.cgi?id=33567 | |
9366 | ||
9367 | Combine GETUTCSECONDS and GETTIMEMS to calculate the number | |
9368 | of milliseconds since 1970/01/01 00:00:00 UTC. | |
9369 | ||
9370 | * wtf/CurrentTime.cpp: | |
9371 | (WTF::currentTime): | |
9372 | ||
9373 | 2010-02-01 Patrick Gansterer <paroga@paroga.com> | |
9374 | ||
9375 | Reviewed by Darin Adler. | |
9376 | ||
9377 | [Qt] WinCE buildfix after r52729 and fix for Q_BIG_ENDIAN typo. | |
9378 | https://bugs.webkit.org/show_bug.cgi?id=34378 | |
9379 | ||
9380 | * wtf/Platform.h: | |
9381 | ||
9382 | 2010-02-01 Oliver Hunt <oliver@apple.com> | |
9383 | ||
9384 | Reviewed by Gavin Barraclough. | |
9385 | ||
9386 | Structure not accounting for anonymous slots when computing property storage size | |
9387 | https://bugs.webkit.org/show_bug.cgi?id=34441 | |
9388 | ||
9389 | Previously any Structure with anonymous storage would have a property map, so we | |
9390 | were only including anonymous slot size if there was a property map. Given this | |
9391 | is no longer the case we should always include the anonymous slot count in the | |
9392 | property storage size. | |
9393 | ||
9394 | * runtime/Structure.h: | |
9395 | (JSC::Structure::propertyStorageSize): | |
9396 | ||
9397 | 2010-02-01 Oliver Hunt <oliver@apple.com> | |
9398 | ||
9399 | Windows build fix, update exports file (again) | |
9400 | ||
9401 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
9402 | ||
9403 | 2010-02-01 Oliver Hunt <oliver@apple.com> | |
9404 | ||
9405 | Windows build fix, update exports file | |
9406 | ||
9407 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
9408 | ||
9409 | 2010-01-31 Oliver Hunt <oliver@apple.com> | |
9410 | ||
9411 | Reviewed by Maciej Stachowiak. | |
9412 | ||
9413 | JSC is failing to propagate anonymous slot count on some transitions | |
9414 | https://bugs.webkit.org/show_bug.cgi?id=34321 | |
9415 | ||
9416 | Remove secondary Structure constructor, and make Structure store a copy | |
9417 | of the number of anonymous slots directly so saving an immediate allocation | |
9418 | of a property map for all structures with anonymous storage, which also | |
9419 | avoids the leaked property map on new property transition in the original | |
9420 | version of this patch. | |
9421 | ||
9422 | We need to propagate the the anonymous slot count otherwise we can end up | |
9423 | with a structure recording incorrect information about the available and | |
9424 | needed space for property storage, or alternatively incorrectly reusing | |
9425 | some slots. | |
9426 | ||
9427 | * JavaScriptCore.exp: | |
9428 | * runtime/Structure.cpp: | |
9429 | (JSC::Structure::Structure): | |
9430 | (JSC::Structure::materializePropertyMap): | |
9431 | (JSC::Structure::addPropertyTransition): | |
9432 | (JSC::Structure::changePrototypeTransition): | |
9433 | (JSC::Structure::despecifyFunctionTransition): | |
9434 | (JSC::Structure::getterSetterTransition): | |
9435 | (JSC::Structure::toDictionaryTransition): | |
9436 | (JSC::Structure::flattenDictionaryStructure): | |
9437 | (JSC::Structure::copyPropertyTable): | |
9438 | (JSC::Structure::put): | |
9439 | (JSC::Structure::remove): | |
9440 | (JSC::Structure::insertIntoPropertyMapHashTable): | |
9441 | (JSC::Structure::createPropertyMapHashTable): | |
9442 | * runtime/Structure.h: | |
9443 | (JSC::Structure::create): | |
9444 | (JSC::Structure::hasAnonymousSlots): | |
9445 | (JSC::Structure::anonymousSlotCount): | |
9446 | ||
9447 | 2010-01-31 Patrick Gansterer <paroga@paroga.com> | |
9448 | ||
9449 | Reviewed by Darin Adler. | |
9450 | ||
9451 | Buildfix for WinCE + style fixes (TLS_OUT_OF_INDEXES is not defined). | |
9452 | https://bugs.webkit.org/show_bug.cgi?id=34380 | |
9453 | ||
9454 | * wtf/ThreadSpecific.h: | |
9455 | ||
9456 | 2010-01-31 Kent Tamura <tkent@chromium.org> | |
9457 | ||
9458 | Reviewed by Darin Adler. | |
9459 | ||
9460 | [Windows] Fix a bug of round() with huge integral numbers | |
9461 | https://bugs.webkit.org/show_bug.cgi?id=34297 | |
9462 | ||
9463 | Fix a bug that round() for huge integral numbers returns incorrect | |
9464 | results. For example, round(8639999913600001) returns | |
9465 | 8639999913600002 without this change though the double type can | |
9466 | represent 8639999913600001 precisely. | |
9467 | ||
9468 | Math.round() of JavaScript has a similar problem. But this change | |
9469 | doesn't fix it because Math.round() doesn't use round() of | |
9470 | MathExtra.h. | |
9471 | ||
9472 | * wtf/MathExtras.h: | |
9473 | (round): Avoid to do "num + 0.5" or "num - 0.5". | |
9474 | (roundf): Fixed similarly. | |
9475 | (llround): Calls round(). | |
9476 | (llroundf): Calls roundf(). | |
9477 | (lround): Calls round(). | |
9478 | (lroundf): Calls roundf(). | |
9479 | ||
9480 | 2010-01-29 Mark Rowe <mrowe@apple.com> | |
9481 | ||
9482 | Sort Xcode projects. | |
9483 | ||
9484 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
9485 | ||
9486 | 2010-01-29 Mark Rowe <mrowe@apple.com> | |
9487 | ||
9488 | Fix the Mac build. | |
9489 | ||
9490 | Disable ENABLE_INDEXED_DATABASE since it is "completely non-functional". | |
9491 | ||
9492 | As the comment in FeatureDefines.xcconfig notes, the list of feature defines | |
9493 | needs to be kept in sync across the various files. The default values also | |
9494 | need to be kept in sync between these files and build-webkit. | |
9495 | ||
9496 | * Configurations/FeatureDefines.xcconfig: | |
9497 | ||
9498 | 2010-01-29 Simon Hausmann <simon.hausmann@nokia.com> | |
9499 | ||
9500 | Rubber-stamped by Maciej Stachowiak. | |
9501 | ||
9502 | Fix the ARM build. | |
9503 | ||
9504 | * runtime/JSNumberCell.h: | |
9505 | (JSC::JSNumberCell::createStructure): Call the right Structure::create overload. | |
9506 | ||
9507 | 2010-01-28 Kevin Ollivier <kevino@theolliviers.com> | |
9508 | ||
9509 | [wx] Build fix for MSW, use ThreadingWin.cpp as the Windows pthreads implementation | |
9510 | implements pthread_t in a way that makes it impossible to check its validity, | |
9511 | which is needed by ThreadingPthreads.cpp. | |
9512 | ||
9513 | * wscript: | |
9514 | ||
9515 | 2010-01-28 Oliver Hunt <oliver@apple.com> | |
9516 | ||
9517 | Reviewed by Gavin Barraclough. | |
9518 | ||
9519 | DOM Objects shouldn't all require custom mark functions | |
9520 | https://bugs.webkit.org/show_bug.cgi?id=34291 | |
9521 | ||
9522 | Make getAnonymousValue const-friendly | |
9523 | ||
9524 | * runtime/JSObject.h: | |
9525 | (JSC::JSObject::getAnonymousValue): | |
9526 | ||
9527 | 2010-01-28 Oliver Hunt <oliver@apple.com> | |
9528 | ||
9529 | Reviewed by Gavin Barraclough. | |
9530 | ||
9531 | Simplify anonymous slot implementation | |
9532 | https://bugs.webkit.org/show_bug.cgi?id=34282 | |
9533 | ||
9534 | A class must now specify the number of slots it needs at construction time | |
9535 | rather than later on with a transition. This makes many things simpler, | |
9536 | we no longer need to need an additional transition on object creation to | |
9537 | add the anonymous slots, and we remove the need for a number of transition | |
9538 | type checks. | |
9539 | ||
9540 | * API/JSCallbackConstructor.h: | |
9541 | (JSC::JSCallbackConstructor::createStructure): | |
9542 | * API/JSCallbackFunction.h: | |
9543 | (JSC::JSCallbackFunction::createStructure): | |
9544 | * API/JSCallbackObject.h: | |
9545 | (JSC::JSCallbackObject::createStructure): | |
9546 | * JavaScriptCore.exp: | |
9547 | * debugger/DebuggerActivation.h: | |
9548 | (JSC::DebuggerActivation::createStructure): | |
9549 | * runtime/Arguments.h: | |
9550 | (JSC::Arguments::createStructure): | |
9551 | * runtime/BooleanObject.h: | |
9552 | (JSC::BooleanObject::createStructure): | |
9553 | * runtime/DateInstance.h: | |
9554 | (JSC::DateInstance::createStructure): | |
9555 | * runtime/DatePrototype.h: | |
9556 | (JSC::DatePrototype::createStructure): | |
9557 | * runtime/FunctionPrototype.h: | |
9558 | (JSC::FunctionPrototype::createStructure): | |
9559 | * runtime/GetterSetter.h: | |
9560 | (JSC::GetterSetter::createStructure): | |
9561 | * runtime/GlobalEvalFunction.h: | |
9562 | (JSC::GlobalEvalFunction::createStructure): | |
9563 | * runtime/InternalFunction.h: | |
9564 | (JSC::InternalFunction::createStructure): | |
9565 | * runtime/JSAPIValueWrapper.h: | |
9566 | (JSC::JSAPIValueWrapper::createStructure): | |
9567 | * runtime/JSActivation.h: | |
9568 | (JSC::JSActivation::createStructure): | |
9569 | * runtime/JSArray.h: | |
9570 | (JSC::JSArray::createStructure): | |
9571 | * runtime/JSByteArray.cpp: | |
9572 | (JSC::JSByteArray::createStructure): | |
9573 | * runtime/JSCell.h: | |
9574 | (JSC::JSCell::createDummyStructure): | |
9575 | * runtime/JSFunction.h: | |
9576 | (JSC::JSFunction::createStructure): | |
9577 | * runtime/JSGlobalObject.h: | |
9578 | (JSC::JSGlobalObject::createStructure): | |
9579 | * runtime/JSNotAnObject.h: | |
9580 | (JSC::JSNotAnObject::createStructure): | |
9581 | * runtime/JSONObject.h: | |
9582 | (JSC::JSONObject::createStructure): | |
9583 | * runtime/JSObject.h: | |
9584 | (JSC::JSObject::createStructure): | |
9585 | (JSC::JSObject::putAnonymousValue): | |
9586 | (JSC::JSObject::getAnonymousValue): | |
9587 | * runtime/JSPropertyNameIterator.h: | |
9588 | (JSC::JSPropertyNameIterator::createStructure): | |
9589 | * runtime/JSStaticScopeObject.h: | |
9590 | (JSC::JSStaticScopeObject::createStructure): | |
9591 | * runtime/JSString.h: | |
9592 | (JSC::Fiber::createStructure): | |
9593 | * runtime/JSVariableObject.h: | |
9594 | (JSC::JSVariableObject::createStructure): | |
9595 | * runtime/JSWrapperObject.h: | |
9596 | (JSC::JSWrapperObject::createStructure): | |
9597 | (JSC::JSWrapperObject::JSWrapperObject): | |
9598 | * runtime/MathObject.h: | |
9599 | (JSC::MathObject::createStructure): | |
9600 | * runtime/NumberConstructor.h: | |
9601 | (JSC::NumberConstructor::createStructure): | |
9602 | * runtime/NumberObject.h: | |
9603 | (JSC::NumberObject::createStructure): | |
9604 | * runtime/RegExpConstructor.h: | |
9605 | (JSC::RegExpConstructor::createStructure): | |
9606 | * runtime/RegExpObject.h: | |
9607 | (JSC::RegExpObject::createStructure): | |
9608 | * runtime/StringObject.h: | |
9609 | (JSC::StringObject::createStructure): | |
9610 | * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
9611 | (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
9612 | * runtime/Structure.cpp: | |
9613 | (JSC::Structure::~Structure): | |
9614 | (JSC::Structure::materializePropertyMap): | |
9615 | * runtime/Structure.h: | |
9616 | (JSC::Structure::create): | |
9617 | (JSC::Structure::anonymousSlotCount): | |
9618 | * runtime/StructureTransitionTable.h: | |
9619 | ||
9620 | 2010-01-27 Oliver Hunt <oliver@apple.com> | |
9621 | ||
9622 | Windows build fix. | |
9623 | ||
9624 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
9625 | ||
9626 | 2010-01-27 Oliver Hunt <oliver@apple.com> | |
9627 | ||
9628 | Reviewed by Maciej Stachowiak. | |
9629 | ||
9630 | MessageEvent.data should deserialize in the context of the MessageEvent's global object | |
9631 | https://bugs.webkit.org/show_bug.cgi?id=34227 | |
9632 | ||
9633 | Add logic to allow us to create an Object, Array, or Date instance | |
9634 | so we can create them in the context of a specific global object, | |
9635 | rather than just using the current lexical global object. | |
9636 | ||
9637 | * JavaScriptCore.exp: | |
9638 | * runtime/DateInstance.cpp: | |
9639 | (JSC::DateInstance::DateInstance): | |
9640 | * runtime/DateInstance.h: | |
9641 | * runtime/JSGlobalObject.h: | |
9642 | (JSC::constructEmptyObject): | |
9643 | (JSC::constructEmptyArray): | |
9644 | ||
9645 | 2010-01-27 Alexey Proskuryakov <ap@apple.com> | |
9646 | ||
9647 | Reviewed by Darin Adler. | |
9648 | ||
9649 | https://bugs.webkit.org/show_bug.cgi?id=34150 | |
9650 | WebKit needs a mechanism to catch stale HashMap entries | |
9651 | ||
9652 | It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash | |
9653 | is just its value, it is very unlikely that any observable problem is reproducible. | |
9654 | ||
9655 | This extends hash table consistency checks to check that pointers are referencing allocated | |
9656 | memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible | |
9657 | to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much). | |
9658 | ||
9659 | * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can | |
9660 | add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems | |
9661 | with those yet. | |
9662 | ||
9663 | * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by | |
9664 | CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency(). | |
9665 | ||
9666 | * wtf/HashTable.h: | |
9667 | (WTF::HashTable::internalCheckTableConsistency): | |
9668 | (WTF::HashTable::internalCheckTableConsistencyExceptSize): | |
9669 | (WTF::HashTable::checkTableConsistencyExceptSize): | |
9670 | Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off. | |
9671 | (WTF::::add): Updated for checkTableConsistency renaming. | |
9672 | (WTF::::addPassingHashCode): Ditto. | |
9673 | (WTF::::removeAndInvalidate): Ditto. | |
9674 | (WTF::::remove): Ditto. | |
9675 | (WTF::::rehash): Ditto. | |
9676 | (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this | |
9677 | function returns true for tables with m_table == 0. | |
9678 | (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially, | |
9679 | we could do the same for values. | |
9680 | ||
9681 | * wtf/HashTraits.h: | |
9682 | (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden | |
9683 | to add checks. Currently, the only override is for pointer hashes. | |
9684 | ||
9685 | * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming. | |
9686 | ||
9687 | 2010-01-27 Anton Muhin <antonm@chromium.org> | |
9688 | ||
9689 | Reviewed by Darin Adler. | |
9690 | ||
9691 | Remove trailing \ from inline function code | |
9692 | https://bugs.webkit.org/show_bug.cgi?id=34223 | |
9693 | ||
9694 | * assembler/ARMv7Assembler.h: | |
9695 | (JSC::ARMThumbImmediate::countLeadingZerosPartial): | |
9696 | ||
9697 | 2010-01-27 Kwang Yul Seo <skyul@company100.net> | |
9698 | ||
9699 | Reviewed by Eric Seidel. | |
9700 | ||
9701 | [BREWMP] Port WTF's randomNumber | |
9702 | https://bugs.webkit.org/show_bug.cgi?id=33566 | |
9703 | ||
9704 | Use GETRAND to generate 4 byte random byte sequence to implement | |
9705 | weakRandomNumber. Create a secure random number generator with | |
9706 | AEECLSID_RANDOM to implement randomNumber. | |
9707 | ||
9708 | * wtf/RandomNumber.cpp: | |
9709 | (WTF::weakRandomNumber): | |
9710 | (WTF::randomNumber): | |
9711 | ||
9712 | 2010-01-27 Kwang Yul Seo <skyul@company100.net> | |
9713 | ||
9714 | Reviewed by Eric Seidel. | |
9715 | ||
9716 | [BREWMP] Port getCPUTime | |
9717 | https://bugs.webkit.org/show_bug.cgi?id=33572 | |
9718 | ||
9719 | Use GETUPTIMEMS which returns a continuously and | |
9720 | linearly increasing millisecond timer from the time the device | |
9721 | was powered on. This function is enough to implement getCPUTime. | |
9722 | ||
9723 | * runtime/TimeoutChecker.cpp: | |
9724 | (JSC::getCPUTime): | |
9725 | ||
9726 | 2010-01-27 Kwang Yul Seo <skyul@company100.net> | |
9727 | ||
9728 | Reviewed by Oliver Hunt. | |
9729 | ||
9730 | [BREWMP] Add MarkStack fastMalloc implementation for platforms without VirtualAlloc or mmap. | |
9731 | https://bugs.webkit.org/show_bug.cgi?id=33582 | |
9732 | ||
9733 | Use fastMalloc and fastFree to implement MarkStack::allocateStack and | |
9734 | MarkStack::releaseStack for platforms without page level allocation. | |
9735 | ||
9736 | * runtime/MarkStack.h: | |
9737 | (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
9738 | * runtime/MarkStackNone.cpp: Added. | |
9739 | (JSC::MarkStack::initializePagesize): | |
9740 | (JSC::MarkStack::allocateStack): | |
9741 | (JSC::MarkStack::releaseStack): | |
9742 | ||
9743 | 2010-01-27 Kwang Yul Seo <skyul@company100.net> | |
9744 | ||
9745 | Reviewed by Eric Seidel. | |
9746 | ||
9747 | [BREWMP] Don't use time function | |
9748 | https://bugs.webkit.org/show_bug.cgi?id=33577 | |
9749 | ||
9750 | Calling time(0) in BREW devices causes a crash because time | |
9751 | is not properly ported in most devices. Cast currentTime() to | |
9752 | time_t to get the same result as time(0). | |
9753 | ||
9754 | * wtf/DateMath.cpp: | |
9755 | (WTF::calculateUTCOffset): | |
9756 | ||
9757 | 2010-01-27 Alexey Proskuryakov <ap@apple.com> | |
9758 | ||
9759 | Revert r53899 (HashMap<AtomicStringImpl*, Value> key checks) and subsequent build fixes, | |
9760 | because they make SVG tests crash in release builds. | |
9761 | ||
9762 | * wtf/HashMap.h: | |
9763 | (WTF::::remove): | |
9764 | * wtf/HashSet.h: | |
9765 | (WTF::::remove): | |
9766 | * wtf/HashTable.h: | |
9767 | (WTF::::add): | |
9768 | (WTF::::addPassingHashCode): | |
9769 | (WTF::::removeAndInvalidate): | |
9770 | (WTF::::remove): | |
9771 | (WTF::::rehash): | |
9772 | (WTF::::checkTableConsistency): | |
9773 | (WTF::::checkTableConsistencyExceptSize): | |
9774 | * wtf/HashTraits.h: | |
9775 | (WTF::GenericHashTraits::emptyValue): | |
9776 | (WTF::): | |
9777 | * wtf/RefPtrHashMap.h: | |
9778 | (WTF::::remove): | |
9779 | ||
9780 | 2010-01-26 Alexey Proskuryakov <ap@apple.com> | |
9781 | ||
9782 | More Windows build fixing. | |
9783 | ||
9784 | * wtf/HashTraits.h: _msize takes void*, remove const qualifier from type. | |
9785 | ||
9786 | 2010-01-26 Alexey Proskuryakov <ap@apple.com> | |
9787 | ||
9788 | Windows build fix. | |
9789 | ||
9790 | * wtf/HashTraits.h: Include malloc.h for _msize(). | |
9791 | ||
9792 | 2010-01-26 Alexey Proskuryakov <ap@apple.com> | |
9793 | ||
9794 | Build fix. | |
9795 | ||
9796 | * wtf/HashTable.h: (WTF::HashTable::checkTableConsistencyExceptSize): Remove const from a | |
9797 | static (empty) version of this function. | |
9798 | ||
9799 | 2010-01-26 Alexey Proskuryakov <ap@apple.com> | |
9800 | ||
9801 | Reviewed by Darin Adler. | |
9802 | ||
9803 | https://bugs.webkit.org/show_bug.cgi?id=34150 | |
9804 | WebKit needs a mechanism to catch stale HashMap entries | |
9805 | ||
9806 | It is very difficult to catch stale pointers that are HashMap keys - since a pointer's hash | |
9807 | is just its value, it is very unlikely that any observable problem is reproducible. | |
9808 | ||
9809 | This extends hash table consistency checks to check that pointers are referencing allocated | |
9810 | memory blocks, and makes it possible to invoke the checks explicitly (it is not feasible | |
9811 | to enable CHECK_HASHTABLE_CONSISTENCY by default, because that affects performance too much). | |
9812 | ||
9813 | * wtf/HashMap.h: (WTF::::checkConsistency): Call through to HashTable implementation. We can | |
9814 | add similar calls to HashSet and HashCountedSet, but I haven't seen hard to debug problems | |
9815 | with those yet. | |
9816 | ||
9817 | * wtf/HashSet.h: (WTF::::remove): The version of checkTableConsistency that's guarded by | |
9818 | CHECK_HASHTABLE_CONSISTENCY is now called internalCheckTableConsistency(). | |
9819 | ||
9820 | * wtf/HashTable.h: | |
9821 | (WTF::HashTable::internalCheckTableConsistency): | |
9822 | (WTF::HashTable::internalCheckTableConsistencyExceptSize): | |
9823 | (WTF::HashTable::checkTableConsistencyExceptSize): | |
9824 | Expose checkTableConsistency() even if CHECK_HASHTABLE_CONSISTENCY is off. | |
9825 | (WTF::::add): Updated for checkTableConsistency renaming. | |
9826 | (WTF::::addPassingHashCode): Ditto. | |
9827 | (WTF::::removeAndInvalidate): Ditto. | |
9828 | (WTF::::remove): Ditto. | |
9829 | (WTF::::rehash): Ditto. | |
9830 | (WTF::::checkTableConsistency): The assertion for !shouldExpand() was not correct - this | |
9831 | function returns true for tables with m_table == 0. | |
9832 | (WTF::::checkTableConsistencyExceptSize): Call checkValueConsistency for key. Potentially, | |
9833 | we could do the same for values. | |
9834 | ||
9835 | * wtf/HashTraits.h: | |
9836 | (WTF::GenericHashTraits::checkValueConsistency): An empty function that can be overridden | |
9837 | to add checks. Currently, the only override is for pointer hashes. | |
9838 | ||
9839 | * wtf/RefPtrHashMap.h: (WTF::::remove): Updated for checkTableConsistency renaming. | |
9840 | ||
9841 | 2010-01-26 Lyon Chen <liachen@rim.com> | |
9842 | ||
9843 | Reviewed by Maciej Stachowiak. | |
9844 | ||
9845 | Opcode.h use const void* for Opcode cause error #1211 for RVCT compiler | |
9846 | https://bugs.webkit.org/show_bug.cgi?id=33902 | |
9847 | ||
9848 | * bytecode/Opcode.h: | |
9849 | ||
9850 | 2010-01-26 Steve Falkenburg <sfalken@apple.com> | |
9851 | ||
9852 | Reviewed by Oliver Hunt. | |
9853 | ||
9854 | Windows build references non-existent include paths | |
9855 | https://bugs.webkit.org/show_bug.cgi?id=34175 | |
9856 | ||
9857 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
9858 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
9859 | * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
9860 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
9861 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: | |
9862 | * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
9863 | ||
9864 | 2010-01-26 Oliver Hunt <oliver@apple.com> | |
9865 | ||
9866 | Reviewed by Geoffrey Garen. | |
9867 | ||
9868 | Using JavaScriptCore API with a webkit vended context can result in slow script dialog | |
9869 | https://bugs.webkit.org/show_bug.cgi?id=34172 | |
9870 | ||
9871 | Make the APIShim correctly increment and decrement the timeout | |
9872 | entry counter. | |
9873 | ||
9874 | * API/APIShims.h: | |
9875 | (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
9876 | (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
9877 | (JSC::APICallbackShim::APICallbackShim): | |
9878 | (JSC::APICallbackShim::~APICallbackShim): | |
9879 | ||
9880 | 2010-01-26 Simon Hausmann <simon.hausmann@nokia.com> | |
9881 | ||
9882 | [Qt] Fix compilation of QtScript with non-gcc compilers | |
9883 | ||
9884 | Variable length stack arrays are a gcc extension. Use QVarLengthArray | |
9885 | as a more portable solution that still tries to allocate on the stack | |
9886 | first. | |
9887 | ||
9888 | * qt/api/qscriptvalue_p.h: | |
9889 | (QScriptValuePrivate::call): | |
9890 | ||
9891 | 2010-01-26 Simon Hausmann <simon.hausmann@nokia.com> | |
9892 | ||
9893 | Reviewed by Tor Arne Vestbø. | |
9894 | ||
9895 | [Qt] Fix the build on platforms without JIT support. | |
9896 | ||
9897 | The JIT support should be determined at compile-time via wtf/Platform.h | |
9898 | ||
9899 | * qt/api/QtScript.pro: | |
9900 | ||
9901 | 2010-01-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
9902 | ||
9903 | Reviewed by Simon Hausmann. | |
9904 | ||
9905 | First steps of the QtScript API. | |
9906 | ||
9907 | Two new classes were created; QScriptEngine and QScriptValue. | |
9908 | The first should encapsulate a javascript context and the second a script | |
9909 | value. | |
9910 | ||
9911 | This API is still in development, so it isn't compiled by default. | |
9912 | To trigger compilation, pass --qmakearg="CONFIG+=build-qtscript" to | |
9913 | build-webkit. | |
9914 | ||
9915 | https://bugs.webkit.org/show_bug.cgi?id=32565 | |
9916 | ||
9917 | * qt/api/QtScript.pro: Added. | |
9918 | * qt/api/qscriptconverter_p.h: Added. | |
9919 | (QScriptConverter::toString): | |
9920 | * qt/api/qscriptengine.cpp: Added. | |
9921 | (QScriptEngine::QScriptEngine): | |
9922 | (QScriptEngine::~QScriptEngine): | |
9923 | (QScriptEngine::evaluate): | |
9924 | (QScriptEngine::collectGarbage): | |
9925 | * qt/api/qscriptengine.h: Added. | |
9926 | * qt/api/qscriptengine_p.cpp: Added. | |
9927 | (QScriptEnginePrivate::QScriptEnginePrivate): | |
9928 | (QScriptEnginePrivate::~QScriptEnginePrivate): | |
9929 | (QScriptEnginePrivate::evaluate): | |
9930 | * qt/api/qscriptengine_p.h: Added. | |
9931 | (QScriptEnginePrivate::get): | |
9932 | (QScriptEnginePrivate::collectGarbage): | |
9933 | (QScriptEnginePrivate::makeJSValue): | |
9934 | (QScriptEnginePrivate::context): | |
9935 | * qt/api/qscriptvalue.cpp: Added. | |
9936 | (QScriptValue::QScriptValue): | |
9937 | (QScriptValue::~QScriptValue): | |
9938 | (QScriptValue::isValid): | |
9939 | (QScriptValue::isBool): | |
9940 | (QScriptValue::isBoolean): | |
9941 | (QScriptValue::isNumber): | |
9942 | (QScriptValue::isNull): | |
9943 | (QScriptValue::isString): | |
9944 | (QScriptValue::isUndefined): | |
9945 | (QScriptValue::isError): | |
9946 | (QScriptValue::isObject): | |
9947 | (QScriptValue::isFunction): | |
9948 | (QScriptValue::toString): | |
9949 | (QScriptValue::toNumber): | |
9950 | (QScriptValue::toBool): | |
9951 | (QScriptValue::toBoolean): | |
9952 | (QScriptValue::toInteger): | |
9953 | (QScriptValue::toInt32): | |
9954 | (QScriptValue::toUInt32): | |
9955 | (QScriptValue::toUInt16): | |
9956 | (QScriptValue::call): | |
9957 | (QScriptValue::engine): | |
9958 | (QScriptValue::operator=): | |
9959 | (QScriptValue::equals): | |
9960 | (QScriptValue::strictlyEquals): | |
9961 | * qt/api/qscriptvalue.h: Added. | |
9962 | (QScriptValue::): | |
9963 | * qt/api/qscriptvalue_p.h: Added. | |
9964 | (QScriptValuePrivate::): | |
9965 | (QScriptValuePrivate::get): | |
9966 | (QScriptValuePrivate::QScriptValuePrivate): | |
9967 | (QScriptValuePrivate::isValid): | |
9968 | (QScriptValuePrivate::isBool): | |
9969 | (QScriptValuePrivate::isNumber): | |
9970 | (QScriptValuePrivate::isNull): | |
9971 | (QScriptValuePrivate::isString): | |
9972 | (QScriptValuePrivate::isUndefined): | |
9973 | (QScriptValuePrivate::isError): | |
9974 | (QScriptValuePrivate::isObject): | |
9975 | (QScriptValuePrivate::isFunction): | |
9976 | (QScriptValuePrivate::toString): | |
9977 | (QScriptValuePrivate::toNumber): | |
9978 | (QScriptValuePrivate::toBool): | |
9979 | (QScriptValuePrivate::toInteger): | |
9980 | (QScriptValuePrivate::toInt32): | |
9981 | (QScriptValuePrivate::toUInt32): | |
9982 | (QScriptValuePrivate::toUInt16): | |
9983 | (QScriptValuePrivate::equals): | |
9984 | (QScriptValuePrivate::strictlyEquals): | |
9985 | (QScriptValuePrivate::assignEngine): | |
9986 | (QScriptValuePrivate::call): | |
9987 | (QScriptValuePrivate::engine): | |
9988 | (QScriptValuePrivate::context): | |
9989 | (QScriptValuePrivate::value): | |
9990 | (QScriptValuePrivate::object): | |
9991 | (QScriptValuePrivate::inherits): | |
9992 | (QScriptValuePrivate::isJSBased): | |
9993 | (QScriptValuePrivate::isNumberBased): | |
9994 | (QScriptValuePrivate::isStringBased): | |
9995 | * qt/api/qtscriptglobal.h: Added. | |
9996 | * qt/tests/qscriptengine/qscriptengine.pro: Added. | |
9997 | * qt/tests/qscriptengine/tst_qscriptengine.cpp: Added. | |
9998 | (tst_QScriptEngine::tst_QScriptEngine): | |
9999 | (tst_QScriptEngine::~tst_QScriptEngine): | |
10000 | (tst_QScriptEngine::init): | |
10001 | (tst_QScriptEngine::cleanup): | |
10002 | (tst_QScriptEngine::collectGarbage): | |
10003 | (tst_QScriptEngine::evaluate): | |
10004 | * qt/tests/qscriptvalue/qscriptvalue.pro: Added. | |
10005 | * qt/tests/qscriptvalue/tst_qscriptvalue.cpp: Added. | |
10006 | (tst_QScriptValue::tst_QScriptValue): | |
10007 | (tst_QScriptValue::~tst_QScriptValue): | |
10008 | (tst_QScriptValue::init): | |
10009 | (tst_QScriptValue::cleanup): | |
10010 | (tst_QScriptValue::ctor): | |
10011 | (tst_QScriptValue::toString_data): | |
10012 | (tst_QScriptValue::toString): | |
10013 | (tst_QScriptValue::copyConstructor_data): | |
10014 | (tst_QScriptValue::copyConstructor): | |
10015 | (tst_QScriptValue::assignOperator_data): | |
10016 | (tst_QScriptValue::assignOperator): | |
10017 | (tst_QScriptValue::dataSharing): | |
10018 | (tst_QScriptValue::constructors_data): | |
10019 | (tst_QScriptValue::constructors): | |
10020 | (tst_QScriptValue::call): | |
10021 | * qt/tests/tests.pri: Added. | |
10022 | * qt/tests/tests.pro: Added. | |
10023 | ||
10024 | 2010-01-25 Dmitry Titov <dimich@chromium.org> | |
10025 | ||
10026 | Reviewed by David Levin. | |
10027 | ||
10028 | Fix Chromium Linux tests: the pthread functions on Linux produce segfault if they receive 0 thread handle. | |
10029 | After r53714, we can have 0 thread handles passed to pthread_join and pthread_detach if corresponding threads | |
10030 | were already terminated and their threadMap entries cleared. | |
10031 | Add a 0 check. | |
10032 | ||
10033 | * wtf/ThreadingPthreads.cpp: | |
10034 | (WTF::waitForThreadCompletion): | |
10035 | (WTF::detachThread): | |
10036 | ||
10037 | 2010-01-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
10038 | ||
10039 | Reviewed by Maciej Stachowiak. | |
10040 | ||
10041 | Refactor JITStubs.cpp so that DEFINE_STUB_FUNCTION is only used once for each function | |
10042 | https://bugs.webkit.org/show_bug.cgi?id=33866 | |
10043 | ||
10044 | Place the guard USE(JSVALUE32_64) inside the body of the DEFINE_STUB_FUNCTION | |
10045 | macro for those functions that are always present. | |
10046 | ||
10047 | * jit/JITStubs.cpp: | |
10048 | (JSC::DEFINE_STUB_FUNCTION): | |
10049 | ||
10050 | 2010-01-22 Kevin Watters <kevinwatters@gmail.com> | |
10051 | ||
10052 | Reviewed by Kevin Ollivier. | |
10053 | ||
10054 | [wx] Remove the Bakefile build system, which is no longer being used. | |
10055 | ||
10056 | https://bugs.webkit.org/show_bug.cgi?id=34022 | |
10057 | ||
10058 | * JavaScriptCoreSources.bkl: Removed. | |
10059 | * jscore.bkl: Removed. | |
10060 | ||
10061 | 2010-01-22 Steve Falkenburg <sfalken@apple.com> | |
10062 | ||
10063 | Reviewed by Darin Adler. | |
10064 | ||
10065 | https://bugs.webkit.org/show_bug.cgi?id=34025 | |
10066 | Enable client-based Geolocation abstraction for Mac, Windows AppleWebKit targets. | |
10067 | ||
10068 | * Configurations/FeatureDefines.xcconfig: | |
10069 | ||
10070 | 2010-01-22 Dmitry Titov <dimich@chromium.org> | |
10071 | ||
10072 | Not reviewed, attempted Snow Leopard build fix. | |
10073 | ||
10074 | * wtf/ThreadingPthreads.cpp: Add a forward declaration of a function which is not 'static'. | |
10075 | ||
10076 | 2009-01-22 Dmitry Titov <dimich@chromium.org> | |
10077 | ||
10078 | Reviewed by Maciej Stachowiak. | |
10079 | ||
10080 | Fix the leak of ThreadIdentifiers in threadMap across threads. | |
10081 | https://bugs.webkit.org/show_bug.cgi?id=32689 | |
10082 | ||
10083 | Test is added to DumpRenderTree.mm. | |
10084 | ||
10085 | * Android.mk: Added file ThreadIdentifierDataPthreads.(h|cpp) to build. | |
10086 | * Android.v8.wtf.mk: Ditto. | |
10087 | * GNUmakefile.am: Ditto. | |
10088 | * JavaScriptCore.gyp/JavaScriptCore.gyp: Ditto. | |
10089 | * JavaScriptCore.gypi: Ditto. | |
10090 | * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. | |
10091 | ||
10092 | * wtf/ThreadIdentifierDataPthreads.cpp: Added. Contains custom implementation of thread-specific data that uses custom destructor. | |
10093 | (WTF::ThreadIdentifierData::~ThreadIdentifierData): Removes the ThreadIdentifier from the threadMap. | |
10094 | (WTF::ThreadIdentifierData::identifier): | |
10095 | (WTF::ThreadIdentifierData::initialize): | |
10096 | (WTF::ThreadIdentifierData::destruct): Custom thread-specific destructor. Resets the value for the key again to cause second invoke. | |
10097 | (WTF::ThreadIdentifierData::initializeKeyOnceHelper): | |
10098 | (WTF::ThreadIdentifierData::initializeKeyOnce): Need to use pthread_once since initialization may come on any thread(s). | |
10099 | * wtf/ThreadIdentifierDataPthreads.h: Added. | |
10100 | (WTF::ThreadIdentifierData::ThreadIdentifierData): | |
10101 | ||
10102 | * wtf/Threading.cpp: | |
10103 | (WTF::threadEntryPoint): Move initializeCurrentThreadInternal to after the lock to make | |
10104 | sure it is invoked when ThreadIdentifier is already established. | |
10105 | ||
10106 | * wtf/Threading.h: Rename setThreadNameInternal -> initializeCurrentThreadInternal since it does more then only set the name now. | |
10107 | * wtf/ThreadingNone.cpp: | |
10108 | (WTF::initializeCurrentThreadInternal): Ditto. | |
10109 | * wtf/ThreadingWin.cpp: | |
10110 | (WTF::initializeCurrentThreadInternal): Ditto. | |
10111 | (WTF::initializeThreading): Ditto. | |
10112 | * wtf/gtk/ThreadingGtk.cpp: | |
10113 | (WTF::initializeCurrentThreadInternal): Ditto. | |
10114 | * wtf/qt/ThreadingQt.cpp: | |
10115 | (WTF::initializeCurrentThreadInternal): Ditto. | |
10116 | ||
10117 | * wtf/ThreadingPthreads.cpp: | |
10118 | (WTF::establishIdentifierForPthreadHandle): | |
10119 | (WTF::clearPthreadHandleForIdentifier): Make it not 'static' so the ~ThreadIdentifierData() in another file can call it. | |
10120 | (WTF::initializeCurrentThreadInternal): Set the thread-specific data. The ThreadIdentifier is already established by creating thread. | |
10121 | (WTF::waitForThreadCompletion): Remove call to clearPthreadHandleForIdentifier(threadID) since it is now done in ~ThreadIdentifierData(). | |
10122 | (WTF::detachThread): Ditto. | |
10123 | (WTF::currentThread): Use the thread-specific data to get the ThreadIdentifier. It's many times faster then Mutex-protected iteration through the map. | |
10124 | Also, set the thread-specific data if called first time on the thread. | |
10125 | ||
10126 | 2010-01-21 Kwang Yul Seo <skyul@company100.net> | |
10127 | ||
10128 | Reviewed by Alexey Proskuryakov. | |
10129 | ||
10130 | Add ThreadSpecific for ENABLE(SINGLE_THREADED) | |
10131 | https://bugs.webkit.org/show_bug.cgi?id=33878 | |
10132 | ||
10133 | Implement ThreadSpecific with a simple getter/setter | |
10134 | when ENABLE(SINGLE_THREADED) is true. | |
10135 | ||
10136 | Due to the change in https://bugs.webkit.org/show_bug.cgi?id=33236, | |
10137 | an implementation of ThreadSpecific must be available to build WebKit. | |
10138 | This causes a build failure for platforms without a proper | |
10139 | ThreadSpecific implementation. | |
10140 | ||
10141 | * wtf/ThreadSpecific.h: | |
10142 | (WTF::::ThreadSpecific): | |
10143 | (WTF::::~ThreadSpecific): | |
10144 | (WTF::::get): | |
10145 | (WTF::::set): | |
10146 | (WTF::::destroy): | |
10147 | ||
10148 | 2010-01-21 Kwang Yul Seo <skyul@company100.net> | |
10149 | ||
10150 | Reviewed by Maciej Stachowiak. | |
10151 | ||
10152 | Add fastStrDup to FastMalloc | |
10153 | https://bugs.webkit.org/show_bug.cgi?id=33937 | |
10154 | ||
10155 | The new string returned by fastStrDup is obtained with fastMalloc, | |
10156 | and can be freed with fastFree. This makes the memory management | |
10157 | more consistent because we don't need to keep strdup allocated pointers | |
10158 | and free them with free(). Instead we can use fastFree everywhere. | |
10159 | ||
10160 | * wtf/FastMalloc.cpp: | |
10161 | (WTF::fastStrDup): | |
10162 | * wtf/FastMalloc.h: | |
10163 | ||
10164 | 2010-01-21 Brady Eidson <beidson@apple.com> | |
10165 | ||
10166 | Reviewed by Maciej Stachowiak. | |
10167 | ||
10168 | history.back() for same-document history traversals isn't synchronous as the specification states. | |
10169 | <rdar://problem/7535011> and https://bugs.webkit.org/show_bug.cgi?id=33538 | |
10170 | ||
10171 | * wtf/Platform.h: Add a "HISTORY_ALWAYS_ASYNC" enable and turn it on for Chromium. | |
10172 | ||
10173 | 2010-01-21 Geoffrey Garen <ggaren@apple.com> | |
10174 | ||
10175 | Reviewed by Oliver Hunt. | |
10176 | ||
10177 | Always create a prototype for automatically managed classes. | |
10178 | ||
10179 | This fixes some errors where prototype chains were not correctly hooked | |
10180 | up, and also ensures that API classes work correctly with features like | |
10181 | instanceof. | |
10182 | ||
10183 | * API/JSClassRef.cpp: | |
10184 | (OpaqueJSClass::create): Cleaned up some of this code. Also changed it | |
10185 | to always create a prototype class. | |
10186 | ||
10187 | * API/tests/testapi.c: | |
10188 | (Derived2_class): | |
10189 | (main): Fixed a null value crash in the exception checking code. | |
10190 | * API/tests/testapi.js: Added some tests for the case where a prototype | |
10191 | chain would not be hooked up correctly. | |
10192 | ||
10193 | 2010-01-21 Oliver Hunt <oliver@apple.com> | |
10194 | ||
10195 | Reviewed by Geoff Garen. | |
10196 | ||
10197 | Force JSC to create a prototype chain for API classes with a | |
10198 | parent class but no static functions. | |
10199 | ||
10200 | * API/JSClassRef.cpp: | |
10201 | (OpaqueJSClass::create): | |
10202 | ||
10203 | 2010-01-21 Kent Hansen <kent.hansen@nokia.com> | |
10204 | ||
10205 | Reviewed by Geoffrey Garen. | |
10206 | ||
10207 | Object.getOwnPropertyDescriptor always returns undefined for JS API objects | |
10208 | https://bugs.webkit.org/show_bug.cgi?id=33946 | |
10209 | ||
10210 | Ideally the getOwnPropertyDescriptor() reimplementation should return an | |
10211 | access descriptor that wraps the property getter and setter callbacks, but | |
10212 | that approach is much more involved than returning a value descriptor. | |
10213 | Keep it simple for now. | |
10214 | ||
10215 | * API/JSCallbackObject.h: | |
10216 | * API/JSCallbackObjectFunctions.h: | |
10217 | (JSC::::getOwnPropertyDescriptor): | |
10218 | * API/tests/testapi.js: | |
10219 | ||
10220 | 2010-01-20 Mark Rowe <mrowe@apple.com> | |
10221 | ||
10222 | Build fix. | |
10223 | ||
10224 | * wtf/FastMalloc.cpp: | |
10225 | (WTF::TCMalloc_PageHeap::initializeScavenger): Remove unnecessary function call. | |
10226 | ||
10227 | 2010-01-20 Mark Rowe <mrowe@apple.com> | |
10228 | ||
10229 | Reviewed by Oliver Hunt. | |
10230 | ||
10231 | Use the inline i386 assembly for x86_64 as well rather than falling back to using pthread mutexes. | |
10232 | ||
10233 | * wtf/TCSpinLock.h: | |
10234 | (TCMalloc_SpinLock::Lock): | |
10235 | (TCMalloc_SpinLock::Unlock): | |
10236 | (TCMalloc_SlowLock): | |
10237 | ||
10238 | 2010-01-20 Mark Rowe <mrowe@apple.com> | |
10239 | ||
10240 | Reviewed by Oliver Hunt. | |
10241 | ||
10242 | <rdar://problem/7215063> Use GCD instead of an extra thread for FastMalloc scavenging on platforms where it is supported | |
10243 | ||
10244 | Abstract the background scavenging slightly so that an alternate implementation that uses GCD can be used on platforms | |
10245 | where it is supported. | |
10246 | ||
10247 | * wtf/FastMalloc.cpp: | |
10248 | (WTF::TCMalloc_PageHeap::init): | |
10249 | (WTF::TCMalloc_PageHeap::initializeScavenger): | |
10250 | (WTF::TCMalloc_PageHeap::signalScavenger): | |
10251 | (WTF::TCMalloc_PageHeap::shouldContinueScavenging): | |
10252 | (WTF::TCMalloc_PageHeap::Delete): | |
10253 | (WTF::TCMalloc_PageHeap::periodicScavenge): | |
10254 | * wtf/Platform.h: | |
10255 | ||
10256 | 2010-01-20 Geoffrey Garen <ggaren@apple.com> | |
10257 | ||
10258 | Reviewed by Oliver Hunt. | |
10259 | ||
10260 | <rdar://problem/7562708> REGRESSION(53460): Heap::destroy may not run | |
10261 | all destructors | |
10262 | ||
10263 | * runtime/Collector.cpp: | |
10264 | (JSC::Heap::freeBlocks): Instead of fully marking protected objects, | |
10265 | just set their mark bits. This prevents protected objects from keeping | |
10266 | unprotected objects alive. Destructor order is not guaranteed, so it's | |
10267 | OK to destroy objects pointed to by protected objects before destroying | |
10268 | protected objects. | |
10269 | ||
10270 | 2010-01-19 David Levin <levin@chromium.org> | |
10271 | ||
10272 | Reviewed by Oliver Hunt. | |
10273 | ||
10274 | CrossThreadCopier needs to support ThreadSafeShared better. | |
10275 | https://bugs.webkit.org/show_bug.cgi?id=33698 | |
10276 | ||
10277 | * wtf/TypeTraits.cpp: Added tests for the new type traits. | |
10278 | * wtf/TypeTraits.h: | |
10279 | (WTF::IsSubclass): Determines if a class is a derived from another class. | |
10280 | (WTF::IsSubclassOfTemplate): Determines if a class is a derived from a | |
10281 | template class (with one parameter that is unknown). | |
10282 | (WTF::RemoveTemplate): Reveals the type for a template parameter. | |
10283 | ||
10284 | 2010-01-20 Steve Falkenburg <sfalken@apple.com> | |
10285 | ||
10286 | Reviewed by Darin Adler and Adam Roben. | |
10287 | ||
10288 | Feature defines are difficult to maintain on Windows builds | |
10289 | https://bugs.webkit.org/show_bug.cgi?id=33883 | |
10290 | ||
10291 | FeatureDefines.vsprops are now maintained in a way similar to | |
10292 | Configurations/FeatureDefines.xcconfig, with the added advantage | |
10293 | of having a single FeatureDefines file across all projects. | |
10294 | ||
10295 | * Configurations/FeatureDefines.xcconfig: Add comments about keeping feature definitions in sync. | |
10296 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add FeatureDefines.vsprops inherited property sheet. | |
10297 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add FeatureDefines.vsprops inherited property sheet. | |
10298 | ||
10299 | 2010-01-20 Csaba Osztrogonác <ossy@webkit.org> | |
10300 | ||
10301 | [Qt] Unreviewed buildfix for r53547. | |
10302 | ||
10303 | * DerivedSources.pro: | |
10304 | ||
10305 | 2010-01-20 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
10306 | ||
10307 | Reviewed by Simon Hausmann. | |
10308 | ||
10309 | [Qt] Make extraCompilers for generated sources depend on their scripts | |
10310 | ||
10311 | * DerivedSources.pro: | |
10312 | ||
10313 | 2010-01-19 Brian Weinstein <bweinstein@apple.com> | |
10314 | ||
10315 | Reviewed by Tim Hatcher. | |
10316 | ||
10317 | When JavaScriptCore calls Debugger::Exception, have it pass a | |
10318 | hasHandler variable that represents if exception is being handled | |
10319 | in the same function (not in a parent on the call stack). | |
10320 | ||
10321 | This just adds a new parameter, no behavior is changed. | |
10322 | ||
10323 | * debugger/Debugger.h: | |
10324 | * interpreter/Interpreter.cpp: | |
10325 | (JSC::Interpreter::throwException): | |
10326 | ||
10327 | 2010-01-18 Maciej Stachowiak <mjs@apple.com> | |
10328 | ||
10329 | Reviewed by Adam Barth. | |
10330 | ||
10331 | Inline functions that are hot in DOM manipulation | |
10332 | https://bugs.webkit.org/show_bug.cgi?id=33820 | |
10333 | ||
10334 | (3% speedup on Dromaeo DOM Core tests) | |
10335 | ||
10336 | * runtime/WeakGCMap.h: | |
10337 | (JSC::::get): inline | |
10338 | ||
10339 | 2010-01-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
10340 | ||
10341 | Unreviewed build fix for JIT with RVCT. | |
10342 | ||
10343 | Remove IMPORT statement; cti_vm_throw is already defined in JITStubs.h. | |
10344 | Remove extra ')'. | |
10345 | ||
10346 | * jit/JITStubs.cpp: | |
10347 | (JSC::ctiVMThrowTrampoline): | |
10348 | ||
10349 | 2010-01-19 Geoffrey Garen <ggaren@apple.com> | |
10350 | ||
10351 | Reviewed by Oliver Hunt. | |
10352 | ||
10353 | REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/ | |
10354 | https://bugs.webkit.org/show_bug.cgi?id=33826 | |
10355 | ||
10356 | This bug was caused by a GC-protected object being destroyed early by | |
10357 | Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers | |
10358 | to GC-protected memory to be valid. | |
10359 | ||
10360 | The solution is to do two passes of tear-down in Heap::destroy. The first | |
10361 | pass tears down all unprotected objects. The second pass ASSERTs that all | |
10362 | previously protected objects are now unprotected, and then tears down | |
10363 | all perviously protected objects. These two passes simulate the two passes | |
10364 | that would have been required to free a protected object during normal GC. | |
10365 | ||
10366 | * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap. | |
10367 | ||
10368 | * runtime/Collector.cpp: | |
10369 | (JSC::Heap::destroy): Moved ASSERTs to here. | |
10370 | (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its | |
10371 | setter to the function that does the shrinking. | |
10372 | (JSC::Heap::freeBlocks): Implemented above algorithm. | |
10373 | (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink. | |
10374 | ||
10375 | 2010-01-19 Gavin Barraclough <barraclough@apple.com> | |
10376 | ||
10377 | Reviewed by NOBODY (build fix). | |
10378 | ||
10379 | Reverting r53455, breaks 2 javascriptcore tests. | |
10380 | ||
10381 | * API/JSContextRef.cpp: | |
10382 | * runtime/Collector.cpp: | |
10383 | (JSC::Heap::destroy): | |
10384 | (JSC::Heap::freeBlock): | |
10385 | (JSC::Heap::freeBlocks): | |
10386 | (JSC::Heap::shrinkBlocks): | |
10387 | ||
10388 | 2010-01-18 Gavin Barraclough <barraclough@apple.com> | |
10389 | ||
10390 | Reviewed by NOBODY (build fix). | |
10391 | ||
10392 | Revert r53454, since it causes much sadness in this world. | |
10393 | ||
10394 | * runtime/UString.cpp: | |
10395 | (JSC::UString::spliceSubstringsWithSeparators): | |
10396 | (JSC::UString::replaceRange): | |
10397 | * runtime/UStringImpl.cpp: | |
10398 | (JSC::UStringImpl::baseSharedBuffer): | |
10399 | (JSC::UStringImpl::sharedBuffer): | |
10400 | (JSC::UStringImpl::~UStringImpl): | |
10401 | * runtime/UStringImpl.h: | |
10402 | (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): | |
10403 | (JSC::UntypedPtrAndBitfield::asPtr): | |
10404 | (JSC::UntypedPtrAndBitfield::operator&=): | |
10405 | (JSC::UntypedPtrAndBitfield::operator|=): | |
10406 | (JSC::UntypedPtrAndBitfield::operator&): | |
10407 | (JSC::UStringImpl::create): | |
10408 | (JSC::UStringImpl::cost): | |
10409 | (JSC::UStringImpl::isIdentifier): | |
10410 | (JSC::UStringImpl::setIsIdentifier): | |
10411 | (JSC::UStringImpl::ref): | |
10412 | (JSC::UStringImpl::deref): | |
10413 | (JSC::UStringImpl::checkConsistency): | |
10414 | (JSC::UStringImpl::UStringImpl): | |
10415 | (JSC::UStringImpl::bufferOwnerString): | |
10416 | (JSC::UStringImpl::bufferOwnership): | |
10417 | (JSC::UStringImpl::isStatic): | |
10418 | * wtf/StringHashFunctions.h: | |
10419 | (WTF::stringHash): | |
10420 | ||
10421 | 2010-01-18 Geoffrey Garen <ggaren@apple.com> | |
10422 | ||
10423 | Reviewed by Oliver Hunt. | |
10424 | ||
10425 | REGRESSION (52082): Crash on worker thread when reloading http://radnan.public.iastate.edu/procedural/ | |
10426 | https://bugs.webkit.org/show_bug.cgi?id=33826 | |
10427 | ||
10428 | This bug was caused by a GC-protected object being destroyed early by | |
10429 | Heap::destroy. Clients of the GC protect APIs (reasonably) expect pointers | |
10430 | to GC-protected memory to be valid. | |
10431 | ||
10432 | The solution is to do two passes of tear-down in Heap::destroy. The first | |
10433 | pass tears down all unprotected objects. The second pass ASSERTs that all | |
10434 | previously protected objects are now unprotected, and then tears down | |
10435 | all perviously protected objects. These two passes simulate the two passes | |
10436 | that would have been required to free a protected object during normal GC. | |
10437 | ||
10438 | * API/JSContextRef.cpp: Removed some ASSERTs that have moved into Heap. | |
10439 | ||
10440 | * runtime/Collector.cpp: | |
10441 | (JSC::Heap::destroy): Moved ASSERTs to here. | |
10442 | (JSC::Heap::freeBlock): Tidied up the use of didShrink by moving its | |
10443 | setter to the function that does the shrinking. | |
10444 | (JSC::Heap::freeBlocks): Implemented above algorithm. | |
10445 | (JSC::Heap::shrinkBlocks): Tidied up the use of didShrink. | |
10446 | ||
10447 | 2010-01-18 Gavin Barraclough <barraclough@apple.com> | |
10448 | ||
10449 | Reviewed by Oliver Hunt. | |
10450 | ||
10451 | https://bugs.webkit.org/show_bug.cgi?id=33731 | |
10452 | Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags). | |
10453 | ||
10454 | This break the OS X Leaks tool. Instead, free up some more bits from the refCount. | |
10455 | ||
10456 | * runtime/UStringImpl.cpp: | |
10457 | (JSC::UStringImpl::sharedBuffer): | |
10458 | (JSC::UStringImpl::~UStringImpl): | |
10459 | * runtime/UStringImpl.h: | |
10460 | (JSC::UStringImpl::cost): | |
10461 | (JSC::UStringImpl::checkConsistency): | |
10462 | (JSC::UStringImpl::UStringImpl): | |
10463 | (JSC::UStringImpl::bufferOwnerString): | |
10464 | (JSC::UStringImpl::): | |
10465 | * wtf/StringHashFunctions.h: | |
10466 | (WTF::stringHash): | |
10467 | ||
10468 | 2010-01-18 Kent Tamura <tkent@chromium.org> | |
10469 | ||
10470 | Reviewed by Darin Adler. | |
10471 | ||
10472 | HTMLInputElement::valueAsDate setter support for type=month. | |
10473 | https://bugs.webkit.org/show_bug.cgi?id=33021 | |
10474 | ||
10475 | Expose the following functions to be used by WebCore: | |
10476 | - WTF::msToyear() | |
10477 | - WTF::dayInYear() | |
10478 | - WTF::monthFromDayInYear() | |
10479 | - WTF::dayInMonthFromDayInYear() | |
10480 | ||
10481 | * JavaScriptCore.exp: | |
10482 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
10483 | * wtf/DateMath.cpp: | |
10484 | (WTF::msToYear): Remove "static inline". | |
10485 | (WTF::dayInYear): Remove "static inline". | |
10486 | (WTF::monthFromDayInYear): Remove "static inline". | |
10487 | (WTF::dayInMonthFromDayInYear): Remove "static inline". | |
10488 | * wtf/DateMath.h: Declare the above functions. | |
10489 | ||
10490 | 2010-01-18 Darin Adler <darin@apple.com> | |
10491 | ||
10492 | Fix build by reverting the previous change. | |
10493 | ||
10494 | * runtime/UString.h: Rolled out the FastAllocBase base class. | |
10495 | It was making UString larger, and therefore JSString larger, | |
10496 | and too big for a garbage collection cell. | |
10497 | ||
10498 | This raises the unpleasant possibility that many classes became | |
10499 | larger because we added the FastAllocBase base class. I am | |
10500 | worried about this, and it needs to be investigated. | |
10501 | ||
10502 | 2010-01-18 Zoltan Horvath <zoltan@webkit.org> | |
10503 | ||
10504 | Reviewed by Darin Adler. | |
10505 | ||
10506 | Allow custom memory allocation control for UString class | |
10507 | https://bugs.webkit.org/show_bug.cgi?id=27831 | |
10508 | ||
10509 | Inherits the following class from FastAllocBase because it is | |
10510 | instantiated by 'new' and no need to be copyable: | |
10511 | ||
10512 | class name - instantiated at: | |
10513 | classs UString - JavaScriptCore/runtime/UString.cpp:160 | |
10514 | ||
10515 | * runtime/UString.h: | |
10516 | ||
10517 | 2010-01-18 Evan Cheng <evan.cheng@apple.com> | |
10518 | ||
10519 | Reviewed by Darin Adler. | |
10520 | ||
10521 | Add some ALWAYS_INLINE for key functions not inlined by some versions of GCC. | |
10522 | rdar://problem/7553780 | |
10523 | ||
10524 | * runtime/JSObject.h: | |
10525 | (JSC::JSObject::getPropertySlot): ALWAYS_INLINE both overloads. | |
10526 | * runtime/JSString.h: | |
10527 | (JSC::JSString::JSString): ALWAYS_INLINE the version that takes a UString. | |
10528 | * runtime/UString.h: | |
10529 | (JSC::operator==): ALWAYS_INLINE the version that compares two UString objects. | |
10530 | ||
10531 | 2010-01-18 Csaba Osztrogonác <ossy@webkit.org> | |
10532 | ||
10533 | Reviewed by Darin Adler. | |
10534 | ||
10535 | Delete dftables-xxxxxxxx.in files automatically. | |
10536 | https://bugs.webkit.org/show_bug.cgi?id=33796 | |
10537 | ||
10538 | * pcre/dftables: unlink unnecessary temporary file. | |
10539 | ||
10540 | 2010-01-18 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
10541 | ||
10542 | Reviewed by Simon Hausmann. | |
10543 | ||
10544 | [Qt] Force qmake to generate a single makefile for DerivedSources.pro | |
10545 | ||
10546 | * DerivedSources.pro: | |
10547 | ||
10548 | 2010-01-18 Csaba Osztrogonác <ossy@webkit.org> | |
10549 | ||
10550 | Rubber-stamped by Gustavo Noronha Silva. | |
10551 | ||
10552 | Rolling out r53391 and r53392 because of random crashes on buildbots. | |
10553 | https://bugs.webkit.org/show_bug.cgi?id=33731 | |
10554 | ||
10555 | * bytecode/CodeBlock.h: | |
10556 | (JSC::CallLinkInfo::seenOnce): | |
10557 | (JSC::CallLinkInfo::setSeen): | |
10558 | (JSC::MethodCallLinkInfo::MethodCallLinkInfo): | |
10559 | (JSC::MethodCallLinkInfo::seenOnce): | |
10560 | (JSC::MethodCallLinkInfo::setSeen): | |
10561 | * jit/JIT.cpp: | |
10562 | (JSC::JIT::unlinkCall): | |
10563 | * jit/JITPropertyAccess.cpp: | |
10564 | (JSC::JIT::patchMethodCallProto): | |
10565 | * runtime/UString.cpp: | |
10566 | (JSC::UString::spliceSubstringsWithSeparators): | |
10567 | (JSC::UString::replaceRange): | |
10568 | * runtime/UString.h: | |
10569 | * runtime/UStringImpl.cpp: | |
10570 | (JSC::UStringImpl::baseSharedBuffer): | |
10571 | (JSC::UStringImpl::sharedBuffer): | |
10572 | (JSC::UStringImpl::~UStringImpl): | |
10573 | * runtime/UStringImpl.h: | |
10574 | (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): | |
10575 | (JSC::UntypedPtrAndBitfield::asPtr): | |
10576 | (JSC::UntypedPtrAndBitfield::operator&=): | |
10577 | (JSC::UntypedPtrAndBitfield::operator|=): | |
10578 | (JSC::UntypedPtrAndBitfield::operator&): | |
10579 | (JSC::UStringImpl::create): | |
10580 | (JSC::UStringImpl::cost): | |
10581 | (JSC::UStringImpl::isIdentifier): | |
10582 | (JSC::UStringImpl::setIsIdentifier): | |
10583 | (JSC::UStringImpl::ref): | |
10584 | (JSC::UStringImpl::deref): | |
10585 | (JSC::UStringImpl::checkConsistency): | |
10586 | (JSC::UStringImpl::UStringImpl): | |
10587 | (JSC::UStringImpl::bufferOwnerString): | |
10588 | (JSC::UStringImpl::bufferOwnership): | |
10589 | (JSC::UStringImpl::isStatic): | |
10590 | * wtf/StringHashFunctions.h: | |
10591 | (WTF::stringHash): | |
10592 | ||
10593 | 2010-01-18 Simon Hausmann <simon.hausmann@nokia.com> | |
10594 | ||
10595 | Reviewed by Kenneth Rohde Christiansen. | |
10596 | ||
10597 | Fix the build with strict gcc and RVCT versions: It's not legal to cast a | |
10598 | pointer to a function to a void* without an intermediate cast to a non-pointer | |
10599 | type. A cast to a ptrdiff_t inbetween fixes it. | |
10600 | ||
10601 | * runtime/JSString.h: | |
10602 | (JSC::Fiber::JSString): | |
10603 | ||
10604 | 2010-01-15 Gavin Barraclough <barraclough@apple.com> | |
10605 | ||
10606 | Reviewed by Oliver Hunt. | |
10607 | ||
10608 | https://bugs.webkit.org/show_bug.cgi?id=33731 | |
10609 | Remove UntypedPtrAndBitfield from UStringImpl (akin to PtrAndFlags). | |
10610 | ||
10611 | This break the OS X Leaks tool. Instead, free up some more bits from the refCount. | |
10612 | ||
10613 | * runtime/UStringImpl.cpp: | |
10614 | (JSC::UStringImpl::sharedBuffer): | |
10615 | (JSC::UStringImpl::~UStringImpl): | |
10616 | * runtime/UStringImpl.h: | |
10617 | (JSC::UStringImpl::cost): | |
10618 | (JSC::UStringImpl::checkConsistency): | |
10619 | (JSC::UStringImpl::UStringImpl): | |
10620 | (JSC::UStringImpl::bufferOwnerString): | |
10621 | (JSC::UStringImpl::): | |
10622 | * wtf/StringHashFunctions.h: | |
10623 | (WTF::stringHash): | |
10624 | ||
10625 | 2010-01-15 Gavin Barraclough <barraclough@apple.com> | |
10626 | ||
10627 | Reviewed by Oliver Hunt. | |
10628 | ||
10629 | https://bugs.webkit.org/show_bug.cgi?id=33731 | |
10630 | Remove uses of PtrAndFlags from JIT data stuctures. | |
10631 | ||
10632 | These break the OS X Leaks tool. Free up a bit in CallLinkInfo, and invalid | |
10633 | permutation of pointer states in MethodCallLinkInfo to represent the removed bits. | |
10634 | ||
10635 | * bytecode/CodeBlock.h: | |
10636 | (JSC::CallLinkInfo::seenOnce): | |
10637 | (JSC::CallLinkInfo::setSeen): | |
10638 | (JSC::MethodCallLinkInfo::MethodCallLinkInfo): | |
10639 | (JSC::MethodCallLinkInfo::seenOnce): | |
10640 | (JSC::MethodCallLinkInfo::setSeen): | |
10641 | * jit/JIT.cpp: | |
10642 | (JSC::JIT::unlinkCall): | |
10643 | * jit/JITPropertyAccess.cpp: | |
10644 | (JSC::JIT::patchMethodCallProto): | |
10645 | * runtime/UString.h: | |
10646 | ||
10647 | 2010-01-16 Maciej Stachowiak <mjs@apple.com> | |
10648 | ||
10649 | Reviewed by Oliver Hunt. | |
10650 | ||
10651 | Cache JS string values made from DOM strings (Dromaeo speedup) | |
10652 | https://bugs.webkit.org/show_bug.cgi?id=33768 | |
10653 | <rdar://problem/7353576> | |
10654 | ||
10655 | * runtime/JSString.h: | |
10656 | (JSC::jsStringWithFinalizer): Added new mechanism for a string to have an optional | |
10657 | finalizer callback, for the benefit of weak-referencing caches. | |
10658 | (JSC::): | |
10659 | (JSC::Fiber::JSString): | |
10660 | (JSC::Fiber::~JSString): | |
10661 | * runtime/JSString.cpp: | |
10662 | (JSC::JSString::resolveRope): Clear fibers so this doesn't look like a string with a finalizer. | |
10663 | * runtime/WeakGCMap.h: Include "Collector.h" to make this header includable by itself. | |
10664 | ||
10665 | 2010-01-15 Sam Weinig <sam@webkit.org> | |
10666 | ||
10667 | Reviewed by Maciej Stachowiak. | |
10668 | ||
10669 | Fix for <rdar://problem/7548432> | |
10670 | Add ALWAYS_INLINE to jsLess for a 1% speedup on llvm-gcc. | |
10671 | ||
10672 | * runtime/Operations.h: | |
10673 | (JSC::jsLess): | |
10674 | ||
10675 | 2010-01-14 Geoffrey Garen <ggaren@apple.com> | |
10676 | ||
10677 | Reviewed by Oliver Hunt. | |
10678 | ||
10679 | REGRESISON: Google maps buttons not working properly | |
10680 | https://bugs.webkit.org/show_bug.cgi?id=31871 | |
10681 | ||
10682 | REGRESSION(r52948): JavaScript exceptions thrown on Google Maps when | |
10683 | getting directions for a second time | |
10684 | https://bugs.webkit.org/show_bug.cgi?id=33446 | |
10685 | ||
10686 | SunSpider and v8 report no change. | |
10687 | ||
10688 | * interpreter/Interpreter.cpp: | |
10689 | (JSC::Interpreter::tryCacheGetByID): Update our cached offset in case | |
10690 | flattening the dictionary changed any of its offsets. | |
10691 | ||
10692 | * jit/JITStubs.cpp: | |
10693 | (JSC::JITThunks::tryCacheGetByID): | |
10694 | (JSC::DEFINE_STUB_FUNCTION): | |
10695 | * runtime/Operations.h: | |
10696 | (JSC::normalizePrototypeChain): ditto | |
10697 | ||
10698 | 2010-01-14 Gavin Barraclough <barraclough@apple.com> | |
10699 | ||
10700 | Reviewed by Oliver Hunt. | |
10701 | ||
10702 | https://bugs.webkit.org/show_bug.cgi?id=33705 | |
10703 | UStringImpl::create() should use internal storage | |
10704 | ||
10705 | When creating a UStringImpl copying of a UChar*, we can use an internal buffer, | |
10706 | by calling UStringImpl::tryCreateUninitialized(). | |
10707 | ||
10708 | Also, remove duplicate of copyChars from JSString, call UStringImpl's version. | |
10709 | ||
10710 | Small (max 0.5%) progression on Sunspidey. | |
10711 | ||
10712 | * runtime/JSString.cpp: | |
10713 | (JSC::JSString::resolveRope): | |
10714 | * runtime/UStringImpl.h: | |
10715 | (JSC::UStringImpl::create): | |
10716 | ||
10717 | 2010-01-14 Gavin Barraclough <barraclough@apple.com> | |
10718 | ||
10719 | Reviewed by Sam Weinig. | |
10720 | ||
10721 | Make naming & behaviour of UString[Impl] methods more consistent. | |
10722 | https://bugs.webkit.org/show_bug.cgi?id=33702 | |
10723 | ||
10724 | UString::create() creates a copy of the UChar* passed, but UStringImpl::create() assumes | |
10725 | that it should assume ownership of the provided buffer (with UString::createNonCopying() | |
10726 | and UStringImpl::createCopying() providing the alternate behaviours). Unify on create() | |
10727 | taking a copy of the provided buffer. For non-copying cases, use the name 'adopt', and | |
10728 | make this method take a Vector<UChar>&. For cases where non-copying construction was being | |
10729 | used, other than from a Vector<UChar>, change the code to allocate the storage along with | |
10730 | the UStringImpl using UStringImpl::createUninitialized(). (The adopt() method also more | |
10731 | closely matches that of WebCore::StringImpl). | |
10732 | ||
10733 | Also, UString::createUninitialized() and UStringImpl::createUninitialized() have incompatible | |
10734 | behaviours, in that the UString form sets the provided UChar* to a null or non-null value to | |
10735 | indicate success or failure, but UStringImpl uses the returned PassRefPtr<UStringImpl> to | |
10736 | indicate when allocation has failed (potentially leaving the output Char* uninitialized). | |
10737 | This is also incompatible with WebCore::StringImpl's behaviour, in that | |
10738 | StringImpl::createUninitialized() will CRASH() if unable to allocate. Some uses of | |
10739 | createUninitialized() in JSC are unsafe, since they do not test the result for null. | |
10740 | UStringImpl's indication is preferable, since we may want a successful call to set the result | |
10741 | buffer to 0 (specifically, StringImpl returns 0 for the buffer where createUninitialized() | |
10742 | returns the empty string, which seems reasonable to catch bugs early). UString's method | |
10743 | cannot support UStringImpl's behaviour directly, since it returns an object rather than a | |
10744 | pointer. | |
10745 | - remove UString::createUninitialized(), replace with calls to UStringImpl::createUninitialized() | |
10746 | - create a UStringImpl::tryCreateUninitialized() form UStringImpl::createUninitialized(), | |
10747 | with current behaviour, make createUninitialized() crash on failure to allocate. | |
10748 | - make cases in JSC that do not check the result call createUninitialized(), and cases that do | |
10749 | check call tryCreateUninitialized(). | |
10750 | ||
10751 | Rename computedHash() to existingHash(), to bring this in line wih WebCore::StringImpl. | |
10752 | ||
10753 | * API/JSClassRef.cpp: | |
10754 | (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
10755 | * JavaScriptCore.exp: | |
10756 | * runtime/ArrayPrototype.cpp: | |
10757 | (JSC::arrayProtoFuncToString): | |
10758 | * runtime/Identifier.cpp: | |
10759 | (JSC::CStringTranslator::translate): | |
10760 | (JSC::UCharBufferTranslator::translate): | |
10761 | * runtime/JSString.cpp: | |
10762 | (JSC::JSString::resolveRope): | |
10763 | * runtime/Lookup.cpp: | |
10764 | (JSC::HashTable::createTable): | |
10765 | * runtime/Lookup.h: | |
10766 | (JSC::HashTable::entry): | |
10767 | * runtime/StringBuilder.h: | |
10768 | (JSC::StringBuilder::release): | |
10769 | * runtime/StringConstructor.cpp: | |
10770 | (JSC::stringFromCharCodeSlowCase): | |
10771 | * runtime/StringPrototype.cpp: | |
10772 | (JSC::substituteBackreferencesSlow): | |
10773 | (JSC::stringProtoFuncToLowerCase): | |
10774 | (JSC::stringProtoFuncToUpperCase): | |
10775 | (JSC::stringProtoFuncFontsize): | |
10776 | (JSC::stringProtoFuncLink): | |
10777 | * runtime/Structure.cpp: | |
10778 | (JSC::Structure::despecifyDictionaryFunction): | |
10779 | (JSC::Structure::get): | |
10780 | (JSC::Structure::despecifyFunction): | |
10781 | (JSC::Structure::put): | |
10782 | (JSC::Structure::remove): | |
10783 | (JSC::Structure::insertIntoPropertyMapHashTable): | |
10784 | (JSC::Structure::checkConsistency): | |
10785 | * runtime/Structure.h: | |
10786 | (JSC::Structure::get): | |
10787 | * runtime/StructureTransitionTable.h: | |
10788 | (JSC::StructureTransitionTableHash::hash): | |
10789 | * runtime/UString.cpp: | |
10790 | (JSC::createRep): | |
10791 | (JSC::UString::UString): | |
10792 | (JSC::UString::spliceSubstringsWithSeparators): | |
10793 | (JSC::UString::replaceRange): | |
10794 | (JSC::UString::operator=): | |
10795 | * runtime/UString.h: | |
10796 | (JSC::UString::adopt): | |
10797 | (JSC::IdentifierRepHash::hash): | |
10798 | (JSC::makeString): | |
10799 | * runtime/UStringImpl.h: | |
10800 | (JSC::UStringImpl::adopt): | |
10801 | (JSC::UStringImpl::create): | |
10802 | (JSC::UStringImpl::createUninitialized): | |
10803 | (JSC::UStringImpl::tryCreateUninitialized): | |
10804 | (JSC::UStringImpl::existingHash): | |
10805 | ||
10806 | 2010-01-13 Kent Hansen <kent.hansen@nokia.com> | |
10807 | ||
10808 | Reviewed by Oliver Hunt. | |
10809 | ||
10810 | JSON.stringify and JSON.parse needlessly process properties in the prototype chain | |
10811 | https://bugs.webkit.org/show_bug.cgi?id=33053 | |
10812 | ||
10813 | * runtime/JSONObject.cpp: | |
10814 | (JSC::Stringifier::Holder::appendNextProperty): | |
10815 | (JSC::Walker::walk): | |
10816 | ||
10817 | 2010-01-13 Gavin Barraclough <barraclough@apple.com> | |
10818 | ||
10819 | Reviewed by NOBODY (buildfix). | |
10820 | ||
10821 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
10822 | ||
10823 | 2010-01-13 Alexey Proskuryakov <ap@apple.com> | |
10824 | ||
10825 | Reviewed by Darin Adler. | |
10826 | ||
10827 | https://bugs.webkit.org/show_bug.cgi?id=33641 | |
10828 | Assertion failure in Lexer.cpp if input stream ends while in string escape | |
10829 | ||
10830 | Test: fast/js/end-in-string-escape.html | |
10831 | ||
10832 | * parser/Lexer.cpp: (JSC::Lexer::lex): Bail out quickly on end of stream, not giving the | |
10833 | assertion a chance to fire. | |
10834 | ||
10835 | 2010-01-13 Gavin Barraclough <barraclough@apple.com> | |
10836 | ||
10837 | Reviewed by NOBODY (buildfix). | |
10838 | ||
10839 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
10840 | ||
10841 | 2010-01-13 Gavin Barraclough <barraclough@apple.com> | |
10842 | ||
10843 | Rubber stamped by Sam Weinig & Darin Adler. | |
10844 | ||
10845 | Three quick fixes to UStringImpl. | |
10846 | - The destroy() method can be switched back to a normal destructor; since we've switched | |
10847 | the way we protect static strings to be using an odd ref-count the destroy() won't abort. | |
10848 | - The cost() calculation logic was wrong. If you have multiple JSStrings wrapping substrings | |
10849 | of a base string, they would each report the full cost of the base string to the heap. | |
10850 | Instead we should only be reporting once for the base string. | |
10851 | - Remove the overloaded new operator calling fastMalloc, replace this with a 'using' to pick | |
10852 | up the implementation from the parent class. | |
10853 | ||
10854 | * JavaScriptCore.exp: | |
10855 | * runtime/UStringImpl.cpp: | |
10856 | (JSC::UStringImpl::~UStringImpl): | |
10857 | * runtime/UStringImpl.h: | |
10858 | (JSC::UStringImpl::cost): | |
10859 | (JSC::UStringImpl::deref): | |
10860 | ||
10861 | 2010-01-13 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
10862 | ||
10863 | Reviewed by Simon Hausmann. | |
10864 | ||
10865 | [Qt] Split the build process in two different .pro files. | |
10866 | This allows qmake to be run once all source files are available. | |
10867 | ||
10868 | * DerivedSources.pro: Added. | |
10869 | * JavaScriptCore.pri: Moved source generation to DerivedSources.pro | |
10870 | * pcre/pcre.pri: Moved source generation to DerivedSources.pro | |
10871 | ||
10872 | 2010-01-12 Kent Hansen <kent.hansen@nokia.com> | |
10873 | ||
10874 | Reviewed by Geoffrey Garen. | |
10875 | ||
10876 | [ES5] Implement Object.getOwnPropertyNames | |
10877 | https://bugs.webkit.org/show_bug.cgi?id=32242 | |
10878 | ||
10879 | Add an extra argument to getPropertyNames() and getOwnPropertyNames() | |
10880 | (and all reimplementations thereof) that indicates whether non-enumerable | |
10881 | properties should be added. | |
10882 | ||
10883 | * API/JSCallbackObject.h: | |
10884 | * API/JSCallbackObjectFunctions.h: | |
10885 | (JSC::::getOwnPropertyNames): | |
10886 | * JavaScriptCore.exp: | |
10887 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
10888 | * debugger/DebuggerActivation.cpp: | |
10889 | (JSC::DebuggerActivation::getOwnPropertyNames): | |
10890 | * debugger/DebuggerActivation.h: | |
10891 | * runtime/Arguments.cpp: | |
10892 | (JSC::Arguments::getOwnPropertyNames): | |
10893 | * runtime/Arguments.h: | |
10894 | * runtime/CommonIdentifiers.h: | |
10895 | * runtime/JSArray.cpp: | |
10896 | (JSC::JSArray::getOwnPropertyNames): | |
10897 | * runtime/JSArray.h: | |
10898 | * runtime/JSByteArray.cpp: | |
10899 | (JSC::JSByteArray::getOwnPropertyNames): | |
10900 | * runtime/JSByteArray.h: | |
10901 | * runtime/JSFunction.cpp: | |
10902 | (JSC::JSFunction::getOwnPropertyNames): | |
10903 | * runtime/JSFunction.h: | |
10904 | * runtime/JSNotAnObject.cpp: | |
10905 | (JSC::JSNotAnObject::getOwnPropertyNames): | |
10906 | * runtime/JSNotAnObject.h: | |
10907 | * runtime/JSObject.cpp: | |
10908 | (JSC::getClassPropertyNames): | |
10909 | (JSC::JSObject::getPropertyNames): | |
10910 | (JSC::JSObject::getOwnPropertyNames): | |
10911 | * runtime/JSObject.h: | |
10912 | * runtime/JSVariableObject.cpp: | |
10913 | (JSC::JSVariableObject::getOwnPropertyNames): | |
10914 | * runtime/JSVariableObject.h: | |
10915 | * runtime/ObjectConstructor.cpp: | |
10916 | (JSC::ObjectConstructor::ObjectConstructor): | |
10917 | (JSC::objectConstructorGetOwnPropertyNames): | |
10918 | * runtime/RegExpMatchesArray.h: | |
10919 | (JSC::RegExpMatchesArray::getOwnPropertyNames): | |
10920 | * runtime/StringObject.cpp: | |
10921 | (JSC::StringObject::getOwnPropertyNames): | |
10922 | * runtime/StringObject.h: | |
10923 | * runtime/Structure.cpp: Rename getEnumerablePropertyNames() to getPropertyNames(), which takes an extra argument. | |
10924 | (JSC::Structure::getPropertyNames): | |
10925 | * runtime/Structure.h: | |
10926 | (JSC::): | |
10927 | ||
10928 | 2010-01-12 Alexey Proskuryakov <ap@apple.com> | |
10929 | ||
10930 | Reviewed by Darin Adler. | |
10931 | ||
10932 | https://bugs.webkit.org/show_bug.cgi?id=33540 | |
10933 | Make it possible to build in debug mode with assertions disabled | |
10934 | ||
10935 | * jit/JITStubs.cpp: (JSC::DEFINE_STUB_FUNCTION): | |
10936 | * runtime/Identifier.cpp: (JSC::Identifier::checkSameIdentifierTable): | |
10937 | * wtf/FastMalloc.cpp: | |
10938 | * wtf/HashTable.h: (WTF::HashTableConstIterator::checkValidity): | |
10939 | * yarr/RegexCompiler.cpp: (JSC::Yarr::compileRegex): | |
10940 | ||
10941 | 2009-11-23 Yong Li <yoli@rim.com> | |
10942 | ||
10943 | Reviewed by Adam Treat. | |
10944 | ||
10945 | Make GIF decoder support down-sampling | |
10946 | https://bugs.webkit.org/show_bug.cgi?id=31806 | |
10947 | ||
10948 | * platform/image-decoders/ImageDecoder.cpp: | |
10949 | (WebCore::ImageDecoder::upperBoundScaledY): | |
10950 | (WebCore::ImageDecoder::lowerBoundScaledY): | |
10951 | * platform/image-decoders/ImageDecoder.h: | |
10952 | (WebCore::RGBA32Buffer::scaledRect): | |
10953 | (WebCore::RGBA32Buffer::setScaledRect): | |
10954 | (WebCore::ImageDecoder::scaledSize): | |
10955 | * platform/image-decoders/gif/GIFImageDecoder.cpp: | |
10956 | (WebCore::GIFImageDecoder::sizeNowAvailable): | |
10957 | (WebCore::GIFImageDecoder::initFrameBuffer): | |
10958 | (WebCore::copyOnePixel): | |
10959 | (WebCore::GIFImageDecoder::haveDecodedRow): | |
10960 | (WebCore::GIFImageDecoder::frameComplete): | |
10961 | ||
10962 | 2010-01-12 Adam Barth <abarth@webkit.org> | |
10963 | ||
10964 | Reviewed by Eric Seidel. | |
10965 | ||
10966 | ecma/Date/15.9.5.12-1.js fails every night at midnight | |
10967 | https://bugs.webkit.org/show_bug.cgi?id=28041 | |
10968 | ||
10969 | Change the test to use a concrete time instead of "now". | |
10970 | ||
10971 | * tests/mozilla/ecma/Date/15.9.5.10-1.js: | |
10972 | * tests/mozilla/ecma/Date/15.9.5.12-1.js: | |
10973 | ||
10974 | 2010-01-11 Csaba Osztrogonác <ossy@webkit.org> | |
10975 | ||
10976 | Reviewed by Ariya Hidayat. | |
10977 | ||
10978 | [Qt] Enable JIT and YARR_JIT if (CPU(X86_64) && OS(LINUX) && GCC_VERSION >= 40100) | |
10979 | ||
10980 | * wtf/Platform.h: | |
10981 | ||
10982 | 2010-01-11 Geoffrey Garen <ggaren@apple.com> | |
10983 | ||
10984 | Reviewed by Alexey Proskuryakov. | |
10985 | ||
10986 | https://bugs.webkit.org/show_bug.cgi?id=33481 | |
10987 | Uninitialized data members in ArrayStorage | |
10988 | ||
10989 | SunSpider reports no change. | |
10990 | ||
10991 | * runtime/JSArray.cpp: | |
10992 | (JSC::JSArray::JSArray): Initialize missing data members in the two cases | |
10993 | where we don't use fastZeroedMalloc, so it doesn't happen automatically. | |
10994 | ||
10995 | 2010-01-11 Steve Falkenburg <sfalken@apple.com> | |
10996 | ||
10997 | Reviewed by Sam Weinig. | |
10998 | ||
10999 | https://bugs.webkit.org/show_bug.cgi?id=33480 | |
11000 | ||
11001 | Improve debugging reliability for WTF on Windows. | |
11002 | Store WTF static library's PDB file into a better location. | |
11003 | ||
11004 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
11005 | ||
11006 | 2010-01-11 Steve Falkenburg <sfalken@apple.com> | |
11007 | ||
11008 | Windows build fix. | |
11009 | Remove extraneous entries from def file causing build warning. | |
11010 | ||
11011 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
11012 | ||
11013 | 2010-01-10 Kent Hansen <kent.hansen@nokia.com> | |
11014 | ||
11015 | Reviewed by Darin Adler. | |
11016 | ||
11017 | RegExp.prototype.toString returns "//" for empty regular expressions | |
11018 | https://bugs.webkit.org/show_bug.cgi?id=33319 | |
11019 | ||
11020 | "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA. | |
11021 | ||
11022 | * runtime/RegExpPrototype.cpp: | |
11023 | (JSC::regExpProtoFuncToString): | |
11024 | ||
11025 | * tests/mozilla/ecma_2/RegExp/properties-001.js: | |
11026 | (AddRegExpCases): | |
11027 | * tests/mozilla/js1_2/regexp/toString.js: | |
11028 | Update relevant Mozilla tests (Mozilla has had this behavior since November 2003). | |
11029 | ||
11030 | 2010-01-10 Darin Adler <darin@apple.com> | |
11031 | ||
11032 | * tests/mozilla/ecma/Array/15.4.1.1.js: Added property allow-tabs. | |
11033 | * tests/mozilla/ecma/Array/15.4.1.2.js: Added property allow-tabs. | |
11034 | * tests/mozilla/ecma/Array/15.4.2.1-1.js: Added property allow-tabs. | |
11035 | * tests/mozilla/ecma/Array/15.4.2.2-1.js: Added property allow-tabs. | |
11036 | * tests/mozilla/ecma/Array/15.4.2.2-2.js: Added property allow-tabs. | |
11037 | * tests/mozilla/ecma/Array/15.4.2.3.js: Added property allow-tabs. | |
11038 | * tests/mozilla/ecma/Array/15.4.3.2.js: Added property allow-tabs. | |
11039 | * tests/mozilla/ecma/Array/15.4.3.js: Added property allow-tabs. | |
11040 | * tests/mozilla/ecma/Array/15.4.4.1.js: Added property allow-tabs. | |
11041 | * tests/mozilla/ecma/Array/15.4.4.js: Added property allow-tabs. | |
11042 | * tests/mozilla/ecma/LexicalConventions/7.7.4.js: Added property allow-tabs. | |
11043 | * tests/mozilla/ecma/Math/15.8.2.13.js: Added property allow-tabs. | |
11044 | * tests/mozilla/ecma/Math/15.8.2.16.js: Added property allow-tabs. | |
11045 | * tests/mozilla/ecma/Math/15.8.2.18.js: Added property allow-tabs. | |
11046 | * tests/mozilla/ecma/Math/15.8.2.2.js: Added property allow-tabs. | |
11047 | * tests/mozilla/ecma/Math/15.8.2.4.js: Added property allow-tabs. | |
11048 | * tests/mozilla/ecma/Math/15.8.2.5.js: Added property allow-tabs. | |
11049 | * tests/mozilla/ecma/Math/15.8.2.7.js: Added property allow-tabs. | |
11050 | * tests/mozilla/ecma/String/15.5.1.js: Added property allow-tabs. | |
11051 | * tests/mozilla/ecma/String/15.5.2.js: Added property allow-tabs. | |
11052 | * tests/mozilla/ecma/String/15.5.3.1-3.js: Added property allow-tabs. | |
11053 | * tests/mozilla/ecma/String/15.5.3.1-4.js: Added property allow-tabs. | |
11054 | * tests/mozilla/ecma/String/15.5.3.js: Added property allow-tabs. | |
11055 | * tests/mozilla/ecma/TypeConversion/9.5-2.js: Added property allow-tabs. | |
11056 | * tests/mozilla/ecma/jsref.js: Modified property allow-tabs. | |
11057 | * tests/mozilla/ecma/shell.js: Modified property allow-tabs. | |
11058 | * tests/mozilla/ecma_2/LexicalConventions/keywords-001.js: Added property allow-tabs. | |
11059 | * tests/mozilla/ecma_2/RegExp/exec-001.js: Added property allow-tabs. | |
11060 | * tests/mozilla/ecma_2/String/match-004.js: Added property allow-tabs. | |
11061 | * tests/mozilla/ecma_2/String/replace-001.js: Added property allow-tabs. | |
11062 | * tests/mozilla/ecma_2/String/split-002.js: Added property allow-tabs. | |
11063 | * tests/mozilla/ecma_2/jsref.js: Modified property allow-tabs. | |
11064 | * tests/mozilla/ecma_2/shell.js: Added property allow-tabs. | |
11065 | * tests/mozilla/ecma_3/Date/shell.js: Modified property allow-tabs. | |
11066 | * tests/mozilla/ecma_3/Exceptions/regress-181654.js: Added property allow-tabs. | |
11067 | * tests/mozilla/ecma_3/RegExp/regress-209067.js: Added property allow-tabs. | |
11068 | * tests/mozilla/ecma_3/RegExp/regress-85721.js: Added property allow-tabs. | |
11069 | * tests/mozilla/importList.html: Added property allow-tabs. | |
11070 | * tests/mozilla/js1_1/shell.js: Added property allow-tabs. | |
11071 | * tests/mozilla/js1_2/Array/general1.js: Added property allow-tabs. | |
11072 | * tests/mozilla/js1_2/Array/general2.js: Added property allow-tabs. | |
11073 | * tests/mozilla/js1_2/Array/slice.js: Added property allow-tabs. | |
11074 | * tests/mozilla/js1_2/Array/splice1.js: Added property allow-tabs. | |
11075 | * tests/mozilla/js1_2/Array/splice2.js: Added property allow-tabs. | |
11076 | * tests/mozilla/js1_2/Objects/toString-001.js: Added property allow-tabs. | |
11077 | * tests/mozilla/js1_2/String/charCodeAt.js: Added property allow-tabs. | |
11078 | * tests/mozilla/js1_2/String/concat.js: Modified property allow-tabs. | |
11079 | * tests/mozilla/js1_2/String/match.js: Added property allow-tabs. | |
11080 | * tests/mozilla/js1_2/String/slice.js: Added property allow-tabs. | |
11081 | * tests/mozilla/js1_2/function/Function_object.js: Added property allow-tabs. | |
11082 | * tests/mozilla/js1_2/function/Number.js: Modified property allow-tabs. | |
11083 | * tests/mozilla/js1_2/function/String.js: Modified property allow-tabs. | |
11084 | * tests/mozilla/js1_2/function/nesting.js: Added property allow-tabs. | |
11085 | * tests/mozilla/js1_2/function/regexparg-1.js: Added property allow-tabs. | |
11086 | * tests/mozilla/js1_2/function/regexparg-2-n.js: Added property allow-tabs. | |
11087 | * tests/mozilla/js1_2/jsref.js: Added property allow-tabs. | |
11088 | * tests/mozilla/js1_2/operator/equality.js: Added property allow-tabs. | |
11089 | * tests/mozilla/js1_2/operator/strictEquality.js: Added property allow-tabs. | |
11090 | * tests/mozilla/js1_2/regexp/RegExp_dollar_number.js: Added property allow-tabs. | |
11091 | * tests/mozilla/js1_2/regexp/RegExp_input.js: Added property allow-tabs. | |
11092 | * tests/mozilla/js1_2/regexp/RegExp_input_as_array.js: Added property allow-tabs. | |
11093 | * tests/mozilla/js1_2/regexp/RegExp_lastIndex.js: Added property allow-tabs. | |
11094 | * tests/mozilla/js1_2/regexp/RegExp_lastMatch.js: Added property allow-tabs. | |
11095 | * tests/mozilla/js1_2/regexp/RegExp_lastMatch_as_array.js: Added property allow-tabs. | |
11096 | * tests/mozilla/js1_2/regexp/RegExp_lastParen.js: Added property allow-tabs. | |
11097 | * tests/mozilla/js1_2/regexp/RegExp_lastParen_as_array.js: Added property allow-tabs. | |
11098 | * tests/mozilla/js1_2/regexp/RegExp_leftContext.js: Added property allow-tabs. | |
11099 | * tests/mozilla/js1_2/regexp/RegExp_leftContext_as_array.js: Added property allow-tabs. | |
11100 | * tests/mozilla/js1_2/regexp/RegExp_multiline.js: Added property allow-tabs. | |
11101 | * tests/mozilla/js1_2/regexp/RegExp_multiline_as_array.js: Added property allow-tabs. | |
11102 | * tests/mozilla/js1_2/regexp/RegExp_object.js: Added property allow-tabs. | |
11103 | * tests/mozilla/js1_2/regexp/RegExp_rightContext.js: Added property allow-tabs. | |
11104 | * tests/mozilla/js1_2/regexp/RegExp_rightContext_as_array.js: Added property allow-tabs. | |
11105 | * tests/mozilla/js1_2/regexp/alphanumeric.js: Added property allow-tabs. | |
11106 | * tests/mozilla/js1_2/regexp/asterisk.js: Added property allow-tabs. | |
11107 | * tests/mozilla/js1_2/regexp/backslash.js: Added property allow-tabs. | |
11108 | * tests/mozilla/js1_2/regexp/backspace.js: Added property allow-tabs. | |
11109 | * tests/mozilla/js1_2/regexp/beginLine.js: Added property allow-tabs. | |
11110 | * tests/mozilla/js1_2/regexp/character_class.js: Added property allow-tabs. | |
11111 | * tests/mozilla/js1_2/regexp/compile.js: Added property allow-tabs. | |
11112 | * tests/mozilla/js1_2/regexp/control_characters.js: Added property allow-tabs. | |
11113 | * tests/mozilla/js1_2/regexp/digit.js: Added property allow-tabs. | |
11114 | * tests/mozilla/js1_2/regexp/dot.js: Added property allow-tabs. | |
11115 | * tests/mozilla/js1_2/regexp/endLine.js: Added property allow-tabs. | |
11116 | * tests/mozilla/js1_2/regexp/everything.js: Added property allow-tabs. | |
11117 | * tests/mozilla/js1_2/regexp/exec.js: Added property allow-tabs. | |
11118 | * tests/mozilla/js1_2/regexp/flags.js: Added property allow-tabs. | |
11119 | * tests/mozilla/js1_2/regexp/global.js: Added property allow-tabs. | |
11120 | * tests/mozilla/js1_2/regexp/hexadecimal.js: Added property allow-tabs. | |
11121 | * tests/mozilla/js1_2/regexp/ignoreCase.js: Added property allow-tabs. | |
11122 | * tests/mozilla/js1_2/regexp/interval.js: Added property allow-tabs. | |
11123 | * tests/mozilla/js1_2/regexp/octal.js: Added property allow-tabs. | |
11124 | * tests/mozilla/js1_2/regexp/parentheses.js: Added property allow-tabs. | |
11125 | * tests/mozilla/js1_2/regexp/plus.js: Added property allow-tabs. | |
11126 | * tests/mozilla/js1_2/regexp/question_mark.js: Added property allow-tabs. | |
11127 | * tests/mozilla/js1_2/regexp/simple_form.js: Added property allow-tabs. | |
11128 | * tests/mozilla/js1_2/regexp/source.js: Added property allow-tabs. | |
11129 | * tests/mozilla/js1_2/regexp/special_characters.js: Added property allow-tabs. | |
11130 | * tests/mozilla/js1_2/regexp/string_replace.js: Added property allow-tabs. | |
11131 | * tests/mozilla/js1_2/regexp/string_search.js: Added property allow-tabs. | |
11132 | * tests/mozilla/js1_2/regexp/string_split.js: Added property allow-tabs. | |
11133 | * tests/mozilla/js1_2/regexp/test.js: Added property allow-tabs. | |
11134 | * tests/mozilla/js1_2/regexp/toString.js: Added property allow-tabs. | |
11135 | * tests/mozilla/js1_2/regexp/vertical_bar.js: Added property allow-tabs. | |
11136 | * tests/mozilla/js1_2/regexp/whitespace.js: Added property allow-tabs. | |
11137 | * tests/mozilla/js1_2/regexp/word_boundary.js: Added property allow-tabs. | |
11138 | * tests/mozilla/js1_2/shell.js: Added property allow-tabs. | |
11139 | * tests/mozilla/js1_2/statements/break.js: Added property allow-tabs. | |
11140 | * tests/mozilla/js1_2/statements/continue.js: Added property allow-tabs. | |
11141 | * tests/mozilla/js1_2/statements/do_while.js: Added property allow-tabs. | |
11142 | * tests/mozilla/js1_2/statements/switch.js: Added property allow-tabs. | |
11143 | * tests/mozilla/js1_2/statements/switch2.js: Added property allow-tabs. | |
11144 | * tests/mozilla/js1_3/shell.js: Added property allow-tabs. | |
11145 | * tests/mozilla/js1_4/shell.js: Added property allow-tabs. | |
11146 | * tests/mozilla/js1_5/Regress/regress-111557.js: Added property allow-tabs. | |
11147 | * tests/mozilla/js1_5/Regress/regress-216320.js: Added property allow-tabs. | |
11148 | * tests/mozilla/menuhead.html: Added property allow-tabs. | |
11149 | * tests/mozilla/mklistpage.pl: Added property allow-tabs. | |
11150 | * tests/mozilla/runtests.pl: Added property allow-tabs. | |
11151 | ||
11152 | 2010-01-08 Daniel Bates <dbates@webkit.org> | |
11153 | ||
11154 | Reviewed by Adam Barth. | |
11155 | ||
11156 | https://bugs.webkit.org/show_bug.cgi?id=33417 | |
11157 | ||
11158 | Cleans up style errors exposed by the patch for bug #33198. | |
11159 | Moreover, fixes all "Weird number of spaces at line-start. Are you using a 4-space indent?" | |
11160 | errors reported by check-webkit-style. | |
11161 | ||
11162 | No functionality was changed. So, no new tests. | |
11163 | ||
11164 | * wtf/Platform.h: | |
11165 | ||
11166 | 2010-01-08 Kent Hansen <kent.hansen@nokia.com> | |
11167 | ||
11168 | Reviewed by Eric Seidel. | |
11169 | ||
11170 | Don't store RegExp flags string representation | |
11171 | https://bugs.webkit.org/show_bug.cgi?id=33321 | |
11172 | ||
11173 | It's unused; the string representation is reconstructed from flags. | |
11174 | ||
11175 | * runtime/RegExp.cpp: | |
11176 | (JSC::RegExp::RegExp): | |
11177 | * runtime/RegExp.h: | |
11178 | ||
11179 | 2010-01-08 Geoffrey Garen <ggaren@apple.com> | |
11180 | ||
11181 | Reviewed by Oliver Hunt. | |
11182 | ||
11183 | Memory use grows grows possibly unbounded in this JavaScript Array test case | |
11184 | https://bugs.webkit.org/show_bug.cgi?id=31675 | |
11185 | ||
11186 | This fixes one observed bug in this test case, which is that | |
11187 | arrays don't report extra cost for the sparse value maps. | |
11188 | ||
11189 | SunSpider reports a small speedup. | |
11190 | ||
11191 | * runtime/JSArray.cpp: | |
11192 | (JSC::JSArray::putSlowCase): Report extra memory cost for | |
11193 | the sparse value map. | |
11194 | * runtime/JSArray.h: | |
11195 | ||
11196 | 2010-01-08 Yong Li <yoli@rim.com> | |
11197 | ||
11198 | Reviewed by Darin Adler. | |
11199 | ||
11200 | Remove unnecessary #include from FastMalloc.cpp | |
11201 | https://bugs.webkit.org/show_bug.cgi?id=33393 | |
11202 | ||
11203 | * wtf/FastMalloc.cpp: | |
11204 | ||
11205 | 2010-01-08 Eric Seidel <eric@webkit.org> | |
11206 | ||
11207 | No review, rolling out r52983. | |
11208 | http://trac.webkit.org/changeset/52983 | |
11209 | https://bugs.webkit.org/show_bug.cgi?id=33321 | |
11210 | ||
11211 | Broke 59 JavaScriptCore tests. I don't think Kent knew about | |
11212 | run-javascriptcore-tests. Sadly neither does the commit-bot, | |
11213 | yet. | |
11214 | ||
11215 | * runtime/RegExp.cpp: | |
11216 | (JSC::RegExp::RegExp): | |
11217 | * runtime/RegExp.h: | |
11218 | (JSC::RegExp::flags): | |
11219 | ||
11220 | 2010-01-08 Eric Seidel <eric@webkit.org> | |
11221 | ||
11222 | No review, rolling out r52981. | |
11223 | http://trac.webkit.org/changeset/52981 | |
11224 | https://bugs.webkit.org/show_bug.cgi?id=33319 | |
11225 | ||
11226 | Caused two JS tests to start failing: | |
11227 | ecma_2/RegExp/properties-001.js and js1_2/regexp/toString.js | |
11228 | ||
11229 | * runtime/RegExpPrototype.cpp: | |
11230 | (JSC::regExpProtoFuncToString): | |
11231 | ||
11232 | 2010-01-08 Kent Hansen <kent.hansen@nokia.com> | |
11233 | ||
11234 | Reviewed by Darin Adler. | |
11235 | ||
11236 | Don't store RegExp flags string representation | |
11237 | https://bugs.webkit.org/show_bug.cgi?id=33321 | |
11238 | ||
11239 | It's unused; the string representation is reconstructed from flags. | |
11240 | ||
11241 | * runtime/RegExp.cpp: | |
11242 | (JSC::RegExp::RegExp): | |
11243 | * runtime/RegExp.h: | |
11244 | ||
11245 | 2010-01-08 Kent Hansen <kent.hansen@nokia.com> | |
11246 | ||
11247 | Reviewed by Darin Adler. | |
11248 | ||
11249 | RegExp.prototype.toString returns "//" for empty regular expressions | |
11250 | https://bugs.webkit.org/show_bug.cgi?id=33319 | |
11251 | ||
11252 | "//" starts a single-line comment, hence "/(?:)/" should be used, according to ECMA. | |
11253 | ||
11254 | * runtime/RegExpPrototype.cpp: | |
11255 | (JSC::regExpProtoFuncToString): | |
11256 | ||
11257 | 2010-01-08 Norbert Leser <norbert.leser@nokia.com> | |
11258 | ||
11259 | Reviewed by Darin Adler. | |
11260 | ||
11261 | RVCT compiler with "-Otime -O3" optimization tries to optimize out | |
11262 | inline new'ed pointers that are passed as arguments. | |
11263 | Proposed patch assigns new'ed pointer explicitly outside function call. | |
11264 | ||
11265 | https://bugs.webkit.org/show_bug.cgi?id=33084 | |
11266 | ||
11267 | * API/JSClassRef.cpp: | |
11268 | (OpaqueJSClass::OpaqueJSClass): | |
11269 | (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
11270 | ||
11271 | 2010-01-08 Gabor Loki <loki@webkit.org> | |
11272 | ||
11273 | Reviewed by Gavin Barraclough. | |
11274 | ||
11275 | Remove an unnecessary cacheFlush from ARM_TRADITIONAL JIT | |
11276 | https://bugs.webkit.org/show_bug.cgi?id=33203 | |
11277 | ||
11278 | * assembler/ARMAssembler.cpp: Remove obsolete linkBranch function. | |
11279 | (JSC::ARMAssembler::executableCopy): Inline a clean linkBranch code. | |
11280 | * assembler/ARMAssembler.h: | |
11281 | (JSC::ARMAssembler::getLdrImmAddress): Use inline function. | |
11282 | (JSC::ARMAssembler::getLdrImmAddressOnPool): Ditto. | |
11283 | (JSC::ARMAssembler::patchPointerInternal): Remove an unnecessary cacheFlush. | |
11284 | (JSC::ARMAssembler::linkJump): Use patchPointerInternal instead of linkBranch. | |
11285 | (JSC::ARMAssembler::linkCall): Ditto. | |
11286 | (JSC::ARMAssembler::relinkCall): Ditto. | |
11287 | ||
11288 | 2010-01-07 Gabor Loki <loki@webkit.org> | |
11289 | ||
11290 | Reviewed by Gavin Barraclough. | |
11291 | ||
11292 | Build fix for JSVALUE32 when ENABLE_JIT_OPTIMIZE* are disabled | |
11293 | https://bugs.webkit.org/show_bug.cgi?id=33311 | |
11294 | ||
11295 | Move compileGetDirectOffset function to common part of JSVALUE32 | |
11296 | ||
11297 | * jit/JITPropertyAccess.cpp: | |
11298 | (JSC::JIT::compileGetDirectOffset): | |
11299 | ||
11300 | 2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
11301 | ||
11302 | Reviewed by Maciej Stachowiak. | |
11303 | ||
11304 | Allow call sites to determine if ASSERT_* and LOG_* macros are operational | |
11305 | https://bugs.webkit.org/show_bug.cgi?id=33020 | |
11306 | ||
11307 | * wtf/Assertions.h: Set ASSERT_MSG_DISABLED, FATAL_DISABLED, | |
11308 | ERROR_DISABLED, LOG_DISABLED to 1 if the compiler does not support | |
11309 | variadic macros. Refactor for better readibility. | |
11310 | ||
11311 | 2010-01-07 Daniel Bates <dbates@rim.com> | |
11312 | ||
11313 | Reviewed by Eric Seidel. | |
11314 | ||
11315 | https://bugs.webkit.org/show_bug.cgi?id=32987 | |
11316 | ||
11317 | Added ENABLE_XHTMLMP flag. Disabled by default. | |
11318 | ||
11319 | * Configurations/FeatureDefines.xcconfig: | |
11320 | ||
11321 | 2010-01-07 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
11322 | ||
11323 | Reviewed by Gavin Barraclough. | |
11324 | ||
11325 | [Symbian] Port ARM traditional JIT Trampolines to RVCT | |
11326 | https://bugs.webkit.org/show_bug.cgi?id=30552 | |
11327 | ||
11328 | Take the GCC implementation and mechanically convert | |
11329 | it to RVCT syntax. | |
11330 | ||
11331 | Use 'bx rX' instead of 'mov pc, rX' when it is available. | |
11332 | ||
11333 | Developed in cooperation with Iain Campbell and Gabor Loki. | |
11334 | ||
11335 | * JavaScriptCore.pri: Extra step to generate RVCT stubs. The | |
11336 | script generation intentionally executed all the time not just | |
11337 | for RVCT targets. | |
11338 | ||
11339 | * create_rvct_stubs: Added. Perl script to expand precompiler macros | |
11340 | for RVCT assembler - the template is defined in JITStubs.cpp. | |
11341 | ||
11342 | * jit/JITStubs.cpp: | |
11343 | (JSC::ctiTrampoline): | |
11344 | (JSC::ctiVMThrowTrampoline): | |
11345 | (JSC::ctiOpThrowNotCaught): | |
11346 | ||
11347 | 2010-01-07 Geoffrey Garen <ggaren@apple.com> | |
11348 | ||
11349 | Reviewed by Sam Weinig. | |
11350 | ||
11351 | Fix a crash seen on the buildbots. | |
11352 | ||
11353 | * runtime/JSGlobalObject.cpp: | |
11354 | (JSC::JSGlobalObject::init): Disable specific function tracking here, | |
11355 | instead of in WebCore, to ensure that the disabling happens before a | |
11356 | specific function can be registered. | |
11357 | ||
11358 | 2010-01-07 Alexey Proskuryakov <ap@apple.com> | |
11359 | ||
11360 | Mac build fix. | |
11361 | ||
11362 | * JavaScriptCore.exp: Export new JSGlobalData static data members. | |
11363 | ||
11364 | 2010-01-07 Alexey Proskuryakov <ap@apple.com> | |
11365 | ||
11366 | Reviewed by Geoffrey Garen. | |
11367 | ||
11368 | https://bugs.webkit.org/show_bug.cgi?id=33057 | |
11369 | REGRESSION(r49365): typeof(xhr.responseText) != "string" in Windows | |
11370 | ||
11371 | <rdar://problem/7296920> REGRESSION: WebKit fails to start PeaceKeeper benchmark | |
11372 | ||
11373 | Test: fast/js/webcore-string-comparison.html | |
11374 | ||
11375 | In r49365, some code was moved from JSString.cpp to JSString.h, and as a result, WebCore | |
11376 | got a way to directly instantiate JSStrings over DLL borders. Since vftable for JSString was | |
11377 | not exported, objects created from WebCore got a different vptr, and JavaScriptCore | |
11378 | optimizations that relied on vptr of all JSString objects being equal failed. | |
11379 | ||
11380 | * config.h: Added a JS_EXPORTCLASS macro for exporting classes. It's currently the same as | |
11381 | JS_EXPORTDATA, but it clearly needed a new name. | |
11382 | ||
11383 | * runtime/InitializeThreading.cpp: | |
11384 | (JSC::initializeThreadingOnce): | |
11385 | * runtime/JSGlobalData.cpp: | |
11386 | (JSC::JSGlobalData::storeVPtrs): | |
11387 | (JSC::JSGlobalData::JSGlobalData): | |
11388 | (JSC::JSGlobalData::createNonDefault): | |
11389 | (JSC::JSGlobalData::create): | |
11390 | (JSC::JSGlobalData::sharedInstance): | |
11391 | * runtime/JSGlobalData.h: | |
11392 | Store vptrs just once, no need to repeatedly pick and copy them. This makes it possible to | |
11393 | assert vptr correctness in object destructors (which don't have access to JSGlobalData, | |
11394 | and even Heap::heap(this) will fail for fake objects created from storeVPtrs()). | |
11395 | ||
11396 | * runtime/JSArray.cpp: (JSC::JSArray::~JSArray): Assert that vptr is what we expect it to be. | |
11397 | It's important to assert in destructor, because MSVC changes the vptr after constructor | |
11398 | is invoked. | |
11399 | * runtime/JSByteArray.cpp: (JSC::JSByteArray::~JSByteArray): Ditto. | |
11400 | * runtime/JSByteArray.h: Ditto. | |
11401 | * runtime/JSFunction.h: Ditto. | |
11402 | * runtime/JSFunction.cpp: (JSC::JSFunction::~JSFunction): Ditto. | |
11403 | ||
11404 | * runtime/JSCell.h: (JSC::JSCell::setVPtr): Added a method to substitute vptr for another | |
11405 | one. | |
11406 | ||
11407 | * runtime/JSString.h: Export JSString class together with its vftable, and tell other | |
11408 | libraries tp import it. This is needed on platforms that have a separate JavaScriptCore | |
11409 | dynamic library - and on Mac, we already did the export via JavaScriptCore.exp. | |
11410 | (JSC::JSString::~JSString): Assert tha vptr is what we expect it to be. | |
11411 | (JSC::fixupVPtr): Store a previously saved primary vftable pointer (do nothing if building | |
11412 | JavaScriptCore itself). | |
11413 | (JSC::jsSingleCharacterString): Call fixupVPtr in case this is call across DLL boundary. | |
11414 | (JSC::jsSingleCharacterSubstring): Ditto. | |
11415 | (JSC::jsNontrivialString): Ditto. | |
11416 | (JSC::jsString): Ditto. | |
11417 | (JSC::jsSubstring): Ditto. | |
11418 | (JSC::jsOwnedString): Ditto. | |
11419 | ||
11420 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export the new static | |
11421 | JSGlobalData members that are used in WebCore via inline functions. | |
11422 | ||
11423 | 2010-01-07 Geoffrey Garen <ggaren@apple.com> | |
11424 | ||
11425 | Reviewed by Sam Weinig. | |
11426 | ||
11427 | Safari memory usage skyrockets using new Google AdWords interface | |
11428 | https://bugs.webkit.org/show_bug.cgi?id=33343 | |
11429 | ||
11430 | The memory use was caused by the global object creating too many structures | |
11431 | as it thrashed between different specific functions. | |
11432 | ||
11433 | * runtime/Structure.cpp: | |
11434 | (JSC::Structure::Structure): | |
11435 | (JSC::Structure::addPropertyTransition): | |
11436 | (JSC::Structure::changePrototypeTransition): | |
11437 | (JSC::Structure::despecifyFunctionTransition): | |
11438 | (JSC::Structure::addAnonymousSlotsTransition): | |
11439 | (JSC::Structure::getterSetterTransition): | |
11440 | (JSC::Structure::toDictionaryTransition): | |
11441 | (JSC::Structure::addPropertyWithoutTransition): | |
11442 | (JSC::Structure::despecifyAllFunctions): | |
11443 | * runtime/Structure.h: | |
11444 | (JSC::Structure::disableSpecificFunctionTracking): Track a thrash count | |
11445 | for specific functions. Disable specific function tracking once the | |
11446 | thrash count has been hit. | |
11447 | ||
11448 | 2010-01-07 Csaba Osztrogonác <ossy@webkit.org> | |
11449 | ||
11450 | Reviewed by Simon Hausmann. | |
11451 | ||
11452 | [Qt] Enable JIT in debug mode on win32 after r51141 fixed the crashes. | |
11453 | ||
11454 | * JavaScriptCore.pri: | |
11455 | ||
11456 | 2010-01-07 Zoltan Horvath <zoltan@webkit.org> | |
11457 | ||
11458 | Reviewed by Holger Freyther. | |
11459 | ||
11460 | [Mac] Build fix when FAST_MALLOC_MATCH_VALIDATION=1 | |
11461 | https://bugs.webkit.org/show_bug.cgi?id=33312 | |
11462 | ||
11463 | Using of operator += cause compile error on Mac, so it is changed to | |
11464 | "= static_cast<AllocAlignmentInteger*>(old_ptr) + 1". | |
11465 | ||
11466 | * wtf/FastMalloc.cpp: | |
11467 | (WTF::TCMallocStats::realloc): | |
11468 | ||
11469 | 2010-01-07 Zoltan Horvath <zoltan@webkit.org> | |
11470 | ||
11471 | Reviewed by Holger Freyther. | |
11472 | ||
11473 | [Qt] Build fix when FAST_MALLOC_MATCH_VALIDATION=1 | |
11474 | https://bugs.webkit.org/show_bug.cgi?id=33312 | |
11475 | ||
11476 | Remove pByte (committed in r42344 from #20422), because pByte doesn't | |
11477 | exist and it is unnecessary. | |
11478 | ||
11479 | * wtf/FastMalloc.cpp: | |
11480 | (WTF::TCMallocStats::realloc): | |
11481 | ||
11482 | 2010-01-06 Gavin Barraclough <barraclough@apple.com> | |
11483 | ||
11484 | QT build fix. | |
11485 | ||
11486 | * runtime/Identifier.cpp: | |
11487 | (JSC::createIdentifierTableSpecific): | |
11488 | ||
11489 | 2010-01-06 Gavin Barraclough <barraclough@apple.com> | |
11490 | ||
11491 | Windows build fix part I. | |
11492 | ||
11493 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
11494 | ||
11495 | 2010-01-06 Dan Bernstein <mitz@apple.com> | |
11496 | ||
11497 | Build fix | |
11498 | ||
11499 | * runtime/Identifier.cpp: | |
11500 | (JSC::createIdentifierTableSpecificCallback): | |
11501 | ||
11502 | 2010-01-05 Gavin Barraclough <barraclough@apple.com> | |
11503 | ||
11504 | Reviewed by Sam Weinig. | |
11505 | ||
11506 | https://bugs.webkit.org/show_bug.cgi?id=33236 | |
11507 | Remove m_identifierTable pointer from UString | |
11508 | ||
11509 | Currently every string holds a pointer so that during destruction, | |
11510 | if a string has been used as an identifier, it can remove itself | |
11511 | from the table. By instead accessing the identifierTable via a | |
11512 | thread specific tracking the table associated with the current | |
11513 | globaldata, we can save the memory cost of this pointer. | |
11514 | ||
11515 | * API/APIShims.h: | |
11516 | (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
11517 | (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
11518 | (JSC::APICallbackShim::APICallbackShim): | |
11519 | (JSC::APICallbackShim::~APICallbackShim): | |
11520 | ||
11521 | - change the API shims to track the identifierTable of the current JSGlobalData. | |
11522 | ||
11523 | * API/JSContextRef.cpp: | |
11524 | (JSContextGroupCreate): | |
11525 | ||
11526 | - update creation of JSGlobalData for API usage to use new create method. | |
11527 | - fix shim instanciation bug in JSGlobalContextCreateInGroup. | |
11528 | ||
11529 | * JavaScriptCore.exp: | |
11530 | * runtime/Completion.cpp: | |
11531 | (JSC::checkSyntax): | |
11532 | (JSC::evaluate): | |
11533 | ||
11534 | - add asserts to check the identifierTable is being tracked correctly. | |
11535 | ||
11536 | * runtime/Identifier.cpp: | |
11537 | (JSC::IdentifierTable::~IdentifierTable): | |
11538 | (JSC::IdentifierTable::add): | |
11539 | (JSC::Identifier::remove): | |
11540 | (JSC::Identifier::checkSameIdentifierTable): | |
11541 | (JSC::createIdentifierTableSpecificCallback): | |
11542 | (JSC::createIdentifierTableSpecific): | |
11543 | (JSC::createDefaultDataSpecific): | |
11544 | ||
11545 | - Use currentIdentifierTable() instead of UStringImpl::m_identifierTable. | |
11546 | - Define methods to access the thread specific identifier tables. | |
11547 | ||
11548 | * runtime/Identifier.h: | |
11549 | (JSC::ThreadIdentifierTableData::ThreadIdentifierTableData): | |
11550 | (JSC::defaultIdentifierTable): | |
11551 | (JSC::setDefaultIdentifierTable): | |
11552 | (JSC::currentIdentifierTable): | |
11553 | (JSC::setCurrentIdentifierTable): | |
11554 | (JSC::resetCurrentIdentifierTable): | |
11555 | ||
11556 | - Declare methods to access the thread specific identifier tables. | |
11557 | ||
11558 | * runtime/JSGlobalData.cpp: | |
11559 | (JSC::JSGlobalData::createNonDefault): | |
11560 | (JSC::JSGlobalData::create): | |
11561 | (JSC::JSGlobalData::sharedInstance): | |
11562 | ||
11563 | - creation of JSGlobalData objects, other than for API usage, associate themselves with the current thread. | |
11564 | ||
11565 | * runtime/JSGlobalData.h: | |
11566 | * runtime/UStringImpl.cpp: | |
11567 | (JSC::UStringImpl::destroy): | |
11568 | ||
11569 | - destroy() method should be using isIdentifier(). | |
11570 | ||
11571 | * runtime/UStringImpl.h: | |
11572 | (JSC::UStringImpl::isIdentifier): | |
11573 | (JSC::UStringImpl::setIsIdentifier): | |
11574 | (JSC::UStringImpl::checkConsistency): | |
11575 | (JSC::UStringImpl::UStringImpl): | |
11576 | ||
11577 | - replace m_identifierTable with a single m_isIdentifier bit. | |
11578 | ||
11579 | * wtf/StringHashFunctions.h: | |
11580 | (WTF::stringHash): | |
11581 | ||
11582 | - change string hash result from 32-bit to 31-bit, to free a bit in UStringImpl for m_isIdentifier. | |
11583 | ||
11584 | 2009-12-25 Patrick Gansterer <paroga@paroga.com> | |
11585 | ||
11586 | Reviewed by Eric Seidel. | |
11587 | ||
11588 | Buildfix for WinCE + style fixes. | |
11589 | https://bugs.webkit.org/show_bug.cgi?id=32939 | |
11590 | ||
11591 | * jsc.cpp: | |
11592 | (functionPrint): | |
11593 | (functionQuit): | |
11594 | (parseArguments): | |
11595 | (fillBufferWithContentsOfFile): | |
11596 | ||
11597 | 2010-01-05 Patrick Gansterer <paroga@paroga.com> | |
11598 | ||
11599 | Reviewed by Eric Seidel. | |
11600 | ||
11601 | WinCE buildfix after r52791 (renamed PLATFORM(WINCE) to OS(WINCE)). | |
11602 | https://bugs.webkit.org/show_bug.cgi?id=33205 | |
11603 | ||
11604 | * jit/ExecutableAllocator.h: | |
11605 | ||
11606 | 2010-01-05 Patrick Gansterer <paroga@paroga.com> | |
11607 | ||
11608 | Reviewed by Darin Adler. | |
11609 | ||
11610 | Added compiler error for unsupported platforms. | |
11611 | https://bugs.webkit.org/show_bug.cgi?id=33112 | |
11612 | ||
11613 | * jit/JITStubs.cpp: | |
11614 | ||
11615 | 2010-01-05 Gabor Loki <loki@webkit.org> | |
11616 | ||
11617 | Reviewed by Maciej Stachowiak. | |
11618 | ||
11619 | Follow r52729 in ARMAssembler. | |
11620 | https://bugs.webkit.org/show_bug.cgi?id=33208 | |
11621 | ||
11622 | Use WTF_ARM_ARCH_AT_LEAST instead of ARM_ARCH_VERSION | |
11623 | ||
11624 | * assembler/ARMAssembler.cpp: | |
11625 | (JSC::ARMAssembler::encodeComplexImm): Move tmp declaration to ARMv7 | |
11626 | * assembler/ARMAssembler.h: | |
11627 | (JSC::ARMAssembler::): | |
11628 | (JSC::ARMAssembler::bkpt): | |
11629 | ||
11630 | 2010-01-05 Maciej Stachowiak <mjs@apple.com> | |
11631 | ||
11632 | Unreviewed build fix for Gtk+ | |
11633 | ||
11634 | Don't use // comments in Platform.h, at least some of them seem to make the version of GCC | |
11635 | used on the Gtk buildbot unhappy. | |
11636 | ||
11637 | * wtf/Platform.h: | |
11638 | ||
11639 | 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
11640 | ||
11641 | Reviewed by Darin Fisher. | |
11642 | ||
11643 | Reorganize, document and rename OS() platform macros. | |
11644 | https://bugs.webkit.org/show_bug.cgi?id=33198 | |
11645 | ||
11646 | * wtf/Platform.h: Rename, reorganize and document OS() macros. | |
11647 | ||
11648 | Adapt to name changes. Also fixed a few incorrect OS checks. | |
11649 | ||
11650 | * API/JSContextRef.cpp: | |
11651 | * assembler/MacroAssemblerARM.cpp: | |
11652 | (JSC::isVFPPresent): | |
11653 | * assembler/MacroAssemblerX86Common.h: | |
11654 | * bytecode/SamplingTool.cpp: | |
11655 | * config.h: | |
11656 | * interpreter/RegisterFile.cpp: | |
11657 | (JSC::RegisterFile::~RegisterFile): | |
11658 | * interpreter/RegisterFile.h: | |
11659 | (JSC::RegisterFile::RegisterFile): | |
11660 | (JSC::RegisterFile::grow): | |
11661 | * jit/ExecutableAllocator.h: | |
11662 | * jit/ExecutableAllocatorFixedVMPool.cpp: | |
11663 | * jit/ExecutableAllocatorPosix.cpp: | |
11664 | * jit/ExecutableAllocatorSymbian.cpp: | |
11665 | * jit/ExecutableAllocatorWin.cpp: | |
11666 | * jit/JITOpcodes.cpp: | |
11667 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
11668 | * jit/JITStubs.cpp: | |
11669 | * jsc.cpp: | |
11670 | (main): | |
11671 | * parser/Grammar.y: | |
11672 | * profiler/ProfileNode.cpp: | |
11673 | (JSC::getCount): | |
11674 | * runtime/Collector.cpp: | |
11675 | (JSC::Heap::Heap): | |
11676 | (JSC::Heap::allocateBlock): | |
11677 | (JSC::Heap::freeBlockPtr): | |
11678 | (JSC::currentThreadStackBase): | |
11679 | (JSC::getCurrentPlatformThread): | |
11680 | (JSC::suspendThread): | |
11681 | (JSC::resumeThread): | |
11682 | (JSC::getPlatformThreadRegisters): | |
11683 | (JSC::otherThreadStackPointer): | |
11684 | * runtime/Collector.h: | |
11685 | * runtime/DateConstructor.cpp: | |
11686 | * runtime/DatePrototype.cpp: | |
11687 | (JSC::formatLocaleDate): | |
11688 | * runtime/InitializeThreading.cpp: | |
11689 | (JSC::initializeThreading): | |
11690 | * runtime/MarkStack.h: | |
11691 | (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
11692 | * runtime/MarkStackPosix.cpp: | |
11693 | * runtime/MarkStackSymbian.cpp: | |
11694 | * runtime/MarkStackWin.cpp: | |
11695 | * runtime/StringPrototype.cpp: | |
11696 | (JSC::stringProtoFuncLastIndexOf): | |
11697 | * runtime/TimeoutChecker.cpp: | |
11698 | (JSC::getCPUTime): | |
11699 | * runtime/UString.cpp: | |
11700 | (JSC::UString::from): | |
11701 | * wtf/Assertions.cpp: | |
11702 | * wtf/Assertions.h: | |
11703 | * wtf/CurrentTime.cpp: | |
11704 | (WTF::lowResUTCTime): | |
11705 | * wtf/CurrentTime.h: | |
11706 | (WTF::getLocalTime): | |
11707 | * wtf/DateMath.cpp: | |
11708 | * wtf/FastMalloc.cpp: | |
11709 | (WTF::TCMalloc_ThreadCache::InitModule): | |
11710 | (WTF::TCMallocStats::): | |
11711 | * wtf/FastMalloc.h: | |
11712 | * wtf/MathExtras.h: | |
11713 | * wtf/RandomNumber.cpp: | |
11714 | (WTF::randomNumber): | |
11715 | * wtf/RandomNumberSeed.h: | |
11716 | (WTF::initializeRandomNumberGenerator): | |
11717 | * wtf/StringExtras.h: | |
11718 | * wtf/TCSpinLock.h: | |
11719 | (TCMalloc_SpinLock::Unlock): | |
11720 | (TCMalloc_SlowLock): | |
11721 | * wtf/TCSystemAlloc.cpp: | |
11722 | * wtf/ThreadSpecific.h: | |
11723 | (WTF::::destroy): | |
11724 | * wtf/Threading.h: | |
11725 | * wtf/ThreadingPthreads.cpp: | |
11726 | (WTF::initializeThreading): | |
11727 | (WTF::isMainThread): | |
11728 | * wtf/ThreadingWin.cpp: | |
11729 | (WTF::wtfThreadEntryPoint): | |
11730 | (WTF::createThreadInternal): | |
11731 | * wtf/VMTags.h: | |
11732 | * wtf/unicode/icu/CollatorICU.cpp: | |
11733 | (WTF::Collator::userDefault): | |
11734 | * wtf/win/MainThreadWin.cpp: | |
11735 | (WTF::initializeMainThreadPlatform): | |
11736 | ||
11737 | 2010-01-04 Gustavo Noronha Silva <gns@gnome.org> | |
11738 | ||
11739 | Add missing files to the build system - make distcheck build fix. | |
11740 | ||
11741 | * GNUmakefile.am: | |
11742 | ||
11743 | 2010-01-04 Gavin Barraclough <barraclough@apple.com> | |
11744 | ||
11745 | Reviewed by Sam Weinig, additional coding by Mark Rowe. | |
11746 | ||
11747 | https://bugs.webkit.org/show_bug.cgi?id=33163 | |
11748 | Add string hashing functions to WTF. | |
11749 | Use WTF's string hashing functions from UStringImpl. | |
11750 | ||
11751 | * GNUmakefile.am: | |
11752 | * JavaScriptCore.exp: | |
11753 | * JavaScriptCore.gypi: | |
11754 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
11755 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
11756 | * runtime/UStringImpl.cpp: | |
11757 | * runtime/UStringImpl.h: | |
11758 | (JSC::UStringImpl::computeHash): | |
11759 | * wtf/HashFunctions.h: | |
11760 | * wtf/StringHashFunctions.h: Added. | |
11761 | (WTF::stringHash): | |
11762 | ||
11763 | 2010-01-04 Dmitry Titov <dimich@chromium.org> | |
11764 | ||
11765 | Not reviewed, attempt to fix ARM bulid. | |
11766 | ||
11767 | * wtf/Platform.h: | |
11768 | ||
11769 | 2010-01-04 Gavin Barraclough <barraclough@apple.com> | |
11770 | ||
11771 | Rubber stamped by Geoff Garen. | |
11772 | ||
11773 | Add an 'isIdentifier' to UStringImpl, use this where appropriate | |
11774 | (where previously 'identifierTable' was being tested). | |
11775 | ||
11776 | * API/JSClassRef.cpp: | |
11777 | (OpaqueJSClass::~OpaqueJSClass): | |
11778 | (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
11779 | * runtime/Identifier.cpp: | |
11780 | (JSC::Identifier::addSlowCase): | |
11781 | * runtime/Identifier.h: | |
11782 | (JSC::Identifier::add): | |
11783 | * runtime/PropertyNameArray.cpp: | |
11784 | (JSC::PropertyNameArray::add): | |
11785 | * runtime/UStringImpl.h: | |
11786 | (JSC::UStringImpl::isIdentifier): | |
11787 | ||
11788 | 2010-01-04 Gavin Barraclough <barraclough@apple.com> | |
11789 | ||
11790 | Reviewed by Sam "Shimmey Shimmey" Weinig. | |
11791 | ||
11792 | https://bugs.webkit.org/show_bug.cgi?id=33158 | |
11793 | Refactor JSC API entry/exit to use RAII instead of copy/pasting code. | |
11794 | Make it easier to change set of actions taken when passing across the API boundary. | |
11795 | ||
11796 | * API/APIShims.h: Added. | |
11797 | (JSC::APIEntryShimWithoutLock::APIEntryShimWithoutLock): | |
11798 | (JSC::APIEntryShimWithoutLock::~APIEntryShimWithoutLock): | |
11799 | (JSC::APIEntryShim::APIEntryShim): | |
11800 | (JSC::APICallbackShim::APICallbackShim): | |
11801 | (JSC::APICallbackShim::~APICallbackShim): | |
11802 | * API/JSBase.cpp: | |
11803 | (JSEvaluateScript): | |
11804 | (JSCheckScriptSyntax): | |
11805 | (JSGarbageCollect): | |
11806 | (JSReportExtraMemoryCost): | |
11807 | * API/JSCallbackConstructor.cpp: | |
11808 | (JSC::constructJSCallback): | |
11809 | * API/JSCallbackFunction.cpp: | |
11810 | (JSC::JSCallbackFunction::call): | |
11811 | * API/JSCallbackObjectFunctions.h: | |
11812 | (JSC::::init): | |
11813 | (JSC::::getOwnPropertySlot): | |
11814 | (JSC::::put): | |
11815 | (JSC::::deleteProperty): | |
11816 | (JSC::::construct): | |
11817 | (JSC::::hasInstance): | |
11818 | (JSC::::call): | |
11819 | (JSC::::getOwnPropertyNames): | |
11820 | (JSC::::toNumber): | |
11821 | (JSC::::toString): | |
11822 | (JSC::::staticValueGetter): | |
11823 | (JSC::::callbackGetter): | |
11824 | * API/JSContextRef.cpp: | |
11825 | * API/JSObjectRef.cpp: | |
11826 | (JSObjectMake): | |
11827 | (JSObjectMakeFunctionWithCallback): | |
11828 | (JSObjectMakeConstructor): | |
11829 | (JSObjectMakeFunction): | |
11830 | (JSObjectMakeArray): | |
11831 | (JSObjectMakeDate): | |
11832 | (JSObjectMakeError): | |
11833 | (JSObjectMakeRegExp): | |
11834 | (JSObjectGetPrototype): | |
11835 | (JSObjectSetPrototype): | |
11836 | (JSObjectHasProperty): | |
11837 | (JSObjectGetProperty): | |
11838 | (JSObjectSetProperty): | |
11839 | (JSObjectGetPropertyAtIndex): | |
11840 | (JSObjectSetPropertyAtIndex): | |
11841 | (JSObjectDeleteProperty): | |
11842 | (JSObjectCallAsFunction): | |
11843 | (JSObjectCallAsConstructor): | |
11844 | (JSObjectCopyPropertyNames): | |
11845 | (JSPropertyNameArrayRelease): | |
11846 | (JSPropertyNameAccumulatorAddName): | |
11847 | * API/JSValueRef.cpp: | |
11848 | (JSValueGetType): | |
11849 | (JSValueIsUndefined): | |
11850 | (JSValueIsNull): | |
11851 | (JSValueIsBoolean): | |
11852 | (JSValueIsNumber): | |
11853 | (JSValueIsString): | |
11854 | (JSValueIsObject): | |
11855 | (JSValueIsObjectOfClass): | |
11856 | (JSValueIsEqual): | |
11857 | (JSValueIsStrictEqual): | |
11858 | (JSValueIsInstanceOfConstructor): | |
11859 | (JSValueMakeUndefined): | |
11860 | (JSValueMakeNull): | |
11861 | (JSValueMakeBoolean): | |
11862 | (JSValueMakeNumber): | |
11863 | (JSValueMakeString): | |
11864 | (JSValueToBoolean): | |
11865 | (JSValueToNumber): | |
11866 | (JSValueToStringCopy): | |
11867 | (JSValueToObject): | |
11868 | (JSValueProtect): | |
11869 | (JSValueUnprotect): | |
11870 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
11871 | ||
11872 | 2010-01-04 Dan Bernstein <mitz@apple.com> | |
11873 | ||
11874 | Reviewed by Ada Chan and Mark Rowe. | |
11875 | ||
11876 | Updated copyright string | |
11877 | ||
11878 | * Info.plist: | |
11879 | * JavaScriptCore.vcproj/JavaScriptCore.resources/Info.plist: | |
11880 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: | |
11881 | ||
11882 | 2010-01-04 Adam Roben <aroben@apple.com> | |
11883 | ||
11884 | No review, rolling out r52741. | |
11885 | http://trac.webkit.org/changeset/52741 | |
11886 | https://bugs.webkit.org/show_bug.cgi?id=33056 | |
11887 | ||
11888 | * wtf/AlwaysInline.h: | |
11889 | ||
11890 | 2010-01-04 Patrick Gansterer <paroga@paroga.com> | |
11891 | ||
11892 | Reviewed by Darin Adler. | |
11893 | ||
11894 | Add cacheFlush support for WinCE | |
11895 | https://bugs.webkit.org/show_bug.cgi?id=33110 | |
11896 | ||
11897 | * jit/ExecutableAllocator.h: | |
11898 | (JSC::ExecutableAllocator::cacheFlush): | |
11899 | ||
11900 | 2010-01-04 Patrick Gansterer <paroga@paroga.com> | |
11901 | ||
11902 | Reviewed by Adam Roben. | |
11903 | ||
11904 | Implement NO_RETURN for COMPILER(MSVC). | |
11905 | https://bugs.webkit.org/show_bug.cgi?id=33056 | |
11906 | ||
11907 | * wtf/AlwaysInline.h: | |
11908 | ||
11909 | 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
11910 | ||
11911 | Reviewed by Simon Hausmann. | |
11912 | ||
11913 | Fix some PLATFORM(*_ENDIAN) uses to CPU() | |
11914 | https://bugs.webkit.org/show_bug.cgi?id=33148 | |
11915 | ||
11916 | * runtime/JSCell.cpp: | |
11917 | (JSC::): | |
11918 | * runtime/JSValue.h: | |
11919 | (JSC::JSValue::): | |
11920 | ||
11921 | 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
11922 | ||
11923 | Reviewed by Adam Barth. | |
11924 | ||
11925 | Document CPU() macros in comments. | |
11926 | https://bugs.webkit.org/show_bug.cgi?id=33147 | |
11927 | ||
11928 | * wtf/Platform.h: | |
11929 | ||
11930 | 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
11931 | ||
11932 | Reviewed by Adam Barth. | |
11933 | ||
11934 | Reorganize, document and rename CPU() platform macros. | |
11935 | https://bugs.webkit.org/show_bug.cgi?id=33145 | |
11936 | ExecutableAllocatorSymbian appears to have buggy ARM version check | |
11937 | https://bugs.webkit.org/show_bug.cgi?id=33138 | |
11938 | ||
11939 | * wtf/Platform.h: | |
11940 | Rename all macros related to detection of particular CPUs or | |
11941 | classes of CPUs to CPU(), reorganize and document them. | |
11942 | ||
11943 | All remaining changes are adapting to the renames, plus fixing the | |
11944 | second bug cited above. | |
11945 | ||
11946 | * assembler/ARMAssembler.cpp: | |
11947 | * assembler/ARMAssembler.h: | |
11948 | * assembler/ARMv7Assembler.h: | |
11949 | * assembler/AbstractMacroAssembler.h: | |
11950 | (JSC::AbstractMacroAssembler::Imm32::Imm32): | |
11951 | * assembler/MacroAssembler.h: | |
11952 | * assembler/MacroAssemblerARM.cpp: | |
11953 | * assembler/MacroAssemblerARM.h: | |
11954 | * assembler/MacroAssemblerCodeRef.h: | |
11955 | (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): | |
11956 | * assembler/MacroAssemblerX86.h: | |
11957 | * assembler/MacroAssemblerX86Common.h: | |
11958 | * assembler/MacroAssemblerX86_64.h: | |
11959 | * assembler/X86Assembler.h: | |
11960 | (JSC::X86Registers::): | |
11961 | (JSC::X86Assembler::): | |
11962 | (JSC::X86Assembler::movl_mEAX): | |
11963 | (JSC::X86Assembler::movl_EAXm): | |
11964 | (JSC::X86Assembler::repatchLoadPtrToLEA): | |
11965 | (JSC::X86Assembler::X86InstructionFormatter::memoryModRM): | |
11966 | * jit/ExecutableAllocator.h: | |
11967 | * jit/ExecutableAllocatorFixedVMPool.cpp: | |
11968 | * jit/ExecutableAllocatorPosix.cpp: | |
11969 | * jit/ExecutableAllocatorSymbian.cpp: | |
11970 | (JSC::ExecutableAllocator::intializePageSize): | |
11971 | * jit/JIT.cpp: | |
11972 | * jit/JIT.h: | |
11973 | * jit/JITArithmetic.cpp: | |
11974 | * jit/JITInlineMethods.h: | |
11975 | (JSC::JIT::beginUninterruptedSequence): | |
11976 | (JSC::JIT::restoreArgumentReferenceForTrampoline): | |
11977 | (JSC::JIT::emitCount): | |
11978 | * jit/JITOpcodes.cpp: | |
11979 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
11980 | * jit/JITPropertyAccess.cpp: | |
11981 | (JSC::JIT::privateCompileGetByIdProto): | |
11982 | (JSC::JIT::privateCompileGetByIdProtoList): | |
11983 | (JSC::JIT::privateCompileGetByIdChainList): | |
11984 | (JSC::JIT::privateCompileGetByIdChain): | |
11985 | * jit/JITStubs.cpp: | |
11986 | (JSC::JITThunks::JITThunks): | |
11987 | * jit/JITStubs.h: | |
11988 | * runtime/Collector.cpp: | |
11989 | (JSC::currentThreadStackBase): | |
11990 | (JSC::getPlatformThreadRegisters): | |
11991 | (JSC::otherThreadStackPointer): | |
11992 | * wrec/WREC.h: | |
11993 | * wrec/WRECGenerator.cpp: | |
11994 | (JSC::WREC::Generator::generateEnter): | |
11995 | (JSC::WREC::Generator::generateReturnSuccess): | |
11996 | (JSC::WREC::Generator::generateReturnFailure): | |
11997 | * wrec/WRECGenerator.h: | |
11998 | * wtf/FastMalloc.cpp: | |
11999 | * wtf/TCSpinLock.h: | |
12000 | (TCMalloc_SpinLock::Lock): | |
12001 | (TCMalloc_SpinLock::Unlock): | |
12002 | (TCMalloc_SlowLock): | |
12003 | * wtf/Threading.h: | |
12004 | * wtf/dtoa.cpp: | |
12005 | * yarr/RegexJIT.cpp: | |
12006 | (JSC::Yarr::RegexGenerator::generateEnter): | |
12007 | (JSC::Yarr::RegexGenerator::generateReturn): | |
12008 | * yarr/RegexJIT.h: | |
12009 | ||
12010 | 2010-01-04 Maciej Stachowiak <mjs@apple.com> | |
12011 | ||
12012 | Reviewed by Adam Barth. | |
12013 | ||
12014 | Clean up COMPILER macros and remove unused ones. | |
12015 | https://bugs.webkit.org/show_bug.cgi?id=33132 | |
12016 | ||
12017 | Removed values are COMPILER(BORLAND) and COMPILER(CYGWIN) - they were | |
12018 | not used anywhere. | |
12019 | ||
12020 | * wtf/Platform.h: | |
12021 | ||
12022 | 2010-01-03 Maciej Stachowiak <mjs@apple.com> | |
12023 | ||
12024 | Reviewed by Eric Seidel. | |
12025 | ||
12026 | Update wtf/Platform.h to document the new system for porting macros. | |
12027 | https://bugs.webkit.org/show_bug.cgi?id=33130 | |
12028 | ||
12029 | * wtf/Platform.h: | |
12030 | ||
12031 | 2009-12-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
12032 | ||
12033 | Reviewed by Maciej Stachowiak. | |
12034 | ||
12035 | PLATFORM(CAIRO) should be defined by WIN_CAIRO define | |
12036 | https://bugs.webkit.org/show_bug.cgi?id=22250 | |
12037 | ||
12038 | * wtf/Platform.h: Define WTF_PLATFORM_CAIRO for GTK port only | |
12039 | For the WinCairo port WTF_PLATFORM_CAIRO is already defined in config.h | |
12040 | ||
12041 | 2009-12-28 Shu Chang <Chang.Shu@nokia.com> | |
12042 | ||
12043 | Reviewed by Laszlo Gombos. | |
12044 | ||
12045 | [Qt] Delete ThreadPrivate instance after it is finished. | |
12046 | https://bugs.webkit.org/show_bug.cgi?id=32614 | |
12047 | ||
12048 | * wtf/qt/ThreadingQt.cpp: | |
12049 | (WTF::ThreadMonitor::instance): | |
12050 | (WTF::ThreadMonitor::threadFinished): | |
12051 | (WTF::createThreadInternal): | |
12052 | (WTF::detachThread): | |
12053 | ||
12054 | 2009-12-28 Patrick Gansterer <paroga@paroga.com> | |
12055 | ||
12056 | Reviewed by Maciej Stachowiak. | |
12057 | ||
12058 | Cleanup of #define JS_EXPORT. | |
12059 | ||
12060 | * API/JSBase.h: | |
12061 | ||
12062 | 2009-12-27 Patrick Gansterer <paroga@paroga.com> | |
12063 | ||
12064 | Reviewed by Adam Barth. | |
12065 | ||
12066 | WinCE buildfix (HWND_MESSAGE isn't supported there) | |
12067 | ||
12068 | * wtf/win/MainThreadWin.cpp: | |
12069 | (WTF::initializeMainThreadPlatform): | |
12070 | ||
12071 | 2009-12-27 Patrick Gansterer <paroga@paroga.com> | |
12072 | ||
12073 | Reviewed by Adam Barth. | |
12074 | ||
12075 | Added a file with WinMain function to link agains in WinCE. | |
12076 | ||
12077 | * os-win32/WinMain.cpp: Added. | |
12078 | (convertToUtf8): | |
12079 | (WinMain): | |
12080 | ||
12081 | 2009-12-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
12082 | ||
12083 | Unreviewed; revert of r52550. | |
12084 | ||
12085 | The change regressed the following LayoutTests for QtWebKit. | |
12086 | ||
12087 | fast/workers/worker-call.html -> crashed | |
12088 | fast/workers/worker-close.html -> crashed | |
12089 | ||
12090 | * wtf/qt/ThreadingQt.cpp: | |
12091 | (WTF::waitForThreadCompletion): | |
12092 | (WTF::detachThread): | |
12093 | ||
12094 | 2009-12-24 Shu Chang <Chang.Shu@nokia.com> | |
12095 | ||
12096 | Reviewed by Laszlo Gombos. | |
12097 | ||
12098 | [Qt] Fix memory leak by deleting instance of ThreadPrivate | |
12099 | in function waitForThreadCompletion(), synchronously, or in | |
12100 | detachThread(), asynchronously. | |
12101 | https://bugs.webkit.org/show_bug.cgi?id=32614 | |
12102 | ||
12103 | * wtf/qt/ThreadingQt.cpp: | |
12104 | (WTF::waitForThreadCompletion): | |
12105 | (WTF::detachThread): | |
12106 | ||
12107 | 2009-12-23 Kwang Yul Seo <skyul@company100.net> | |
12108 | ||
12109 | Reviewed by Laszlo Gombos. | |
12110 | ||
12111 | Include stddef.h for ptrdiff_t | |
12112 | https://bugs.webkit.org/show_bug.cgi?id=32891 | |
12113 | ||
12114 | ptrdiff_t is typedef-ed in stddef.h. | |
12115 | Include stddef.h in jit/ExecutableAllocator.h. | |
12116 | ||
12117 | * jit/ExecutableAllocator.h: | |
12118 | ||
12119 | 2009-12-23 Patrick Gansterer <paroga@paroga.com> | |
12120 | ||
12121 | Reviewed by Eric Seidel. | |
12122 | ||
12123 | Buildfix after r47092. | |
12124 | ||
12125 | * wtf/wince/MemoryManager.cpp: | |
12126 | (WTF::tryFastMalloc): | |
12127 | (WTF::tryFastZeroedMalloc): | |
12128 | (WTF::tryFastCalloc): | |
12129 | (WTF::tryFastRealloc): | |
12130 | ||
12131 | 2009-12-23 Kent Tamura <tkent@chromium.org> | |
12132 | ||
12133 | Reviewed by Darin Adler. | |
12134 | ||
12135 | HTMLInputElement::valueAsDate getter support. | |
12136 | https://bugs.webkit.org/show_bug.cgi?id=32876 | |
12137 | ||
12138 | Expose dateToDaysFrom1970(). | |
12139 | ||
12140 | * JavaScriptCore.exp: | |
12141 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
12142 | * wtf/DateMath.cpp: | |
12143 | (WTF::dateToDaysFrom1970): | |
12144 | * wtf/DateMath.h: | |
12145 | ||
12146 | 2009-12-22 Darin Adler <darin@apple.com> | |
12147 | ||
12148 | Reviewed by Mark Rowe. | |
12149 | ||
12150 | Turn off datagrid by default, at least for all platforms Apple ships. | |
12151 | The datagrid implementation isn't ready for general web use yet. | |
12152 | ||
12153 | * Configurations/FeatureDefines.xcconfig: Turn off datagrid by default. | |
12154 | ||
12155 | 2009-12-22 Steve Block <steveblock@google.com> | |
12156 | ||
12157 | Reviewed by David Levin. | |
12158 | ||
12159 | Updates Android's scheduleDispatchFunctionsOnMainThread() to use new | |
12160 | AndroidThreading class, rather than using JavaSharedClient directly. | |
12161 | This fixes the current layering violation. | |
12162 | https://bugs.webkit.org/show_bug.cgi?id=32651 | |
12163 | ||
12164 | The pattern is copied from Chromium, which uses the ChromiumThreading | |
12165 | class. This patch also fixes the style in ChromiumThreading.h. | |
12166 | ||
12167 | * wtf/android/AndroidThreading.h: Added. Declares AndroidThreading. | |
12168 | * wtf/android/MainThreadAndroid.cpp: Modified | |
12169 | (WTF::scheduleDispatchFunctionsOnMainThread): Uses AndroidThreading. | |
12170 | * wtf/chromium/ChromiumThreading.h: Modified. Fixes style. | |
12171 | ||
12172 | 2009-12-22 Gavin Barraclough <barraclough@apple.com> | |
12173 | ||
12174 | Reviewed by Sam Weinig. | |
12175 | ||
12176 | Fix a couple of problems with UntypedPtrAndBitfield. | |
12177 | ||
12178 | Add a m_leaksPtr to reduce false positives from leaks in debug builds | |
12179 | (this isn't perfect because we'd like a solution for release builds, | |
12180 | but this is now at least as good as a PtrAndFlags would be). | |
12181 | ||
12182 | Switch SmallStringsto use a regular string for the base, rather than | |
12183 | a static one. UntypedPtrAndBitfield assumes all strings are at least | |
12184 | 8 byte aligned; this migt not be true of static strings. Shared buffers | |
12185 | are heap allocated, as are all UStringImpls other than static strings. | |
12186 | Static strings cannot end up being the owner string of substrings, | |
12187 | since the only static strings are length 0. | |
12188 | ||
12189 | * runtime/SmallStrings.cpp: | |
12190 | (JSC::SmallStringsStorage::SmallStringsStorage): | |
12191 | * runtime/UStringImpl.h: | |
12192 | (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): | |
12193 | (JSC::UStringImpl::UStringImpl): | |
12194 | ||
12195 | 2009-12-22 Kwang Yul Seo <skyul@company100.net> | |
12196 | ||
12197 | Reviewed by Darin Adler. | |
12198 | ||
12199 | RVCT (__ARMCC_VERSION < 400000) does not provide strcasecmp and strncasecmp | |
12200 | https://bugs.webkit.org/show_bug.cgi?id=32857 | |
12201 | ||
12202 | Add implementation of strcasecmp and strncasecmp for RVCT < 4.0 | |
12203 | because earlier versions of RVCT 4.0 does not provide these functions. | |
12204 | ||
12205 | * wtf/StringExtras.cpp: Added. | |
12206 | (strcasecmp): | |
12207 | (strncasecmp): | |
12208 | * wtf/StringExtras.h: | |
12209 | ||
12210 | 2009-12-22 Kwang Yul Seo <skyul@company100.net> | |
12211 | ||
12212 | Reviewed by Darin Adler. | |
12213 | ||
12214 | Define ALWAYS_INLINE and WTF_PRIVATE_INLINE to __forceinline for RVCT | |
12215 | https://bugs.webkit.org/show_bug.cgi?id=32853 | |
12216 | ||
12217 | Use __forceinline forces RVCT to compile a C or C++ function | |
12218 | inline. The compiler attempts to inline the function, regardless of | |
12219 | the characteristics of the function. | |
12220 | ||
12221 | * wtf/AlwaysInline.h: | |
12222 | * wtf/FastMalloc.h: | |
12223 | ||
12224 | 2009-12-21 Simon Hausmann <simon.hausmann@nokia.com> | |
12225 | ||
12226 | Prospective GTK build fix: Add UStringImpl.cpp/h to the build. | |
12227 | ||
12228 | * GNUmakefile.am: | |
12229 | ||
12230 | 2009-12-21 Simon Hausmann <simon.hausmann@nokia.com> | |
12231 | ||
12232 | Fix the Qt build, add UStringImpl.cpp to the build. | |
12233 | ||
12234 | * JavaScriptCore.pri: | |
12235 | ||
12236 | 2009-12-21 Gavin Barraclough <barraclough@apple.com> | |
12237 | ||
12238 | Windows Build fix part 5. | |
12239 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
12240 | ||
12241 | 2009-12-21 Gavin Barraclough <barraclough@apple.com> | |
12242 | ||
12243 | Reviewed by NOBODY (build fix). | |
12244 | Fix breakage of world introduced in build fix to r52463. | |
12245 | ||
12246 | * runtime/UStringImpl.h: | |
12247 | ||
12248 | 2009-12-21 Gavin Barraclough <barraclough@apple.com> | |
12249 | ||
12250 | Reviewed by Darin Adler. | |
12251 | ||
12252 | https://bugs.webkit.org/show_bug.cgi?id=32831 | |
12253 | Replace UString::Rep implementation, following introduction of ropes to JSC. | |
12254 | ||
12255 | * Remove redundant overcapacity mechanisms. | |
12256 | * Reduce memory cost of Rep's. | |
12257 | * Add an inline storage mechanism akin to that in WebCore's StringImpl. | |
12258 | ||
12259 | ~1% Sunspider progression. | |
12260 | ||
12261 | * JavaScriptCore.exp: | |
12262 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
12263 | * runtime/JSString.cpp: | |
12264 | (JSC::JSString::resolveRope): | |
12265 | * runtime/SmallStrings.cpp: | |
12266 | (JSC::SmallStringsStorage::SmallStringsStorage): | |
12267 | * runtime/UString.cpp: | |
12268 | (JSC::initializeUString): | |
12269 | (JSC::createRep): | |
12270 | (JSC::UString::createFromUTF8): | |
12271 | (JSC::UString::createUninitialized): | |
12272 | (JSC::UString::spliceSubstringsWithSeparators): | |
12273 | (JSC::UString::replaceRange): | |
12274 | (JSC::UString::ascii): | |
12275 | (JSC::UString::operator=): | |
12276 | (JSC::UString::toStrictUInt32): | |
12277 | (JSC::equal): | |
12278 | * runtime/UString.h: | |
12279 | (JSC::UString::isEmpty): | |
12280 | (JSC::UString::cost): | |
12281 | (JSC::makeString): | |
12282 | * runtime/UStringImpl.cpp: Added. | |
12283 | (JSC::UStringImpl::baseSharedBuffer): | |
12284 | (JSC::UStringImpl::sharedBuffer): | |
12285 | (JSC::UStringImpl::destroy): | |
12286 | (JSC::UStringImpl::computeHash): | |
12287 | * runtime/UStringImpl.h: Added. | |
12288 | (JSC::UntypedPtrAndBitfield::UntypedPtrAndBitfield): | |
12289 | (JSC::UntypedPtrAndBitfield::asPtr): | |
12290 | (JSC::UntypedPtrAndBitfield::operator&=): | |
12291 | (JSC::UntypedPtrAndBitfield::operator|=): | |
12292 | (JSC::UntypedPtrAndBitfield::operator&): | |
12293 | (JSC::UStringImpl::create): | |
12294 | (JSC::UStringImpl::createCopying): | |
12295 | (JSC::UStringImpl::createUninitialized): | |
12296 | (JSC::UStringImpl::data): | |
12297 | (JSC::UStringImpl::size): | |
12298 | (JSC::UStringImpl::cost): | |
12299 | (JSC::UStringImpl::hash): | |
12300 | (JSC::UStringImpl::computedHash): | |
12301 | (JSC::UStringImpl::setHash): | |
12302 | (JSC::UStringImpl::identifierTable): | |
12303 | (JSC::UStringImpl::setIdentifierTable): | |
12304 | (JSC::UStringImpl::ref): | |
12305 | (JSC::UStringImpl::deref): | |
12306 | (JSC::UStringImpl::allocChars): | |
12307 | (JSC::UStringImpl::copyChars): | |
12308 | (JSC::UStringImpl::computeHash): | |
12309 | (JSC::UStringImpl::null): | |
12310 | (JSC::UStringImpl::empty): | |
12311 | (JSC::UStringImpl::checkConsistency): | |
12312 | (JSC::UStringImpl::): | |
12313 | (JSC::UStringImpl::UStringImpl): | |
12314 | (JSC::UStringImpl::operator new): | |
12315 | (JSC::UStringImpl::bufferOwnerString): | |
12316 | (JSC::UStringImpl::bufferOwnership): | |
12317 | (JSC::UStringImpl::isStatic): | |
12318 | ||
12319 | 2009-12-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
12320 | ||
12321 | Reviewed by Kenneth Rohde Christiansen. | |
12322 | ||
12323 | Move some build decisions from Qt build system into source files | |
12324 | https://bugs.webkit.org/show_bug.cgi?id=31956 | |
12325 | ||
12326 | * JavaScriptCore.pri: Compile files unconditionally | |
12327 | * jit/ExecutableAllocatorPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN) | |
12328 | * jit/ExecutableAllocatorWin.cpp: Guard with PLATFORM(WIN_OS) | |
12329 | * runtime/MarkStackPosix.cpp: Guard with PLATFORM(UNIX) && !PLATFORM(SYMBIAN) | |
12330 | * runtime/MarkStackSymbian.cpp: Guard with PLATFORM(SYMBIAN) | |
12331 | * runtime/MarkStackWin.cpp: Guard with PLATFORM(WIN_OS) | |
12332 | * wtf/Platform.h: Guard ENABLE_JSC_MULTIPLE_THREADS with ENABLE_SINGLE_THREADED for the Qt port | |
12333 | * wtf/ThreadingNone.cpp: Guard with ENABLE(SINGLE_THREADED) | |
12334 | * wtf/qt/ThreadingQt.cpp: Guard with !ENABLE(SINGLE_THREADED) | |
12335 | ||
12336 | 2009-12-18 Gavin Barraclough <barraclough@apple.com> | |
12337 | ||
12338 | Reviewed by Sam Weinig. | |
12339 | ||
12340 | Add createNonCopying method to UString to make replace constructor passed bool, | |
12341 | to make behaviour more explicit. Add createFromUTF8 to UString (wrapping method | |
12342 | on UString::Rep), since other cases of transliteration (e.g. from ascii) are | |
12343 | performed in UString constructors. Add/use setHash & size() accessors on Rep, | |
12344 | rather than accessing _hash/len directly. | |
12345 | ||
12346 | * API/JSClassRef.cpp: | |
12347 | (OpaqueJSClass::OpaqueJSClass): | |
12348 | * API/OpaqueJSString.cpp: | |
12349 | (OpaqueJSString::ustring): | |
12350 | * JavaScriptCore.exp: | |
12351 | * runtime/ArrayPrototype.cpp: | |
12352 | (JSC::arrayProtoFuncToString): | |
12353 | * runtime/Identifier.cpp: | |
12354 | (JSC::Identifier::equal): | |
12355 | (JSC::CStringTranslator::translate): | |
12356 | (JSC::UCharBufferTranslator::translate): | |
12357 | (JSC::Identifier::addSlowCase): | |
12358 | * runtime/JSString.cpp: | |
12359 | (JSC::JSString::resolveRope): | |
12360 | * runtime/JSString.h: | |
12361 | (JSC::JSString::Rope::Fiber::refAndGetLength): | |
12362 | (JSC::JSString::Rope::append): | |
12363 | * runtime/StringBuilder.h: | |
12364 | (JSC::StringBuilder::release): | |
12365 | * runtime/StringConstructor.cpp: | |
12366 | (JSC::stringFromCharCodeSlowCase): | |
12367 | * runtime/StringPrototype.cpp: | |
12368 | (JSC::substituteBackreferencesSlow): | |
12369 | (JSC::stringProtoFuncToLowerCase): | |
12370 | (JSC::stringProtoFuncToUpperCase): | |
12371 | (JSC::stringProtoFuncFontsize): | |
12372 | (JSC::stringProtoFuncLink): | |
12373 | * runtime/UString.cpp: | |
12374 | (JSC::UString::UString): | |
12375 | (JSC::UString::createNonCopying): | |
12376 | (JSC::UString::createFromUTF8): | |
12377 | * runtime/UString.h: | |
12378 | (JSC::UString::Rep::setHash): | |
12379 | (JSC::UString::~UString): | |
12380 | (JSC::makeString): | |
12381 | ||
12382 | 2009-12-18 Geoffrey Garen <ggaren@apple.com> | |
12383 | ||
12384 | Reviewed by Cameron Zwarich and Gavin Barraclough. | |
12385 | ||
12386 | Changed Register constructors to assignment operators, to streamline | |
12387 | moving values into registers. (In theory, there's no difference between | |
12388 | the two, since the constructor should just inline away, but there seems | |
12389 | to be a big difference in the addled mind of the GCC optimizer.) | |
12390 | ||
12391 | In the interpreter, this is a 3.5% SunSpider speedup and a 1K-2K | |
12392 | reduction in stack usage per privateExecute stack frame. | |
12393 | ||
12394 | * interpreter/CallFrame.h: | |
12395 | (JSC::ExecState::setCalleeArguments): | |
12396 | (JSC::ExecState::setCallerFrame): | |
12397 | (JSC::ExecState::setScopeChain): | |
12398 | (JSC::ExecState::init): | |
12399 | (JSC::ExecState::setArgumentCount): | |
12400 | (JSC::ExecState::setCallee): | |
12401 | (JSC::ExecState::setCodeBlock): Added a little bit of casting so these | |
12402 | functions could use the new Register assignment operators. | |
12403 | ||
12404 | * interpreter/Register.h: | |
12405 | (JSC::Register::withInt): | |
12406 | (JSC::Register::Register): | |
12407 | (JSC::Register::operator=): Swapped in assignment operators for constructors. | |
12408 | ||
12409 | 2009-12-18 Yongjun Zhang <yongjun.zhang@nokia.com> | |
12410 | ||
12411 | Reviewed by Simon Hausmann. | |
12412 | ||
12413 | https://bugs.webkit.org/show_bug.cgi?id=32713 | |
12414 | [Qt] make wtf/Assertions.h compile in winscw compiler. | |
12415 | ||
12416 | Add string arg before ellipsis to help winscw compiler resolve variadic | |
12417 | macro definitions in wtf/Assertions.h. | |
12418 | ||
12419 | * wtf/Assertions.h: | |
12420 | ||
12421 | 2009-12-18 Geoffrey Garen <ggaren@apple.com> | |
12422 | ||
12423 | Reviewed by Adam Roben. | |
12424 | ||
12425 | Fixed intermittent failure seen on Windows buildbot, and in other JSC | |
12426 | API clients. | |
12427 | ||
12428 | Added a WeakGCPtr class and changed OpaqueJSClass::cachedPrototype to | |
12429 | use it, to avoid vending a stale object as a prototype. | |
12430 | ||
12431 | * API/JSClassRef.cpp: | |
12432 | (OpaqueJSClassContextData::OpaqueJSClassContextData): | |
12433 | (OpaqueJSClass::prototype): | |
12434 | * API/JSClassRef.h: Use WeakGCPtr. | |
12435 | ||
12436 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
12437 | * runtime/WeakGCPtr.h: Added. | |
12438 | (JSC::WeakGCPtr::WeakGCPtr): | |
12439 | (JSC::WeakGCPtr::get): | |
12440 | (JSC::WeakGCPtr::clear): | |
12441 | (JSC::WeakGCPtr::operator*): | |
12442 | (JSC::WeakGCPtr::operator->): | |
12443 | (JSC::WeakGCPtr::operator!): | |
12444 | (JSC::WeakGCPtr::operator bool): | |
12445 | (JSC::WeakGCPtr::operator UnspecifiedBoolType): | |
12446 | (JSC::WeakGCPtr::assign): | |
12447 | (JSC::::operator): | |
12448 | (JSC::operator==): | |
12449 | (JSC::operator!=): | |
12450 | (JSC::static_pointer_cast): | |
12451 | (JSC::const_pointer_cast): | |
12452 | (JSC::getPtr): Added WeakGCPtr to the project. | |
12453 | ||
12454 | 2009-12-18 Gavin Barraclough <barraclough@apple.com> | |
12455 | ||
12456 | Reviewed by Sam Weinig. | |
12457 | ||
12458 | https://bugs.webkit.org/show_bug.cgi?id=32720 | |
12459 | ||
12460 | * JavaScriptCore.exp: | |
12461 | - Remove exports for UString::append | |
12462 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
12463 | - Make StringBuilder a private header (was project). | |
12464 | ||
12465 | 2009-12-18 Martin Robinson <martin.james.robinson@gmail.com> | |
12466 | ||
12467 | Reviewed by Gustavo Noronha Silva. | |
12468 | ||
12469 | [GTK] GRefPtr does not take a reference when assigned a raw pointer | |
12470 | https://bugs.webkit.org/show_bug.cgi?id=32709 | |
12471 | ||
12472 | Ensure that when assigning a raw pointer to a GRefPtr, the reference | |
12473 | count is incremented. Also remove the GRefPtr conversion overload as | |
12474 | GRefPtr types have necessarily incompatible reference counting. | |
12475 | ||
12476 | * wtf/gtk/GRefPtr.h: | |
12477 | (WTF::GRefPtr::operator=): | |
12478 | ||
12479 | 2009-12-18 Simon Hausmann <simon.hausmann@nokia.com> | |
12480 | ||
12481 | Reviewed by Tor Arne Vestbø. | |
12482 | ||
12483 | [Qt] Clean up the qmake build system to distinguish between trunk builds and package builds | |
12484 | ||
12485 | https://bugs.webkit.org/show_bug.cgi?id=32716 | |
12486 | ||
12487 | * pcre/pcre.pri: Use standalone_package instead of QTDIR_build | |
12488 | ||
12489 | 2009-12-18 Martin Robinson <martin.james.robinson@gmail.com> | |
12490 | ||
12491 | Reviewed by Gustavo Noronha Silva. | |
12492 | ||
12493 | [GTK] Compile warning from line 29 of GRefPtr.cpp | |
12494 | https://bugs.webkit.org/show_bug.cgi?id=32703 | |
12495 | ||
12496 | Fix memory leak and compiler warning in GRefPtr GHashTable template | |
12497 | specialization. | |
12498 | ||
12499 | * wtf/gtk/GRefPtr.cpp: | |
12500 | (WTF::refGPtr): | |
12501 | ||
12502 | 2009-12-17 Sam Weinig <sam@webkit.org> | |
12503 | ||
12504 | Reviewed by Mark Rowe. | |
12505 | ||
12506 | Add BUILDING_ON_SNOW_LEOPARD and TARGETING_SNOW_LEOPARD #defines. | |
12507 | ||
12508 | * wtf/Platform.h: | |
12509 | ||
12510 | 2009-12-17 Adam Roben <aroben@apple.com> | |
12511 | ||
12512 | Sync JavaScriptCore.vcproj with JavaScriptCore.xcodeproj and the | |
12513 | source tree | |
12514 | ||
12515 | Fixes <http://webkit.org/b/32665>. | |
12516 | ||
12517 | Reviewed by Ada Chan. | |
12518 | ||
12519 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Moved | |
12520 | around files and filters so that the structure matches | |
12521 | JavaScriptCore.xcodeproj and the source tree. A few headers that were | |
12522 | previously omitted have been added, as well as JSZombie.{cpp,h}. | |
12523 | ||
12524 | 2009-12-17 Adam Roben <aroben@apple.com> | |
12525 | ||
12526 | Remove HeavyProfile and TreeProfile completely | |
12527 | ||
12528 | These were mostly removed in r42808, but the empty files were left in | |
12529 | place. | |
12530 | ||
12531 | Fixes <http://webkit.org/b/32664>. | |
12532 | ||
12533 | Reviewed by John Sullivan. | |
12534 | ||
12535 | * Android.mk: | |
12536 | * GNUmakefile.am: | |
12537 | * JavaScriptCore.gypi: | |
12538 | * JavaScriptCore.pri: | |
12539 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
12540 | * JavaScriptCoreSources.bkl: | |
12541 | Removed HeavyProfile/TreeProfile source files. | |
12542 | ||
12543 | * profiler/HeavyProfile.cpp: Removed. | |
12544 | * profiler/HeavyProfile.h: Removed. | |
12545 | * profiler/TreeProfile.cpp: Removed. | |
12546 | * profiler/TreeProfile.h: Removed. | |
12547 | ||
12548 | 2009-12-17 Martin Robinson <martin.james.robinson@gmail.com> | |
12549 | ||
12550 | Reviewed by Gustavo Noronha Silva. | |
12551 | ||
12552 | [GTK] WebKit GTK needs a wrapper for ref counted glib/gobject structs | |
12553 | https://bugs.webkit.org/show_bug.cgi?id=21599 | |
12554 | ||
12555 | Implement GRefPtr, a smart pointer for reference counted GObject types. | |
12556 | ||
12557 | * GNUmakefile.am: | |
12558 | * wtf/gtk/GOwnPtr.cpp: | |
12559 | (WTF::GDir): | |
12560 | * wtf/gtk/GRefPtr.h: Added. | |
12561 | (WTF::): | |
12562 | (WTF::GRefPtr::GRefPtr): | |
12563 | (WTF::GRefPtr::~GRefPtr): | |
12564 | (WTF::GRefPtr::clear): | |
12565 | (WTF::GRefPtr::get): | |
12566 | (WTF::GRefPtr::operator*): | |
12567 | (WTF::GRefPtr::operator->): | |
12568 | (WTF::GRefPtr::operator!): | |
12569 | (WTF::GRefPtr::operator UnspecifiedBoolType): | |
12570 | (WTF::GRefPtr::hashTableDeletedValue): | |
12571 | (WTF::::operator): | |
12572 | (WTF::::swap): | |
12573 | (WTF::swap): | |
12574 | (WTF::operator==): | |
12575 | (WTF::operator!=): | |
12576 | (WTF::static_pointer_cast): | |
12577 | (WTF::const_pointer_cast): | |
12578 | (WTF::getPtr): | |
12579 | (WTF::adoptGRef): | |
12580 | (WTF::refGPtr): | |
12581 | (WTF::derefGPtr): | |
12582 | ||
12583 | 2009-12-17 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
12584 | ||
12585 | Unreviewed. Build fixes for make distcheck. | |
12586 | ||
12587 | * GNUmakefile.am: | |
12588 | ||
12589 | 2009-12-16 Geoffrey Garen <ggaren@apple.com> | |
12590 | ||
12591 | Reviewed by Oliver Hunt. | |
12592 | ||
12593 | Fixed <rdar://problem/7355025> Interpreter::privateExecute macro generates | |
12594 | bloated code | |
12595 | ||
12596 | This patch cuts Interpreter stack use by about a third. | |
12597 | ||
12598 | * bytecode/Opcode.h: Changed Opcode to const void* to work with the | |
12599 | const static initiliazation we want to do in Interpreter::privateExecute. | |
12600 | ||
12601 | * interpreter/Interpreter.cpp: | |
12602 | (JSC::Interpreter::Interpreter): Moved hashtable initialization here to | |
12603 | avoid polluting Interpreter::privateExecute's stack, and changed it from a | |
12604 | series of add() calls to one add() call in a loop, to cut down on code size. | |
12605 | ||
12606 | (JSC::Interpreter::privateExecute): Changed a series of label computations | |
12607 | to a copy of a compile-time constant array to cut down on code size. | |
12608 | ||
12609 | 2009-12-16 Mark Rowe <mrowe@apple.com> | |
12610 | ||
12611 | Build fix. Disable debug variants of WebKit frameworks. | |
12612 | ||
12613 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
12614 | ||
12615 | 2009-12-15 Geoffrey Garen <ggaren@apple.com> | |
12616 | ||
12617 | Reviewed by Sam "r=me" Weinig. | |
12618 | ||
12619 | https://bugs.webkit.org/show_bug.cgi?id=32498 | |
12620 | <rdar://problem/7471495> | |
12621 | REGRESSION(r51978-r52039): AJAX "Mark This Forum Read" function no longer | |
12622 | works | |
12623 | ||
12624 | Fixed a tyop. | |
12625 | ||
12626 | * runtime/Operations.h: | |
12627 | (JSC::jsAdd): Use the '&&' operator, not the ',' operator. | |
12628 | ||
12629 | 2009-12-15 Geoffrey Garen <ggaren@apple.com> | |
12630 | ||
12631 | Try to fix the windows build: don't export this inlined function. | |
12632 | ||
12633 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
12634 | ||
12635 | 2009-12-15 Geoffrey Garen <ggaren@apple.com> | |
12636 | ||
12637 | Reviewed by Beth Dakin. | |
12638 | ||
12639 | Inlined JSCell's operator new. | |
12640 | ||
12641 | 3.7% speedup on bench-allocate-nonretained.js. | |
12642 | ||
12643 | * JavaScriptCore.exp: | |
12644 | * runtime/JSCell.cpp: | |
12645 | * runtime/JSCell.h: | |
12646 | (JSC::JSCell::operator new): | |
12647 | ||
12648 | 2009-12-15 Geoffrey Garen <ggaren@apple.com> | |
12649 | ||
12650 | Reviewed by Oliver Hunt. | |
12651 | ||
12652 | Removed the number heap, replacing it with a one-item free list for | |
12653 | numbers, taking advantage of the fact that two number cells fit inside | |
12654 | the space for one regular cell, and number cells don't require destruction. | |
12655 | ||
12656 | SunSpider says 1.6% faster in JSVALUE32 mode (the only mode that | |
12657 | heap-allocates numbers). | |
12658 | ||
12659 | SunSpider says 1.1% faster in JSVALUE32_64 mode. v8 says 0.8% faster | |
12660 | in JSVALUE32_64 mode. 10% speedup on bench-alloc-nonretained.js. 6% | |
12661 | speedup on bench-alloc-retained.js. | |
12662 | ||
12663 | There's a lot of formulaic change in this patch, but not much substance. | |
12664 | ||
12665 | * JavaScriptCore.exp: | |
12666 | * debugger/Debugger.cpp: | |
12667 | (JSC::Debugger::recompileAllJSFunctions): | |
12668 | * runtime/Collector.cpp: | |
12669 | (JSC::Heap::Heap): | |
12670 | (JSC::Heap::destroy): | |
12671 | (JSC::Heap::allocateBlock): | |
12672 | (JSC::Heap::freeBlock): | |
12673 | (JSC::Heap::freeBlockPtr): | |
12674 | (JSC::Heap::freeBlocks): | |
12675 | (JSC::Heap::recordExtraCost): | |
12676 | (JSC::Heap::allocate): | |
12677 | (JSC::Heap::resizeBlocks): | |
12678 | (JSC::Heap::growBlocks): | |
12679 | (JSC::Heap::shrinkBlocks): | |
12680 | (JSC::Heap::markConservatively): | |
12681 | (JSC::Heap::clearMarkBits): | |
12682 | (JSC::Heap::markedCells): | |
12683 | (JSC::Heap::sweep): | |
12684 | (JSC::Heap::markRoots): | |
12685 | (JSC::Heap::objectCount): | |
12686 | (JSC::Heap::addToStatistics): | |
12687 | (JSC::Heap::statistics): | |
12688 | (JSC::Heap::isBusy): | |
12689 | (JSC::Heap::reset): | |
12690 | (JSC::Heap::collectAllGarbage): | |
12691 | (JSC::Heap::primaryHeapBegin): | |
12692 | (JSC::Heap::primaryHeapEnd): | |
12693 | * runtime/Collector.h: | |
12694 | (JSC::): Removed all code pertaining to the number heap, and changed all | |
12695 | heap template functions and classes to non-template functions and classes. | |
12696 | ||
12697 | (JSC::Heap::allocateNumber): A new optimization to replace the number | |
12698 | heap: allocate half-sized number cells in pairs, returning the first | |
12699 | cell and caching the second cell for the next allocation. | |
12700 | ||
12701 | * runtime/CollectorHeapIterator.h: | |
12702 | (JSC::LiveObjectIterator::LiveObjectIterator): | |
12703 | (JSC::LiveObjectIterator::operator++): | |
12704 | (JSC::DeadObjectIterator::DeadObjectIterator): | |
12705 | (JSC::DeadObjectIterator::operator++): | |
12706 | (JSC::ObjectIterator::ObjectIterator): | |
12707 | (JSC::ObjectIterator::operator++): | |
12708 | * runtime/JSCell.h: | |
12709 | (JSC::JSCell::isNumber): Removed all code pertaining to the number heap, | |
12710 | and changed all heap template functions and classes to non-template functions | |
12711 | and classes. | |
12712 | ||
12713 | 2009-12-15 Zoltan Horvath <zoltan@webkit.org> | |
12714 | ||
12715 | Reviewed by Darin Adler. | |
12716 | ||
12717 | Allow custom memory allocation control for WeakGCMap class | |
12718 | https://bugs.webkit.org/show_bug.cgi?id=32547 | |
12719 | ||
12720 | Inherits WeakGCMap from FastAllocBase because it is instantiated by | |
12721 | 'new' at: WebCore/dom/Document.cpp:512. | |
12722 | ||
12723 | * runtime/WeakGCMap.h: | |
12724 | ||
12725 | 2009-12-15 Zoltan Horvath <zoltan@webkit.org> | |
12726 | ||
12727 | Reviewed by Darin Adler. | |
12728 | ||
12729 | Allow custom memory allocation control for dtoa's P5Node struct | |
12730 | https://bugs.webkit.org/show_bug.cgi?id=32544 | |
12731 | ||
12732 | Inherits P5Node struct from Noncopyable because it is instantiated by | |
12733 | 'new' at wtf/dtoa.cpp:588 and don't need to be copyable. | |
12734 | ||
12735 | * wtf/dtoa.cpp: | |
12736 | ||
12737 | 2009-12-14 Geoffrey Garen <ggaren@apple.com> | |
12738 | ||
12739 | Reviewed by Simon Fraser. | |
12740 | ||
12741 | https://bugs.webkit.org/show_bug.cgi?id=32524 | |
12742 | REGRESSION(52084): fast/dom/prototypes.html failing two CSS tests | |
12743 | ||
12744 | * wtf/StdLibExtras.h: | |
12745 | (WTF::bitCount): The original patch put the parentheses in the wrong | |
12746 | place, completely changing the calculation and making it almost always | |
12747 | wrong. Moved the parentheses around the '+' operation, like the original | |
12748 | compiler warning suggested. | |
12749 | ||
12750 | 2009-12-14 Gabor Loki <loki@inf.u-szeged.hu> | |
12751 | ||
12752 | Unreviewed trivial buildfix. | |
12753 | ||
12754 | Fix crosses initialization of usedPrimaryBlocks for JSValue32 | |
12755 | ||
12756 | * runtime/Collector.cpp: | |
12757 | (JSC::Heap::markConservatively): | |
12758 | ||
12759 | 2009-12-14 Csaba Osztrogonác <ossy@webkit.org> | |
12760 | ||
12761 | Reviewed by Simon Hausmann. | |
12762 | ||
12763 | GCC 4.3.x warning fixed. Suggested parantheses added. | |
12764 | warning: ../../../JavaScriptCore/wtf/StdLibExtras.h:77: warning: suggest parentheses around + or - in operand of & | |
12765 | ||
12766 | * wtf/StdLibExtras.h: | |
12767 | (WTF::bitCount): | |
12768 | ||
12769 | 2009-12-13 Geoffrey Garen <ggaren@apple.com> | |
12770 | ||
12771 | Reviewed by Sam Weinig. | |
12772 | ||
12773 | Changed GC from mark-sweep to mark-allocate. | |
12774 | ||
12775 | Added WeakGCMap to keep WebCore blissfully ignorant about objects that | |
12776 | have become garbage but haven't run their destructors yet. | |
12777 | ||
12778 | 1% SunSpider speedup. | |
12779 | 7.6% v8 speedup (37% splay speedup). | |
12780 | 17% speedup on bench-alloc-nonretained.js. | |
12781 | 18% speedup on bench-alloc-retained.js. | |
12782 | ||
12783 | * API/JSBase.cpp: | |
12784 | (JSGarbageCollect): | |
12785 | * API/JSContextRef.cpp: | |
12786 | * JavaScriptCore.exp: | |
12787 | * JavaScriptCore.xcodeproj/project.pbxproj: Updated for renames and new | |
12788 | files. | |
12789 | ||
12790 | * debugger/Debugger.cpp: | |
12791 | (JSC::Debugger::recompileAllJSFunctions): Updated to use the Collector | |
12792 | iterator abstraction. | |
12793 | ||
12794 | * jsc.cpp: | |
12795 | (functionGC): Updated for rename. | |
12796 | ||
12797 | * runtime/Collector.cpp: Slightly reduced the number of allocations per | |
12798 | collection, so that small workloads only allocate on collector block, | |
12799 | rather than two. | |
12800 | ||
12801 | (JSC::Heap::Heap): Updated to use the new allocateBlock function. | |
12802 | ||
12803 | (JSC::Heap::destroy): Updated to use the new freeBlocks function. | |
12804 | ||
12805 | (JSC::Heap::allocateBlock): New function to initialize a block when | |
12806 | allocating it. | |
12807 | ||
12808 | (JSC::Heap::freeBlock): Consolidated the responsibility for running | |
12809 | destructors into this function. | |
12810 | ||
12811 | (JSC::Heap::freeBlocks): Updated to use freeBlock. | |
12812 | ||
12813 | (JSC::Heap::recordExtraCost): Sweep the heap in this reporting function, | |
12814 | so that allocation, which is more common, doesn't have to check extraCost. | |
12815 | ||
12816 | (JSC::Heap::heapAllocate): Run destructors right before recycling a | |
12817 | garbage cell. This has better cache utilization than a separate sweep phase. | |
12818 | ||
12819 | (JSC::Heap::resizeBlocks): | |
12820 | (JSC::Heap::growBlocks): | |
12821 | (JSC::Heap::shrinkBlocks): New set of functions for managing the size of | |
12822 | the heap, now that the heap doesn't maintain any information about its | |
12823 | size. | |
12824 | ||
12825 | (JSC::isPointerAligned): | |
12826 | (JSC::isHalfCellAligned): | |
12827 | (JSC::isPossibleCell): | |
12828 | (JSC::isCellAligned): | |
12829 | (JSC::Heap::markConservatively): Cleaned up this code a bit. | |
12830 | ||
12831 | (JSC::Heap::clearMarkBits): | |
12832 | (JSC::Heap::markedCells): Some helper functions for examining the the mark | |
12833 | bitmap. | |
12834 | ||
12835 | (JSC::Heap::sweep): Simplified this function by using a DeadObjectIterator. | |
12836 | ||
12837 | (JSC::Heap::markRoots): Reordered some operations for clarity. | |
12838 | ||
12839 | (JSC::Heap::objectCount): | |
12840 | (JSC::Heap::addToStatistics): | |
12841 | (JSC::Heap::statistics): Rewrote these functions to calculate an object | |
12842 | count on demand, since the heap doesn't maintain this information by | |
12843 | itself. | |
12844 | ||
12845 | (JSC::Heap::reset): New function for resetting the heap once we've | |
12846 | exhausted heap space. | |
12847 | ||
12848 | (JSC::Heap::collectAllGarbage): This function matches the old collect() | |
12849 | behavior, but it's now an uncommon function used only by API. | |
12850 | ||
12851 | * runtime/Collector.h: | |
12852 | (JSC::CollectorBitmap::count): | |
12853 | (JSC::CollectorBitmap::isEmpty): Added some helper functions for managing | |
12854 | the collector mark bitmap. | |
12855 | ||
12856 | (JSC::Heap::reportExtraMemoryCost): Changed reporting from cell equivalents | |
12857 | to bytes, so it's easier to understand. | |
12858 | ||
12859 | * runtime/CollectorHeapIterator.h: | |
12860 | (JSC::CollectorHeapIterator::CollectorHeapIterator): | |
12861 | (JSC::CollectorHeapIterator::operator!=): | |
12862 | (JSC::CollectorHeapIterator::operator*): | |
12863 | (JSC::CollectorHeapIterator::advance): | |
12864 | (JSC::::LiveObjectIterator): | |
12865 | (JSC::::operator): | |
12866 | (JSC::::DeadObjectIterator): | |
12867 | (JSC::::ObjectIterator): New iterators for encapsulating details about | |
12868 | heap layout, and what's live and dead on the heap. | |
12869 | ||
12870 | * runtime/JSArray.cpp: | |
12871 | (JSC::JSArray::putSlowCase): | |
12872 | (JSC::JSArray::increaseVectorLength): Delay reporting extra cost until | |
12873 | we're fully constructed, so the heap mark phase won't visit us in an | |
12874 | invalid state. | |
12875 | ||
12876 | * runtime/JSCell.h: | |
12877 | (JSC::JSCell::): | |
12878 | (JSC::JSCell::createDummyStructure): | |
12879 | (JSC::JSCell::JSCell): | |
12880 | * runtime/JSGlobalData.cpp: | |
12881 | (JSC::JSGlobalData::JSGlobalData): | |
12882 | * runtime/JSGlobalData.h: Added a dummy cell to simplify allocation logic. | |
12883 | ||
12884 | * runtime/JSString.h: | |
12885 | (JSC::jsSubstring): Don't report extra cost for substrings, since they | |
12886 | share a buffer that's already reported extra cost. | |
12887 | ||
12888 | * runtime/Tracing.d: | |
12889 | * runtime/Tracing.h: Changed these dtrace hooks not to report object | |
12890 | counts, since they're no longer cheap to compute. | |
12891 | ||
12892 | * runtime/UString.h: Updated for renames. | |
12893 | ||
12894 | * runtime/WeakGCMap.h: Added. | |
12895 | (JSC::WeakGCMap::isEmpty): | |
12896 | (JSC::WeakGCMap::uncheckedGet): | |
12897 | (JSC::WeakGCMap::uncheckedBegin): | |
12898 | (JSC::WeakGCMap::uncheckedEnd): | |
12899 | (JSC::::get): | |
12900 | (JSC::::take): | |
12901 | (JSC::::set): | |
12902 | (JSC::::uncheckedRemove): Mentioned above. | |
12903 | ||
12904 | * wtf/StdLibExtras.h: | |
12905 | (WTF::bitCount): Added a bit population count function, so the heap can | |
12906 | count live objects to fulfill statistics questions. | |
12907 | ||
12908 | The very last cell in the block is not allocated -- should not be marked. | |
12909 | ||
12910 | 2009-12-13 Geoffrey Garen <ggaren@apple.com> | |
12911 | ||
12912 | Windows build fix: Export some new symbols. | |
12913 | ||
12914 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
12915 | ||
12916 | 2009-12-13 Geoffrey Garen <ggaren@apple.com> | |
12917 | ||
12918 | Windows build fix: Removed some old exports. | |
12919 | ||
12920 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
12921 | ||
12922 | 2009-12-13 Geoffrey Garen <ggaren@apple.com> | |
12923 | ||
12924 | Windows build fix: Use unsigned instead of uint32_t to avoid dependencies. | |
12925 | ||
12926 | * wtf/StdLibExtras.h: | |
12927 | (WTF::bitCount): | |
12928 | ||
12929 | 2009-12-13 Gavin Barraclough <barraclough@apple.com> | |
12930 | ||
12931 | Reviewed by NOBODY (speculative Windows build fix). | |
12932 | ||
12933 | * runtime/JSGlobalObjectFunctions.cpp: | |
12934 | ||
12935 | 2009-12-13 Gavin Barraclough <barraclough@apple.com> | |
12936 | ||
12937 | Reviewed by Sam Weinig. | |
12938 | ||
12939 | https://bugs.webkit.org/show_bug.cgi?id=32496 | |
12940 | Switch remaining cases of string construction to use StringBuilder. | |
12941 | Builds strings using a vector rather than using string append / addition. | |
12942 | ||
12943 | * JavaScriptCore.exp: | |
12944 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
12945 | * runtime/Executable.cpp: | |
12946 | (JSC::FunctionExecutable::paramString): | |
12947 | * runtime/FunctionConstructor.cpp: | |
12948 | (JSC::constructFunction): | |
12949 | * runtime/JSGlobalObjectFunctions.cpp: | |
12950 | (JSC::encode): | |
12951 | (JSC::decode): | |
12952 | (JSC::globalFuncEscape): | |
12953 | (JSC::globalFuncUnescape): | |
12954 | * runtime/JSONObject.cpp: | |
12955 | (JSC::Stringifier::stringify): | |
12956 | (JSC::Stringifier::indent): | |
12957 | * runtime/JSString.h: | |
12958 | * runtime/LiteralParser.cpp: | |
12959 | (JSC::LiteralParser::Lexer::lexString): | |
12960 | * runtime/NumberPrototype.cpp: | |
12961 | (JSC::integerPartNoExp): | |
12962 | (JSC::numberProtoFuncToFixed): | |
12963 | (JSC::numberProtoFuncToPrecision): | |
12964 | * runtime/Operations.h: | |
12965 | (JSC::jsString): | |
12966 | * runtime/StringPrototype.cpp: | |
12967 | (JSC::substituteBackreferencesSlow): | |
12968 | (JSC::substituteBackreferences): | |
12969 | (JSC::stringProtoFuncConcat): | |
12970 | ||
12971 | 2009-12-08 Jeremy Moskovich <jeremy@chromium.org> | |
12972 | ||
12973 | Reviewed by Eric Seidel. | |
12974 | ||
12975 | Add code to allow toggling ATSUI/Core Text rendering at runtime in ComplexTextController. | |
12976 | https://bugs.webkit.org/show_bug.cgi?id=31802 | |
12977 | ||
12978 | The goal here is to allow for a zero runtime hit for ports that decide to select | |
12979 | the API at compile time. | |
12980 | When both USE(ATSUI) and USE(CORE_TEXT) are true, the API is toggled | |
12981 | at runtime. Core Text is used for OS Versions >= 10.6. | |
12982 | ||
12983 | * wtf/Platform.h: #define USE_CORE_TEXT and USE_ATSUI on Chrome/Mac. | |
12984 | ||
12985 | 2009-12-11 Maciej Stachowiak <mjs@apple.com> | |
12986 | ||
12987 | Reviewed by Oliver Hunt. | |
12988 | ||
12989 | Unify codegen for forward and backward variants of branches | |
12990 | https://bugs.webkit.org/show_bug.cgi?id=32463 | |
12991 | ||
12992 | * jit/JIT.h: | |
12993 | (JSC::JIT::emit_op_loop): Implemented in terms of forward variant. | |
12994 | (JSC::JIT::emit_op_loop_if_true): ditto | |
12995 | (JSC::JIT::emitSlow_op_loop_if_true): ditto | |
12996 | (JSC::JIT::emit_op_loop_if_false): ditto | |
12997 | (JSC::JIT::emitSlow_op_loop_if_false): ditto | |
12998 | (JSC::JIT::emit_op_loop_if_less): ditto | |
12999 | (JSC::JIT::emitSlow_op_loop_if_less): ditto | |
13000 | * jit/JITOpcodes.cpp: | |
13001 | ||
13002 | 2009-12-11 Sam Weinig <sam@webkit.org> | |
13003 | ||
13004 | Reviewed by Anders Carlsson. | |
13005 | ||
13006 | Allow WTFs concept of the main thread to differ from pthreads when necessary. | |
13007 | ||
13008 | * wtf/ThreadingPthreads.cpp: | |
13009 | (WTF::initializeThreading): | |
13010 | (WTF::isMainThread): | |
13011 | * wtf/mac/MainThreadMac.mm: | |
13012 | (WTF::initializeMainThreadPlatform): | |
13013 | (WTF::scheduleDispatchFunctionsOnMainThread): | |
13014 | ||
13015 | 2009-12-11 Gavin Barraclough <barraclough@apple.com> | |
13016 | ||
13017 | Reviewed by Oliver Hunt. | |
13018 | ||
13019 | https://bugs.webkit.org/show_bug.cgi?id=32454 | |
13020 | Refactor construction of simple strings to avoid string concatenation. | |
13021 | ||
13022 | Building strings through concatenation has a memory and performance cost - | |
13023 | a memory cost since we must over-allocate the buffer to leave space to append | |
13024 | into, and performance in that the string may still require reallocation (and | |
13025 | thus copying during construction). Instead move the full construction to | |
13026 | within a single function call (makeString), so that the arguments' lengths | |
13027 | can be calculated and an appropriate sized buffer allocated before copying | |
13028 | any characters. | |
13029 | ||
13030 | ~No performance change (~2% progression on date tests). | |
13031 | ||
13032 | * bytecode/CodeBlock.cpp: | |
13033 | (JSC::escapeQuotes): | |
13034 | (JSC::valueToSourceString): | |
13035 | (JSC::constantName): | |
13036 | (JSC::idName): | |
13037 | (JSC::CodeBlock::registerName): | |
13038 | (JSC::regexpToSourceString): | |
13039 | (JSC::regexpName): | |
13040 | * bytecompiler/NodesCodegen.cpp: | |
13041 | (JSC::substitute): | |
13042 | * profiler/Profiler.cpp: | |
13043 | (JSC::Profiler::createCallIdentifier): | |
13044 | * runtime/DateConstructor.cpp: | |
13045 | (JSC::callDate): | |
13046 | * runtime/DateConversion.cpp: | |
13047 | (JSC::formatDate): | |
13048 | (JSC::formatDateUTCVariant): | |
13049 | (JSC::formatTime): | |
13050 | (JSC::formatTimeUTC): | |
13051 | * runtime/DateConversion.h: | |
13052 | (JSC::): | |
13053 | * runtime/DatePrototype.cpp: | |
13054 | (JSC::dateProtoFuncToString): | |
13055 | (JSC::dateProtoFuncToUTCString): | |
13056 | (JSC::dateProtoFuncToDateString): | |
13057 | (JSC::dateProtoFuncToTimeString): | |
13058 | (JSC::dateProtoFuncToGMTString): | |
13059 | * runtime/ErrorPrototype.cpp: | |
13060 | (JSC::errorProtoFuncToString): | |
13061 | * runtime/ExceptionHelpers.cpp: | |
13062 | (JSC::createUndefinedVariableError): | |
13063 | (JSC::createErrorMessage): | |
13064 | (JSC::createInvalidParamError): | |
13065 | * runtime/FunctionPrototype.cpp: | |
13066 | (JSC::insertSemicolonIfNeeded): | |
13067 | (JSC::functionProtoFuncToString): | |
13068 | * runtime/ObjectPrototype.cpp: | |
13069 | (JSC::objectProtoFuncToString): | |
13070 | * runtime/RegExpConstructor.cpp: | |
13071 | (JSC::constructRegExp): | |
13072 | * runtime/RegExpObject.cpp: | |
13073 | (JSC::RegExpObject::match): | |
13074 | * runtime/RegExpPrototype.cpp: | |
13075 | (JSC::regExpProtoFuncCompile): | |
13076 | (JSC::regExpProtoFuncToString): | |
13077 | * runtime/StringPrototype.cpp: | |
13078 | (JSC::stringProtoFuncBig): | |
13079 | (JSC::stringProtoFuncSmall): | |
13080 | (JSC::stringProtoFuncBlink): | |
13081 | (JSC::stringProtoFuncBold): | |
13082 | (JSC::stringProtoFuncFixed): | |
13083 | (JSC::stringProtoFuncItalics): | |
13084 | (JSC::stringProtoFuncStrike): | |
13085 | (JSC::stringProtoFuncSub): | |
13086 | (JSC::stringProtoFuncSup): | |
13087 | (JSC::stringProtoFuncFontcolor): | |
13088 | (JSC::stringProtoFuncFontsize): | |
13089 | (JSC::stringProtoFuncAnchor): | |
13090 | * runtime/UString.h: | |
13091 | (JSC::): | |
13092 | (JSC::makeString): | |
13093 | ||
13094 | 2009-12-10 Gavin Barraclough <barraclough@apple.com> | |
13095 | ||
13096 | Reviewed by Oliver Hunt. | |
13097 | ||
13098 | https://bugs.webkit.org/show_bug.cgi?id=32400 | |
13099 | Switch remaining cases of string addition to use ropes. | |
13100 | ||
13101 | Re-landing r51975 - added toPrimitiveString method, | |
13102 | performs toPrimitive then subsequent toString operations. | |
13103 | ||
13104 | ~1% progression on Sunspidey. | |
13105 | ||
13106 | * jit/JITStubs.cpp: | |
13107 | (JSC::DEFINE_STUB_FUNCTION): | |
13108 | * runtime/JSString.h: | |
13109 | (JSC::JSString::JSString): | |
13110 | (JSC::JSString::appendStringInConstruct): | |
13111 | * runtime/Operations.cpp: | |
13112 | (JSC::jsAddSlowCase): | |
13113 | * runtime/Operations.h: | |
13114 | (JSC::jsString): | |
13115 | (JSC::jsAdd): | |
13116 | ||
13117 | 2009-12-11 Adam Roben <aroben@apple.com> | |
13118 | ||
13119 | Windows build fix | |
13120 | ||
13121 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Added | |
13122 | $(WebKitOutputDir)/include/private to the include path. | |
13123 | ||
13124 | 2009-12-11 Adam Roben <aroben@apple.com> | |
13125 | ||
13126 | Move QuartzCorePresent.h to include/private | |
13127 | ||
13128 | This fixes other projects that use wtf/Platform.h | |
13129 | ||
13130 | Rubber-stamped by Steve Falkenburg. | |
13131 | ||
13132 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Let VS do its thang. | |
13133 | * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Write | |
13134 | QuartzCorePresent.h to $(WebKitOutputDir)/include/private. | |
13135 | ||
13136 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
13137 | * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
13138 | Added $(WebKitOutputDir)/include/private to the include path. | |
13139 | ||
13140 | 2009-12-11 Adam Roben <aroben@apple.com> | |
13141 | ||
13142 | Fix clean builds and everything rebuilding on every build | |
13143 | ||
13144 | Reviewed by Sam Weinig. | |
13145 | ||
13146 | * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Don't | |
13147 | write out QuartzCorePresent.h if it exists but is older than | |
13148 | QuartzCore.h. Also, create the directory we write QuartzCorePresent.h | |
13149 | into first. | |
13150 | ||
13151 | 2009-12-11 Adam Roben <aroben@apple.com> | |
13152 | ||
13153 | Windows build fix for systems with spaces in their paths | |
13154 | ||
13155 | * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: Quote some paths. | |
13156 | ||
13157 | 2009-12-11 Chris Marrin <cmarrin@apple.com> | |
13158 | ||
13159 | Reviewed by Adam Roben. | |
13160 | ||
13161 | Add check for presence of QuartzCore headers | |
13162 | https://bugs.webkit.org/show_bug.cgi?id=31856 | |
13163 | ||
13164 | The script now checks for the presence of QuartzCore.h. If present | |
13165 | it will turn on ACCELERATED_COMPOSITING and 3D_RENDERING to enable | |
13166 | HW compositing on Windows. The script writes QuartzCorePresent.h to | |
13167 | the build directory which has a define telling whether QuartzCore is | |
13168 | present. | |
13169 | ||
13170 | * JavaScriptCore.vcproj/JavaScriptCore/build-generated-files.sh: | |
13171 | * wtf/Platform.h: | |
13172 | ||
13173 | 2009-12-11 Kent Tamura <tkent@chromium.org> | |
13174 | ||
13175 | Reviewed by Darin Adler. | |
13176 | ||
13177 | Fix a problem that JSC::gregorianDateTimeToMS() returns a negative | |
13178 | value for a huge year value. | |
13179 | https://bugs.webkit.org/show_bug.cgi?id=32304 | |
13180 | ||
13181 | * wtf/DateMath.cpp: | |
13182 | (WTF::dateToDaysFrom1970): Renamed from dateToDayInYear, and changed the return type to double. | |
13183 | (WTF::calculateDSTOffset): Follow the dateToDaysFrom1970() change. | |
13184 | (WTF::timeClip): Use maxECMAScriptTime. | |
13185 | (JSC::gregorianDateTimeToMS): Follow the dateToDaysFrom1970() change. | |
13186 | ||
13187 | 2009-12-10 Adam Barth <abarth@webkit.org> | |
13188 | ||
13189 | No review, rolling out r51975. | |
13190 | http://trac.webkit.org/changeset/51975 | |
13191 | ||
13192 | * jit/JITStubs.cpp: | |
13193 | (JSC::DEFINE_STUB_FUNCTION): | |
13194 | * runtime/JSString.h: | |
13195 | (JSC::JSString::JSString): | |
13196 | (JSC::JSString::appendStringInConstruct): | |
13197 | * runtime/Operations.cpp: | |
13198 | (JSC::jsAddSlowCase): | |
13199 | * runtime/Operations.h: | |
13200 | (JSC::jsString): | |
13201 | (JSC::jsAdd): | |
13202 | ||
13203 | 2009-12-10 Oliver Hunt <oliver@apple.com> | |
13204 | ||
13205 | Reviewed by Gavin Barraclough. | |
13206 | ||
13207 | Incorrect caching of prototype lookup with dictionary base | |
13208 | https://bugs.webkit.org/show_bug.cgi?id=32402 | |
13209 | ||
13210 | Make sure we don't add cached prototype lookup to the proto_list | |
13211 | lookup chain if the top level object is a dictionary. | |
13212 | ||
13213 | * jit/JITStubs.cpp: | |
13214 | (JSC::JITThunks::tryCacheGetByID): | |
13215 | ||
13216 | 2009-12-10 Gavin Barraclough <barraclough@apple.com> | |
13217 | ||
13218 | Reviewed by Oliver Hunt. | |
13219 | ||
13220 | https://bugs.webkit.org/show_bug.cgi?id=32400 | |
13221 | Switch remaining cases of string addition to use ropes. | |
13222 | ||
13223 | ~1% progression on Sunspidey. | |
13224 | ||
13225 | * jit/JITStubs.cpp: | |
13226 | (JSC::DEFINE_STUB_FUNCTION): | |
13227 | * runtime/JSString.h: | |
13228 | (JSC::JSString::JSString): | |
13229 | (JSC::JSString::appendStringInConstruct): | |
13230 | * runtime/Operations.cpp: | |
13231 | (JSC::jsAddSlowCase): | |
13232 | * runtime/Operations.h: | |
13233 | (JSC::jsString): | |
13234 | (JSC::jsAdd): | |
13235 | ||
13236 | 2009-12-10 Kent Hansen <kent.hansen@nokia.com> | |
13237 | ||
13238 | Reviewed by Geoffrey Garen. | |
13239 | ||
13240 | Remove JSObject::getPropertyAttributes() and all usage of it. | |
13241 | https://bugs.webkit.org/show_bug.cgi?id=31933 | |
13242 | ||
13243 | getOwnPropertyDescriptor() should be used instead. | |
13244 | ||
13245 | * JavaScriptCore.exp: | |
13246 | * JavaScriptCore.order: | |
13247 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
13248 | * debugger/DebuggerActivation.cpp: | |
13249 | (JSC::DebuggerActivation::getOwnPropertyDescriptor): | |
13250 | * debugger/DebuggerActivation.h: | |
13251 | * runtime/JSObject.cpp: | |
13252 | (JSC::JSObject::propertyIsEnumerable): | |
13253 | * runtime/JSObject.h: | |
13254 | * runtime/JSVariableObject.cpp: | |
13255 | * runtime/JSVariableObject.h: | |
13256 | ||
13257 | 2009-12-10 Gavin Barraclough <barraclough@apple.com> | |
13258 | ||
13259 | Reviewed by Oliver Hunt & Mark Rowe. | |
13260 | ||
13261 | https://bugs.webkit.org/show_bug.cgi?id=32367 | |
13262 | Add support for short Ropes (up to 3 entries) inline within JSString. | |
13263 | (rather than externally allocating an object to hold the rope). | |
13264 | Switch jsAdd of (JSString* + JSString*) to now make use of Ropes. | |
13265 | ||
13266 | ~1% progression on Sunspidey. | |
13267 | ||
13268 | * interpreter/Interpreter.cpp: | |
13269 | (JSC::Interpreter::privateExecute): | |
13270 | * jit/JITOpcodes.cpp: | |
13271 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
13272 | * jit/JITStubs.cpp: | |
13273 | (JSC::DEFINE_STUB_FUNCTION): | |
13274 | * runtime/JSString.cpp: | |
13275 | (JSC::JSString::resolveRope): | |
13276 | (JSC::JSString::toBoolean): | |
13277 | (JSC::JSString::getStringPropertyDescriptor): | |
13278 | * runtime/JSString.h: | |
13279 | (JSC::JSString::Rope::Fiber::deref): | |
13280 | (JSC::JSString::Rope::Fiber::ref): | |
13281 | (JSC::JSString::Rope::Fiber::refAndGetLength): | |
13282 | (JSC::JSString::Rope::append): | |
13283 | (JSC::JSString::JSString): | |
13284 | (JSC::JSString::~JSString): | |
13285 | (JSC::JSString::value): | |
13286 | (JSC::JSString::tryGetValue): | |
13287 | (JSC::JSString::length): | |
13288 | (JSC::JSString::canGetIndex): | |
13289 | (JSC::JSString::appendStringInConstruct): | |
13290 | (JSC::JSString::appendValueInConstructAndIncrementLength): | |
13291 | (JSC::JSString::isRope): | |
13292 | (JSC::JSString::string): | |
13293 | (JSC::JSString::ropeLength): | |
13294 | (JSC::JSString::getStringPropertySlot): | |
13295 | * runtime/Operations.h: | |
13296 | (JSC::jsString): | |
13297 | (JSC::jsAdd): | |
13298 | (JSC::resolveBase): | |
13299 | ||
13300 | 2009-12-09 Anders Carlsson <andersca@apple.com> | |
13301 | ||
13302 | Reviewed by Geoffrey Garen. | |
13303 | ||
13304 | Fix three more things found by compiling with clang++. | |
13305 | ||
13306 | * runtime/Structure.h: | |
13307 | (JSC::StructureTransitionTable::reifySingleTransition): | |
13308 | Add the 'std' qualifier to the call to make_pair. | |
13309 | ||
13310 | * wtf/DateMath.cpp: | |
13311 | (WTF::initializeDates): | |
13312 | Incrementing a bool is deprecated according to the C++ specification. | |
13313 | ||
13314 | * wtf/PtrAndFlags.h: | |
13315 | (WTF::PtrAndFlags::PtrAndFlags): | |
13316 | Name lookup should not be done in dependent bases, so explicitly qualify the call to set. | |
13317 | ||
13318 | 2009-12-09 Maciej Stachowiak <mjs@apple.com> | |
13319 | ||
13320 | Reviewed by Oliver Hunt. | |
13321 | ||
13322 | Google reader gets stuck in the "Loading..." state and does not complete | |
13323 | https://bugs.webkit.org/show_bug.cgi?id=32256 | |
13324 | <rdar://problem/7456388> | |
13325 | ||
13326 | * jit/JITArithmetic.cpp: | |
13327 | (JSC::JIT::emitSlow_op_jless): Fix some backward branches. | |
13328 | ||
13329 | 2009-12-09 Gavin Barraclough <barraclough@apple.com> | |
13330 | ||
13331 | Reviewed by Oliver Hunt. | |
13332 | ||
13333 | https://bugs.webkit.org/show_bug.cgi?id=32228 | |
13334 | Make destruction of ropes non-recursive to prevent stack exhaustion. | |
13335 | Also, pass a UString& into initializeFiber rather than a Ustring::Rep*, | |
13336 | since the Rep is not being ref counted this could result in usage of a | |
13337 | Rep with refcount zero (where the Rep comes from a temporary UString | |
13338 | returned from a function). | |
13339 | ||
13340 | * runtime/JSString.cpp: | |
13341 | (JSC::JSString::Rope::destructNonRecursive): | |
13342 | (JSC::JSString::Rope::~Rope): | |
13343 | * runtime/JSString.h: | |
13344 | (JSC::JSString::Rope::initializeFiber): | |
13345 | * runtime/Operations.h: | |
13346 | (JSC::concatenateStrings): | |
13347 | ||
13348 | 2009-12-09 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
13349 | ||
13350 | Reviewed by Eric Seidel. | |
13351 | ||
13352 | https://bugs.webkit.org/show_bug.cgi?id=31930 | |
13353 | ||
13354 | Update to r51457. ASSERTs changed to COMPILE_ASSERTs. | |
13355 | The speedup is 25%. | |
13356 | ||
13357 | * runtime/JSGlobalData.cpp: | |
13358 | (JSC::VPtrSet::VPtrSet): | |
13359 | ||
13360 | 2009-12-09 Steve Block <steveblock@google.com> | |
13361 | ||
13362 | Reviewed by Adam Barth. | |
13363 | ||
13364 | Updates Android Makefiles with latest additions. | |
13365 | https://bugs.webkit.org/show_bug.cgi?id=32278 | |
13366 | ||
13367 | * Android.mk: Modified. | |
13368 | * Android.v8.wtf.mk: Modified. | |
13369 | ||
13370 | 2009-12-09 Sam Weinig <sam@webkit.org> | |
13371 | ||
13372 | Reviewed by Gavin Barraclough. | |
13373 | ||
13374 | Fix a bug found while trying to compile JavaScriptCore with clang++. | |
13375 | ||
13376 | * yarr/RegexPattern.h: | |
13377 | (JSC::Yarr::PatternTerm::PatternTerm): Don't self assign here. Use false instead. | |
13378 | ||
13379 | 2009-12-09 Anders Carlsson <andersca@apple.com> | |
13380 | ||
13381 | Reviewed by Sam Weinig. | |
13382 | ||
13383 | Attempt to fix the Windows build. | |
13384 | ||
13385 | * wtf/FastMalloc.h: | |
13386 | ||
13387 | 2009-12-09 Anders Carlsson <andersca@apple.com> | |
13388 | ||
13389 | Reviewed by Sam Weinig. | |
13390 | ||
13391 | Fix some things found while trying to compile JavaScriptCore with clang++. | |
13392 | ||
13393 | * wtf/FastMalloc.h: | |
13394 | Add correct exception specifications for the allocation/deallocation operators. | |
13395 | ||
13396 | * wtf/Vector.h: | |
13397 | * wtf/VectorTraits.h: | |
13398 | Fix a bunch of struct/class mismatches. | |
13399 | ||
13400 | 2009-12-08 Maciej Stachowiak <mjs@apple.com> | |
13401 | ||
13402 | Reviewed by Darin Adler. | |
13403 | ||
13404 | move code generation portions of Nodes.cpp to bytecompiler directory | |
13405 | https://bugs.webkit.org/show_bug.cgi?id=32284 | |
13406 | ||
13407 | * bytecompiler/NodesCodegen.cpp: Copied from parser/Nodes.cpp. Removed parts that | |
13408 | are not about codegen. | |
13409 | * parser/Nodes.cpp: Removed everything that is about codegen. | |
13410 | ||
13411 | Update build systems: | |
13412 | ||
13413 | * Android.mk: | |
13414 | * GNUmakefile.am: | |
13415 | * JavaScriptCore.gypi: | |
13416 | * JavaScriptCore.pri: | |
13417 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
13418 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
13419 | * JavaScriptCoreSources.bkl: | |
13420 | ||
13421 | 2009-12-08 Kevin Watters <kevinwatters@gmail.com> | |
13422 | ||
13423 | Reviewed by Kevin Ollivier. | |
13424 | ||
13425 | [wx] Mac plugins support. | |
13426 | ||
13427 | https://bugs.webkit.org/show_bug.cgi?id=32236 | |
13428 | ||
13429 | * wtf/Platform.h: | |
13430 | ||
13431 | 2009-12-08 Dmitry Titov <dimich@chromium.org> | |
13432 | ||
13433 | Rubber-stamped by David Levin. | |
13434 | ||
13435 | Revert and reopen "Add asserts to RefCounted to make sure ref/deref happens on the right thread." | |
13436 | It may have caused massive increase of reported leaks on the bots. | |
13437 | https://bugs.webkit.org/show_bug.cgi?id=31639 | |
13438 | ||
13439 | * GNUmakefile.am: | |
13440 | * JavaScriptCore.gypi: | |
13441 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: | |
13442 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
13443 | * runtime/Structure.cpp: | |
13444 | (JSC::Structure::Structure): | |
13445 | * wtf/RefCounted.h: | |
13446 | (WTF::RefCountedBase::ref): | |
13447 | (WTF::RefCountedBase::hasOneRef): | |
13448 | (WTF::RefCountedBase::refCount): | |
13449 | (WTF::RefCountedBase::derefBase): | |
13450 | * wtf/ThreadVerifier.h: Removed. | |
13451 | ||
13452 | 2009-12-08 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
13453 | ||
13454 | Reviewed by Darin Adler. | |
13455 | ||
13456 | Make WebKit build correctly on FreeBSD, IA64, and Alpha. | |
13457 | Based on work by Petr Salinger <Petr.Salinger@seznam.cz>, | |
13458 | and Colin Watson <cjwatson@ubuntu.com>. | |
13459 | ||
13460 | * wtf/Platform.h: | |
13461 | ||
13462 | 2009-12-08 Dmitry Titov <dimich@chromium.org> | |
13463 | ||
13464 | Reviewed by Darin Adler. | |
13465 | ||
13466 | Add asserts to RefCounted to make sure ref/deref happens on the right thread. | |
13467 | https://bugs.webkit.org/show_bug.cgi?id=31639 | |
13468 | ||
13469 | * runtime/Structure.cpp: | |
13470 | (JSC::Structure::Structure): Disable thread verification on this class since it uses addressOfCount(). | |
13471 | * wtf/RefCounted.h: | |
13472 | (WTF::RefCountedBase::ref): Add ASSERT. | |
13473 | (WTF::RefCountedBase::hasOneRef): Ditto. | |
13474 | (WTF::RefCountedBase::refCount): Ditto. | |
13475 | (WTF::RefCountedBase::derefBase): Ditto. | |
13476 | (WTF::RefCountedBase::disableThreadVerification): delegate to ThreadVerifier method. | |
13477 | * wtf/ThreadVerifier.h: Added. | |
13478 | (WTF::ThreadVerifier::ThreadVerifier): New Debug-only class to verify that ref/deref of RefCounted is done on the same thread. | |
13479 | (WTF::ThreadVerifier::activate): Activates checks. Called when ref count becomes above 2. | |
13480 | (WTF::ThreadVerifier::deactivate): Deactivates checks. Called when ref count drops below 2. | |
13481 | (WTF::ThreadVerifier::disableThreadVerification): used on objects that should not be checked (StringImpl etc) | |
13482 | (WTF::ThreadVerifier::verifyThread): | |
13483 | * GNUmakefile.am: Add ThreadVerifier.h to the build file. | |
13484 | * JavaScriptCore.gypi: Ditto. | |
13485 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Ditto. | |
13486 | * JavaScriptCore.xcodeproj/project.pbxproj: Ditto. | |
13487 | ||
13488 | 2009-12-08 Steve Block <steveblock@google.com> | |
13489 | ||
13490 | Reviewed by Adam Barth. | |
13491 | ||
13492 | [Android] Adds Makefiles for Android port. | |
13493 | https://bugs.webkit.org/show_bug.cgi?id=31325 | |
13494 | ||
13495 | * Android.mk: Added. | |
13496 | * Android.v8.wtf.mk: Added. | |
13497 | ||
13498 | 2009-12-07 Dmitry Titov <dimich@chromium.org> | |
13499 | ||
13500 | Rubber-stamped by Darin Adler. | |
13501 | ||
13502 | Remove ENABLE_SHARED_SCRIPT flags | |
13503 | https://bugs.webkit.org/show_bug.cgi?id=32245 | |
13504 | This patch was obtained by "git revert" command and then un-reverting of ChangeLog files. | |
13505 | ||
13506 | * Configurations/FeatureDefines.xcconfig: | |
13507 | * wtf/Platform.h: | |
13508 | ||
13509 | 2009-12-07 Gavin Barraclough <barraclough@apple.com> | |
13510 | ||
13511 | Reviewed by NOBODY (Windows build fixage part I). | |
13512 | ||
13513 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
13514 | ||
13515 | 2009-12-05 Gavin Barraclough <barraclough@apple.com> | |
13516 | ||
13517 | Reviewed by Oliver Hunt. | |
13518 | ||
13519 | https://bugs.webkit.org/show_bug.cgi?id=32184 | |
13520 | Handle out-of-memory conditions with JSC Ropes with a JS exception, rather than crashing. | |
13521 | Switch from using fastMalloc to tryFastMalloc, pass an ExecState to record the exception on. | |
13522 | ||
13523 | * API/JSCallbackObjectFunctions.h: | |
13524 | (JSC::::toString): | |
13525 | * API/JSValueRef.cpp: | |
13526 | (JSValueIsStrictEqual): | |
13527 | * JavaScriptCore.exp: | |
13528 | * bytecompiler/BytecodeGenerator.cpp: | |
13529 | (JSC::BytecodeGenerator::emitEqualityOp): | |
13530 | * debugger/DebuggerCallFrame.cpp: | |
13531 | (JSC::DebuggerCallFrame::functionName): | |
13532 | (JSC::DebuggerCallFrame::calculatedFunctionName): | |
13533 | * interpreter/Interpreter.cpp: | |
13534 | (JSC::Interpreter::callEval): | |
13535 | (JSC::Interpreter::privateExecute): | |
13536 | * jit/JITStubs.cpp: | |
13537 | (JSC::DEFINE_STUB_FUNCTION): | |
13538 | * profiler/ProfileGenerator.cpp: | |
13539 | (JSC::ProfileGenerator::addParentForConsoleStart): | |
13540 | * profiler/Profiler.cpp: | |
13541 | (JSC::Profiler::willExecute): | |
13542 | (JSC::Profiler::didExecute): | |
13543 | (JSC::Profiler::createCallIdentifier): | |
13544 | (JSC::createCallIdentifierFromFunctionImp): | |
13545 | * profiler/Profiler.h: | |
13546 | * runtime/ArrayPrototype.cpp: | |
13547 | (JSC::arrayProtoFuncIndexOf): | |
13548 | (JSC::arrayProtoFuncLastIndexOf): | |
13549 | * runtime/DateConstructor.cpp: | |
13550 | (JSC::constructDate): | |
13551 | * runtime/FunctionPrototype.cpp: | |
13552 | (JSC::functionProtoFuncToString): | |
13553 | * runtime/InternalFunction.cpp: | |
13554 | (JSC::InternalFunction::name): | |
13555 | (JSC::InternalFunction::displayName): | |
13556 | (JSC::InternalFunction::calculatedDisplayName): | |
13557 | * runtime/InternalFunction.h: | |
13558 | * runtime/JSCell.cpp: | |
13559 | (JSC::JSCell::getString): | |
13560 | * runtime/JSCell.h: | |
13561 | (JSC::JSValue::getString): | |
13562 | * runtime/JSONObject.cpp: | |
13563 | (JSC::gap): | |
13564 | (JSC::Stringifier::Stringifier): | |
13565 | (JSC::Stringifier::appendStringifiedValue): | |
13566 | * runtime/JSObject.cpp: | |
13567 | (JSC::JSObject::putDirectFunction): | |
13568 | (JSC::JSObject::putDirectFunctionWithoutTransition): | |
13569 | (JSC::JSObject::defineOwnProperty): | |
13570 | * runtime/JSObject.h: | |
13571 | * runtime/JSPropertyNameIterator.cpp: | |
13572 | (JSC::JSPropertyNameIterator::get): | |
13573 | * runtime/JSString.cpp: | |
13574 | (JSC::JSString::Rope::~Rope): | |
13575 | (JSC::JSString::resolveRope): | |
13576 | (JSC::JSString::getPrimitiveNumber): | |
13577 | (JSC::JSString::toNumber): | |
13578 | (JSC::JSString::toString): | |
13579 | (JSC::JSString::toThisString): | |
13580 | (JSC::JSString::getStringPropertyDescriptor): | |
13581 | * runtime/JSString.h: | |
13582 | (JSC::JSString::Rope::createOrNull): | |
13583 | (JSC::JSString::Rope::operator new): | |
13584 | (JSC::JSString::value): | |
13585 | (JSC::JSString::tryGetValue): | |
13586 | (JSC::JSString::getIndex): | |
13587 | (JSC::JSString::getStringPropertySlot): | |
13588 | (JSC::JSValue::toString): | |
13589 | * runtime/JSValue.h: | |
13590 | * runtime/NativeErrorConstructor.cpp: | |
13591 | (JSC::NativeErrorConstructor::NativeErrorConstructor): | |
13592 | * runtime/Operations.cpp: | |
13593 | (JSC::JSValue::strictEqualSlowCase): | |
13594 | * runtime/Operations.h: | |
13595 | (JSC::JSValue::equalSlowCaseInline): | |
13596 | (JSC::JSValue::strictEqualSlowCaseInline): | |
13597 | (JSC::JSValue::strictEqual): | |
13598 | (JSC::jsLess): | |
13599 | (JSC::jsLessEq): | |
13600 | (JSC::jsAdd): | |
13601 | (JSC::concatenateStrings): | |
13602 | * runtime/PropertyDescriptor.cpp: | |
13603 | (JSC::PropertyDescriptor::equalTo): | |
13604 | * runtime/PropertyDescriptor.h: | |
13605 | * runtime/StringPrototype.cpp: | |
13606 | (JSC::stringProtoFuncReplace): | |
13607 | (JSC::stringProtoFuncToLowerCase): | |
13608 | (JSC::stringProtoFuncToUpperCase): | |
13609 | ||
13610 | 2009-12-07 Nikolas Zimmermann <nzimmermann@rim.com> | |
13611 | ||
13612 | Reviewed by Holger Freyther. | |
13613 | ||
13614 | Turn on (SVG) Filters support, by default. | |
13615 | https://bugs.webkit.org/show_bug.cgi?id=32224 | |
13616 | ||
13617 | * Configurations/FeatureDefines.xcconfig: Enable FILTERS build flag. | |
13618 | ||
13619 | 2009-12-07 Steve Falkenburg <sfalken@apple.com> | |
13620 | ||
13621 | Build fix. Be flexible about which version of ICU is used on Windows. | |
13622 | ||
13623 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: Add optional xcopy commands to copy ICU 4.2. | |
13624 | ||
13625 | 2009-12-07 Maciej Stachowiak <mjs@apple.com> | |
13626 | ||
13627 | Reviewed by Oliver Hunt. | |
13628 | ||
13629 | op_loop_if_less JIT codegen is broken for 64-bit | |
13630 | https://bugs.webkit.org/show_bug.cgi?id=32221 | |
13631 | ||
13632 | * jit/JITOpcodes.cpp: | |
13633 | (JSC::JIT::emit_op_loop_if_false): Fix codegen in this version - test was backwards. | |
13634 | ||
13635 | 2009-12-07 Oliver Hunt <oliver@apple.com> | |
13636 | ||
13637 | Reviewed by Maciej Stachowiak. | |
13638 | ||
13639 | Object.create fails if properties on the descriptor are getters | |
13640 | https://bugs.webkit.org/show_bug.cgi?id=32219 | |
13641 | ||
13642 | Correctly initialise the PropertySlots with the descriptor object. | |
13643 | ||
13644 | * runtime/ObjectConstructor.cpp: | |
13645 | (JSC::toPropertyDescriptor): | |
13646 | ||
13647 | 2009-12-06 Maciej Stachowiak <mjs@apple.com> | |
13648 | ||
13649 | Not reviewed, build fix. | |
13650 | ||
13651 | Actually tested 64-bit *and* 32-bit build this time. | |
13652 | ||
13653 | * jit/JITOpcodes.cpp: | |
13654 | (JSC::JIT::emit_op_loop_if_false): | |
13655 | ||
13656 | 2009-12-06 Maciej Stachowiak <mjs@apple.com> | |
13657 | ||
13658 | Not reviewed, build fix. | |
13659 | ||
13660 | Really really fix 64-bit build for prior patch (actually tested this time). | |
13661 | ||
13662 | * jit/JITOpcodes.cpp: | |
13663 | (JSC::JIT::emit_op_loop_if_false): | |
13664 | (JSC::JIT::emitSlow_op_loop_if_false): | |
13665 | ||
13666 | 2009-12-06 Maciej Stachowiak <mjs@apple.com> | |
13667 | ||
13668 | Not reviewed, build fix. | |
13669 | ||
13670 | Really fix 64-bit build for prior patch. | |
13671 | ||
13672 | * jit/JITArithmetic.cpp: | |
13673 | (JSC::JIT::emitSlow_op_jless): | |
13674 | ||
13675 | 2009-12-06 Maciej Stachowiak <mjs@apple.com> | |
13676 | ||
13677 | Not reviewed, build fix. | |
13678 | ||
13679 | Fix 64-bit build for prior patch. | |
13680 | ||
13681 | * jit/JITOpcodes.cpp: | |
13682 | (JSC::JIT::emitSlow_op_loop_if_less): | |
13683 | ||
13684 | 2009-12-05 Maciej Stachowiak <mjs@apple.com> | |
13685 | ||
13686 | Reviewed by Oliver Hunt. | |
13687 | ||
13688 | conway benchmark spends half it's time in op_less (jump fusion fails) | |
13689 | https://bugs.webkit.org/show_bug.cgi?id=32190 | |
13690 | ||
13691 | <1% speedup on SunSpider and V8 | |
13692 | 2x speedup on "conway" benchmark | |
13693 | ||
13694 | Two optimizations: | |
13695 | 1) Improve codegen for logical operators &&, || and ! in a condition context | |
13696 | ||
13697 | When generating code for combinations of &&, || and !, in a | |
13698 | condition context (i.e. in an if statement or loop condition), we | |
13699 | used to produce a value, and then separately jump based on its | |
13700 | truthiness. Now we pass the false and true targets in, and let the | |
13701 | logical operators generate jumps directly. This helps in four | |
13702 | ways: | |
13703 | ||
13704 | a) Individual clauses of a short-circuit logical operator can now | |
13705 | jump directly to the then or else clause of an if statement (or to | |
13706 | the top or exit of a loop) instead of jumping to a jump. | |
13707 | ||
13708 | b) It used to be that jump fusion with the condition of the first | |
13709 | clause of a logical operator was inhibited, because the register | |
13710 | was ref'd to be used later, in the actual condition jump; this no | |
13711 | longer happens since a jump straight to the final target is | |
13712 | generated directly. | |
13713 | ||
13714 | c) It used to be that jump fusion with the condition of the second | |
13715 | clause of a logical operator was inhibited, because there was a | |
13716 | jump target right after the second clause and before the actual | |
13717 | condition jump. But now it's no longer necessary for the first | |
13718 | clause to jump there so jump fusion is not blocked. | |
13719 | ||
13720 | d) We avoid generating excess mov statements in some cases. | |
13721 | ||
13722 | As a concrete example this source: | |
13723 | ||
13724 | if (!((x < q && y < q) || (t < q && z < q))) { | |
13725 | // ... | |
13726 | } | |
13727 | ||
13728 | Used to generate this bytecode: | |
13729 | ||
13730 | [ 34] less r1, r-15, r-19 | |
13731 | [ 38] jfalse r1, 7(->45) | |
13732 | [ 41] less r1, r-16, r-19 | |
13733 | [ 45] jtrue r1, 14(->59) | |
13734 | [ 48] less r1, r-17, r-19 | |
13735 | [ 52] jfalse r1, 7(->59) | |
13736 | [ 55] less r1, r-18, r-19 | |
13737 | [ 59] jtrue r1, 17(->76) | |
13738 | ||
13739 | And now generates this bytecode (also taking advantage of the second optimization below): | |
13740 | ||
13741 | [ 34] jnless r-15, r-19, 8(->42) | |
13742 | [ 38] jless r-16, r-19, 26(->64) | |
13743 | [ 42] jnless r-17, r-19, 8(->50) | |
13744 | [ 46] jless r-18, r-19, 18(->64) | |
13745 | ||
13746 | Note the jump fusion and the fact that there's less jump | |
13747 | indirection - three of the four jumps go straight to the target | |
13748 | clause instead of indirecting through another jump. | |
13749 | ||
13750 | 2) Implement jless opcode to take advantage of the above, since we'll now often generate | |
13751 | a less followed by a jtrue where fusion is not forbidden. | |
13752 | ||
13753 | * parser/Nodes.h: | |
13754 | (JSC::ExpressionNode::hasConditionContextCodegen): Helper function to determine | |
13755 | whether a node supports special conditional codegen. Return false as this is the default. | |
13756 | (JSC::ExpressionNode::emitBytecodeInConditionContext): Assert not reached - only really | |
13757 | defined for nodes that do have conditional codegen. | |
13758 | (JSC::UnaryOpNode::expr): Add const version. | |
13759 | (JSC::LogicalNotNode::hasConditionContextCodegen): Returne true only if subexpression | |
13760 | supports it. | |
13761 | (JSC::LogicalOpNode::hasConditionContextCodegen): Return true. | |
13762 | * parser/Nodes.cpp: | |
13763 | (JSC::LogicalNotNode::emitBytecodeInConditionContext): Implemented - just swap | |
13764 | the true and false targets for the child node. | |
13765 | (JSC::LogicalOpNode::emitBytecodeInConditionContext): Implemented - handle jumps | |
13766 | directly, improving codegen quality. Also handles further nested conditional codegen. | |
13767 | (JSC::ConditionalNode::emitBytecode): Use condition context codegen when available. | |
13768 | (JSC::IfNode::emitBytecode): ditto | |
13769 | (JSC::IfElseNode::emitBytecode): ditto | |
13770 | (JSC::DoWhileNode::emitBytecode): ditto | |
13771 | (JSC::WhileNode::emitBytecode): ditto | |
13772 | (JSC::ForNode::emitBytecode): ditto | |
13773 | ||
13774 | * bytecode/Opcode.h: | |
13775 | - Added loop_if_false opcode - needed now that falsey jumps can be backwards. | |
13776 | - Added jless opcode to take advantage of new fusion opportunities. | |
13777 | * bytecode/CodeBlock.cpp: | |
13778 | (JSC::CodeBlock::dump): Handle above. | |
13779 | * bytecompiler/BytecodeGenerator.cpp: | |
13780 | (JSC::BytecodeGenerator::emitJumpIfTrue): Add peephole for less + jtrue ==> jless. | |
13781 | (JSC::BytecodeGenerator::emitJumpIfFalse): Add handling of backwrds falsey jumps. | |
13782 | * bytecompiler/BytecodeGenerator.h: | |
13783 | (JSC::BytecodeGenerator::emitNodeInConditionContext): Wrapper to handle tracking of | |
13784 | overly deep expressions etc. | |
13785 | * interpreter/Interpreter.cpp: | |
13786 | (JSC::Interpreter::privateExecute): Implement the two new opcodes (loop_if_false, jless). | |
13787 | * jit/JIT.cpp: | |
13788 | (JSC::JIT::privateCompileMainPass): Implement JIT support for the two new opcodes. | |
13789 | (JSC::JIT::privateCompileSlowCases): ditto | |
13790 | * jit/JIT.h: | |
13791 | * jit/JITArithmetic.cpp: | |
13792 | (JSC::JIT::emit_op_jless): | |
13793 | (JSC::JIT::emitSlow_op_jless): ditto | |
13794 | (JSC::JIT::emitBinaryDoubleOp): ditto | |
13795 | * jit/JITOpcodes.cpp: | |
13796 | (JSC::JIT::emitSlow_op_loop_if_less): ditto | |
13797 | (JSC::JIT::emit_op_loop_if_false): ditto | |
13798 | (JSC::JIT::emitSlow_op_loop_if_false): ditto | |
13799 | * jit/JITStubs.cpp: | |
13800 | * jit/JITStubs.h: | |
13801 | (JSC::): | |
13802 | ||
13803 | 2009-12-04 Kent Hansen <kent.hansen@nokia.com> | |
13804 | ||
13805 | Reviewed by Darin Adler. | |
13806 | ||
13807 | JavaScript delete operator should return false for string properties | |
13808 | https://bugs.webkit.org/show_bug.cgi?id=32012 | |
13809 | ||
13810 | * runtime/StringObject.cpp: | |
13811 | (JSC::StringObject::deleteProperty): | |
13812 | ||
13813 | 2009-12-03 Drew Wilson <atwilson@chromium.org> | |
13814 | ||
13815 | Rolled back r51633 because it causes a perf regression in Chromium. | |
13816 | ||
13817 | * wtf/Platform.h: | |
13818 | ||
13819 | 2009-12-03 Gavin Barraclough <barraclough@apple.com> | |
13820 | ||
13821 | Try and fix the Windows build. | |
13822 | ||
13823 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a symbol that should be exported. | |
13824 | ||
13825 | 2009-12-03 Mark Rowe <mrowe@apple.com> | |
13826 | ||
13827 | Try and fix the Mac build. | |
13828 | ||
13829 | * JavaScriptCore.exp: Export a symbol that should be exported. | |
13830 | ||
13831 | 2009-12-03 Oliver Hunt <oliver@apple.com> | |
13832 | ||
13833 | Reviewed by Gavin Barraclough. | |
13834 | ||
13835 | REGRESSION(4.0.3-48777): Crash in JSC::ExecState::propertyNames() (Debug-only?) | |
13836 | https://bugs.webkit.org/show_bug.cgi?id=32133 | |
13837 | ||
13838 | Work around odd GCC-ism and correct the scopechain for use by | |
13839 | calls made while a cachedcall is active on the callstack. | |
13840 | ||
13841 | * interpreter/CachedCall.h: | |
13842 | (JSC::CachedCall::newCallFrame): | |
13843 | * runtime/JSArray.cpp: | |
13844 | (JSC::AVLTreeAbstractorForArrayCompare::compare_key_key): | |
13845 | * runtime/StringPrototype.cpp: | |
13846 | (JSC::stringProtoFuncReplace): | |
13847 | ||
13848 | 2009-12-03 Gavin Barraclough <barraclough@apple.com> | |
13849 | ||
13850 | Reviewed by Oliver "Brraaaaiiiinnnnnzzzzzzzz" Hunt. | |
13851 | ||
13852 | https://bugs.webkit.org/show_bug.cgi?id=32136 | |
13853 | Add a rope representation to JSString. Presently JSString always holds its data in UString form. | |
13854 | Instead, allow the result of a string concatenation to be represented in a tree form - with a | |
13855 | variable sized, reference-counted rope node retaining a set of UString::Reps (or other rope nopes). | |
13856 | ||
13857 | Strings must still currently be resolved down to a flat UString representation before being used, | |
13858 | but by holding the string in a rope representation during construction we can avoid copying data | |
13859 | until we know the final size of the string. | |
13860 | ||
13861 | ~2% progression on SunSpider (~25% on date-format-xparb, ~20% on string-validate-input). | |
13862 | ||
13863 | * JavaScriptCore.exp: | |
13864 | ||
13865 | - Update exports. | |
13866 | ||
13867 | * interpreter/Interpreter.cpp: | |
13868 | (JSC::Interpreter::privateExecute): | |
13869 | ||
13870 | - Make use of new JSString::length() method to avoid prematurely resolving ropes. | |
13871 | ||
13872 | * jit/JITOpcodes.cpp: | |
13873 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
13874 | ||
13875 | - Switch the string length trampoline to read the length directly from JSString::m_length, | |
13876 | rather than from the JSString's UString::Rep's 'len' property. | |
13877 | ||
13878 | * jit/JITStubs.cpp: | |
13879 | (JSC::DEFINE_STUB_FUNCTION): | |
13880 | ||
13881 | - Modify op_add such that addition of two strings, where either or both strings are already | |
13882 | in rope representation, produces a rope as a result. | |
13883 | ||
13884 | * runtime/JSString.cpp: | |
13885 | (JSC::JSString::Rope::~Rope): | |
13886 | (JSC::copyChars): | |
13887 | (JSC::JSString::resolveRope): | |
13888 | (JSC::JSString::getPrimitiveNumber): | |
13889 | (JSC::JSString::toBoolean): | |
13890 | (JSC::JSString::toNumber): | |
13891 | (JSC::JSString::toString): | |
13892 | (JSC::JSString::toThisString): | |
13893 | (JSC::JSString::getStringPropertyDescriptor): | |
13894 | * runtime/JSString.h: | |
13895 | (JSC::JSString::Rope::Fiber::Fiber): | |
13896 | (JSC::JSString::Rope::Fiber::destroy): | |
13897 | (JSC::JSString::Rope::Fiber::isRope): | |
13898 | (JSC::JSString::Rope::Fiber::rope): | |
13899 | (JSC::JSString::Rope::Fiber::string): | |
13900 | (JSC::JSString::Rope::create): | |
13901 | (JSC::JSString::Rope::initializeFiber): | |
13902 | (JSC::JSString::Rope::ropeLength): | |
13903 | (JSC::JSString::Rope::stringLength): | |
13904 | (JSC::JSString::Rope::fibers): | |
13905 | (JSC::JSString::Rope::Rope): | |
13906 | (JSC::JSString::Rope::operator new): | |
13907 | (JSC::JSString::JSString): | |
13908 | (JSC::JSString::value): | |
13909 | (JSC::JSString::length): | |
13910 | (JSC::JSString::isRope): | |
13911 | (JSC::JSString::rope): | |
13912 | (JSC::JSString::string): | |
13913 | (JSC::JSString::canGetIndex): | |
13914 | (JSC::jsSingleCharacterSubstring): | |
13915 | (JSC::JSString::getIndex): | |
13916 | (JSC::jsSubstring): | |
13917 | (JSC::JSString::getStringPropertySlot): | |
13918 | ||
13919 | - Add rope form. | |
13920 | ||
13921 | * runtime/Operations.h: | |
13922 | (JSC::jsAdd): | |
13923 | (JSC::concatenateStrings): | |
13924 | ||
13925 | - Update string concatenation, and addition of ropes, to produce ropes. | |
13926 | ||
13927 | * runtime/StringObject.cpp: | |
13928 | (JSC::StringObject::getOwnPropertyNames): | |
13929 | ||
13930 | - Make use of new JSString::length() method to avoid prematurely resolving ropes. | |
13931 | ||
13932 | 2009-11-23 Jeremy Moskovich <jeremy@chromium.org> | |
13933 | ||
13934 | Reviewed by Eric Seidel. | |
13935 | ||
13936 | Switch Chrome/Mac to use Core Text APIs rather than ATSUI APIs. | |
13937 | https://bugs.webkit.org/show_bug.cgi?id=31802 | |
13938 | ||
13939 | No test since this is already covered by existing pixel tests. | |
13940 | ||
13941 | * wtf/Platform.h: #define USE_CORE_TEXT for Chrome/Mac. | |
13942 | ||
13943 | 2009-12-02 Oliver Hunt <oliver@apple.com> | |
13944 | ||
13945 | Reviewed by Gavin Barraclough. | |
13946 | ||
13947 | Add files missed in prior patch. | |
13948 | ||
13949 | * runtime/JSZombie.cpp: | |
13950 | (JSC::): | |
13951 | (JSC::JSZombie::leakedZombieStructure): | |
13952 | * runtime/JSZombie.h: Added. | |
13953 | (JSC::JSZombie::JSZombie): | |
13954 | (JSC::JSZombie::isZombie): | |
13955 | (JSC::JSZombie::classInfo): | |
13956 | (JSC::JSZombie::isGetterSetter): | |
13957 | (JSC::JSZombie::isAPIValueWrapper): | |
13958 | (JSC::JSZombie::isPropertyNameIterator): | |
13959 | (JSC::JSZombie::getCallData): | |
13960 | (JSC::JSZombie::getConstructData): | |
13961 | (JSC::JSZombie::getUInt32): | |
13962 | (JSC::JSZombie::toPrimitive): | |
13963 | (JSC::JSZombie::getPrimitiveNumber): | |
13964 | (JSC::JSZombie::toBoolean): | |
13965 | (JSC::JSZombie::toNumber): | |
13966 | (JSC::JSZombie::toString): | |
13967 | (JSC::JSZombie::toObject): | |
13968 | (JSC::JSZombie::markChildren): | |
13969 | (JSC::JSZombie::put): | |
13970 | (JSC::JSZombie::deleteProperty): | |
13971 | (JSC::JSZombie::toThisObject): | |
13972 | (JSC::JSZombie::toThisString): | |
13973 | (JSC::JSZombie::toThisJSString): | |
13974 | (JSC::JSZombie::getJSNumber): | |
13975 | (JSC::JSZombie::getOwnPropertySlot): | |
13976 | ||
13977 | 2009-12-02 Oliver Hunt <oliver@apple.com> | |
13978 | ||
13979 | Reviewed by Gavin Barraclough. | |
13980 | ||
13981 | Add zombies to JSC | |
13982 | https://bugs.webkit.org/show_bug.cgi?id=32103 | |
13983 | ||
13984 | Add a compile time flag to make the JSC collector replace "unreachable" | |
13985 | objects with zombie objects. The zombie object is a JSCell subclass that | |
13986 | ASSERTs on any attempt to use the JSCell methods. In addition there are | |
13987 | a number of additional assertions in bottleneck code to catch zombie usage | |
13988 | as quickly as possible. | |
13989 | ||
13990 | Grrr. Argh. Brains. | |
13991 | ||
13992 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
13993 | * interpreter/Register.h: | |
13994 | (JSC::Register::Register): | |
13995 | * runtime/ArgList.h: | |
13996 | (JSC::MarkedArgumentBuffer::append): | |
13997 | (JSC::ArgList::ArgList): | |
13998 | * runtime/Collector.cpp: | |
13999 | (JSC::Heap::destroy): | |
14000 | (JSC::Heap::sweep): | |
14001 | * runtime/Collector.h: | |
14002 | * runtime/JSCell.h: | |
14003 | (JSC::JSCell::isZombie): | |
14004 | (JSC::JSValue::isZombie): | |
14005 | * runtime/JSValue.h: | |
14006 | (JSC::JSValue::decode): | |
14007 | (JSC::JSValue::JSValue): | |
14008 | * wtf/Platform.h: | |
14009 | ||
14010 | 2009-12-01 Jens Alfke <snej@chromium.org> | |
14011 | ||
14012 | Reviewed by Darin Adler. | |
14013 | ||
14014 | Added variants of find/contains/add that allow a foreign key type to be used. | |
14015 | This will allow AtomicString-keyed maps to be queried by C string without | |
14016 | having to create a temporary AtomicString (see HTTPHeaderMap.) | |
14017 | The code for this is adapted from the equivalent in HashSet.h. | |
14018 | ||
14019 | * wtf/HashMap.h: | |
14020 | (WTF::HashMap::find): | |
14021 | (WTF::HashMap::contains): | |
14022 | (WTF::HashMap::add): | |
14023 | * wtf/HashSet.h: Changed "method" to "function member" in a comment. | |
14024 | ||
14025 | 2009-12-01 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
14026 | ||
14027 | Revert 51551 because it broke GTK+. | |
14028 | ||
14029 | * wtf/Platform.h: | |
14030 | ||
14031 | 2009-11-30 Gavin Barraclough <barraclough@apple.com> | |
14032 | ||
14033 | Windows Build fix. Reviewed by NOBODY. | |
14034 | ||
14035 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
14036 | ||
14037 | 2009-11-24 Gavin Barraclough <barraclough@apple.com> | |
14038 | ||
14039 | Reviewed by Geoff Garen. | |
14040 | ||
14041 | Bug 31859 - Make world selection for JSC IsolatedWorlds automagical. | |
14042 | ||
14043 | WebCore presently has to explicitly specify the world before entering into JSC, | |
14044 | which is a little fragile (particularly since property access via a | |
14045 | getter/setter might invoke execution). Instead derive the current world from | |
14046 | the lexical global object. | |
14047 | ||
14048 | Remove the temporary duct tape of willExecute/didExecute virtual hooks on the JSGlobalData::ClientData - these are no longer necessary. | |
14049 | ||
14050 | * API/JSBase.cpp: | |
14051 | (JSEvaluateScript): | |
14052 | * API/JSObjectRef.cpp: | |
14053 | (JSObjectCallAsFunction): | |
14054 | * JavaScriptCore.exp: | |
14055 | * runtime/JSGlobalData.cpp: | |
14056 | * runtime/JSGlobalData.h: | |
14057 | ||
14058 | 2009-11-30 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14059 | ||
14060 | Reviewed by Kenneth Rohde Christiansen. | |
14061 | ||
14062 | [Qt] Remove obsolete PLATFORM(KDE) code | |
14063 | https://bugs.webkit.org/show_bug.cgi?id=31958 | |
14064 | ||
14065 | KDE is now using unpatched QtWebKit. | |
14066 | ||
14067 | * parser/Lexer.cpp: Remove obsolete KDE_USE_FINAL guard | |
14068 | * wtf/Platform.h: Remove PLATFORM(KDE) definition and code | |
14069 | section that is guarded with it. | |
14070 | ||
14071 | 2009-11-30 Jan-Arve Sæther <jan-arve.saether@nokia.com> | |
14072 | ||
14073 | Reviewed by Simon Hausmann. | |
14074 | ||
14075 | [Qt] Fix compilation with win32-icc | |
14076 | ||
14077 | The Intel compiler does not support the __has_trivial_constructor type | |
14078 | trait. The Intel Compiler can report itself as _MSC_VER >= 1400. The | |
14079 | reason for that is that the Intel Compiler depends on the Microsoft | |
14080 | Platform SDK, and in order to try to be "fully" MS compatible it will | |
14081 | "pretend" to be the same MS compiler as was shipped with the MS PSDK. | |
14082 | (Thus, compiling with win32-icc with VC8 SDK will make the source code | |
14083 | "think" the compiler at hand supports this type trait). | |
14084 | ||
14085 | * wtf/TypeTraits.h: | |
14086 | ||
14087 | 2009-11-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14088 | ||
14089 | Reviewed by Eric Seidel. | |
14090 | ||
14091 | [Qt] Mac build has JIT disabled | |
14092 | https://bugs.webkit.org/show_bug.cgi?id=31828 | |
14093 | ||
14094 | * wtf/Platform.h: Enable JIT for Qt Mac builds | |
14095 | ||
14096 | 2009-11-28 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14097 | ||
14098 | Reviewed by Eric Seidel. | |
14099 | ||
14100 | Apply workaround for the limitation of VirtualFree with MEM_RELEASE to all ports running on Windows | |
14101 | https://bugs.webkit.org/show_bug.cgi?id=31943 | |
14102 | ||
14103 | * runtime/MarkStack.h: | |
14104 | (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
14105 | ||
14106 | 2009-11-28 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
14107 | ||
14108 | Reviewed by Gavin Barraclough. | |
14109 | ||
14110 | https://bugs.webkit.org/show_bug.cgi?id=31930 | |
14111 | ||
14112 | Seems a typo. We don't need ~270k memory to determine the vptrs. | |
14113 | ||
14114 | * runtime/JSGlobalData.cpp: | |
14115 | (JSC::VPtrSet::VPtrSet): | |
14116 | ||
14117 | 2009-11-27 Shinichiro Hamaji <hamaji@chromium.org> | |
14118 | ||
14119 | Unreviewed. | |
14120 | ||
14121 | Move GOwnPtr* from wtf to wtf/gtk | |
14122 | https://bugs.webkit.org/show_bug.cgi?id=31793 | |
14123 | ||
14124 | Build fix for chromium after r51423. | |
14125 | Exclude gtk directory from chromium build. | |
14126 | ||
14127 | * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
14128 | ||
14129 | 2009-11-25 Oliver Hunt <oliver@apple.com> | |
14130 | ||
14131 | Reviewed by Gavin Barraclough. | |
14132 | ||
14133 | Incorrect behaviour of jneq_null in the interpreter | |
14134 | https://bugs.webkit.org/show_bug.cgi?id=31901 | |
14135 | ||
14136 | Correct the logic of jneq_null. This is already covered by existing tests. | |
14137 | ||
14138 | * interpreter/Interpreter.cpp: | |
14139 | (JSC::Interpreter::privateExecute): | |
14140 | ||
14141 | 2009-11-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14142 | ||
14143 | Reviewed by Oliver Hunt. | |
14144 | ||
14145 | Move GOwnPtr* from wtf to wtf/gtk | |
14146 | https://bugs.webkit.org/show_bug.cgi?id=31793 | |
14147 | ||
14148 | * GNUmakefile.am: Change the path for GOwnPtr.*. | |
14149 | * JavaScriptCore.gyp/JavaScriptCore.gyp: Remove | |
14150 | GOwnPtr.cpp from the exclude list. | |
14151 | * JavaScriptCore.gypi: Change the path for GOwnPtr.*. | |
14152 | * wscript: Remove GOwnPtr.cpp from the exclude list. | |
14153 | * wtf/GOwnPtr.cpp: Removed. | |
14154 | * wtf/GOwnPtr.h: Removed. | |
14155 | * wtf/Threading.h: Change the path for GOwnPtr.h. | |
14156 | * wtf/gtk/GOwnPtr.cpp: Copied from JavaScriptCore/wtf/GOwnPtr.cpp. | |
14157 | * wtf/gtk/GOwnPtr.h: Copied from JavaScriptCore/wtf/GOwnPtr.h. | |
14158 | * wtf/unicode/glib/UnicodeGLib.h: Change the path for GOwnPtr.h. | |
14159 | ||
14160 | 2009-11-24 Dmitry Titov <dimich@chromium.org> | |
14161 | ||
14162 | Reviewed by Eric Seidel. | |
14163 | ||
14164 | Add ENABLE_SHARED_SCRIPT feature define and flag for build-webkit | |
14165 | https://bugs.webkit.org/show_bug.cgi?id=31444 | |
14166 | ||
14167 | * Configurations/FeatureDefines.xcconfig: | |
14168 | * wtf/Platform.h: | |
14169 | ||
14170 | 2009-11-24 Chris Marrin <cmarrin@apple.com> | |
14171 | ||
14172 | Reviewed by Simon Fraser. | |
14173 | ||
14174 | Add ability to enable ACCELERATED_COMPOSITING on Windows (currently disabled) | |
14175 | https://bugs.webkit.org/show_bug.cgi?id=27314 | |
14176 | ||
14177 | * wtf/Platform.h: | |
14178 | ||
14179 | 2009-11-24 Jason Smith <dark.panda@gmail.com> | |
14180 | ||
14181 | Reviewed by Alexey Proskuryakov. | |
14182 | ||
14183 | RegExp#exec's returned Array-like object behaves differently from | |
14184 | regular Arrays | |
14185 | https://bugs.webkit.org/show_bug.cgi?id=31689 | |
14186 | ||
14187 | * JavaScriptCore/runtime/RegExpConstructor.cpp: ensure that undefined | |
14188 | values are added to the returned RegExpMatchesArray | |
14189 | ||
14190 | 2009-11-24 Oliver Hunt <oliver@apple.com> | |
14191 | ||
14192 | Reviewed by Alexey Proskuryakov. | |
14193 | ||
14194 | JSON.stringify performance on undefined is very poor | |
14195 | https://bugs.webkit.org/show_bug.cgi?id=31839 | |
14196 | ||
14197 | Switch from a UString to a Vector<UChar> when building | |
14198 | the JSON string, allowing us to safely remove the substr-copy | |
14199 | we otherwise did when unwinding an undefined property. | |
14200 | ||
14201 | Also turns out to be a ~5% speedup on stringification. | |
14202 | ||
14203 | * runtime/JSONObject.cpp: | |
14204 | (JSC::Stringifier::StringBuilder::append): | |
14205 | (JSC::Stringifier::stringify): | |
14206 | (JSC::Stringifier::Holder::appendNextProperty): | |
14207 | ||
14208 | 2009-11-24 Mark Rowe <mrowe@apple.com> | |
14209 | ||
14210 | Fix production builds where the source tree may be read-only. | |
14211 | ||
14212 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
14213 | ||
14214 | 2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14215 | ||
14216 | Reviewed by Kenneth Rohde Christiansen. | |
14217 | ||
14218 | Include "config.h" to meet Coding Style Guidelines | |
14219 | https://bugs.webkit.org/show_bug.cgi?id=31792 | |
14220 | ||
14221 | * wtf/unicode/UTF8.cpp: | |
14222 | * wtf/unicode/glib/UnicodeGLib.cpp: | |
14223 | * wtf/unicode/wince/UnicodeWince.cpp: | |
14224 | ||
14225 | 2009-11-23 Geoffrey Garen <ggaren@apple.com> | |
14226 | ||
14227 | Reviewed by Oliver Hunt. | |
14228 | ||
14229 | Streamlined some Math functions where we expect or know the result not | |
14230 | to be representable as an int. | |
14231 | ||
14232 | SunSpider says 0.6% faster. | |
14233 | ||
14234 | * runtime/JSNumberCell.h: | |
14235 | (JSC::JSValue::JSValue): | |
14236 | * runtime/JSValue.h: | |
14237 | (JSC::JSValue::): | |
14238 | (JSC::jsDoubleNumber): | |
14239 | (JSC::JSValue::JSValue): Added a function for making a numeric JSValue | |
14240 | and skipping the "can I encode this as an int?" check, avoiding the | |
14241 | overhead of int <-> double roundtripping and double <-> double comparison | |
14242 | and branching. | |
14243 | ||
14244 | * runtime/MathObject.cpp: | |
14245 | (JSC::mathProtoFuncACos): | |
14246 | (JSC::mathProtoFuncASin): | |
14247 | (JSC::mathProtoFuncATan): | |
14248 | (JSC::mathProtoFuncATan2): | |
14249 | (JSC::mathProtoFuncCos): | |
14250 | (JSC::mathProtoFuncExp): | |
14251 | (JSC::mathProtoFuncLog): | |
14252 | (JSC::mathProtoFuncRandom): | |
14253 | (JSC::mathProtoFuncSin): | |
14254 | (JSC::mathProtoFuncSqrt): | |
14255 | (JSC::mathProtoFuncTan): For these functions, which we expect or know | |
14256 | to produce results not representable as ints, call jsDoubleNumber instead | |
14257 | of jsNumber. | |
14258 | ||
14259 | 2009-11-23 Mark Rowe <mrowe@apple.com> | |
14260 | ||
14261 | Unreviewed. Unbreak the regression tests after r51329. | |
14262 | ||
14263 | * API/JSBase.cpp: | |
14264 | (JSEvaluateScript): Null-check clientData before dereferencing it. | |
14265 | * API/JSObjectRef.cpp: | |
14266 | (JSObjectCallAsFunction): Ditto. | |
14267 | ||
14268 | 2009-11-23 Gavin Barraclough <barraclough@apple.com> | |
14269 | ||
14270 | Reviewed by Geoff Garen. | |
14271 | ||
14272 | Part 1/3 of <rdar://problem/7377477> REGRESSION: Many web pages fail to render after interesting script runs in isolated world | |
14273 | ||
14274 | Some clients of the JavaScriptCore API expect to be able to make callbacks over the JSC API, | |
14275 | and for this to automagically cause execution to take place in the world associated with the | |
14276 | global object associated with the ExecState (JSContextRef) passed. However this is not how | |
14277 | things work - the world must be explicitly set within WebCore. | |
14278 | ||
14279 | Making this work just for API calls to evaluate & call will be a far from perfect solution, | |
14280 | since direct (non-API) use of JSC still relies on WebCore setting the current world correctly. | |
14281 | A better solution would be to make this all work automagically all throughout WebCore, but this | |
14282 | will require more refactoring. | |
14283 | ||
14284 | Since the API is in JSC but worlds only exist in WebCore, add callbacks on the JSGlobalData::ClientData | |
14285 | to allow it to update the current world on entry/exit via the JSC API. This is temporary duck | |
14286 | tape, and should be removed once the current world no longer needs to be explicitly tracked. | |
14287 | ||
14288 | * API/JSBase.cpp: | |
14289 | (JSEvaluateScript): | |
14290 | * API/JSObjectRef.cpp: | |
14291 | (JSObjectCallAsFunction): | |
14292 | * JavaScriptCore.exp: | |
14293 | * runtime/JSGlobalData.cpp: | |
14294 | (JSC::JSGlobalData::ClientData::beginningExecution): | |
14295 | (JSC::JSGlobalData::ClientData::completedExecution): | |
14296 | * runtime/JSGlobalData.h: | |
14297 | ||
14298 | 2009-11-23 Steve Block <steveblock@google.com> | |
14299 | ||
14300 | Reviewed by Dmitry Titov. | |
14301 | ||
14302 | Adds MainThreadAndroid.cpp with Android-specific WTF threading functions. | |
14303 | https://bugs.webkit.org/show_bug.cgi?id=31807 | |
14304 | ||
14305 | * wtf/android: Added. | |
14306 | * wtf/android/MainThreadAndroid.cpp: Added. | |
14307 | (WTF::timeoutFired): | |
14308 | (WTF::initializeMainThreadPlatform): | |
14309 | (WTF::scheduleDispatchFunctionsOnMainThread): | |
14310 | ||
14311 | 2009-11-23 Alexey Proskuryakov <ap@apple.com> | |
14312 | ||
14313 | Reviewed by Brady Eidson. | |
14314 | ||
14315 | https://bugs.webkit.org/show_bug.cgi?id=31748 | |
14316 | Make WebSocketHandleCFNet respect proxy auto-configuration files via CFProxySupport | |
14317 | ||
14318 | * JavaScriptCore.exp: Export callOnMainThreadAndWait. | |
14319 | ||
14320 | 2009-11-23 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14321 | ||
14322 | Reviewed by Kenneth Rohde Christiansen. | |
14323 | ||
14324 | [Symbian] Fix lastIndexOf() for Symbian | |
14325 | https://bugs.webkit.org/show_bug.cgi?id=31773 | |
14326 | ||
14327 | Symbian soft floating point library has problems with operators | |
14328 | comparing NaN to numbers. Without a workaround lastIndexOf() | |
14329 | function does not work. | |
14330 | ||
14331 | Patch developed by David Leong. | |
14332 | ||
14333 | * runtime/StringPrototype.cpp: | |
14334 | (JSC::stringProtoFuncLastIndexOf):Add an extra test | |
14335 | to check for NaN for Symbian. | |
14336 | ||
14337 | 2009-11-23 Steve Block <steveblock@google.com> | |
14338 | ||
14339 | Reviewed by Eric Seidel. | |
14340 | ||
14341 | Android port lacks implementation of atomicIncrement and atomicDecrement. | |
14342 | https://bugs.webkit.org/show_bug.cgi?id=31715 | |
14343 | ||
14344 | * wtf/Threading.h: Modified. | |
14345 | (WTF::atomicIncrement): Added Android implementation. | |
14346 | (WTF::atomicDecrement): Added Android implementation. | |
14347 | ||
14348 | 2009-11-22 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14349 | ||
14350 | Unreviewed. | |
14351 | ||
14352 | [Qt] Sort source lists and remove obsolete comments | |
14353 | from the build system. | |
14354 | ||
14355 | * JavaScriptCore.pri: | |
14356 | ||
14357 | 2009-11-21 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14358 | ||
14359 | Reviewed by Eric Seidel. | |
14360 | ||
14361 | [Qt][Mac] Turn on multiple JavaScript threads for QtWebkit on Mac | |
14362 | https://bugs.webkit.org/show_bug.cgi?id=31753 | |
14363 | ||
14364 | * wtf/Platform.h: | |
14365 | ||
14366 | 2009-11-19 Steve Block <steveblock@google.com> | |
14367 | ||
14368 | Android port lacks configuration in Platform.h and config.h. | |
14369 | https://bugs.webkit.org/show_bug.cgi?id=31671 | |
14370 | ||
14371 | * wtf/Platform.h: Modified. Added Android-specific configuration. | |
14372 | ||
14373 | 2009-11-19 Alexey Proskuryakov <ap@apple.com> | |
14374 | ||
14375 | Reviewed by Darin Adler. | |
14376 | ||
14377 | https://bugs.webkit.org/show_bug.cgi?id=31690 | |
14378 | Make SocketStreamHandleCFNet work on Windows | |
14379 | ||
14380 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
14381 | * wtf/MainThread.cpp: | |
14382 | (WTF::FunctionWithContext::FunctionWithContext): | |
14383 | (WTF::dispatchFunctionsFromMainThread): | |
14384 | (WTF::callOnMainThreadAndWait): | |
14385 | * wtf/MainThread.h: | |
14386 | Re-add callOnMainThreadAndWait(), which was removed in bug 23926. | |
14387 | ||
14388 | 2009-11-19 Dmitry Titov <dimich@chromium.org> | |
14389 | ||
14390 | Reviewed by David Levin. | |
14391 | ||
14392 | isMainThread() on Chromium (Mac and Linux) is so slow it timeouts LayoutTests.. | |
14393 | https://bugs.webkit.org/show_bug.cgi?id=31693 | |
14394 | ||
14395 | * wtf/ThreadingPthreads.cpp: | |
14396 | (WTF::initializeThreading): grab and use the pthread_t of the main thread instead of ThreadIdentifier. | |
14397 | (WTF::isMainThread): Ditto. | |
14398 | ||
14399 | 2009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14400 | ||
14401 | Reviewed by Darin Adler. | |
14402 | ||
14403 | Remove HAVE(STRING_H) guard from JavaScriptCore | |
14404 | https://bugs.webkit.org/show_bug.cgi?id=31668 | |
14405 | ||
14406 | * config.h: | |
14407 | * runtime/UString.cpp: | |
14408 | ||
14409 | 2009-11-19 Dumitru Daniliuc <dumi@chromium.org> | |
14410 | ||
14411 | Reviewed by Dmitry Titov. | |
14412 | ||
14413 | Fixing a bug in MessageQueue::removeIf() that leads to an | |
14414 | assertion failure. | |
14415 | ||
14416 | https://bugs.webkit.org/show_bug.cgi?id=31657 | |
14417 | ||
14418 | * wtf/MessageQueue.h: | |
14419 | (WTF::MessageQueue::removeIf): | |
14420 | ||
14421 | 2009-11-19 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14422 | ||
14423 | Reviewed by Darin Adler. | |
14424 | ||
14425 | Remove HAVE(FLOAT_H) guard | |
14426 | https://bugs.webkit.org/show_bug.cgi?id=31661 | |
14427 | ||
14428 | JavaScriptCore has a dependency on float.h, there is | |
14429 | no need to guard float.h. | |
14430 | ||
14431 | * runtime/DatePrototype.cpp: Remove include directive | |
14432 | for float.h as it is included in MathExtras.h already. | |
14433 | * runtime/Operations.cpp: Ditto. | |
14434 | * runtime/UString.cpp: Ditto. | |
14435 | * wtf/dtoa.cpp: Ditto. | |
14436 | * wtf/MathExtras.h: Remove HAVE(FLOAT_H) guard. | |
14437 | * wtf/Platform.h: Ditto. | |
14438 | ||
14439 | 2009-11-19 Thiago Macieira <thiago.macieira@nokia.com> | |
14440 | ||
14441 | Reviewed by Simon Hausmann. | |
14442 | ||
14443 | Build fix for 32-bit Sparc machines: these machines are big-endian. | |
14444 | ||
14445 | * wtf/Platform.h: | |
14446 | ||
14447 | 2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14448 | ||
14449 | Reviewed by Kenneth Rohde Christiansen. | |
14450 | ||
14451 | [Qt] Remove support for Qt v4.3 or older versions | |
14452 | https://bugs.webkit.org/show_bug.cgi?id=29469 | |
14453 | ||
14454 | * JavaScriptCore.pro: | |
14455 | * jsc.pro: | |
14456 | * wtf/unicode/qt4/UnicodeQt4.h: | |
14457 | ||
14458 | 2009-11-18 Kent Tamura <tkent@chromium.org> | |
14459 | ||
14460 | Reviewed by Darin Adler. | |
14461 | ||
14462 | Move UString::from(double) implementation to new | |
14463 | WTF::doubleToStringInJavaScriptFormat(), and expose it because WebCore | |
14464 | code will use it. | |
14465 | https://bugs.webkit.org/show_bug.cgi?id=31330 | |
14466 | ||
14467 | - Introduce new function createRep(const char*, unsigned) and | |
14468 | UString::UString(const char*, unsigned) to reduce 2 calls to strlen(). | |
14469 | - Fix a bug that dtoa() doesn't update *rve if the input value is NaN | |
14470 | or Infinity. | |
14471 | ||
14472 | No new tests because this doesn't change the behavior. | |
14473 | ||
14474 | * JavaScriptCore.exp: | |
14475 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
14476 | * runtime/UString.cpp: | |
14477 | (JSC::createRep): | |
14478 | (JSC::UString::UString): | |
14479 | (JSC::UString::from): Move the code to doubleToStringInJavaScriptFormat(). | |
14480 | * runtime/UString.h: | |
14481 | * wtf/dtoa.cpp: | |
14482 | (WTF::dtoa): Fix a bug about rve. | |
14483 | (WTF::append): A helper for doubleToStringInJavaScriptFormat(). | |
14484 | (WTF::doubleToStringInJavaScriptFormat): Move the code from UString::from(double). | |
14485 | * wtf/dtoa.h: | |
14486 | ||
14487 | 2009-11-18 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14488 | ||
14489 | Reviewed by Kenneth Rohde Christiansen. | |
14490 | ||
14491 | [Qt] Remove WTF_USE_JAVASCRIPTCORE_BINDINGS as it is no longer used | |
14492 | https://bugs.webkit.org/show_bug.cgi?id=31643 | |
14493 | ||
14494 | * JavaScriptCore.pro: | |
14495 | ||
14496 | 2009-11-18 Nate Chapin <japhet@chromium.org> | |
14497 | ||
14498 | Reviewed by Darin Fisher. | |
14499 | ||
14500 | Remove Chromium's unnecessary dependency on wtf's tcmalloc files. | |
14501 | ||
14502 | https://bugs.webkit.org/show_bug.cgi?id=31648 | |
14503 | ||
14504 | * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
14505 | ||
14506 | 2009-11-18 Thiago Macieira <thiago.macieira@nokia.com> | |
14507 | ||
14508 | Reviewed by Gavin Barraclough. | |
14509 | ||
14510 | [Qt] Implement symbol hiding for JSC's JIT functions. | |
14511 | ||
14512 | These functions are implemented directly in assembly, so they need the | |
14513 | proper directives to enable/disable visibility. On ELF systems, it's | |
14514 | .hidden, whereas on Mach-O systems (Mac) it's .private_extern. On | |
14515 | Windows, it's not necessary since you have to explicitly export. I | |
14516 | also implemented the AIX idiom, though it's unlikely anyone will | |
14517 | implement AIX/POWER JIT. | |
14518 | https://bugs.webkit.org/show_bug.cgi?id=30864 | |
14519 | ||
14520 | * jit/JITStubs.cpp: | |
14521 | ||
14522 | 2009-11-18 Oliver Hunt <oliver@apple.com> | |
14523 | ||
14524 | Reviewed by Alexey Proskuryakov. | |
14525 | ||
14526 | Interpreter may do an out of range access when throwing an exception in the profiler. | |
14527 | https://bugs.webkit.org/show_bug.cgi?id=31635 | |
14528 | ||
14529 | Add bounds check. | |
14530 | ||
14531 | * interpreter/Interpreter.cpp: | |
14532 | (JSC::Interpreter::throwException): | |
14533 | ||
14534 | 2009-11-18 Gabor Loki <loki@inf.u-szeged.hu> | |
14535 | ||
14536 | Reviewed by Darin Adler. | |
14537 | ||
14538 | Fix the clobber list of cacheFlush for ARM and Thumb2 on Linux | |
14539 | https://bugs.webkit.org/show_bug.cgi?id=31631 | |
14540 | ||
14541 | * jit/ExecutableAllocator.h: | |
14542 | (JSC::ExecutableAllocator::cacheFlush): | |
14543 | ||
14544 | 2009-11-18 Harald Fernengel <harald.fernengel@nokia.com> | |
14545 | ||
14546 | Reviewed by Simon Hausmann. | |
14547 | ||
14548 | [Qt] Fix detection of linux-g++ | |
14549 | ||
14550 | Never use "linux-g++*" to check for linux-g++, since this will break embedded | |
14551 | builds which use linux-arm-g++ and friends. Use 'linux*-g++*' to check for any | |
14552 | g++ on linux mkspec. | |
14553 | ||
14554 | * JavaScriptCore.pri: | |
14555 | ||
14556 | 2009-11-17 Jon Honeycutt <jhoneycutt@apple.com> | |
14557 | ||
14558 | Add JSContextRefPrivate.h to list of copied files. | |
14559 | ||
14560 | Reviewed by Mark Rowe. | |
14561 | ||
14562 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: | |
14563 | ||
14564 | 2009-11-17 Martin Robinson <martin.james.robinson@gmail.com> | |
14565 | ||
14566 | Reviewed by Adam Barth. | |
14567 | ||
14568 | [GTK] Style cleanup for GOwnPtr | |
14569 | https://bugs.webkit.org/show_bug.cgi?id=31506 | |
14570 | ||
14571 | Remove forward declaration in GOwnPtr and do some style cleanup. | |
14572 | ||
14573 | * wtf/GOwnPtr.cpp: | |
14574 | * wtf/GOwnPtr.h: | |
14575 | (WTF::GOwnPtr::GOwnPtr): | |
14576 | (WTF::GOwnPtr::~GOwnPtr): | |
14577 | (WTF::GOwnPtr::get): | |
14578 | (WTF::GOwnPtr::release): | |
14579 | (WTF::GOwnPtr::outPtr): | |
14580 | (WTF::GOwnPtr::set): | |
14581 | (WTF::GOwnPtr::clear): | |
14582 | (WTF::GOwnPtr::operator*): | |
14583 | (WTF::GOwnPtr::operator->): | |
14584 | (WTF::GOwnPtr::operator!): | |
14585 | (WTF::GOwnPtr::operator UnspecifiedBoolType): | |
14586 | (WTF::GOwnPtr::swap): | |
14587 | (WTF::swap): | |
14588 | (WTF::operator==): | |
14589 | (WTF::operator!=): | |
14590 | (WTF::getPtr): | |
14591 | (WTF::freeOwnedGPtr): | |
14592 | ||
14593 | 2009-11-17 Oliver Hunt <oliver@apple.com> | |
14594 | ||
14595 | Reviewed by Maciej Stachowiak. | |
14596 | ||
14597 | Incorrect use of JavaScriptCore API in DumpRenderTree | |
14598 | https://bugs.webkit.org/show_bug.cgi?id=31577 | |
14599 | ||
14600 | Add assertions to the 'toJS' functions to catch mistakes like | |
14601 | this early. Restructure existing code which blindly passed potentially | |
14602 | null values to toJS when forwarding exceptions so that a null check is | |
14603 | performed first. | |
14604 | ||
14605 | * API/APICast.h: | |
14606 | (toJS): | |
14607 | (toJSForGC): | |
14608 | * API/JSCallbackObjectFunctions.h: | |
14609 | (JSC::::getOwnPropertySlot): | |
14610 | (JSC::::put): | |
14611 | (JSC::::deleteProperty): | |
14612 | (JSC::::construct): | |
14613 | (JSC::::hasInstance): | |
14614 | (JSC::::call): | |
14615 | (JSC::::toNumber): | |
14616 | (JSC::::toString): | |
14617 | (JSC::::staticValueGetter): | |
14618 | (JSC::::callbackGetter): | |
14619 | * API/tests/testapi.c: Fix errors in the API tester. | |
14620 | (MyObject_getProperty): | |
14621 | (MyObject_convertToType): | |
14622 | (EvilExceptionObject_convertToType): | |
14623 | ||
14624 | 2009-11-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
14625 | ||
14626 | Reviewed by Gavin Barraclough. | |
14627 | ||
14628 | https://bugs.webkit.org/show_bug.cgi?id=31050 | |
14629 | ||
14630 | Minor fixes for JSVALUE32_64: branchConvertDoubleToInt32 | |
14631 | failed on a CortexA8 CPU, but not on a simulator; and | |
14632 | JITCall.cpp modifications was somehow not committed to mainline. | |
14633 | ||
14634 | * assembler/ARMAssembler.h: | |
14635 | (JSC::ARMAssembler::fmrs_r): | |
14636 | * assembler/MacroAssemblerARM.h: | |
14637 | (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): | |
14638 | * jit/JITCall.cpp: | |
14639 | (JSC::JIT::compileOpCall): | |
14640 | ||
14641 | 2009-11-16 Joerg Bornemann <joerg.bornemann@trolltech.com> | |
14642 | ||
14643 | Reviewed by Simon Hausmann. | |
14644 | ||
14645 | Fix Qt build on Windows CE 6. | |
14646 | ||
14647 | * JavaScriptCore.pri: Add missing include path. | |
14648 | * wtf/Platform.h: Include ce_time.h for Windows CE 6. | |
14649 | ||
14650 | 2009-11-13 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
14651 | ||
14652 | Reviewed by Gavin Barraclough. | |
14653 | ||
14654 | https://bugs.webkit.org/show_bug.cgi?id=31050 | |
14655 | ||
14656 | Adding optimization support for mode JSVALUE32_64 | |
14657 | on ARM systems. | |
14658 | ||
14659 | * jit/JIT.h: | |
14660 | * jit/JITCall.cpp: | |
14661 | (JSC::JIT::compileOpCall): | |
14662 | * jit/JITPropertyAccess.cpp: | |
14663 | (JSC::JIT::emit_op_method_check): | |
14664 | (JSC::JIT::compileGetByIdHotPath): | |
14665 | (JSC::JIT::compileGetByIdSlowCase): | |
14666 | (JSC::JIT::emit_op_put_by_id): | |
14667 | ||
14668 | 2009-11-14 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
14669 | ||
14670 | Reviewed by Gavin Barraclough. | |
14671 | ||
14672 | https://bugs.webkit.org/show_bug.cgi?id=31050 | |
14673 | ||
14674 | Adding JSVALUE32_64 support for ARM (but not turning it | |
14675 | on by default). All optimizations must be disabled, since | |
14676 | this patch is only the first of a series of patches. | |
14677 | ||
14678 | During the work, a lot of x86 specific code revealed and | |
14679 | made platform independent. | |
14680 | See revisions: 50531 50541 50593 50594 50595 | |
14681 | ||
14682 | * assembler/ARMAssembler.h: | |
14683 | (JSC::ARMAssembler::): | |
14684 | (JSC::ARMAssembler::fdivd_r): | |
14685 | * assembler/MacroAssemblerARM.h: | |
14686 | (JSC::MacroAssemblerARM::lshift32): | |
14687 | (JSC::MacroAssemblerARM::neg32): | |
14688 | (JSC::MacroAssemblerARM::rshift32): | |
14689 | (JSC::MacroAssemblerARM::branchOr32): | |
14690 | (JSC::MacroAssemblerARM::set8): | |
14691 | (JSC::MacroAssemblerARM::setTest8): | |
14692 | (JSC::MacroAssemblerARM::loadDouble): | |
14693 | (JSC::MacroAssemblerARM::divDouble): | |
14694 | (JSC::MacroAssemblerARM::convertInt32ToDouble): | |
14695 | (JSC::MacroAssemblerARM::zeroDouble): | |
14696 | * jit/JIT.cpp: | |
14697 | * jit/JIT.h: | |
14698 | * jit/JITOpcodes.cpp: | |
14699 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
14700 | * jit/JITStubs.cpp: | |
14701 | * wtf/StdLibExtras.h: | |
14702 | ||
14703 | 2009-11-13 Dominik Röttsches <dominik.roettsches@access-company.com> | |
14704 | ||
14705 | Reviewed by Eric Seidel. | |
14706 | ||
14707 | Unify TextBoundaries implementations by only relying on WTF Unicode abstractions | |
14708 | https://bugs.webkit.org/show_bug.cgi?id=31468 | |
14709 | ||
14710 | Adding isAlphanumeric abstraction, required | |
14711 | by TextBoundaries.cpp. | |
14712 | ||
14713 | * wtf/unicode/glib/UnicodeGLib.h: | |
14714 | (WTF::Unicode::isAlphanumeric): | |
14715 | * wtf/unicode/icu/UnicodeIcu.h: | |
14716 | (WTF::Unicode::isAlphanumeric): | |
14717 | ||
14718 | 2009-11-13 Norbert Leser <norbert.leser&nokia.com> | |
14719 | ||
14720 | Reviewed by Eric Seidel. | |
14721 | ||
14722 | Added macros for USERINCLUDE paths within symbian blocks | |
14723 | to guarantee inclusion of respective header files from local path | |
14724 | first (to avoid clashes with same names of header files in system include path). | |
14725 | ||
14726 | * JavaScriptCore.pri: | |
14727 | ||
14728 | 2009-11-13 Oliver Hunt <oliver@apple.com> | |
14729 | ||
14730 | Reviewed by Geoff Garen. | |
14731 | ||
14732 | JSValueProtect and JSValueUnprotect don't protect API wrapper values | |
14733 | https://bugs.webkit.org/show_bug.cgi?id=31485 | |
14734 | ||
14735 | Make JSValueProtect/Unprotect use a new 'toJS' function, 'toJSForGC' that | |
14736 | does not attempt to to strip out API wrapper objects. | |
14737 | ||
14738 | * API/APICast.h: | |
14739 | (toJSForGC): | |
14740 | * API/JSValueRef.cpp: | |
14741 | (JSValueProtect): | |
14742 | (JSValueUnprotect): | |
14743 | * API/tests/testapi.c: | |
14744 | (makeGlobalNumberValue): | |
14745 | (main): | |
14746 | ||
14747 | 2009-11-13 İsmail Dönmez <ismail@namtrac.org> | |
14748 | ||
14749 | Reviewed by Antti Koivisto. | |
14750 | ||
14751 | Fix typo, ce_time.cpp should be ce_time.c | |
14752 | ||
14753 | * JavaScriptCore.pri: | |
14754 | ||
14755 | 2009-11-12 Steve VanDeBogart <vandebo@chromium.org> | |
14756 | ||
14757 | Reviewed by Adam Barth. | |
14758 | ||
14759 | Calculate the time offset only if we were able to parse | |
14760 | the date string. This saves an IPC in Chromium for | |
14761 | invalid date strings. | |
14762 | https://bugs.webkit.org/show_bug.cgi?id=31416 | |
14763 | ||
14764 | * wtf/DateMath.cpp: | |
14765 | (WTF::parseDateFromNullTerminatedCharacters): | |
14766 | (JSC::parseDateFromNullTerminatedCharacters): | |
14767 | ||
14768 | 2009-11-12 Oliver Hunt <oliver@apple.com> | |
14769 | ||
14770 | Rollout r50896 until i can work out why it causes failures. | |
14771 | ||
14772 | * bytecompiler/BytecodeGenerator.cpp: | |
14773 | (JSC::BytecodeGenerator::emitReturn): | |
14774 | * interpreter/Interpreter.cpp: | |
14775 | (JSC::Interpreter::execute): | |
14776 | * parser/Nodes.cpp: | |
14777 | (JSC::EvalNode::emitBytecode): | |
14778 | ||
14779 | 2009-11-12 Steve Falkenburg <sfalken@apple.com> | |
14780 | ||
14781 | Reviewed by Stephanie Lewis. | |
14782 | ||
14783 | Remove LIBRARY directive from def file to fix Debug_All target. | |
14784 | ||
14785 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
14786 | ||
14787 | 2009-11-12 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
14788 | ||
14789 | Rubber-stamped by Holger Freyther. | |
14790 | ||
14791 | Revert r50204, since it makes DRT crash on 32 bits release builds | |
14792 | for GTK+. | |
14793 | ||
14794 | * wtf/FastMalloc.h: | |
14795 | ||
14796 | 2009-11-12 Oliver Hunt <oliver@apple.com> | |
14797 | ||
14798 | Reviewed by Gavin Barraclough. | |
14799 | ||
14800 | Start unifying entry logic for function and eval code. | |
14801 | ||
14802 | Eval now uses a ret instruction to end execution, and sets up | |
14803 | a callframe more in line with what we do for function entry. | |
14804 | ||
14805 | * bytecompiler/BytecodeGenerator.cpp: | |
14806 | (JSC::BytecodeGenerator::emitReturn): | |
14807 | * interpreter/Interpreter.cpp: | |
14808 | (JSC::Interpreter::execute): | |
14809 | * parser/Nodes.cpp: | |
14810 | (JSC::EvalNode::emitBytecode): | |
14811 | ||
14812 | 2009-11-12 Richard Moe Gustavsen <richard.gustavsen@nokia.com> | |
14813 | ||
14814 | Reviewed by Kenneth Rohde Christiansen. | |
14815 | ||
14816 | [Qt] Disable pthread_setname_np. | |
14817 | ||
14818 | This allows Qt builds on Mac from 10.6 to run on earlier version | |
14819 | where this symbol is not present. | |
14820 | https://bugs.webkit.org/show_bug.cgi?id=31403 | |
14821 | ||
14822 | * wtf/Platform.h: | |
14823 | ||
14824 | 2009-11-12 Thiago Macieira <thiago.macieira@nokia.com> | |
14825 | ||
14826 | Reviewed by Kenneth Rohde Christiansen. | |
14827 | ||
14828 | [Qt] Fix linking on Linux 32-bit. | |
14829 | ||
14830 | It was missing the ".text" directive at the top of the file, | |
14831 | indicating that code would follow. Without it, the assembler created | |
14832 | "NOTYPE" symbols, which would result in linker errors. | |
14833 | https://bugs.webkit.org/show_bug.cgi?id=30863 | |
14834 | ||
14835 | * jit/JITStubs.cpp: | |
14836 | ||
14837 | 2009-11-11 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
14838 | ||
14839 | Reviewed by Alexey Proskuryakov. | |
14840 | ||
14841 | Refactor multiple JavaScriptCore threads | |
14842 | https://bugs.webkit.org/show_bug.cgi?id=31328 | |
14843 | ||
14844 | Remove the id field from the PlatformThread structure | |
14845 | as it is not used. | |
14846 | ||
14847 | * runtime/Collector.cpp: | |
14848 | (JSC::getCurrentPlatformThread): | |
14849 | (JSC::suspendThread): | |
14850 | (JSC::resumeThread): | |
14851 | (JSC::getPlatformThreadRegisters): | |
14852 | ||
14853 | 2009-11-10 Geoffrey Garen <ggaren@apple.com> | |
14854 | ||
14855 | Linux build fix: Added an #include for UINT_MAX. | |
14856 | ||
14857 | * runtime/WeakRandom.h: | |
14858 | ||
14859 | 2009-11-10 Geoffrey Garen <ggaren@apple.com> | |
14860 | ||
14861 | JavaScriptGlue build fix: Marked a file 'private' instead of 'project'. | |
14862 | ||
14863 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
14864 | ||
14865 | 2009-11-10 Geoffrey Garen <ggaren@apple.com> | |
14866 | ||
14867 | Reviewed by Gavin "avGni arBalroguch" Barraclough. | |
14868 | ||
14869 | Faster Math.random, based on GameRand. | |
14870 | ||
14871 | SunSpider says 1.4% faster. | |
14872 | ||
14873 | * GNUmakefile.am: | |
14874 | * JavaScriptCore.gypi: | |
14875 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
14876 | * JavaScriptCore.xcodeproj/project.pbxproj: Added the header to the project. | |
14877 | ||
14878 | * runtime/JSGlobalData.cpp: | |
14879 | (JSC::JSGlobalData::JSGlobalData): | |
14880 | * runtime/JSGlobalData.h: Use an object to track random number generation | |
14881 | state, initialized to the current time. | |
14882 | ||
14883 | * runtime/MathObject.cpp: | |
14884 | (JSC::MathObject::MathObject): | |
14885 | (JSC::mathProtoFuncRandom): Use the new hotness. | |
14886 | ||
14887 | * runtime/WeakRandom.h: Added. | |
14888 | (JSC::WeakRandom::WeakRandom): | |
14889 | (JSC::WeakRandom::get): | |
14890 | (JSC::WeakRandom::advance): The new hotness. | |
14891 | ||
14892 | 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
14893 | ||
14894 | Reviewed by Oliver Hunt. | |
14895 | ||
14896 | Imported the v8 DST cache. | |
14897 | ||
14898 | SunSpider says 1.5% faster. | |
14899 | ||
14900 | * runtime/JSGlobalData.cpp: | |
14901 | (JSC::JSGlobalData::resetDateCache): Reset the DST cache when resetting | |
14902 | other date data. | |
14903 | ||
14904 | * runtime/JSGlobalData.h: | |
14905 | (JSC::DSTOffsetCache::DSTOffsetCache): | |
14906 | (JSC::DSTOffsetCache::reset): Added a struct for the DST cache. | |
14907 | ||
14908 | * wtf/DateMath.cpp: | |
14909 | (WTF::calculateDSTOffsetSimple): | |
14910 | (WTF::calculateDSTOffset): | |
14911 | (WTF::parseDateFromNullTerminatedCharacters): | |
14912 | (JSC::getDSTOffset): | |
14913 | (JSC::gregorianDateTimeToMS): | |
14914 | (JSC::msToGregorianDateTime): | |
14915 | (JSC::parseDateFromNullTerminatedCharacters): | |
14916 | * wtf/DateMath.h: The imported code for probing and updating the cache. | |
14917 | ||
14918 | 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
14919 | ||
14920 | Reviewed by Oliver Hunt. | |
14921 | ||
14922 | Fixed an edge case that could cause the engine not to notice a timezone | |
14923 | change. | |
14924 | ||
14925 | No test because this case would require manual intervention to change | |
14926 | the timezone during the test. | |
14927 | ||
14928 | SunSpider reports no change. | |
14929 | ||
14930 | * runtime/DateInstanceCache.h: | |
14931 | (JSC::DateInstanceCache::DateInstanceCache): | |
14932 | (JSC::DateInstanceCache::reset): Added a helper function for resetting | |
14933 | this cache. Also, shrank the cache, since we'll be resetting it often. | |
14934 | ||
14935 | * runtime/JSGlobalData.cpp: | |
14936 | (JSC::JSGlobalData::resetDateCache): Include resetting the DateInstanceCache | |
14937 | in resetting Date data. (Otherwise, a cache hit could bypass a necessary | |
14938 | timezone update check.) | |
14939 | ||
14940 | 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
14941 | ||
14942 | Reviewed by Sam Weinig. | |
14943 | ||
14944 | Some manual inlining and constant propogation in Date code. | |
14945 | ||
14946 | SunSpider reports a 0.4% speedup on date-*, no overall speedup. Shark | |
14947 | says some previously evident stalls are now gone. | |
14948 | ||
14949 | * runtime/DateConstructor.cpp: | |
14950 | (JSC::callDate): | |
14951 | * runtime/DateConversion.cpp: | |
14952 | (JSC::formatTime): | |
14953 | (JSC::formatTimeUTC): Split formatTime into UTC and non-UTC variants. | |
14954 | ||
14955 | * runtime/DateConversion.h: | |
14956 | * runtime/DateInstance.cpp: | |
14957 | (JSC::DateInstance::calculateGregorianDateTime): | |
14958 | (JSC::DateInstance::calculateGregorianDateTimeUTC): | |
14959 | * runtime/DateInstance.h: | |
14960 | (JSC::DateInstance::gregorianDateTime): | |
14961 | (JSC::DateInstance::gregorianDateTimeUTC): Split gregorianDateTime into | |
14962 | a UTC and non-UTC variant, and split each variant into a fast inline | |
14963 | case and a slow out-of-line case. | |
14964 | ||
14965 | * runtime/DatePrototype.cpp: | |
14966 | (JSC::formatLocaleDate): | |
14967 | (JSC::dateProtoFuncToString): | |
14968 | (JSC::dateProtoFuncToUTCString): | |
14969 | (JSC::dateProtoFuncToISOString): | |
14970 | (JSC::dateProtoFuncToDateString): | |
14971 | (JSC::dateProtoFuncToTimeString): | |
14972 | (JSC::dateProtoFuncGetFullYear): | |
14973 | (JSC::dateProtoFuncGetUTCFullYear): | |
14974 | (JSC::dateProtoFuncToGMTString): | |
14975 | (JSC::dateProtoFuncGetMonth): | |
14976 | (JSC::dateProtoFuncGetUTCMonth): | |
14977 | (JSC::dateProtoFuncGetDate): | |
14978 | (JSC::dateProtoFuncGetUTCDate): | |
14979 | (JSC::dateProtoFuncGetDay): | |
14980 | (JSC::dateProtoFuncGetUTCDay): | |
14981 | (JSC::dateProtoFuncGetHours): | |
14982 | (JSC::dateProtoFuncGetUTCHours): | |
14983 | (JSC::dateProtoFuncGetMinutes): | |
14984 | (JSC::dateProtoFuncGetUTCMinutes): | |
14985 | (JSC::dateProtoFuncGetSeconds): | |
14986 | (JSC::dateProtoFuncGetUTCSeconds): | |
14987 | (JSC::dateProtoFuncGetTimezoneOffset): | |
14988 | (JSC::setNewValueFromTimeArgs): | |
14989 | (JSC::setNewValueFromDateArgs): | |
14990 | (JSC::dateProtoFuncSetYear): | |
14991 | (JSC::dateProtoFuncGetYear): Updated for the gregorianDateTime change above. | |
14992 | ||
14993 | 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
14994 | ||
14995 | Build fix: export a new symbol. | |
14996 | ||
14997 | * JavaScriptCore.exp: | |
14998 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
14999 | ||
15000 | 2009-11-09 Geoffrey Garen <ggaren@apple.com> | |
15001 | ||
15002 | Reviewed by Sam "Home Wrecker" Weinig. | |
15003 | ||
15004 | Added a tiny cache for Date parsing. | |
15005 | ||
15006 | SunSpider says 1.2% faster. | |
15007 | ||
15008 | * runtime/DateConversion.cpp: | |
15009 | (JSC::parseDate): Try to reuse the last parsed Date, if present. | |
15010 | ||
15011 | * runtime/JSGlobalData.cpp: | |
15012 | (JSC::JSGlobalData::resetDateCache): | |
15013 | * runtime/JSGlobalData.h: Added storage for last parsed Date. Refactored | |
15014 | this code to make resetting the date cache easier. | |
15015 | ||
15016 | * runtime/JSGlobalObject.h: | |
15017 | (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Updated for | |
15018 | refactoring. | |
15019 | ||
15020 | * wtf/DateMath.cpp: | |
15021 | (JSC::parseDateFromNullTerminatedCharacters): | |
15022 | * wtf/DateMath.h: Changed ExecState to be first parameter, as is the JSC custom. | |
15023 | ||
15024 | 2009-11-09 Oliver Hunt <oliver@apple.com> | |
15025 | ||
15026 | Reviewed by Gavin Barraclough. | |
15027 | ||
15028 | Can cache prototype lookups on uncacheable dictionaries. | |
15029 | https://bugs.webkit.org/show_bug.cgi?id=31198 | |
15030 | ||
15031 | Replace fromDictionaryTransition with flattenDictionaryObject and | |
15032 | flattenDictionaryStructure. This change is necessary as we need to | |
15033 | guarantee that our attempt to convert away from a dictionary structure | |
15034 | will definitely succeed, and in some cases this requires mutating the | |
15035 | object storage itself. | |
15036 | ||
15037 | * interpreter/Interpreter.cpp: | |
15038 | (JSC::Interpreter::tryCacheGetByID): | |
15039 | * jit/JITStubs.cpp: | |
15040 | (JSC::JITThunks::tryCacheGetByID): | |
15041 | (JSC::DEFINE_STUB_FUNCTION): | |
15042 | * runtime/BatchedTransitionOptimizer.h: | |
15043 | (JSC::BatchedTransitionOptimizer::~BatchedTransitionOptimizer): | |
15044 | * runtime/JSObject.h: | |
15045 | (JSC::JSObject::flattenDictionaryObject): | |
15046 | * runtime/Operations.h: | |
15047 | (JSC::normalizePrototypeChain): | |
15048 | * runtime/Structure.cpp: | |
15049 | (JSC::Structure::flattenDictionaryStructure): | |
15050 | (JSC::comparePropertyMapEntryIndices): | |
15051 | * runtime/Structure.h: | |
15052 | ||
15053 | 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
15054 | ||
15055 | Not reviewed, build fix. | |
15056 | ||
15057 | Remove extra character from r50701. | |
15058 | ||
15059 | * JavaScriptCore.pri: | |
15060 | ||
15061 | 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
15062 | ||
15063 | Not reviewed, build fix. | |
15064 | ||
15065 | Revert r50695 because it broke QtWebKit (clean builds). | |
15066 | ||
15067 | * JavaScriptCore.pri: | |
15068 | ||
15069 | 2009-11-09 Norbert Leser <norbert.leser@nokia.com> | |
15070 | ||
15071 | Reviewed by Kenneth Rohde Christiansen. | |
15072 | ||
15073 | Prepended $$PWD to GENERATED_SOURCES_DIR to avoid potential ambiguities when included from WebCore.pro. | |
15074 | Some preprocessors consider this GENERATED_SOURCES_DIR relative to current invoking dir (e.g., ./WebCore), | |
15075 | and not the working dir of JavaCriptCore.pri (i.e., ../JavaScriptCore/). | |
15076 | ||
15077 | * JavaScriptCore.pri: | |
15078 | ||
15079 | 2009-11-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
15080 | ||
15081 | Reviewed by Kenneth Rohde Christiansen. | |
15082 | ||
15083 | Use explicit parentheses to silence gcc 4.4 -Wparentheses warnings | |
15084 | https://bugs.webkit.org/show_bug.cgi?id=31040 | |
15085 | ||
15086 | * interpreter/Interpreter.cpp: | |
15087 | (JSC::Interpreter::privateExecute): | |
15088 | ||
15089 | 2009-11-08 David Levin <levin@chromium.org> | |
15090 | ||
15091 | Reviewed by NOBODY (speculative snow leopard and windows build fixes). | |
15092 | ||
15093 | * wtf/DateMath.cpp: | |
15094 | (WTF::parseDateFromNullTerminatedCharacters): | |
15095 | (JSC::gregorianDateTimeToMS): | |
15096 | (JSC::msToGregorianDateTime): | |
15097 | (JSC::parseDateFromNullTerminatedCharacters): | |
15098 | * wtf/DateMath.h: | |
15099 | (JSC::GregorianDateTime::GregorianDateTime): | |
15100 | ||
15101 | 2009-11-08 David Levin <levin@chromium.org> | |
15102 | ||
15103 | Reviewed by NOBODY (chromium build fix). | |
15104 | ||
15105 | Hopefully, the last build fix. | |
15106 | ||
15107 | Create better separation in DateMath about the JSC | |
15108 | and non-JSC portions. Also, only expose the non-JSC | |
15109 | version in the exports. | |
15110 | ||
15111 | * JavaScriptCore.exp: | |
15112 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
15113 | * wtf/DateMath.cpp: | |
15114 | (WTF::parseDateFromNullTerminatedCharacters): | |
15115 | (JSC::getUTCOffset): | |
15116 | (JSC::gregorianDateTimeToMS): | |
15117 | (JSC::msToGregorianDateTime): | |
15118 | (JSC::parseDateFromNullTerminatedCharacters): | |
15119 | * wtf/DateMath.h: | |
15120 | (JSC::gmtoffset): | |
15121 | ||
15122 | 2009-11-08 David Levin <levin@chromium.org> | |
15123 | ||
15124 | Reviewed by NOBODY (chromium build fix). | |
15125 | ||
15126 | For the change in DateMath. | |
15127 | ||
15128 | * config.h: | |
15129 | * wtf/DateMath.cpp: | |
15130 | ||
15131 | 2009-11-06 Geoffrey Garen <ggaren@apple.com> | |
15132 | ||
15133 | Windows build fix: export some symbols. | |
15134 | ||
15135 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
15136 | ||
15137 | 2009-11-06 Geoffrey Garen <ggaren@apple.com> | |
15138 | ||
15139 | Build fix: updated export file. | |
15140 | ||
15141 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
15142 | ||
15143 | 2009-11-06 Geoffrey Garen <ggaren@apple.com> | |
15144 | ||
15145 | Build fix: added some #includes. | |
15146 | ||
15147 | * wtf/CurrentTime.h: | |
15148 | * wtf/DateMath.h: | |
15149 | ||
15150 | 2009-11-06 Geoffrey Garen <ggaren@apple.com> | |
15151 | ||
15152 | Reviewed by Oliver Hunt. | |
15153 | ||
15154 | https://bugs.webkit.org/show_bug.cgi?id=31197 | |
15155 | Implemented a timezone cache not based on Mac OS X's notify_check API. | |
15156 | ||
15157 | If the VM calculates the local timezone offset from UTC, it caches the | |
15158 | result until the end of the current VM invocation. (We don't want to cache | |
15159 | forever, because the user's timezone may change over time.) | |
15160 | ||
15161 | This removes notify_* overhead on Mac, and, more significantly, removes | |
15162 | OS time and date call overhead on non-Mac platforms. | |
15163 | ||
15164 | ~8% speedup on Date microbenchmark on Mac. SunSpider reports maybe a tiny | |
15165 | speedup on Mac. (Speedup on non-Mac platforms should be even more noticeable.) | |
15166 | ||
15167 | * JavaScriptCore.exp: | |
15168 | ||
15169 | * interpreter/CachedCall.h: | |
15170 | (JSC::CachedCall::CachedCall): | |
15171 | * interpreter/Interpreter.cpp: | |
15172 | (JSC::Interpreter::execute): | |
15173 | * runtime/JSGlobalObject.h: | |
15174 | (JSC::DynamicGlobalObjectScope::DynamicGlobalObjectScope): Made the | |
15175 | DynamicGlobalObjectScope constructor responsible for checking whether a | |
15176 | dynamicGlobalObject has already been set. This eliminated some duplicate | |
15177 | client code, and allowed me to avoid adding even more duplicate client | |
15178 | code. Made DynamicGlobalObjectScope responsible for resetting the | |
15179 | local timezone cache upon first entry to the VM. | |
15180 | ||
15181 | * runtime/DateConstructor.cpp: | |
15182 | (JSC::constructDate): | |
15183 | (JSC::callDate): | |
15184 | (JSC::dateParse): | |
15185 | (JSC::dateUTC): | |
15186 | * runtime/DateConversion.cpp: | |
15187 | (JSC::parseDate): | |
15188 | * runtime/DateConversion.h: | |
15189 | * runtime/DateInstance.cpp: | |
15190 | (JSC::DateInstance::gregorianDateTime): | |
15191 | * runtime/DateInstance.h: | |
15192 | * runtime/DateInstanceCache.h: | |
15193 | * runtime/DatePrototype.cpp: | |
15194 | (JSC::setNewValueFromTimeArgs): | |
15195 | (JSC::setNewValueFromDateArgs): | |
15196 | (JSC::dateProtoFuncSetYear): | |
15197 | * runtime/InitializeThreading.cpp: | |
15198 | (JSC::initializeThreadingOnce): | |
15199 | * runtime/JSGlobalData.cpp: | |
15200 | (JSC::JSGlobalData::JSGlobalData): | |
15201 | * runtime/JSGlobalData.h: | |
15202 | * wtf/DateMath.cpp: | |
15203 | (WTF::getCurrentUTCTime): | |
15204 | (WTF::getCurrentUTCTimeWithMicroseconds): | |
15205 | (WTF::getLocalTime): | |
15206 | (JSC::getUTCOffset): Use the new cache. Also, see below. | |
15207 | (JSC::gregorianDateTimeToMS): | |
15208 | (JSC::msToGregorianDateTime): | |
15209 | (JSC::initializeDates): | |
15210 | (JSC::parseDateFromNullTerminatedCharacters): Simplified the way this function | |
15211 | accounts for the local timezone offset, to accomodate our new caching API, | |
15212 | and a (possibly misguided) caller in WebCore. Also, see below. | |
15213 | * wtf/DateMath.h: | |
15214 | (JSC::GregorianDateTime::GregorianDateTime): Moved most of the code in | |
15215 | DateMath.* into the JSC namespace. The code needed to move so it could | |
15216 | naturally interact with ExecState and JSGlobalData to support caching. | |
15217 | Logically, it seemed right to move it, too, since this code is not really | |
15218 | as low-level as the WTF namespace might imply -- it implements a set of | |
15219 | date parsing and conversion quirks that are finely tuned to the JavaScript | |
15220 | language. Also removed the Mac OS X notify_* infrastructure. | |
15221 | ||
15222 | * wtf/CurrentTime.h: | |
15223 | (WTF::currentTimeMS): | |
15224 | (WTF::getLocalTime): Moved the rest of the DateMath code here, and renamed | |
15225 | it to make it consistent with WTF's currentTime function. | |
15226 | ||
15227 | 2009-11-06 Gabor Loki <loki@inf.u-szeged.hu> | |
15228 | ||
15229 | Unreviewed trivial buildfix after r50595. | |
15230 | ||
15231 | Rename the remaining rshiftPtr calls to rshift32 | |
15232 | ||
15233 | * jit/JITArithmetic.cpp: | |
15234 | (JSC::JIT::emit_op_rshift): | |
15235 | * jit/JITInlineMethods.h: | |
15236 | (JSC::JIT::emitFastArithImmToInt): | |
15237 | ||
15238 | 2009-11-06 Gavin Barraclough <barraclough@apple.com> | |
15239 | ||
15240 | Reviewed by Oliver Hunt. | |
15241 | ||
15242 | Tidy up the shift methods on the macro-assembler interface. | |
15243 | ||
15244 | Currently behaviour of shifts of a magnitude > 0x1f is undefined. | |
15245 | Instead defined that all shifts are masked to this range. This makes a lot of | |
15246 | practical sense, both since having undefined behaviour is not particularly | |
15247 | desirable, and because this behaviour is commonly required (particularly since | |
15248 | it is required bt ECMA-262 for shifts). | |
15249 | ||
15250 | Update the ARM assemblers to provide this behaviour. Remove (now) redundant | |
15251 | masks from JITArithmetic, and remove rshiftPtr (this was used in case that | |
15252 | could be rewritten in a simpler form using rshift32, only optimized JSVALUE32 | |
15253 | on x86-64, which uses JSVALUE64!) | |
15254 | ||
15255 | * assembler/MacroAssembler.h: | |
15256 | * assembler/MacroAssemblerARM.h: | |
15257 | (JSC::MacroAssemblerARM::lshift32): | |
15258 | (JSC::MacroAssemblerARM::rshift32): | |
15259 | * assembler/MacroAssemblerARMv7.h: | |
15260 | (JSC::MacroAssemblerARMv7::lshift32): | |
15261 | (JSC::MacroAssemblerARMv7::rshift32): | |
15262 | * assembler/MacroAssemblerX86_64.h: | |
15263 | * jit/JITArithmetic.cpp: | |
15264 | (JSC::JIT::emit_op_lshift): | |
15265 | (JSC::JIT::emit_op_rshift): | |
15266 | ||
15267 | 2009-11-05 Gavin Barraclough <barraclough@apple.com> | |
15268 | ||
15269 | Rubber Stamped by Oliver Hunt. | |
15270 | ||
15271 | Remove a magic number (1) from the JIT, instead compute the value with OBJECT_OFFSET. | |
15272 | ||
15273 | * jit/JITInlineMethods.h: | |
15274 | (JSC::JIT::emitPutJITStubArg): | |
15275 | (JSC::JIT::emitPutJITStubArgConstant): | |
15276 | (JSC::JIT::emitGetJITStubArg): | |
15277 | (JSC::JIT::emitPutJITStubArgFromVirtualRegister): | |
15278 | * jit/JITStubCall.h: | |
15279 | (JSC::JITStubCall::JITStubCall): | |
15280 | (JSC::JITStubCall::getArgument): | |
15281 | * jit/JITStubs.h: | |
15282 | ||
15283 | 2009-11-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
15284 | ||
15285 | Reviewed by Gavin Barraclough. | |
15286 | ||
15287 | https://bugs.webkit.org/show_bug.cgi?id=31159 | |
15288 | Fix branchDouble behaviour on ARM THUMB2 JIT. | |
15289 | ||
15290 | The x86 branchDouble behaviour is reworked, and all JIT | |
15291 | ports should follow the x86 port. See bug 31104 and 31151 | |
15292 | ||
15293 | This patch contains a fix for the traditional ARM port | |
15294 | ||
15295 | * assembler/ARMAssembler.h: | |
15296 | (JSC::ARMAssembler::): | |
15297 | (JSC::ARMAssembler::fmrs_r): | |
15298 | (JSC::ARMAssembler::ftosid_r): | |
15299 | * assembler/MacroAssemblerARM.h: | |
15300 | (JSC::MacroAssemblerARM::): | |
15301 | (JSC::MacroAssemblerARM::branchDouble): | |
15302 | (JSC::MacroAssemblerARM::branchConvertDoubleToInt32): | |
15303 | ||
15304 | 2009-11-05 Chris Jerdonek <chris.jerdonek@gmail.com> | |
15305 | ||
15306 | Reviewed by Eric Seidel. | |
15307 | ||
15308 | Removed the "this is part of the KDE project" comments from | |
15309 | all *.h, *.cpp, *.idl, and *.pm files. | |
15310 | ||
15311 | https://bugs.webkit.org/show_bug.cgi?id=31167 | |
15312 | ||
15313 | The maintenance and architecture page in the project wiki lists | |
15314 | this as a task. | |
15315 | ||
15316 | This change includes no changes or additions to test cases | |
15317 | since the change affects only comments. | |
15318 | ||
15319 | * wtf/wince/FastMallocWince.h: | |
15320 | ||
15321 | 2009-11-05 Gabor Loki <loki@inf.u-szeged.hu> | |
15322 | ||
15323 | Reviewed by Gavin Barraclough. | |
15324 | ||
15325 | Use ARMv7 specific encoding for immediate constants on ARMv7 target | |
15326 | https://bugs.webkit.org/show_bug.cgi?id=31060 | |
15327 | ||
15328 | * assembler/ARMAssembler.cpp: | |
15329 | (JSC::ARMAssembler::getOp2): Use INVALID_IMM | |
15330 | (JSC::ARMAssembler::getImm): Use encodeComplexImm for complex immediate | |
15331 | (JSC::ARMAssembler::moveImm): Ditto. | |
15332 | (JSC::ARMAssembler::encodeComplexImm): Encode a constant by one or two | |
15333 | instructions or a PC relative load. | |
15334 | * assembler/ARMAssembler.h: Use INVALID_IMM if a constant cannot be | |
15335 | encoded as an immediate constant. | |
15336 | (JSC::ARMAssembler::): | |
15337 | (JSC::ARMAssembler::movw_r): 16-bit immediate load | |
15338 | (JSC::ARMAssembler::movt_r): High halfword 16-bit immediate load | |
15339 | (JSC::ARMAssembler::getImm16Op2): Encode immediate constant for | |
15340 | movw_r and mowt_r | |
15341 | ||
15342 | 2009-11-04 Mark Mentovai <mark@chromium.org> | |
15343 | ||
15344 | Reviewed by Mark Rowe. | |
15345 | ||
15346 | Provide TARGETING_TIGER and TARGETING_LEOPARD as analogues to | |
15347 | BUILDING_ON_TIGER and BUILDING_ON_LEOPARD. The TARGETING_ macros | |
15348 | consider the deployment target; the BUILDING_ON_ macros consider the | |
15349 | headers being built against. | |
15350 | ||
15351 | * wtf/Platform.h: | |
15352 | ||
15353 | 2009-11-04 Gavin Barraclough <barraclough@apple.com> | |
15354 | ||
15355 | Reviewed by Oliver Hunt. | |
15356 | ||
15357 | https://bugs.webkit.org/show_bug.cgi?id=31151 | |
15358 | Fix branchDouble behaviour on ARM THUMB2 JIT. | |
15359 | ||
15360 | The ARMv7 JIT is currently using ARMv7Assembler::ConditionEQ to branch | |
15361 | for DoubleEqualOrUnordered, however this is incorrect - ConditionEQ won't | |
15362 | branch on unordered operands. Similarly, DoubleLessThanOrUnordered & | |
15363 | DoubleLessThanOrEqualOrUnordered use ARMv7Assembler::ConditionLO & | |
15364 | ARMv7Assembler::ConditionLS, whereas they should be using | |
15365 | ARMv7Assembler::ConditionLT & ARMv7Assembler::ConditionLE. | |
15366 | ||
15367 | Fix these, and fill out the missing DoubleConditions. | |
15368 | ||
15369 | * assembler/MacroAssemblerARMv7.h: | |
15370 | (JSC::MacroAssemblerARMv7::): | |
15371 | (JSC::MacroAssemblerARMv7::branchDouble): | |
15372 | ||
15373 | 2009-11-04 Gavin Barraclough <barraclough@apple.com> | |
15374 | ||
15375 | Rubber Stamped by Oliver Hunt. | |
15376 | ||
15377 | Enable native call optimizations on ARMv7. (Existing ARM_TRADITIONAL | |
15378 | implementation was generic, worked perfectly, just needed turning on). | |
15379 | ||
15380 | * jit/JITOpcodes.cpp: | |
15381 | * wtf/Platform.h: | |
15382 | ||
15383 | 2009-11-04 Gavin Barraclough <barraclough@apple.com> | |
15384 | ||
15385 | Rubber Stamped by Mark Rowe, Oliver Hunt, and Sam Weinig. | |
15386 | ||
15387 | Add a missing assert to the ARMv7 JIT. | |
15388 | ||
15389 | * assembler/ARMv7Assembler.h: | |
15390 | (JSC::ARMThumbImmediate::ARMThumbImmediate): | |
15391 | ||
15392 | 2009-11-04 Mark Rowe <mrowe@apple.com> | |
15393 | ||
15394 | Rubber-stamped by Oliver Hunt. | |
15395 | ||
15396 | Remove bogus op_ prefix on dumped version of three opcodes. | |
15397 | ||
15398 | * bytecode/CodeBlock.cpp: | |
15399 | (JSC::CodeBlock::dump): | |
15400 | ||
15401 | 2009-11-04 Mark Rowe <mrowe@apple.com> | |
15402 | ||
15403 | Reviewed by Sam Weinig. | |
15404 | ||
15405 | Fix dumping of constants in bytecode so that they aren't printed as large positive register numbers. | |
15406 | ||
15407 | We do this by having the registerName function return information about the constant if the register | |
15408 | number corresponds to a constant. This requires that registerName, and several functions that call it, | |
15409 | be converted to member functions of CodeBlock so that the constant value can be retrieved. The | |
15410 | ExecState also needs to be threaded down through these functions so that it can be passed on to | |
15411 | constantName when needed. | |
15412 | ||
15413 | * bytecode/CodeBlock.cpp: | |
15414 | (JSC::constantName): | |
15415 | (JSC::CodeBlock::registerName): | |
15416 | (JSC::CodeBlock::printUnaryOp): | |
15417 | (JSC::CodeBlock::printBinaryOp): | |
15418 | (JSC::CodeBlock::printConditionalJump): | |
15419 | (JSC::CodeBlock::printGetByIdOp): | |
15420 | (JSC::CodeBlock::printPutByIdOp): | |
15421 | (JSC::CodeBlock::dump): | |
15422 | * bytecode/CodeBlock.h: | |
15423 | (JSC::CodeBlock::isConstantRegisterIndex): | |
15424 | ||
15425 | 2009-11-04 Pavel Heimlich <tropikhajma@gmail.com> | |
15426 | ||
15427 | Reviewed by Alexey Proskuryakov. | |
15428 | ||
15429 | https://bugs.webkit.org/show_bug.cgi?id=30647 | |
15430 | Solaris build failure due to strnstr. | |
15431 | ||
15432 | * wtf/StringExtras.h: Enable strnstr on Solaris, too. | |
15433 | ||
15434 | 2009-11-04 Gavin Barraclough <barraclough@apple.com> | |
15435 | ||
15436 | Reviewed by Oliver Hunt. | |
15437 | ||
15438 | https://bugs.webkit.org/show_bug.cgi?id=31104 | |
15439 | Refactor x86-specific behaviour out of the JIT. | |
15440 | ||
15441 | - Add explicit double branch conditions for ordered and unordered comparisons (presently the brehaviour is a mix). | |
15442 | - Refactor double to int conversion out into the MacroAssembler. | |
15443 | - Remove broken double to int conversion for !JSVALUE32_64 builds - this code was broken and slowing us down, fixing it showed it not to be an improvement. | |
15444 | - Remove exclusion of double to int conversion from (1 % X) cases in JSVALUE32_64 builds - if this was of benefit this is no longer the case; simplify. | |
15445 | ||
15446 | * assembler/MacroAssemblerARM.h: | |
15447 | (JSC::MacroAssemblerARM::): | |
15448 | * assembler/MacroAssemblerARMv7.h: | |
15449 | (JSC::MacroAssemblerARMv7::): | |
15450 | * assembler/MacroAssemblerX86Common.h: | |
15451 | (JSC::MacroAssemblerX86Common::): | |
15452 | (JSC::MacroAssemblerX86Common::convertInt32ToDouble): | |
15453 | (JSC::MacroAssemblerX86Common::branchDouble): | |
15454 | (JSC::MacroAssemblerX86Common::branchConvertDoubleToInt32): | |
15455 | * jit/JITArithmetic.cpp: | |
15456 | (JSC::JIT::emitBinaryDoubleOp): | |
15457 | (JSC::JIT::emit_op_div): | |
15458 | (JSC::JIT::emitSlow_op_jnless): | |
15459 | (JSC::JIT::emitSlow_op_jnlesseq): | |
15460 | * jit/JITOpcodes.cpp: | |
15461 | (JSC::JIT::emit_op_jfalse): | |
15462 | ||
15463 | 2009-11-04 Mark Mentovai <mark@chromium.org> | |
15464 | ||
15465 | Reviewed by Eric Seidel. | |
15466 | ||
15467 | Remove BUILDING_ON_LEOPARD from JavaScriptCore.gyp. This is supposed | |
15468 | to be set as needed only in wtf/Platform.h. | |
15469 | ||
15470 | * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
15471 | ||
15472 | 2009-11-02 Oliver Hunt <oliver@apple.com> | |
15473 | ||
15474 | Reviewed by Gavin Barraclough. | |
15475 | ||
15476 | REGRESSION (r48573): JSC may incorrectly cache chain lookups with a dictionary at the head of the chain | |
15477 | https://bugs.webkit.org/show_bug.cgi?id=31045 | |
15478 | ||
15479 | Add guards to prevent caching of prototype chain lookups with dictionaries at the | |
15480 | head of the chain. Also add a few tighter assertions to cached prototype lookups | |
15481 | to catch this in future. | |
15482 | ||
15483 | * interpreter/Interpreter.cpp: | |
15484 | (JSC::Interpreter::tryCacheGetByID): | |
15485 | (JSC::Interpreter::privateExecute): | |
15486 | * jit/JITStubs.cpp: | |
15487 | (JSC::JITThunks::tryCacheGetByID): | |
15488 | ||
15489 | 2009-11-02 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
15490 | ||
15491 | Reviewed by Darin Adler. | |
15492 | ||
15493 | PLATFORM(CF) should be set when building for Qt on Darwin | |
15494 | https://bugs.webkit.org/show_bug.cgi?id=23671 | |
15495 | ||
15496 | * wtf/Platform.h: Turn on CF support if both QT and DARWIN | |
15497 | platforms are defined. | |
15498 | ||
15499 | 2009-11-02 Dmitry Titov <dimich@chromium.org> | |
15500 | ||
15501 | Reviewed by David Levin. | |
15502 | ||
15503 | Remove threadsafe refcounting from tasks used with WTF::MessageQueue. | |
15504 | https://bugs.webkit.org/show_bug.cgi?id=30612 | |
15505 | ||
15506 | * wtf/MessageQueue.h: | |
15507 | (WTF::MessageQueue::alwaysTruePredicate): | |
15508 | (WTF::MessageQueue::~MessageQueue): | |
15509 | (WTF::MessageQueue::append): | |
15510 | (WTF::MessageQueue::appendAndCheckEmpty): | |
15511 | (WTF::MessageQueue::prepend): | |
15512 | (WTF::MessageQueue::waitForMessage): | |
15513 | (WTF::MessageQueue::waitForMessageFilteredWithTimeout): | |
15514 | (WTF::MessageQueue::tryGetMessage): | |
15515 | (WTF::MessageQueue::removeIf): | |
15516 | The MessageQueue is changed to act as a queue of OwnPtr<DataType>. It takes ownership | |
15517 | of posted tasks and passes it to the new owner (in another thread) when the task is fetched. | |
15518 | All methods have arguments of type PassOwnPtr<DataType> and return the same type. | |
15519 | ||
15520 | * wtf/Threading.cpp: | |
15521 | (WTF::createThread): | |
15522 | Superficial change to trigger rebuild of JSC project on Windows, | |
15523 | workaround for https://bugs.webkit.org/show_bug.cgi?id=30890 | |
15524 | ||
15525 | 2009-10-30 Geoffrey Garen <ggaren@apple.com> | |
15526 | ||
15527 | Reviewed by Oliver Hunt. | |
15528 | ||
15529 | Fixed failing layout test: restore a special case I accidentally deleted. | |
15530 | ||
15531 | * runtime/DatePrototype.cpp: | |
15532 | (JSC::setNewValueFromDateArgs): In the case of applying a change to a date | |
15533 | that is NaN, reset the date to 0 *and* then apply the change; don't just | |
15534 | reset the date to 0. | |
15535 | ||
15536 | 2009-10-30 Geoffrey Garen <ggaren@apple.com> | |
15537 | ||
15538 | Windows build fix: update for object-to-pointer change. | |
15539 | ||
15540 | * runtime/DatePrototype.cpp: | |
15541 | (JSC::formatLocaleDate): | |
15542 | ||
15543 | 2009-10-29 Geoffrey Garen <ggaren@apple.com> | |
15544 | ||
15545 | Reviewed by Darin Adler. | |
15546 | ||
15547 | https://bugs.webkit.org/show_bug.cgi?id=30942 | |
15548 | Use pointers instead of copies to pass GregorianDateTime objects around. | |
15549 | ||
15550 | SunSpider reports a shocking 4.5% speedup on date-format-xparb, and 1.3% | |
15551 | speedup on date-format-tofte. | |
15552 | ||
15553 | * runtime/DateInstance.cpp: | |
15554 | (JSC::DateInstance::gregorianDateTime): | |
15555 | * runtime/DateInstance.h: | |
15556 | * runtime/DatePrototype.cpp: | |
15557 | (JSC::formatLocaleDate): | |
15558 | (JSC::dateProtoFuncToString): | |
15559 | (JSC::dateProtoFuncToUTCString): | |
15560 | (JSC::dateProtoFuncToISOString): | |
15561 | (JSC::dateProtoFuncToDateString): | |
15562 | (JSC::dateProtoFuncToTimeString): | |
15563 | (JSC::dateProtoFuncGetFullYear): | |
15564 | (JSC::dateProtoFuncGetUTCFullYear): | |
15565 | (JSC::dateProtoFuncToGMTString): | |
15566 | (JSC::dateProtoFuncGetMonth): | |
15567 | (JSC::dateProtoFuncGetUTCMonth): | |
15568 | (JSC::dateProtoFuncGetDate): | |
15569 | (JSC::dateProtoFuncGetUTCDate): | |
15570 | (JSC::dateProtoFuncGetDay): | |
15571 | (JSC::dateProtoFuncGetUTCDay): | |
15572 | (JSC::dateProtoFuncGetHours): | |
15573 | (JSC::dateProtoFuncGetUTCHours): | |
15574 | (JSC::dateProtoFuncGetMinutes): | |
15575 | (JSC::dateProtoFuncGetUTCMinutes): | |
15576 | (JSC::dateProtoFuncGetSeconds): | |
15577 | (JSC::dateProtoFuncGetUTCSeconds): | |
15578 | (JSC::dateProtoFuncGetTimezoneOffset): | |
15579 | (JSC::setNewValueFromTimeArgs): | |
15580 | (JSC::setNewValueFromDateArgs): | |
15581 | (JSC::dateProtoFuncSetYear): | |
15582 | (JSC::dateProtoFuncGetYear): Renamed getGregorianDateTime to gregorianDateTime, | |
15583 | since it no longer has an out parameter. Uses 0 to indicate invalid dates. | |
15584 | ||
15585 | 2009-10-30 Zoltan Horvath <zoltan@webkit.org> | |
15586 | ||
15587 | Reviewed by Darin Adler. | |
15588 | ||
15589 | Allow custom memory allocation control for JavaScriptCore's ListHashSet | |
15590 | https://bugs.webkit.org/show_bug.cgi?id=30853 | |
15591 | ||
15592 | Inherits ListHashSet class from FastAllocBase because it is | |
15593 | instantiated by 'new' in WebCore/rendering/RenderBlock.cpp:1813. | |
15594 | ||
15595 | * wtf/ListHashSet.h: | |
15596 | ||
15597 | 2009-10-30 Oliver Hunt <oliver@apple.com> | |
15598 | ||
15599 | Reviewed by Gavin Barraclough. | |
15600 | ||
15601 | Regression: crash enumerating properties of an object with getters or setters | |
15602 | https://bugs.webkit.org/show_bug.cgi?id=30948 | |
15603 | ||
15604 | Add a guard to prevent us trying to cache property enumeration on | |
15605 | objects with getters or setters. | |
15606 | ||
15607 | * runtime/JSPropertyNameIterator.cpp: | |
15608 | (JSC::JSPropertyNameIterator::create): | |
15609 | ||
15610 | 2009-10-30 Roland Steiner <rolandsteiner@chromium.org> | |
15611 | ||
15612 | Reviewed by Eric Seidel. | |
15613 | ||
15614 | Remove ENABLE_RUBY guards as discussed with Dave Hyatt and Maciej Stachowiak. | |
15615 | ||
15616 | Bug 28420 - Implement HTML5 <ruby> rendering | |
15617 | (https://bugs.webkit.org/show_bug.cgi?id=28420) | |
15618 | ||
15619 | No new tests (no functional change). | |
15620 | ||
15621 | * Configurations/FeatureDefines.xcconfig: | |
15622 | ||
15623 | 2009-10-29 Oliver Hunt <oliver@apple.com> | |
15624 | ||
15625 | Reviewed by Maciej Stachowiak. | |
15626 | ||
15627 | REGRESSION (r50218-r50262): E*TRADE accounts page is missing content | |
15628 | https://bugs.webkit.org/show_bug.cgi?id=30947 | |
15629 | <rdar://problem/7348833> | |
15630 | ||
15631 | The logic for flagging that a structure has non-enumerable properties | |
15632 | was in addPropertyWithoutTransition, rather than in the core Structure::put | |
15633 | method. Despite this I was unable to produce a testcase that caused | |
15634 | the failure that etrade was experiencing, but the new assertion in | |
15635 | getEnumerablePropertyNames triggers on numerous layout tests without | |
15636 | the fix, so in effecti all for..in enumeration in any test ends up | |
15637 | doing the required consistency check. | |
15638 | ||
15639 | * runtime/Structure.cpp: | |
15640 | (JSC::Structure::addPropertyWithoutTransition): | |
15641 | (JSC::Structure::put): | |
15642 | (JSC::Structure::getEnumerablePropertyNames): | |
15643 | (JSC::Structure::checkConsistency): | |
15644 | ||
15645 | 2009-10-29 Gabor Loki <loki@inf.u-szeged.hu> | |
15646 | ||
15647 | Reviewed by Gavin Barraclough. | |
15648 | ||
15649 | Add cacheFlush support for Thumb-2 on Linux | |
15650 | https://bugs.webkit.org/show_bug.cgi?id=30865 | |
15651 | ||
15652 | * jit/ExecutableAllocator.h: | |
15653 | (JSC::ExecutableAllocator::cacheFlush): | |
15654 | ||
15655 | 2009-10-28 Gavin Barraclough <barraclough@apple.com> | |
15656 | ||
15657 | Reviewed by Oliver Hunt. | |
15658 | ||
15659 | JSC JIT on ARMv7 cannot link jumps >16Mb range | |
15660 | https://bugs.webkit.org/show_bug.cgi?id=30891 | |
15661 | ||
15662 | Start planing all relative jumps as move-32-bit-immediate-to-register-BX. | |
15663 | In the cases where the jump would fall within a relative jump range, use a relative jump. | |
15664 | ||
15665 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
15666 | * assembler/ARMv7Assembler.h: | |
15667 | (JSC::ARMv7Assembler::~ARMv7Assembler): | |
15668 | (JSC::ARMv7Assembler::LinkRecord::LinkRecord): | |
15669 | (JSC::ARMv7Assembler::): | |
15670 | (JSC::ARMv7Assembler::executableCopy): | |
15671 | (JSC::ARMv7Assembler::linkJump): | |
15672 | (JSC::ARMv7Assembler::relinkJump): | |
15673 | (JSC::ARMv7Assembler::setInt32): | |
15674 | (JSC::ARMv7Assembler::isB): | |
15675 | (JSC::ARMv7Assembler::isBX): | |
15676 | (JSC::ARMv7Assembler::isMOV_imm_T3): | |
15677 | (JSC::ARMv7Assembler::isMOVT): | |
15678 | (JSC::ARMv7Assembler::isNOP_T1): | |
15679 | (JSC::ARMv7Assembler::isNOP_T2): | |
15680 | (JSC::ARMv7Assembler::linkJumpAbsolute): | |
15681 | (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmFirst): | |
15682 | (JSC::ARMv7Assembler::twoWordOp5i6Imm4Reg4EncodedImmSecond): | |
15683 | (JSC::ARMv7Assembler::ARMInstructionFormatter::twoWordOp5i6Imm4Reg4EncodedImm): | |
15684 | * assembler/MacroAssemblerARMv7.h: | |
15685 | (JSC::MacroAssemblerARMv7::makeJump): | |
15686 | (JSC::MacroAssemblerARMv7::makeBranch): | |
15687 | * jit/JIT.h: | |
15688 | * wtf/Platform.h: | |
15689 | ||
15690 | 2009-10-28 Oliver Hunt <oliver@apple.com> | |
15691 | ||
15692 | Reviewed by Geoff Garen. | |
15693 | ||
15694 | Improve for..in enumeration performance | |
15695 | https://bugs.webkit.org/show_bug.cgi?id=30887 | |
15696 | ||
15697 | Improve indexing of an object with a for..in iterator by | |
15698 | identifying cases where get_by_val is being used with a iterator | |
15699 | as the subscript and replace it with a new get_by_pname | |
15700 | bytecode. get_by_pname then optimizes lookups that directly access | |
15701 | the base object. | |
15702 | ||
15703 | * bytecode/CodeBlock.cpp: | |
15704 | (JSC::CodeBlock::dump): | |
15705 | * bytecode/Opcode.h: | |
15706 | * bytecompiler/BytecodeGenerator.cpp: | |
15707 | (JSC::BytecodeGenerator::emitGetByVal): | |
15708 | * bytecompiler/BytecodeGenerator.h: | |
15709 | (JSC::BytecodeGenerator::pushOptimisedForIn): | |
15710 | (JSC::BytecodeGenerator::popOptimisedForIn): | |
15711 | * interpreter/Interpreter.cpp: | |
15712 | (JSC::Interpreter::privateExecute): | |
15713 | * jit/JIT.cpp: | |
15714 | (JSC::JIT::privateCompileMainPass): | |
15715 | (JSC::JIT::privateCompileSlowCases): | |
15716 | * jit/JIT.h: | |
15717 | * jit/JITPropertyAccess.cpp: | |
15718 | (JSC::JIT::compileGetDirectOffset): | |
15719 | (JSC::JIT::emit_op_get_by_pname): | |
15720 | (JSC::JIT::emitSlow_op_get_by_pname): | |
15721 | * parser/Nodes.cpp: | |
15722 | (JSC::ForInNode::emitBytecode): | |
15723 | * runtime/JSObject.h: | |
15724 | * runtime/JSPropertyNameIterator.cpp: | |
15725 | (JSC::JSPropertyNameIterator::create): | |
15726 | * runtime/JSPropertyNameIterator.h: | |
15727 | (JSC::JSPropertyNameIterator::getOffset): | |
15728 | (JSC::JSPropertyNameIterator::JSPropertyNameIterator): | |
15729 | * runtime/JSValue.h: | |
15730 | (JSC::JSValue::): | |
15731 | * runtime/Structure.cpp: | |
15732 | (JSC::Structure::addPropertyTransition): | |
15733 | (JSC::Structure::changePrototypeTransition): | |
15734 | (JSC::Structure::despecifyFunctionTransition): | |
15735 | (JSC::Structure::addAnonymousSlotsTransition): | |
15736 | (JSC::Structure::getterSetterTransition): | |
15737 | (JSC::Structure::toDictionaryTransition): | |
15738 | (JSC::Structure::addPropertyWithoutTransition): | |
15739 | Track the existence (or not) of non-enumerable properties. | |
15740 | * runtime/Structure.h: | |
15741 | (JSC::Structure::propertyStorageCapacity): | |
15742 | (JSC::Structure::propertyStorageSize): | |
15743 | (JSC::Structure::hasNonEnumerableProperties): | |
15744 | (JSC::Structure::hasAnonymousSlots): | |
15745 | ||
15746 | 2009-10-28 Dmitry Titov <dimich@chromium.org> | |
15747 | ||
15748 | Not reviewed, attemp to fix Windows build. | |
15749 | ||
15750 | Touch the cpp file to cause recompile. | |
15751 | ||
15752 | * wtf/Threading.cpp: | |
15753 | (WTF::threadEntryPoint): | |
15754 | ||
15755 | 2009-10-28 Dmitry Titov <dimich@chromium.org> | |
15756 | ||
15757 | Reviewed by David Levin. | |
15758 | ||
15759 | https://bugs.webkit.org/show_bug.cgi?id=30805 | |
15760 | Add MessageQueue::removeIf(Predicate&) to remove certain tasks without pulling them from the queue. | |
15761 | Existing Database tests cover this since Database removes tasks when it is stopped. | |
15762 | ||
15763 | * wtf/MessageQueue.h: | |
15764 | (WTF::::removeIf): | |
15765 | ||
15766 | 2009-10-28 Afonso R. Costa Jr. <afonso.costa@openbossa.org> | |
15767 | ||
15768 | Reviewed by Oliver Hunt. | |
15769 | ||
15770 | [Qt] Enable YARR when YARR_JIT is enabled | |
15771 | https://bugs.webkit.org/show_bug.cgi?id=30730 | |
15772 | ||
15773 | When enabling or disabling JIT using JAVASCRIPTCORE_JIT, the ENABLE_YARR should | |
15774 | be toggled also. | |
15775 | ||
15776 | * JavaScriptCore.pri: | |
15777 | ||
15778 | 2009-10-24 Martin Robinson <martin.james.robinson@gmail.com> | |
15779 | ||
15780 | Reviewed by Oliver Hunt. | |
15781 | ||
15782 | Fix strict aliasing warning by switching reinterpret_cast to bitwise_cast. | |
15783 | ||
15784 | strict-aliasing warnings in JSFunction.h | |
15785 | https://bugs.webkit.org/show_bug.cgi?id=27869 | |
15786 | ||
15787 | * runtime/JSFunction.h: | |
15788 | (JSC::JSFunction::nativeFunction): | |
15789 | (JSC::JSFunction::scopeChain): | |
15790 | (JSC::JSFunction::setScopeChain): | |
15791 | (JSC::JSFunction::setNativeFunction): | |
15792 | ||
15793 | 2009-10-28 Jan-Arve Sæther <jan-arve.saether@nokia.com> | |
15794 | ||
15795 | Reviewed by Tor Arne Vestbø. | |
15796 | ||
15797 | Build-fix for 64-bit Windows | |
15798 | ||
15799 | * wtf/Platform.h: Make sure to use WTF_USE_JSVALUE64 | |
15800 | ||
15801 | 2009-10-28 Gavin Barraclough <barraclough@apple.com> | |
15802 | ||
15803 | Reviewed by NOBODY (build fix!). | |
15804 | ||
15805 | * jit/JIT.h: | |
15806 | ||
15807 | 2009-10-26 Holger Hans Peter Freyther <zecke@selfish.org> | |
15808 | ||
15809 | Rubber-stamped by Darin Adler. | |
15810 | ||
15811 | Export fastMalloc, fastCalloc, fastRealloc and fastFree on GCC/Unix | |
15812 | https://bugs.webkit.org/show_bug.cgi?id=30769 | |
15813 | ||
15814 | When using -fvisibility=hidden to hide all internal symbols by default | |
15815 | the malloc symbols will be hidden as well. For memory instrumentation | |
15816 | it is needed to provide an instrumented version of these symbols and | |
15817 | override the normal routines and by changing the visibility back to | |
15818 | default this becomes possible. | |
15819 | ||
15820 | The only other solution would be to use system malloc instead of the | |
15821 | TCmalloc implementation but this will not allow to analyze memory | |
15822 | behavior with the default allocator. | |
15823 | ||
15824 | * wtf/FastMalloc.h: Define WTF_FAST_MALLOC_EXPORT for GCC and !darwin | |
15825 | ||
15826 | 2009-10-27 Gavin Barraclough <barraclough@apple.com> | |
15827 | ||
15828 | Rubber Stamped by Samuel Q. Weinig. | |
15829 | ||
15830 | Make the asserts protecting the offsets in the JIT more descriptive. | |
15831 | ||
15832 | * jit/JIT.h: | |
15833 | * jit/JITCall.cpp: | |
15834 | (JSC::JIT::compileOpCall): | |
15835 | * jit/JITPropertyAccess.cpp: | |
15836 | (JSC::JIT::emit_op_method_check): | |
15837 | (JSC::JIT::compileGetByIdHotPath): | |
15838 | (JSC::JIT::compileGetByIdSlowCase): | |
15839 | (JSC::JIT::emit_op_put_by_id): | |
15840 | ||
15841 | 2009-10-27 Geoffrey Garen <ggaren@apple.com> | |
15842 | ||
15843 | Reviewed by Sam Weinig. | |
15844 | ||
15845 | A little bit of refactoring in the date code. | |
15846 | ||
15847 | * JavaScriptCore.exp: Don't export this unused symbol. | |
15848 | ||
15849 | * runtime/DateConstructor.cpp: | |
15850 | (JSC::constructDate): | |
15851 | ||
15852 | * runtime/DateInstance.cpp: | |
15853 | (JSC::DateInstance::DateInstance): | |
15854 | * runtime/DateInstance.h: Removed some unused functions. Changed the default | |
15855 | constructor to ensure that a DateInstance is always initialized. | |
15856 | ||
15857 | * runtime/DatePrototype.cpp: | |
15858 | (JSC::DatePrototype::DatePrototype): Pass an initializer to our constructor, | |
15859 | since it now requires one. | |
15860 | ||
15861 | * wtf/DateMath.cpp: | |
15862 | (WTF::msToGregorianDateTime): Only compute our offset from UTC if our | |
15863 | output will require it. Otherwise, our offset is 0. | |
15864 | ||
15865 | 2009-10-27 Geoffrey Garen <ggaren@apple.com> | |
15866 | ||
15867 | Build fix: Mark DateInstaceCache.h private, so other frameworks can see it. | |
15868 | ||
15869 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
15870 | ||
15871 | 2009-10-27 Geoffrey Garen <ggaren@apple.com> | |
15872 | ||
15873 | Build fix: re-readded this file. | |
15874 | ||
15875 | * runtime/DateInstanceCache.h: Added. | |
15876 | (JSC::DateInstanceData::create): | |
15877 | (JSC::DateInstanceData::DateInstanceData): | |
15878 | (JSC::DateInstanceCache::DateInstanceCache): | |
15879 | (JSC::DateInstanceCache::add): | |
15880 | (JSC::DateInstanceCache::lookup): | |
15881 | ||
15882 | 2009-10-27 Geoffrey Garen <ggaren@apple.com> | |
15883 | ||
15884 | Reviewed by Darin Adler and Oliver Hunt. | |
15885 | ||
15886 | https://bugs.webkit.org/show_bug.cgi?id=30800 | |
15887 | Cache recently computed date data. | |
15888 | ||
15889 | SunSpider reports a ~0.5% speedup, mostly from date-format-tofte.js. | |
15890 | ||
15891 | * GNUmakefile.am: | |
15892 | * JavaScriptCore.gypi: | |
15893 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
15894 | * JavaScriptCore.xcodeproj/project.pbxproj: Added new file. | |
15895 | ||
15896 | * runtime/DateInstance.cpp: | |
15897 | (JSC::DateInstance::DateInstance): | |
15898 | (JSC::DateInstance::getGregorianDateTime): Use the shared cache. | |
15899 | ||
15900 | * runtime/DateInstance.h: Renamed m_cache to m_data, to avoid the confusion | |
15901 | of a "cache cache". | |
15902 | ||
15903 | * runtime/DatePrototype.cpp: | |
15904 | (JSC::formatLocaleDate): | |
15905 | (JSC::dateProtoFuncToString): | |
15906 | (JSC::dateProtoFuncToUTCString): | |
15907 | (JSC::dateProtoFuncToISOString): | |
15908 | (JSC::dateProtoFuncToDateString): | |
15909 | (JSC::dateProtoFuncToTimeString): | |
15910 | (JSC::dateProtoFuncGetFullYear): | |
15911 | (JSC::dateProtoFuncGetUTCFullYear): | |
15912 | (JSC::dateProtoFuncToGMTString): | |
15913 | (JSC::dateProtoFuncGetMonth): | |
15914 | (JSC::dateProtoFuncGetUTCMonth): | |
15915 | (JSC::dateProtoFuncGetDate): | |
15916 | (JSC::dateProtoFuncGetUTCDate): | |
15917 | (JSC::dateProtoFuncGetDay): | |
15918 | (JSC::dateProtoFuncGetUTCDay): | |
15919 | (JSC::dateProtoFuncGetHours): | |
15920 | (JSC::dateProtoFuncGetUTCHours): | |
15921 | (JSC::dateProtoFuncGetMinutes): | |
15922 | (JSC::dateProtoFuncGetUTCMinutes): | |
15923 | (JSC::dateProtoFuncGetSeconds): | |
15924 | (JSC::dateProtoFuncGetUTCSeconds): | |
15925 | (JSC::dateProtoFuncGetTimezoneOffset): | |
15926 | (JSC::setNewValueFromTimeArgs): | |
15927 | (JSC::setNewValueFromDateArgs): | |
15928 | (JSC::dateProtoFuncSetYear): | |
15929 | (JSC::dateProtoFuncGetYear): Pass an ExecState to these functions, so they | |
15930 | can access the DateInstanceCache. | |
15931 | ||
15932 | * runtime/JSGlobalData.h: Keep a DateInstanceCache. | |
15933 | ||
15934 | 2009-10-27 James Robinson <jamesr@chromium.org> | |
15935 | ||
15936 | Reviewed by Darin Fisher. | |
15937 | ||
15938 | Ensures that JavaScriptCore/wtf/CurrentTime.cpp is not built in PLATFORM(CHROMIUM) builds. | |
15939 | ||
15940 | Chromium uses a different method to calculate the current time than is used in | |
15941 | JavaScriptCore/wtf/CurrentTime.cpp. This can lead to time skew when calls to currentTime() and Chromium's time | |
15942 | function are mixed. In particular, timers can get scheduled in the past which leads to 100% CPU use. | |
15943 | See http://code.google.com/p/chromium/issues/detail?id=25892 for an example. | |
15944 | ||
15945 | https://bugs.webkit.org/show_bug.cgi?id=30833 | |
15946 | ||
15947 | * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
15948 | * wtf/CurrentTime.cpp: | |
15949 | ||
15950 | 2009-10-27 Peter Varga <pvarga@inf.u-szeged.hu> | |
15951 | ||
15952 | Rubber-stamped by Tor Arne Vestbø. | |
15953 | ||
15954 | Fix typo in RegexInterpreter.cpp and RegexJIT.cpp alterantive to | |
15955 | alternative. | |
15956 | ||
15957 | * yarr/RegexInterpreter.cpp: | |
15958 | (JSC::Yarr::ByteCompiler::alternativeBodyDisjunction): | |
15959 | (JSC::Yarr::ByteCompiler::alternativeDisjunction): | |
15960 | (JSC::Yarr::ByteCompiler::emitDisjunction): | |
15961 | * yarr/RegexJIT.cpp: | |
15962 | (JSC::Yarr::RegexGenerator::generateDisjunction): | |
15963 | ||
15964 | 2009-10-26 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
15965 | ||
15966 | Reviewed by Darin Adler. | |
15967 | ||
15968 | Make .rc files compile on Windows without depending on MFC headers | |
15969 | https://bugs.webkit.org/show_bug.cgi?id=30750 | |
15970 | ||
15971 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: Use | |
15972 | winresrc.h because it exists even when MFC is not installed, and is | |
15973 | all that's needed here. | |
15974 | ||
15975 | 2009-10-26 Gabor Loki <loki@inf.u-szeged.hu> | |
15976 | ||
15977 | Reviewed by Gavin Barraclough. | |
15978 | ||
15979 | The thunkReturnAddress is on JITStackFrame on ARM JIT as well | |
15980 | https://bugs.webkit.org/show_bug.cgi?id=30782 | |
15981 | ||
15982 | Move the thunkReturnAddress from top of the stack into the JITStackFrame | |
15983 | structure. This is a requirement for JSValue32_64 support on ARM. | |
15984 | ||
15985 | * assembler/MacroAssemblerARM.h: | |
15986 | (JSC::MacroAssemblerARM::ret): Return with link register | |
15987 | (JSC::MacroAssemblerARM::prepareCall): Store the return address in link register | |
15988 | * jit/JIT.h: Remove unused ctiReturnRegister | |
15989 | * jit/JITInlineMethods.h: Same as ARMv7 | |
15990 | (JSC::JIT::restoreArgumentReference): Ditto. | |
15991 | (JSC::JIT::restoreArgumentReferenceForTrampoline): Ditto. | |
15992 | * jit/JITOpcodes.cpp: Remove ctiReturnRegister related instruction | |
15993 | * jit/JITStubs.cpp: Store thunkReturnAddress on JITStackFrame. Use | |
15994 | small trampoline functions which handle return addresses for each | |
15995 | CTI_STUB_FUNCTION. | |
15996 | * jit/JITStubs.h: Store thunkReturnAddress on JITStackFrame | |
15997 | (JSC::JITStackFrame::returnAddressSlot): Return with the address of thunkReturnAddress | |
15998 | * yarr/RegexJIT.cpp: | |
15999 | (JSC::Yarr::RegexGenerator::generateEnter): Remove the unnecessary instruction | |
16000 | ||
16001 | 2009-10-26 Steve Block <steveblock@google.com> | |
16002 | ||
16003 | Reviewed by Darin Adler. | |
16004 | ||
16005 | Adds ability to disable ReadWriteLock on platforms (eg Android) that use pthreads but do not support pthread_rwlock. | |
16006 | https://bugs.webkit.org/show_bug.cgi?id=30713 | |
16007 | ||
16008 | * wtf/Platform.h: Modified. Defines HAVE_PTHREAD_RWLOCK for all platforms currently using pthreads. | |
16009 | * wtf/Threading.h: Modified. Use pthread_rwlock_t only when HAVE_PTHREAD_RWLOCK is defined. | |
16010 | * wtf/ThreadingPthreads.cpp: Modified. Build ReadWriteLock methods only when HAVE_PTHREAD_RWLOCK is defined. | |
16011 | ||
16012 | 2009-10-24 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
16013 | ||
16014 | Reviewed by Holger Freyther. | |
16015 | ||
16016 | [Qt] [Symbian] Set the capability and memory required to run QtWebKit for Symbian | |
16017 | https://bugs.webkit.org/show_bug.cgi?id=30476 | |
16018 | ||
16019 | Assign ReadUserData WriteUserData NetworkServices Symbian capabilities | |
16020 | to jsc.exe. | |
16021 | ||
16022 | * jsc.pro: | |
16023 | ||
16024 | 2009-10-23 Steve Block <steveblock@google.com> | |
16025 | ||
16026 | Reviewed by Dmitry Titov. | |
16027 | ||
16028 | Fixes a leak in createThreadInternal on Android. | |
16029 | https://bugs.webkit.org/show_bug.cgi?id=30698 | |
16030 | ||
16031 | * wtf/ThreadingPthreads.cpp: Modified. | |
16032 | (WTF::createThreadInternal): Avoid leaking a ThreadData object on failure. | |
16033 | ||
16034 | 2009-10-22 Geoffrey Garen <ggaren@apple.com> | |
16035 | ||
16036 | Reviewed by Alexey Proskuryakov. | |
16037 | ||
16038 | Fixed ASSERT when opening Safari's Caches window while the Web Inspector | |
16039 | is open. | |
16040 | ||
16041 | * runtime/Collector.cpp: | |
16042 | (JSC::typeName): Added two new types to the type name list in the Collector. | |
16043 | These types have been around for a while, but nobody remembered to consider them here. | |
16044 | ||
16045 | * runtime/JSCell.h: | |
16046 | (JSC::JSCell::isPropertyNameIterator): | |
16047 | * runtime/JSPropertyNameIterator.h: | |
16048 | (JSC::JSPropertyNameIterator::isPropertyNameIterator): Give the Collector | |
16049 | a way to tell if a cell is a JSPropertyNameIterator. | |
16050 | ||
16051 | 2009-10-22 Steve Falkenburg <sfalken@apple.com> | |
16052 | ||
16053 | Reviewed by Jon Honeycutt. | |
16054 | ||
16055 | https://bugs.webkit.org/show_bug.cgi?id=30686 | |
16056 | Remove debug-specific def file. | |
16057 | Only Debug_All target uses JavaScriptCore_debug.dll naming, and since | |
16058 | that target is only used internally, maintaining two files just to | |
16059 | suppress a single link warning isn't worthwhile. | |
16060 | ||
16061 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
16062 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Removed. | |
16063 | ||
16064 | 2009-10-21 Jon Honeycutt <jhoneycutt@apple.com> | |
16065 | ||
16066 | <rdar://problem/7270320> Screenshots of off-screen plug-ins are blank | |
16067 | <rdar://problem/7270314> After halting a transparent PluginView on | |
16068 | Windows, the transparency is applied twice | |
16069 | ||
16070 | Reviewed by Dan Bernstein. | |
16071 | ||
16072 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
16073 | Export WTF::deleteOwnedPtr(HDC). | |
16074 | ||
16075 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
16076 | Ditto. | |
16077 | ||
16078 | 2009-10-20 Geoffrey Garen <ggaren@apple.com> | |
16079 | ||
16080 | Windows build fix: updated variable name. | |
16081 | ||
16082 | * runtime/DatePrototype.cpp: | |
16083 | (JSC::formatLocaleDate): | |
16084 | ||
16085 | 2009-10-20 Geoffrey Garen <ggaren@apple.com> | |
16086 | ||
16087 | Reviewed by Mark Rowe. | |
16088 | ||
16089 | * jit/JITOpcodes.cpp: | |
16090 | (JSC::JIT::emit_op_next_pname): Slightly tweaked this #ifdef to match the | |
16091 | size of a JSValue because m_jsStrings is an array of JSValues. | |
16092 | ||
16093 | 2009-10-20 Geoffrey Garen <ggaren@apple.com> | |
16094 | ||
16095 | Reviewed by Mark Rowe. | |
16096 | ||
16097 | Fixed a 64-bit regression caused by the fix for | |
16098 | https://bugs.webkit.org/show_bug.cgi?id=30570. | |
16099 | ||
16100 | * jit/JITOpcodes.cpp: | |
16101 | (JSC::JIT::emit_op_next_pname): Use TimesEight stepping on 64-bit, since | |
16102 | 64-bit pointers are eight bytes long. | |
16103 | ||
16104 | 2009-10-20 Geoffrey Garen <ggaren@apple.com> | |
16105 | ||
16106 | Reviewed by Sam Weinig. | |
16107 | ||
16108 | Refactored DateInstance::msToGregorianDateTime so that a DateInstance's | |
16109 | caller doesn't need to supply the DateInstance's own internal value to | |
16110 | the DateInstance. | |
16111 | ||
16112 | * runtime/DateInstance.cpp: | |
16113 | (JSC::DateInstance::getGregorianDateTime): Renamed from "msToGregorianDateTime". | |
16114 | ||
16115 | * runtime/DateInstance.h: | |
16116 | * runtime/DatePrototype.cpp: | |
16117 | (JSC::formatLocaleDate): | |
16118 | (JSC::dateProtoFuncToString): | |
16119 | (JSC::dateProtoFuncToUTCString): | |
16120 | (JSC::dateProtoFuncToISOString): | |
16121 | (JSC::dateProtoFuncToDateString): | |
16122 | (JSC::dateProtoFuncToTimeString): | |
16123 | (JSC::dateProtoFuncToLocaleString): | |
16124 | (JSC::dateProtoFuncToLocaleDateString): | |
16125 | (JSC::dateProtoFuncToLocaleTimeString): | |
16126 | (JSC::dateProtoFuncGetTime): | |
16127 | (JSC::dateProtoFuncGetFullYear): | |
16128 | (JSC::dateProtoFuncGetUTCFullYear): | |
16129 | (JSC::dateProtoFuncToGMTString): | |
16130 | (JSC::dateProtoFuncGetMonth): | |
16131 | (JSC::dateProtoFuncGetUTCMonth): | |
16132 | (JSC::dateProtoFuncGetDate): | |
16133 | (JSC::dateProtoFuncGetUTCDate): | |
16134 | (JSC::dateProtoFuncGetDay): | |
16135 | (JSC::dateProtoFuncGetUTCDay): | |
16136 | (JSC::dateProtoFuncGetHours): | |
16137 | (JSC::dateProtoFuncGetUTCHours): | |
16138 | (JSC::dateProtoFuncGetMinutes): | |
16139 | (JSC::dateProtoFuncGetUTCMinutes): | |
16140 | (JSC::dateProtoFuncGetSeconds): | |
16141 | (JSC::dateProtoFuncGetUTCSeconds): | |
16142 | (JSC::dateProtoFuncGetTimezoneOffset): | |
16143 | (JSC::setNewValueFromTimeArgs): | |
16144 | (JSC::setNewValueFromDateArgs): | |
16145 | (JSC::dateProtoFuncSetYear): | |
16146 | (JSC::dateProtoFuncGetYear): Also renamed "utc" to "outputIsUTC", for clarity. | |
16147 | ||
16148 | 2009-10-20 Gabor Loki <loki@inf.u-szeged.hu> | |
16149 | ||
16150 | Reviewed by Geoffrey Garen. | |
16151 | ||
16152 | The op_next_pname should use 4 bytes addressing mode in case of JSValue32 | |
16153 | https://bugs.webkit.org/show_bug.cgi?id=30570 | |
16154 | ||
16155 | * jit/JITOpcodes.cpp: | |
16156 | (JSC::JIT::emit_op_next_pname): | |
16157 | ||
16158 | 2009-10-20 Gabor Loki <loki@inf.u-szeged.hu> | |
16159 | ||
16160 | Reviewed by Oliver Hunt. | |
16161 | ||
16162 | Move OverridesMarkChildren flag from DatePrototype to its parent class | |
16163 | https://bugs.webkit.org/show_bug.cgi?id=30372 | |
16164 | ||
16165 | * runtime/DateInstance.h: | |
16166 | (JSC::DateInstance::createStructure): | |
16167 | * runtime/DatePrototype.h: | |
16168 | ||
16169 | 2009-10-19 Geoffrey Garen <ggaren@apple.com> | |
16170 | ||
16171 | Reviewed by Oliver Hunt. | |
16172 | ||
16173 | Tightened up some put_by_id_transition code generation. | |
16174 | https://bugs.webkit.org/show_bug.cgi?id=30539 | |
16175 | ||
16176 | * jit/JIT.h: | |
16177 | * jit/JITPropertyAccess.cpp: | |
16178 | (JSC::JIT::testPrototype): | |
16179 | (JSC::JIT::privateCompilePutByIdTransition): No need to do object type | |
16180 | checks or read Structures and prototypes from objects: they're all known | |
16181 | constants at compile time. | |
16182 | ||
16183 | 2009-10-19 Geoffrey Garen <ggaren@apple.com> | |
16184 | ||
16185 | Reviewed by Sam Weinig. | |
16186 | ||
16187 | Added a private API for getting a global context from a context, for | |
16188 | clients who want to preserve a context for a later callback. | |
16189 | ||
16190 | * API/APICast.h: | |
16191 | (toGlobalRef): Added an ASSERT, since this function is used more often | |
16192 | than before. | |
16193 | ||
16194 | * API/JSContextRef.cpp: | |
16195 | * API/JSContextRefPrivate.h: Added. The new API. | |
16196 | ||
16197 | * API/tests/testapi.c: | |
16198 | (print_callAsFunction): | |
16199 | (main): Test the new API. | |
16200 | ||
16201 | * JavaScriptCore.exp: | |
16202 | * JavaScriptCore.xcodeproj/project.pbxproj: Build and export the new API. | |
16203 | ||
16204 | 2009-10-17 Geoffrey Garen <ggaren@apple.com> | |
16205 | ||
16206 | Reviewed by Oliver Hunt. | |
16207 | ||
16208 | Tightened up some instanceof code generation. | |
16209 | https://bugs.webkit.org/show_bug.cgi?id=30488 | |
16210 | ||
16211 | * jit/JITOpcodes.cpp: | |
16212 | (JSC::JIT::emit_op_instanceof): | |
16213 | (JSC::JIT::emitSlow_op_instanceof): No need to do object type checks - | |
16214 | cell type checks and ImplementsDefaultHasIntance checks implicitly | |
16215 | supersede object type checks. | |
16216 | ||
16217 | 2009-10-18 Kwang Yul Seo <skyul@company100.net> | |
16218 | ||
16219 | Reviewed by Darin Adler. | |
16220 | ||
16221 | Use _stricmp and _strnicmp instead of deprecated stricmp and strnicmp. | |
16222 | https://bugs.webkit.org/show_bug.cgi?id=30474 | |
16223 | ||
16224 | stricmp and strnicmp are deprecated beginning in Visual | |
16225 | C++ 2005. Use _stricmp and _strnicmp instead in StringExtras.h. | |
16226 | ||
16227 | * wtf/StringExtras.h: | |
16228 | (strncasecmp): | |
16229 | (strcasecmp): | |
16230 | ||
16231 | 2009-10-16 Geoffrey Garen <ggaren@apple.com> | |
16232 | ||
16233 | Build fix: apparently we shouldn't export those symbols? | |
16234 | ||
16235 | * JavaScriptCore.exp: | |
16236 | ||
16237 | 2009-10-16 Geoffrey Garen <ggaren@apple.com> | |
16238 | ||
16239 | Build fix: export some symbols. | |
16240 | ||
16241 | * JavaScriptCore.exp: | |
16242 | ||
16243 | 2009-10-16 Oliver Hunt <oliver@apple.com> | |
16244 | ||
16245 | Reviewed by Gavin Barraclough. | |
16246 | ||
16247 | structure typeinfo flags should be inherited. | |
16248 | https://bugs.webkit.org/show_bug.cgi?id=30468 | |
16249 | ||
16250 | Add StructureFlag constant to the various JSC classes and use | |
16251 | it for the TypeInfo construction. This allows us to simply | |
16252 | accumulate flags by basing each classes StructureInfo on its parents. | |
16253 | ||
16254 | * API/JSCallbackConstructor.h: | |
16255 | (JSC::JSCallbackConstructor::createStructure): | |
16256 | * API/JSCallbackFunction.h: | |
16257 | (JSC::JSCallbackFunction::createStructure): | |
16258 | * API/JSCallbackObject.h: | |
16259 | (JSC::JSCallbackObject::createStructure): | |
16260 | * debugger/DebuggerActivation.h: | |
16261 | (JSC::DebuggerActivation::createStructure): | |
16262 | * runtime/Arguments.h: | |
16263 | (JSC::Arguments::createStructure): | |
16264 | * runtime/BooleanObject.h: | |
16265 | (JSC::BooleanObject::createStructure): | |
16266 | * runtime/DatePrototype.h: | |
16267 | (JSC::DatePrototype::createStructure): | |
16268 | * runtime/FunctionPrototype.h: | |
16269 | (JSC::FunctionPrototype::createStructure): | |
16270 | * runtime/GlobalEvalFunction.h: | |
16271 | (JSC::GlobalEvalFunction::createStructure): | |
16272 | * runtime/InternalFunction.h: | |
16273 | (JSC::InternalFunction::createStructure): | |
16274 | * runtime/JSActivation.h: | |
16275 | (JSC::JSActivation::createStructure): | |
16276 | * runtime/JSArray.h: | |
16277 | (JSC::JSArray::createStructure): | |
16278 | * runtime/JSByteArray.cpp: | |
16279 | (JSC::JSByteArray::createStructure): | |
16280 | * runtime/JSByteArray.h: | |
16281 | * runtime/JSFunction.h: | |
16282 | (JSC::JSFunction::createStructure): | |
16283 | * runtime/JSGlobalObject.h: | |
16284 | (JSC::JSGlobalObject::createStructure): | |
16285 | * runtime/JSNotAnObject.h: | |
16286 | (JSC::JSNotAnObject::createStructure): | |
16287 | * runtime/JSONObject.h: | |
16288 | (JSC::JSONObject::createStructure): | |
16289 | * runtime/JSObject.h: | |
16290 | (JSC::JSObject::createStructure): | |
16291 | * runtime/JSStaticScopeObject.h: | |
16292 | (JSC::JSStaticScopeObject::createStructure): | |
16293 | * runtime/JSVariableObject.h: | |
16294 | (JSC::JSVariableObject::createStructure): | |
16295 | * runtime/JSWrapperObject.h: | |
16296 | (JSC::JSWrapperObject::createStructure): | |
16297 | * runtime/MathObject.h: | |
16298 | (JSC::MathObject::createStructure): | |
16299 | * runtime/NumberConstructor.h: | |
16300 | (JSC::NumberConstructor::createStructure): | |
16301 | * runtime/NumberObject.h: | |
16302 | (JSC::NumberObject::createStructure): | |
16303 | * runtime/RegExpConstructor.h: | |
16304 | (JSC::RegExpConstructor::createStructure): | |
16305 | * runtime/RegExpObject.h: | |
16306 | (JSC::RegExpObject::createStructure): | |
16307 | * runtime/StringObject.h: | |
16308 | (JSC::StringObject::createStructure): | |
16309 | * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
16310 | (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
16311 | ||
16312 | 2009-10-16 Geoffrey Garen <ggaren@apple.com> | |
16313 | ||
16314 | Reviewed by Oliver Hunt. | |
16315 | ||
16316 | Fast for-in enumeration: Cache JSPropertyNameIterator; cache JSStrings | |
16317 | in JSPropertyNameIterator; inline more code. | |
16318 | ||
16319 | 1.024x as fast on SunSpider (fasta: 1.43x as fast). | |
16320 | ||
16321 | * bytecode/CodeBlock.cpp: | |
16322 | (JSC::CodeBlock::dump): | |
16323 | * bytecode/Opcode.h: | |
16324 | * bytecompiler/BytecodeGenerator.cpp: | |
16325 | (JSC::BytecodeGenerator::emitGetPropertyNames): | |
16326 | (JSC::BytecodeGenerator::emitNextPropertyName): | |
16327 | * bytecompiler/BytecodeGenerator.h: Added a few extra operands to | |
16328 | op_get_pnames and op_next_pname so that we can track iteration state | |
16329 | in the register file instead of in the JSPropertyNameIterator. (To be | |
16330 | cacheable, the JSPropertyNameIterator must be stateless.) | |
16331 | ||
16332 | * interpreter/Interpreter.cpp: | |
16333 | (JSC::Interpreter::tryCachePutByID): | |
16334 | (JSC::Interpreter::tryCacheGetByID): Updated for rename to | |
16335 | "normalizePrototypeChain" and removal of "isCacheable". | |
16336 | ||
16337 | (JSC::Interpreter::privateExecute): Updated for in-RegisterFile | |
16338 | iteration state tracking. | |
16339 | ||
16340 | * jit/JIT.cpp: | |
16341 | (JSC::JIT::privateCompileMainPass): | |
16342 | * jit/JIT.h: | |
16343 | * jit/JITOpcodes.cpp: | |
16344 | (JSC::JIT::emit_op_get_pnames): Updated for in-RegisterFile | |
16345 | iteration state tracking. | |
16346 | ||
16347 | (JSC::JIT::emit_op_next_pname): Inlined code generation for op_next_pname. | |
16348 | ||
16349 | * jit/JITStubs.cpp: | |
16350 | (JSC::JITThunks::tryCachePutByID): | |
16351 | (JSC::JITThunks::tryCacheGetByID): Updated for rename to | |
16352 | "normalizePrototypeChain" and removal of "isCacheable". | |
16353 | ||
16354 | (JSC::DEFINE_STUB_FUNCTION): | |
16355 | * jit/JITStubs.h: | |
16356 | (JSC::): Added has_property and to_object stubs. Removed op_next_pname | |
16357 | stub, since has_property is all we need anymore. | |
16358 | ||
16359 | * parser/Nodes.cpp: | |
16360 | (JSC::ForInNode::emitBytecode): Updated for in-RegisterFile | |
16361 | iteration state tracking. | |
16362 | ||
16363 | * runtime/JSCell.h: | |
16364 | * runtime/JSObject.cpp: | |
16365 | (JSC::JSObject::getPropertyNames): Don't do caching at this layer | |
16366 | anymore, since we don't create a JSPropertyNameIterator at this layer. | |
16367 | ||
16368 | * runtime/JSPropertyNameIterator.cpp: | |
16369 | (JSC::JSPropertyNameIterator::create): Do do caching at this layer. | |
16370 | (JSC::JSPropertyNameIterator::get): Updated for in-RegisterFile | |
16371 | iteration state tracking. | |
16372 | (JSC::JSPropertyNameIterator::markChildren): Mark our JSStrings. | |
16373 | ||
16374 | * runtime/JSPropertyNameIterator.h: | |
16375 | (JSC::JSPropertyNameIterator::size): | |
16376 | (JSC::JSPropertyNameIterator::setCachedStructure): | |
16377 | (JSC::JSPropertyNameIterator::cachedStructure): | |
16378 | (JSC::JSPropertyNameIterator::setCachedPrototypeChain): | |
16379 | (JSC::JSPropertyNameIterator::cachedPrototypeChain): | |
16380 | (JSC::JSPropertyNameIterator::JSPropertyNameIterator): | |
16381 | (JSC::Structure::setEnumerationCache): Don't store iteration state in | |
16382 | a JSPropertyNameIterator. Do cache a JSPropertyNameIterator in a | |
16383 | Structure. | |
16384 | ||
16385 | * runtime/JSValue.h: | |
16386 | (JSC::asCell): | |
16387 | * runtime/MarkStack.h: Make those mischievous #include gods happy. | |
16388 | ||
16389 | * runtime/ObjectConstructor.cpp: | |
16390 | ||
16391 | * runtime/Operations.h: | |
16392 | (JSC::normalizePrototypeChain): Renamed countPrototypeChainEntriesAndCheckForProxies | |
16393 | to normalizePrototypeChain, since it changes dictionary prototypes to | |
16394 | non-dictionary objects. | |
16395 | ||
16396 | * runtime/PropertyNameArray.cpp: | |
16397 | (JSC::PropertyNameArray::add): | |
16398 | * runtime/PropertyNameArray.h: | |
16399 | (JSC::PropertyNameArrayData::PropertyNameArrayData): | |
16400 | (JSC::PropertyNameArray::data): | |
16401 | (JSC::PropertyNameArray::size): | |
16402 | (JSC::PropertyNameArray::begin): | |
16403 | (JSC::PropertyNameArray::end): Simplified some code here to help with | |
16404 | current and future refactoring. | |
16405 | ||
16406 | * runtime/Protect.h: | |
16407 | * runtime/Structure.cpp: | |
16408 | (JSC::Structure::~Structure): | |
16409 | (JSC::Structure::addPropertyWithoutTransition): | |
16410 | (JSC::Structure::removePropertyWithoutTransition): No need to clear | |
16411 | the enumeration cache with adding / removing properties without | |
16412 | transition. It is an error to add / remove properties without transition | |
16413 | once an object has been observed, and we can ASSERT to catch that. | |
16414 | ||
16415 | * runtime/Structure.h: | |
16416 | (JSC::Structure::enumerationCache): Changed the enumeration cache to | |
16417 | hold a JSPropertyNameIterator. | |
16418 | ||
16419 | * runtime/StructureChain.cpp: | |
16420 | * runtime/StructureChain.h: | |
16421 | (JSC::StructureChain::head): Removed StructureChain::isCacheable because | |
16422 | it was wrong-headed in two ways: (1) It gave up when a prototype was a | |
16423 | dictionary, but instead we want un-dictionary heavily accessed | |
16424 | prototypes; (2) It folded a test for hasDefaultGetPropertyNames() into | |
16425 | a generic test for "cacheable-ness", but hasDefaultGetPropertyNames() | |
16426 | is only releavant to for-in caching. | |
16427 | ||
16428 | 2009-10-16 Steve Falkenburg <sfalken@apple.com> | |
16429 | ||
16430 | Reviewed by Adam Roben. | |
16431 | ||
16432 | Add a Debug_All configuration to build entire stack as debug. | |
16433 | Change Debug_Internal to: | |
16434 | - stop using _debug suffix for all WebKit/Safari binaries | |
16435 | - not use _debug as a DLL naming suffix | |
16436 | - use non-debug C runtime lib. | |
16437 | ||
16438 | * JavaScriptCore.vcproj/JavaScriptCore.make: Debug build in makefile should build Debug_All. | |
16439 | * JavaScriptCore.vcproj/JavaScriptCore.sln: Add Debug_All configuration. | |
16440 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Add Debug_All configuration. | |
16441 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: Renamed single configuration from "Release" to "all". | |
16442 | * JavaScriptCore.vcproj/JavaScriptCoreSubmit.sln: Add Debug_All configuration. | |
16443 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Add Debug_All configuration. | |
16444 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_All configuration. | |
16445 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_All configuration. | |
16446 | ||
16447 | 2009-10-16 Oliver Hunt <oliver@apple.com> | |
16448 | ||
16449 | Reviewed by Gavin Barraclough. | |
16450 | ||
16451 | Make typeinfo flags default to false | |
16452 | https://bugs.webkit.org/show_bug.cgi?id=30372 | |
16453 | ||
16454 | Last part -- replace HasDefaultGetPropertyNames with OverridesGetPropertyNames | |
16455 | flag. | |
16456 | ||
16457 | * API/JSCallbackConstructor.h: | |
16458 | (JSC::JSCallbackConstructor::createStructure): | |
16459 | * API/JSCallbackObject.h: | |
16460 | (JSC::JSCallbackObject::createStructure): | |
16461 | * debugger/DebuggerActivation.h: | |
16462 | (JSC::DebuggerActivation::createStructure): | |
16463 | * runtime/Arguments.h: | |
16464 | (JSC::Arguments::createStructure): | |
16465 | * runtime/BooleanObject.h: | |
16466 | (JSC::BooleanObject::createStructure): | |
16467 | * runtime/DatePrototype.h: | |
16468 | (JSC::DatePrototype::createStructure): | |
16469 | * runtime/FunctionPrototype.h: | |
16470 | (JSC::FunctionPrototype::createStructure): | |
16471 | * runtime/GlobalEvalFunction.h: | |
16472 | (JSC::GlobalEvalFunction::createStructure): | |
16473 | * runtime/JSAPIValueWrapper.h: | |
16474 | (JSC::JSAPIValueWrapper::createStructure): | |
16475 | * runtime/JSActivation.h: | |
16476 | (JSC::JSActivation::createStructure): | |
16477 | * runtime/JSArray.h: | |
16478 | (JSC::JSArray::createStructure): | |
16479 | * runtime/JSByteArray.cpp: | |
16480 | (JSC::JSByteArray::createStructure): | |
16481 | * runtime/JSFunction.h: | |
16482 | (JSC::JSFunction::createStructure): | |
16483 | * runtime/JSGlobalObject.h: | |
16484 | (JSC::JSGlobalObject::createStructure): | |
16485 | * runtime/JSNotAnObject.h: | |
16486 | (JSC::JSNotAnObject::createStructure): | |
16487 | * runtime/JSONObject.h: | |
16488 | (JSC::JSONObject::createStructure): | |
16489 | * runtime/JSObject.cpp: | |
16490 | (JSC::JSObject::getPropertyNames): | |
16491 | * runtime/JSObject.h: | |
16492 | (JSC::JSObject::createStructure): | |
16493 | * runtime/JSStaticScopeObject.h: | |
16494 | (JSC::JSStaticScopeObject::createStructure): | |
16495 | * runtime/JSTypeInfo.h: | |
16496 | (JSC::TypeInfo::overridesGetPropertyNames): | |
16497 | * runtime/JSVariableObject.h: | |
16498 | (JSC::JSVariableObject::createStructure): | |
16499 | * runtime/JSWrapperObject.h: | |
16500 | (JSC::JSWrapperObject::createStructure): | |
16501 | * runtime/MathObject.h: | |
16502 | (JSC::MathObject::createStructure): | |
16503 | * runtime/NumberConstructor.h: | |
16504 | (JSC::NumberConstructor::createStructure): | |
16505 | * runtime/NumberObject.h: | |
16506 | (JSC::NumberObject::createStructure): | |
16507 | * runtime/RegExpConstructor.h: | |
16508 | (JSC::RegExpConstructor::createStructure): | |
16509 | * runtime/RegExpObject.h: | |
16510 | (JSC::RegExpObject::createStructure): | |
16511 | * runtime/StringObject.h: | |
16512 | (JSC::StringObject::createStructure): | |
16513 | * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
16514 | (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
16515 | * runtime/StructureChain.cpp: | |
16516 | (JSC::StructureChain::isCacheable): | |
16517 | ||
16518 | 2009-10-16 Kevin Ollivier <kevino@theolliviers.com> | |
16519 | ||
16520 | wxMSW build fix, we can't use the simple hash there because the PlatformModuleVersion | |
16521 | structure differs. | |
16522 | ||
16523 | * wtf/Platform.h: | |
16524 | ||
16525 | 2009-10-16 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
16526 | ||
16527 | Reviewed by Simon Hausmann. | |
16528 | ||
16529 | [Qt] Implement ExecutableAllocator for Symbian | |
16530 | https://bugs.webkit.org/show_bug.cgi?id=29946 | |
16531 | ||
16532 | Tested with YARR JIT enabled for Symbian; | |
16533 | This patch does not (yet) enable YARR JIT by default. | |
16534 | ||
16535 | * JavaScriptCore.pri: | |
16536 | * jit/ExecutableAllocator.h: | |
16537 | * jit/ExecutableAllocatorSymbian.cpp: Added. | |
16538 | (JSC::ExecutableAllocator::intializePageSize): | |
16539 | (JSC::ExecutablePool::systemAlloc): | |
16540 | (JSC::ExecutablePool::systemRelease): | |
16541 | ||
16542 | 2009-10-15 Oliver Hunt <oliver@apple.com> | |
16543 | ||
16544 | Reviewed by Darin Adler. | |
16545 | ||
16546 | Make typeinfo flags default to false | |
16547 | https://bugs.webkit.org/show_bug.cgi?id=30372 | |
16548 | ||
16549 | Part 2 -- Reverse the TypeInfo HasDefaultMark flag to OverridesMarkChildren, etc | |
16550 | ||
16551 | * API/JSCallbackConstructor.h: | |
16552 | (JSC::JSCallbackConstructor::createStructure): | |
16553 | * API/JSCallbackFunction.h: | |
16554 | (JSC::JSCallbackFunction::createStructure): | |
16555 | * API/JSCallbackObject.h: | |
16556 | (JSC::JSCallbackObject::createStructure): | |
16557 | * debugger/DebuggerActivation.h: | |
16558 | (JSC::DebuggerActivation::createStructure): | |
16559 | * runtime/Arguments.h: | |
16560 | (JSC::Arguments::createStructure): | |
16561 | * runtime/BooleanObject.h: | |
16562 | (JSC::BooleanObject::createStructure): | |
16563 | * runtime/DatePrototype.h: | |
16564 | (JSC::DatePrototype::createStructure): | |
16565 | * runtime/FunctionPrototype.h: | |
16566 | (JSC::FunctionPrototype::createStructure): | |
16567 | * runtime/GetterSetter.h: | |
16568 | (JSC::GetterSetter::createStructure): | |
16569 | * runtime/GlobalEvalFunction.h: | |
16570 | (JSC::GlobalEvalFunction::createStructure): | |
16571 | * runtime/InternalFunction.h: | |
16572 | (JSC::InternalFunction::createStructure): | |
16573 | * runtime/JSAPIValueWrapper.h: | |
16574 | (JSC::JSAPIValueWrapper::createStructure): | |
16575 | * runtime/JSActivation.h: | |
16576 | (JSC::JSActivation::createStructure): | |
16577 | * runtime/JSArray.h: | |
16578 | (JSC::JSArray::createStructure): | |
16579 | (JSC::MarkStack::markChildren): | |
16580 | * runtime/JSByteArray.cpp: | |
16581 | (JSC::JSByteArray::createStructure): | |
16582 | * runtime/JSFunction.h: | |
16583 | (JSC::JSFunction::createStructure): | |
16584 | * runtime/JSGlobalObject.h: | |
16585 | (JSC::JSGlobalObject::createStructure): | |
16586 | * runtime/JSNotAnObject.h: | |
16587 | (JSC::JSNotAnObject::createStructure): | |
16588 | * runtime/JSNumberCell.h: | |
16589 | (JSC::JSNumberCell::createStructure): | |
16590 | * runtime/JSONObject.h: | |
16591 | (JSC::JSONObject::createStructure): | |
16592 | * runtime/JSObject.h: | |
16593 | (JSC::JSObject::createStructure): | |
16594 | * runtime/JSPropertyNameIterator.h: | |
16595 | (JSC::JSPropertyNameIterator::createStructure): | |
16596 | * runtime/JSStaticScopeObject.h: | |
16597 | (JSC::JSStaticScopeObject::createStructure): | |
16598 | * runtime/JSString.h: | |
16599 | (JSC::JSString::createStructure): | |
16600 | * runtime/JSTypeInfo.h: | |
16601 | (JSC::TypeInfo::overridesMarkChildren): | |
16602 | * runtime/JSVariableObject.h: | |
16603 | (JSC::JSVariableObject::createStructure): | |
16604 | * runtime/JSWrapperObject.h: | |
16605 | (JSC::JSWrapperObject::createStructure): | |
16606 | * runtime/MathObject.h: | |
16607 | (JSC::MathObject::createStructure): | |
16608 | * runtime/NumberConstructor.h: | |
16609 | (JSC::NumberConstructor::createStructure): | |
16610 | * runtime/NumberObject.h: | |
16611 | (JSC::NumberObject::createStructure): | |
16612 | * runtime/RegExpConstructor.h: | |
16613 | (JSC::RegExpConstructor::createStructure): | |
16614 | * runtime/RegExpObject.h: | |
16615 | (JSC::RegExpObject::createStructure): | |
16616 | * runtime/StringObject.h: | |
16617 | (JSC::StringObject::createStructure): | |
16618 | * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
16619 | (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
16620 | ||
16621 | 2009-10-14 Oliver Hunt <oliver@apple.com> | |
16622 | ||
16623 | Reviewed by Geoff Garen. | |
16624 | ||
16625 | Make typeinfo flags default to false | |
16626 | https://bugs.webkit.org/show_bug.cgi?id=30372 | |
16627 | ||
16628 | Part 1. Reverse the HasStandardGetOwnPropertySlot flag. | |
16629 | ||
16630 | * API/JSCallbackConstructor.h: | |
16631 | (JSC::JSCallbackConstructor::createStructure): | |
16632 | * API/JSCallbackFunction.h: | |
16633 | (JSC::JSCallbackFunction::createStructure): | |
16634 | * API/JSCallbackObject.h: | |
16635 | (JSC::JSCallbackObject::createStructure): | |
16636 | * debugger/DebuggerActivation.h: | |
16637 | (JSC::DebuggerActivation::createStructure): | |
16638 | * jit/JITStubs.cpp: | |
16639 | (JSC::DEFINE_STUB_FUNCTION): | |
16640 | * runtime/Arguments.h: | |
16641 | (JSC::Arguments::createStructure): | |
16642 | * runtime/BooleanObject.h: | |
16643 | (JSC::BooleanObject::createStructure): | |
16644 | * runtime/DatePrototype.h: | |
16645 | (JSC::DatePrototype::createStructure): | |
16646 | * runtime/FunctionPrototype.h: | |
16647 | (JSC::FunctionPrototype::createStructure): | |
16648 | * runtime/GlobalEvalFunction.h: | |
16649 | (JSC::GlobalEvalFunction::createStructure): | |
16650 | * runtime/InternalFunction.h: | |
16651 | (JSC::InternalFunction::createStructure): | |
16652 | * runtime/JSActivation.h: | |
16653 | (JSC::JSActivation::createStructure): | |
16654 | * runtime/JSArray.h: | |
16655 | (JSC::JSArray::createStructure): | |
16656 | * runtime/JSByteArray.cpp: | |
16657 | (JSC::JSByteArray::createStructure): | |
16658 | * runtime/JSFunction.h: | |
16659 | (JSC::JSFunction::createStructure): | |
16660 | * runtime/JSGlobalObject.h: | |
16661 | (JSC::JSGlobalObject::createStructure): | |
16662 | * runtime/JSNumberCell.h: | |
16663 | (JSC::JSNumberCell::createStructure): | |
16664 | * runtime/JSONObject.h: | |
16665 | (JSC::JSONObject::createStructure): | |
16666 | * runtime/JSObject.h: | |
16667 | (JSC::JSObject::createStructure): | |
16668 | (JSC::JSCell::fastGetOwnPropertySlot): | |
16669 | * runtime/JSStaticScopeObject.h: | |
16670 | (JSC::JSStaticScopeObject::createStructure): | |
16671 | * runtime/JSString.h: | |
16672 | (JSC::JSString::createStructure): | |
16673 | * runtime/JSTypeInfo.h: | |
16674 | (JSC::TypeInfo::overridesGetOwnPropertySlot): | |
16675 | * runtime/JSVariableObject.h: | |
16676 | (JSC::JSVariableObject::createStructure): | |
16677 | * runtime/JSWrapperObject.h: | |
16678 | (JSC::JSWrapperObject::createStructure): | |
16679 | * runtime/MathObject.h: | |
16680 | (JSC::MathObject::createStructure): | |
16681 | * runtime/NumberConstructor.h: | |
16682 | (JSC::NumberConstructor::createStructure): | |
16683 | * runtime/NumberObject.h: | |
16684 | (JSC::NumberObject::createStructure): | |
16685 | * runtime/RegExpConstructor.h: | |
16686 | (JSC::RegExpConstructor::createStructure): | |
16687 | * runtime/RegExpObject.h: | |
16688 | (JSC::RegExpObject::createStructure): | |
16689 | * runtime/StringObject.h: | |
16690 | (JSC::StringObject::createStructure): | |
16691 | * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
16692 | (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
16693 | ||
16694 | 2009-10-14 Kevin Ollivier <kevino@theolliviers.com> | |
16695 | 2009-10-14 Darin Adler <darin@apple.com> | |
16696 | ||
16697 | Additions so fix for https://bugs.webkit.org/show_bug.cgi?id=18994 | |
16698 | can build on Windows. | |
16699 | ||
16700 | * wtf/MathExtras.h: Added llround and llroundf for Windows. | |
16701 | ||
16702 | 2009-10-14 Kevin Ollivier <kevino@theolliviers.com> | |
16703 | ||
16704 | wx build fix. Set ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH for plugins while we're still building stubs. | |
16705 | ||
16706 | * wtf/Platform.h: | |
16707 | ||
16708 | 2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
16709 | ||
16710 | Reviewed by Simon Hausmann. | |
16711 | ||
16712 | Refactor ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH | |
16713 | https://bugs.webkit.org/show_bug.cgi?id=30278 | |
16714 | ||
16715 | Move the definition of ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH | |
16716 | from the make system into common code. | |
16717 | ||
16718 | * wtf/Platform.h: | |
16719 | ||
16720 | 2009-10-13 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
16721 | ||
16722 | Reviewed by Darin Adler. | |
16723 | ||
16724 | ARM compiler does not understand reinterpret_cast<void*> | |
16725 | https://bugs.webkit.org/show_bug.cgi?id=29034 | |
16726 | ||
16727 | Change reinterpret_cast<void*> to regular C style (void*) cast | |
16728 | for the ARM RVCT compiler. | |
16729 | ||
16730 | * assembler/MacroAssemblerCodeRef.h: | |
16731 | (JSC::FunctionPtr::FunctionPtr): | |
16732 | * jit/JITOpcodes.cpp: Cast to FunctionPtr first | |
16733 | instead of directly casting to reinterpret_cast | |
16734 | * jit/JITStubCall.h: Ditto + change the type of m_stub | |
16735 | from void* to FunctionPtr. | |
16736 | (JSC::JITStubCall::JITStubCall): | |
16737 | (JSC::JITStubCall::call): | |
16738 | * jit/JITStubs.cpp: Ditto. | |
16739 | (JSC::DEFINE_STUB_FUNCTION(EncodedJSValue, op_throw)): | |
16740 | ||
16741 | 2009-10-11 Oliver Hunt <oliver@apple.com> | |
16742 | ||
16743 | Re-enable the JIT. | |
16744 | ||
16745 | * wtf/Platform.h: | |
16746 | ||
16747 | 2009-10-10 Oliver Hunt <oliver@apple.com> | |
16748 | ||
16749 | Reviewed by Maciej Stachowiak. | |
16750 | ||
16751 | Support for String.trim(), String.trimLeft() and String.trimRight() methods | |
16752 | https://bugs.webkit.org/show_bug.cgi?id=26590 | |
16753 | ||
16754 | Implement trim, trimLeft, and trimRight | |
16755 | ||
16756 | * runtime/StringPrototype.cpp: | |
16757 | (JSC::isTrimWhitespace): | |
16758 | Our normal string whitespace function does not include U+200B which | |
16759 | is needed for compatibility with mozilla's implementation of trim. | |
16760 | U+200B does not appear to be expected according to spec, however I am | |
16761 | choosing to be lax, and match mozilla behavior so have added this | |
16762 | exception. | |
16763 | (JSC::trimString): | |
16764 | ||
16765 | 2009-10-09 Geoffrey Garen <ggaren@apple.com> | |
16766 | ||
16767 | Reviewed by Oliver Hunt. | |
16768 | ||
16769 | Eliminated some legacy bytecode weirdness. | |
16770 | ||
16771 | Use vPC[x] subscripting instead of ++vPC to access instruction operands. | |
16772 | This is simpler, and often more efficient. | |
16773 | ||
16774 | To support this, and to remove use of hard-coded offsets in bytecode and | |
16775 | JIT code generation and dumping, calculate jump offsets from the beginning | |
16776 | of an instruction, rather than the middle or end. | |
16777 | ||
16778 | Also, use OPCODE_LENGTH instead of hard-coded constants for the sizes of | |
16779 | opcodes. | |
16780 | ||
16781 | SunSpider reports no change in JIT mode, and a 1.01x speedup in Interpreter | |
16782 | mode. | |
16783 | ||
16784 | * bytecode/CodeBlock.cpp: | |
16785 | (JSC::printConditionalJump): | |
16786 | (JSC::CodeBlock::dump): | |
16787 | * bytecompiler/BytecodeGenerator.cpp: | |
16788 | (JSC::BytecodeGenerator::emitJump): | |
16789 | (JSC::BytecodeGenerator::emitJumpIfTrue): | |
16790 | (JSC::BytecodeGenerator::emitJumpIfFalse): | |
16791 | (JSC::BytecodeGenerator::emitJumpIfNotFunctionCall): | |
16792 | (JSC::BytecodeGenerator::emitJumpIfNotFunctionApply): | |
16793 | (JSC::BytecodeGenerator::emitComplexJumpScopes): | |
16794 | (JSC::BytecodeGenerator::emitJumpScopes): | |
16795 | (JSC::BytecodeGenerator::emitNextPropertyName): | |
16796 | (JSC::BytecodeGenerator::emitCatch): | |
16797 | (JSC::BytecodeGenerator::emitJumpSubroutine): | |
16798 | (JSC::prepareJumpTableForImmediateSwitch): | |
16799 | (JSC::prepareJumpTableForCharacterSwitch): | |
16800 | (JSC::prepareJumpTableForStringSwitch): | |
16801 | (JSC::BytecodeGenerator::endSwitch): | |
16802 | * bytecompiler/Label.h: | |
16803 | (JSC::Label::setLocation): | |
16804 | (JSC::Label::bind): | |
16805 | * interpreter/Interpreter.cpp: | |
16806 | (JSC::Interpreter::resolve): | |
16807 | (JSC::Interpreter::resolveSkip): | |
16808 | (JSC::Interpreter::resolveGlobal): | |
16809 | (JSC::Interpreter::resolveBase): | |
16810 | (JSC::Interpreter::resolveBaseAndProperty): | |
16811 | (JSC::Interpreter::createExceptionScope): | |
16812 | (JSC::Interpreter::privateExecute): | |
16813 | * interpreter/Interpreter.h: | |
16814 | * jit/JIT.cpp: | |
16815 | (JSC::JIT::privateCompile): | |
16816 | * jit/JITArithmetic.cpp: | |
16817 | (JSC::JIT::emit_op_jnless): | |
16818 | (JSC::JIT::emitSlow_op_jnless): | |
16819 | (JSC::JIT::emit_op_jnlesseq): | |
16820 | (JSC::JIT::emitSlow_op_jnlesseq): | |
16821 | (JSC::JIT::emitBinaryDoubleOp): | |
16822 | * jit/JITOpcodes.cpp: | |
16823 | (JSC::JIT::emit_op_jmp): | |
16824 | (JSC::JIT::emit_op_loop): | |
16825 | (JSC::JIT::emit_op_loop_if_less): | |
16826 | (JSC::JIT::emitSlow_op_loop_if_less): | |
16827 | (JSC::JIT::emit_op_loop_if_lesseq): | |
16828 | (JSC::JIT::emitSlow_op_loop_if_lesseq): | |
16829 | (JSC::JIT::emit_op_loop_if_true): | |
16830 | (JSC::JIT::emitSlow_op_loop_if_true): | |
16831 | (JSC::JIT::emit_op_jfalse): | |
16832 | (JSC::JIT::emitSlow_op_jfalse): | |
16833 | (JSC::JIT::emit_op_jtrue): | |
16834 | (JSC::JIT::emitSlow_op_jtrue): | |
16835 | (JSC::JIT::emit_op_jeq_null): | |
16836 | (JSC::JIT::emit_op_jneq_null): | |
16837 | (JSC::JIT::emit_op_jneq_ptr): | |
16838 | (JSC::JIT::emit_op_jsr): | |
16839 | (JSC::JIT::emit_op_next_pname): | |
16840 | (JSC::JIT::emit_op_jmp_scopes): | |
16841 | ||
16842 | 2009-10-09 Geoffrey Garen <ggaren@apple.com> | |
16843 | ||
16844 | Reviewed by Sam Weinig. | |
16845 | ||
16846 | Migrated some code that didn't belong out of Structure. | |
16847 | ||
16848 | SunSpider says maybe 1.03x faster. | |
16849 | ||
16850 | * runtime/JSCell.h: Nixed Structure::markAggregate, and made marking of | |
16851 | a Structure's prototype the direct responsility of the object using it. | |
16852 | (Giving Structure a mark function was misleading because it implied that | |
16853 | all live structures get marked during GC, when they don't.) | |
16854 | ||
16855 | * runtime/JSGlobalObject.cpp: | |
16856 | (JSC::markIfNeeded): | |
16857 | (JSC::JSGlobalObject::markChildren): Added code to mark prototypes stored | |
16858 | on the global object. Maybe this wasn't necessary, but now we don't have | |
16859 | to wonder. | |
16860 | ||
16861 | * runtime/JSObject.cpp: | |
16862 | (JSC::JSObject::getPropertyNames): | |
16863 | (JSC::JSObject::getOwnPropertyNames): | |
16864 | (JSC::JSObject::getEnumerableNamesFromClassInfoTable): | |
16865 | * runtime/JSObject.h: | |
16866 | (JSC::JSObject::markChildrenDirect): | |
16867 | * runtime/PropertyNameArray.h: | |
16868 | * runtime/Structure.cpp: | |
16869 | * runtime/Structure.h: | |
16870 | (JSC::Structure::setEnumerationCache): | |
16871 | (JSC::Structure::enumerationCache): Moved property name gathering code | |
16872 | from Structure to JSObject because having a Structure iterate its JSObject | |
16873 | was a layering violation. A JSObject is implemented using a Structure; not | |
16874 | the other way around. | |
16875 | ||
16876 | 2009-10-09 Mark Rowe <mrowe@apple.com> | |
16877 | ||
16878 | Attempt to fix the GTK release build. | |
16879 | ||
16880 | * GNUmakefile.am: Include Grammar.cpp in release builds now that | |
16881 | AllInOneFile.cpp is gone. | |
16882 | ||
16883 | 2009-10-09 Gabor Loki <loki@inf.u-szeged.hu> | |
16884 | ||
16885 | Rubber-stamped by Eric Seidel. | |
16886 | ||
16887 | Add ARM JIT support for Gtk port (disabled by default) | |
16888 | https://bugs.webkit.org/show_bug.cgi?id=30228 | |
16889 | ||
16890 | * GNUmakefile.am: | |
16891 | ||
16892 | 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
16893 | ||
16894 | Tiger build fix: added a few more variable initializations. | |
16895 | ||
16896 | * runtime/StringPrototype.cpp: | |
16897 | (JSC::stringProtoFuncReplace): | |
16898 | (JSC::stringProtoFuncSearch): | |
16899 | ||
16900 | 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
16901 | ||
16902 | Qt build fix: added missing #include. | |
16903 | ||
16904 | * jsc.cpp: | |
16905 | ||
16906 | 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
16907 | ||
16908 | Tiger build fix: initialize variable whose initialization the compiler | |
16909 | can't otherwise figure out. | |
16910 | ||
16911 | * runtime/RegExpObject.cpp: | |
16912 | (JSC::RegExpObject::match): | |
16913 | ||
16914 | 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
16915 | ||
16916 | Windows build fix: updated exports. | |
16917 | ||
16918 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
16919 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
16920 | ||
16921 | 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
16922 | ||
16923 | Tiger build fix: fixed file name case. | |
16924 | ||
16925 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
16926 | ||
16927 | 2009-10-08 Geoffrey Garen <ggaren@apple.com> | |
16928 | ||
16929 | Reviewed by Maciej Stachowiak. | |
16930 | ||
16931 | At long last, I pronounce the death of AllInOneFile.cpp. | |
16932 | ||
16933 | SunSpider reports a 1.01x speedup. | |
16934 | ||
16935 | * AllInOneFile.cpp: Removed. | |
16936 | * GNUmakefile.am: | |
16937 | * JavaScriptCore.exp: | |
16938 | * JavaScriptCore.gypi: | |
16939 | * JavaScriptCore.xcodeproj/project.pbxproj: Added missing project files | |
16940 | to compilation stages. | |
16941 | ||
16942 | * parser/Grammar.y: | |
16943 | * parser/Lexer.cpp: | |
16944 | * parser/Lexer.h: | |
16945 | (JSC::jscyylex): | |
16946 | * runtime/ArrayConstructor.cpp: | |
16947 | (JSC::constructArrayWithSizeQuirk): | |
16948 | * runtime/Collector.h: | |
16949 | * runtime/JSCell.cpp: | |
16950 | (JSC::JSCell::operator new): | |
16951 | * runtime/JSCell.h: | |
16952 | (JSC::JSCell::operator new): | |
16953 | * runtime/JSGlobalObject.cpp: | |
16954 | (JSC::JSGlobalObject::operator new): | |
16955 | * runtime/JSNumberCell.h: | |
16956 | (JSC::JSNumberCell::operator new): | |
16957 | * runtime/JSString.cpp: | |
16958 | * runtime/JSString.h: | |
16959 | (JSC::jsString): | |
16960 | (JSC::jsSubstring): | |
16961 | (JSC::jsOwnedString): | |
16962 | * runtime/RegExpConstructor.cpp: | |
16963 | * runtime/RegExpConstructor.h: | |
16964 | (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate): | |
16965 | (JSC::RegExpConstructorPrivate::lastOvector): | |
16966 | (JSC::RegExpConstructorPrivate::tempOvector): | |
16967 | (JSC::RegExpConstructorPrivate::changeLastOvector): | |
16968 | (JSC::RegExpConstructor::performMatch): | |
16969 | * runtime/StringPrototype.cpp: | |
16970 | (JSC::stringProtoFuncMatch): | |
16971 | * yarr/RegexJIT.cpp: | |
16972 | * yarr/RegexJIT.h: | |
16973 | (JSC::Yarr::executeRegex): Inlined a few things that Shark said | |
16974 | were hot, on the presumption that AllInOneFile.cpp used to inline them | |
16975 | automatically. | |
16976 | ||
16977 | 2009-10-08 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
16978 | ||
16979 | Reviewed by Gavin Barraclough. | |
16980 | ||
16981 | Fix for JIT'ed op_call instructions (evals, constructs, etc.) | |
16982 | when !ENABLE(JIT_OPTIMIZE_CALL) && USE(JSVALUE32_64) | |
16983 | ||
16984 | https://bugs.webkit.org/show_bug.cgi?id=30201 | |
16985 | ||
16986 | * jit/JITCall.cpp: | |
16987 | (JSC::JIT::compileOpCall): | |
16988 | ||
16989 | 2009-10-07 Geoffrey Garen <ggaren@apple.com> | |
16990 | ||
16991 | Windows build fix: removed no longer exported symbol. | |
16992 | ||
16993 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
16994 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
16995 | ||
16996 | 2009-10-07 Geoffrey Garen <ggaren@apple.com> | |
16997 | ||
16998 | Reviewed by Oliver Hunt. | |
16999 | ||
17000 | Fixed <rdar://problem/5751979> Database code takes JSLock on secondary | |
17001 | thread, permanently slowing down JavaScript | |
17002 | ||
17003 | Removed the optional lock from Heap::protect, Heap::unprotect, and friends, | |
17004 | since WebCore no longer uses it. | |
17005 | ||
17006 | * JavaScriptCore.exp: | |
17007 | * runtime/Collector.cpp: | |
17008 | (JSC::Heap::protect): | |
17009 | (JSC::Heap::unprotect): | |
17010 | (JSC::Heap::markProtectedObjects): | |
17011 | (JSC::Heap::protectedGlobalObjectCount): | |
17012 | (JSC::Heap::protectedObjectCount): | |
17013 | (JSC::Heap::protectedObjectTypeCounts): | |
17014 | * runtime/Collector.h: | |
17015 | ||
17016 | 2009-10-07 Zoltan Horvath <zoltan@webkit.org> | |
17017 | ||
17018 | Reviewed by Darin Adler. | |
17019 | ||
17020 | Allow custom memory allocation control for JavaScriptCore's IdentifierArena | |
17021 | https://bugs.webkit.org/show_bug.cgi?id=30158 | |
17022 | ||
17023 | Inherits IdentifierArena class from FastAllocBase because it has been | |
17024 | instantiated by 'new' in JavaScriptCore/parser/ParserArena.cpp:36. | |
17025 | ||
17026 | * parser/ParserArena.h: | |
17027 | ||
17028 | 2009-10-07 Adam Roben <aroben@apple.com> | |
17029 | ||
17030 | Export DateInstance::info in a way that works on Windows | |
17031 | ||
17032 | Fixes <http://webkit.org/b/30171> | |
17033 | fast/dom/Window/window-postmessage-clone.html fails on Windows | |
17034 | ||
17035 | Reviewed by Anders Carlsson. | |
17036 | ||
17037 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
17038 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
17039 | Removed the export of DateInstance::info from here. | |
17040 | ||
17041 | * runtime/DateInstance.h: Use JS_EXPORTDATA to export | |
17042 | DateInstance::info, which is the required way of exporting data on | |
17043 | Windows. | |
17044 | ||
17045 | 2009-10-07 Jørgen Lind <jorgen.lind@nokia.com> | |
17046 | ||
17047 | Reviewed by Simon Hausmann. | |
17048 | ||
17049 | When enabling or disabling the JIT through .qmake.cache, make sure | |
17050 | to also toggle ENABLE_YARR_JIT. | |
17051 | ||
17052 | * JavaScriptCore.pri: | |
17053 | ||
17054 | 2009-10-06 Priit Laes <plaes@plaes.org> | |
17055 | ||
17056 | Reviewed by Gavin Barraclough. | |
17057 | ||
17058 | Linking fails with "relocation R_X86_64_PC32 against symbol | |
17059 | `cti_vm_throw'" | |
17060 | https://bugs.webkit.org/show_bug.cgi?id=28422 | |
17061 | ||
17062 | * jit/JITStubs.cpp: | |
17063 | Mark cti_vm_throw symbol as PLT-indirect symbol, so it doesn't end up | |
17064 | in text segment causing relocation errors on amd64 architecture. | |
17065 | Introduced new define SYMBOL_STRING_RELOCATION for such symbols. | |
17066 | ||
17067 | 2009-10-06 Oliver Hunt <oliver@apple.com> | |
17068 | ||
17069 | Windows linking fix | |
17070 | ||
17071 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
17072 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
17073 | ||
17074 | 2009-10-06 Oliver Hunt <oliver@apple.com> | |
17075 | ||
17076 | Reviewed by NOBODY (build fix). | |
17077 | ||
17078 | Windows build fix. | |
17079 | ||
17080 | * runtime/DateInstance.cpp: | |
17081 | ||
17082 | 2009-10-05 Oliver Hunt <oliver@apple.com> | |
17083 | ||
17084 | Reviewed by Gavin Barraclough. | |
17085 | ||
17086 | It should be possible to post (clone) built-in JS objects to Workers | |
17087 | https://bugs.webkit.org/show_bug.cgi?id=22878 | |
17088 | ||
17089 | Expose helpers to throw correct exceptions during object graph walk | |
17090 | used for cloning and add a helper function to create Date instances | |
17091 | without going through the JS Date constructor function. | |
17092 | ||
17093 | * JavaScriptCore.exp: | |
17094 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
17095 | * runtime/DateInstance.cpp: | |
17096 | (JSC::DateInstance::DateInstance): | |
17097 | * runtime/DateInstance.h: | |
17098 | * runtime/ExceptionHelpers.cpp: | |
17099 | (JSC::createTypeError): | |
17100 | * runtime/ExceptionHelpers.h: | |
17101 | ||
17102 | 2009-10-06 David Levin <levin@chromium.org> | |
17103 | ||
17104 | Reviewed by Oliver Hunt. | |
17105 | ||
17106 | StringImpl needs a method to get an instance for another thread which doesn't copy the underlying buffer. | |
17107 | https://bugs.webkit.org/show_bug.cgi?id=30095 | |
17108 | ||
17109 | * wtf/CrossThreadRefCounted.h: | |
17110 | Removed an unused function and assert improvement. | |
17111 | (WTF::CrossThreadRefCounted::isOwnedByCurrentThread): Moved out common code from asserts. | |
17112 | (WTF::CrossThreadRefCounted::ref): Changed assert to use the common method. | |
17113 | (WTF::CrossThreadRefCounted::deref): Changed assert to use the common method. | |
17114 | (WTF::CrossThreadRefCounted::crossThreadCopy): Since this includes a potentially | |
17115 | non-threadsafe operation, add an assert that the class is owned by the current thread. | |
17116 | ||
17117 | 2009-10-05 Kevin Ollivier <kevino@theolliviers.com> | |
17118 | ||
17119 | wx build fix. Add Symbian files to the list of excludes. | |
17120 | ||
17121 | * wscript: | |
17122 | ||
17123 | 2009-10-05 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
17124 | ||
17125 | Reviewed by Simon Hausmann. | |
17126 | ||
17127 | [Qt] Remove precompiled header from JavaScriptCore compilation to | |
17128 | prevent qmake warning during autonomous compilation. | |
17129 | https://bugs.webkit.org/show_bug.cgi?id=30069 | |
17130 | ||
17131 | * JavaScriptCore.pro: | |
17132 | ||
17133 | 2009-10-02 Geoffrey Garen <ggaren@apple.com> | |
17134 | ||
17135 | Reviewed by Sam Weinig. | |
17136 | ||
17137 | Removed the concept of a "fast access cutoff" in arrays, because it | |
17138 | punished some patterns of array access too much, and made things too | |
17139 | complex for inlining in some cases. | |
17140 | ||
17141 | 1.3% speedup on SunSpider. | |
17142 | ||
17143 | * jit/JITOpcodes.cpp: | |
17144 | (JSC::JIT::emitSlow_op_get_by_val): | |
17145 | (JSC::JIT::emitSlow_op_put_by_val): | |
17146 | * jit/JITPropertyAccess.cpp: | |
17147 | (JSC::JIT::emit_op_get_by_val): | |
17148 | (JSC::JIT::emitSlow_op_get_by_val): | |
17149 | (JSC::JIT::emit_op_put_by_val): | |
17150 | (JSC::JIT::emitSlow_op_put_by_val): | |
17151 | * jit/JITStubs.cpp: | |
17152 | * jit/JITStubs.h: | |
17153 | (JSC::): Check m_vectorLength instead of m_fastAccessCutoff when | |
17154 | getting / putting from / to an array. Inline putting past the end of | |
17155 | the array. | |
17156 | ||
17157 | * runtime/JSArray.cpp: | |
17158 | (JSC::JSArray::JSArray): | |
17159 | (JSC::JSArray::getOwnPropertySlot): | |
17160 | (JSC::JSArray::getOwnPropertyDescriptor): | |
17161 | (JSC::JSArray::put): | |
17162 | (JSC::JSArray::putSlowCase): | |
17163 | (JSC::JSArray::deleteProperty): | |
17164 | (JSC::JSArray::getOwnPropertyNames): | |
17165 | (JSC::JSArray::increaseVectorLength): | |
17166 | (JSC::JSArray::setLength): | |
17167 | (JSC::JSArray::pop): | |
17168 | (JSC::JSArray::push): | |
17169 | (JSC::JSArray::sort): | |
17170 | (JSC::JSArray::fillArgList): | |
17171 | (JSC::JSArray::copyToRegisters): | |
17172 | (JSC::JSArray::compactForSorting): | |
17173 | (JSC::JSArray::checkConsistency): | |
17174 | * runtime/JSArray.h: | |
17175 | (JSC::JSArray::canGetIndex): | |
17176 | (JSC::JSArray::canSetIndex): | |
17177 | (JSC::JSArray::setIndex): | |
17178 | (JSC::JSArray::markChildrenDirect): Removed m_fastAccessCutoff, and | |
17179 | replaced with checks for JSValue() to detect reads and writes from / to | |
17180 | uninitialized parts of the array. | |
17181 | ||
17182 | 2009-10-02 Jonni Rainisto <jonni.rainisto@nokia.com> | |
17183 | ||
17184 | Reviewed by Darin Adler. | |
17185 | ||
17186 | Math.random() gives too low values on Win32 when _CRT_RAND_S is not defined | |
17187 | https://bugs.webkit.org/show_bug.cgi?id=29956 | |
17188 | ||
17189 | * wtf/RandomNumber.cpp: | |
17190 | (WTF::randomNumber): Added PLATFORM(WIN_OS) to handle 15bit rand() | |
17191 | ||
17192 | 2009-10-02 Geoffrey Garen <ggaren@apple.com> | |
17193 | ||
17194 | Reviewed by Sam Weinig. | |
17195 | ||
17196 | Take one branch instead of two to test for JSValue(). | |
17197 | ||
17198 | 1.1% SunSpider speedup. | |
17199 | ||
17200 | * jit/JITCall.cpp: | |
17201 | (JSC::JIT::compileOpCall): | |
17202 | * jit/JITOpcodes.cpp: | |
17203 | (JSC::JIT::emit_op_to_jsnumber): | |
17204 | (JSC::JIT::emit_op_create_arguments): | |
17205 | * jit/JITPropertyAccess.cpp: | |
17206 | (JSC::JIT::emitSlow_op_get_by_val): | |
17207 | (JSC::JIT::emit_op_put_by_val): Test for the empty value tag, instead | |
17208 | of testing for the cell tag with a 0 payload. | |
17209 | ||
17210 | * runtime/JSValue.cpp: | |
17211 | (JSC::JSValue::description): Added support for dumping the new empty value, | |
17212 | and deleted values, in debug builds. | |
17213 | ||
17214 | * runtime/JSValue.h: | |
17215 | (JSC::JSValue::JSValue()): Construct JSValue() with the empty value tag. | |
17216 | ||
17217 | (JSC::JSValue::JSValue(JSCell*)): Convert null pointer to the empty value | |
17218 | tag, to avoid having two different c++ versions of null / empty. | |
17219 | ||
17220 | (JSC::JSValue::operator bool): Test for the empty value tag, instead | |
17221 | of testing for the cell tag with a 0 payload. | |
17222 | ||
17223 | 2009-10-02 Steve Falkenburg <sfalken@apple.com> | |
17224 | ||
17225 | Reviewed by Mark Rowe. | |
17226 | ||
17227 | <https://bugs.webkit.org/show_bug.cgi?id=29989> | |
17228 | Safari version number shouldn't be exposed in WebKit code | |
17229 | ||
17230 | For a WebKit version of 532.3.4: | |
17231 | Product version is: 5.32.3.4 (was 4.0.3.0) | |
17232 | File version is: 5.32.3.4 (was 4.532.3.4) | |
17233 | ||
17234 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.rc: | |
17235 | ||
17236 | 2009-10-02 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
17237 | ||
17238 | Rubber-stamped by Simon Hausmann. | |
17239 | ||
17240 | Fix the Qt on Mac OS X build. | |
17241 | ||
17242 | * wtf/FastMalloc.cpp: | |
17243 | ||
17244 | 2009-10-02 Jørgen Lind <jorgen.lind@nokia.com> | |
17245 | ||
17246 | Reviewed by Simon Hausmann. | |
17247 | ||
17248 | Allow enabling and disabling of the JIT through a qmake variable. | |
17249 | ||
17250 | Qt's configure may set this variable through .qmake.cache if a | |
17251 | commandline option is given and/or the compile test for hwcap.h | |
17252 | failed/succeeded. | |
17253 | ||
17254 | * JavaScriptCore.pri: | |
17255 | ||
17256 | 2009-10-01 Mark Rowe <mrowe@apple.com> | |
17257 | ||
17258 | Fix the Tiger build. Don't unconditionally enable 3D canvas as it is not supported on Tiger. | |
17259 | ||
17260 | * Configurations/FeatureDefines.xcconfig: | |
17261 | ||
17262 | 2009-10-01 Yongjun Zhang <yongjun.zhang@nokia.com> | |
17263 | ||
17264 | Reviewed by Darin Adler. | |
17265 | ||
17266 | https://bugs.webkit.org/show_bug.cgi?id=29187 | |
17267 | ||
17268 | Don't inline ~ListRefPtr() to work around winscw compiler forward declaration | |
17269 | bug regarding templated classes. | |
17270 | ||
17271 | The compiler bug is reported at: | |
17272 | https://xdabug001.ext.nokia.com/bugzilla/show_bug.cgi?id=9812 | |
17273 | ||
17274 | The change will be reverted when the above bug is fixed in winscw compiler. | |
17275 | ||
17276 | * wtf/ListRefPtr.h: | |
17277 | (WTF::::~ListRefPtr): | |
17278 | ||
17279 | 2009-10-01 Zoltan Horvath <zoltan@webkit.org> | |
17280 | ||
17281 | Reviewed by Simon Hausmann. | |
17282 | ||
17283 | [Qt] Allow custom memory allocation control for the whole JavaScriptCore | |
17284 | https://bugs.webkit.org/show_bug.cgi?id=27029 | |
17285 | ||
17286 | Since in JavaScriptCore almost every class which has been instantiated by operator new is | |
17287 | inherited from FastAllocBase (bug #20422), we disable customizing global operator new for the Qt-port | |
17288 | when USE_SYSTEM_MALLOC=0. | |
17289 | ||
17290 | Add #include <unistd.h> to FastMalloc.cpp because it's used by TCMalloc_PageHeap::scavengerThread(). | |
17291 | (It's needed for the functionality of TCmalloc.) | |
17292 | ||
17293 | Add TCSystemAlloc.cpp to JavaScriptCore.pri if USE_SYSTEM_MALLOC is disabled. | |
17294 | ||
17295 | * JavaScriptCore.pri: | |
17296 | * wtf/FastMalloc.cpp: | |
17297 | (WTF::sleep): | |
17298 | * wtf/FastMalloc.h: | |
17299 | ||
17300 | 2009-09-30 Gabor Loki <loki@inf.u-szeged.hu> | |
17301 | ||
17302 | Reviewed by George Staikos. | |
17303 | ||
17304 | Defines two pseudo-platforms for ARM and Thumb-2 instruction set. | |
17305 | https://bugs.webkit.org/show_bug.cgi?id=29122 | |
17306 | ||
17307 | Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2 | |
17308 | macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used | |
17309 | when Thumb-2 instruction set is the required target. The | |
17310 | PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In | |
17311 | case where the code is common the PLATFORM(ARM) have to be used. | |
17312 | ||
17313 | Modified by George Wright <gwright@rim.com> to correctly work | |
17314 | with the RVCT-defined __TARGET_ARCH_ARM and __TARGET_ARCH_THUMB | |
17315 | compiler macros, as well as adding readability changes. | |
17316 | ||
17317 | * wtf/Platform.h: | |
17318 | ||
17319 | 2009-09-30 Oliver Hunt <oliver@apple.com> | |
17320 | ||
17321 | Reviewed by Geoff Garen. | |
17322 | ||
17323 | Devirtualise array toString conversion | |
17324 | ||
17325 | Tweak the implementation of Array.prototype.toString to have a fast path | |
17326 | when acting on a true JSArray. | |
17327 | ||
17328 | * runtime/ArrayPrototype.cpp: | |
17329 | (JSC::arrayProtoFuncToString): | |
17330 | ||
17331 | 2009-09-30 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
17332 | ||
17333 | Reviewed by Geoffrey Garen. | |
17334 | ||
17335 | Buildfix for platforms using JSVALUE32. | |
17336 | https://bugs.webkit.org/show_bug.cgi?id=29915 | |
17337 | ||
17338 | After http://trac.webkit.org/changeset/48905 the build broke in JSVALUE32 case. | |
17339 | Also removed unreachable code. | |
17340 | ||
17341 | * jit/JITArithmetic.cpp: | |
17342 | (JSC::JIT::emit_op_add): | |
17343 | - Declaration of "OperandTypes types" moved before first use. | |
17344 | - Typos fixed: dst modified to result, regT2 added. | |
17345 | - Unreachable code removed. | |
17346 | (JSC::JIT::emitSlow_op_add): | |
17347 | - Missing declaration of "OperandTypes types" added. | |
17348 | ||
17349 | 2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com> | |
17350 | ||
17351 | Reviewed by Simon Hausmann. | |
17352 | ||
17353 | Reduce heap size on Symbian from 64MB to 8MB. | |
17354 | ||
17355 | This is not a perfect fix, it requires more fine tuning. | |
17356 | But this makes it possible again to debug in the emulator, | |
17357 | which is more important in order to be able to fix other | |
17358 | run-time issues. | |
17359 | ||
17360 | * runtime/Collector.h: | |
17361 | ||
17362 | 2009-09-30 Janne Koskinen <janne.p.koskinen@digia.com> | |
17363 | ||
17364 | Reviewed by Simon Hausmann. | |
17365 | ||
17366 | Fix CRASH() macro for Symbian build. | |
17367 | ||
17368 | * wtf/Assertions.h: Added missing } | |
17369 | ||
17370 | 2009-09-29 Geoffrey Garen <ggaren@apple.com> | |
17371 | ||
17372 | Reviewed by Gavin Barraclough. | |
17373 | ||
17374 | Inlined a few math operations. | |
17375 | ||
17376 | ~1% SunSpider speedup. | |
17377 | ||
17378 | * jit/JIT.h: | |
17379 | * jit/JITArithmetic.cpp: | |
17380 | (JSC::JIT::compileBinaryArithOpSlowCase): | |
17381 | (JSC::JIT::emitSlow_op_add): | |
17382 | (JSC::JIT::emitSlow_op_mul): | |
17383 | (JSC::JIT::emit_op_sub): | |
17384 | (JSC::JIT::emitSlow_op_sub): Don't take a stub call when operating on | |
17385 | a constant int and a double. | |
17386 | ||
17387 | 2009-09-28 Oliver Hunt <oliver@apple.com> | |
17388 | ||
17389 | Reviewed by Gavin Barraclough. | |
17390 | ||
17391 | Tidy up codeblock sampler | |
17392 | https://bugs.webkit.org/show_bug.cgi?id=29836 | |
17393 | ||
17394 | Some rather simple refactoring of codeblock sampler so that | |
17395 | it's easier for us to use it to find problems in non-jsc | |
17396 | environments | |
17397 | ||
17398 | * JavaScriptCore.exp: | |
17399 | * bytecode/SamplingTool.h: | |
17400 | * debugger/Debugger.cpp: | |
17401 | (JSC::evaluateInGlobalCallFrame): | |
17402 | * debugger/DebuggerCallFrame.cpp: | |
17403 | (JSC::DebuggerCallFrame::evaluate): | |
17404 | * interpreter/Interpreter.cpp: | |
17405 | (JSC::Interpreter::Interpreter): | |
17406 | (JSC::Interpreter::execute): | |
17407 | (JSC::Interpreter::privateExecute): | |
17408 | (JSC::Interpreter::enableSampler): | |
17409 | (JSC::Interpreter::dumpSampleData): | |
17410 | (JSC::Interpreter::startSampling): | |
17411 | (JSC::Interpreter::stopSampling): | |
17412 | * interpreter/Interpreter.h: | |
17413 | (JSC::Interpreter::sampler): | |
17414 | * jit/JIT.h: | |
17415 | * jsc.cpp: | |
17416 | (runWithScripts): | |
17417 | * runtime/Completion.cpp: | |
17418 | (JSC::checkSyntax): | |
17419 | (JSC::evaluate): | |
17420 | * runtime/Executable.h: | |
17421 | (JSC::EvalExecutable::EvalExecutable): | |
17422 | (JSC::ProgramExecutable::create): | |
17423 | (JSC::ProgramExecutable::ProgramExecutable): | |
17424 | * runtime/JSGlobalData.cpp: | |
17425 | (JSC::JSGlobalData::startSampling): | |
17426 | (JSC::JSGlobalData::stopSampling): | |
17427 | (JSC::JSGlobalData::dumpSampleData): | |
17428 | * runtime/JSGlobalData.h: | |
17429 | * runtime/JSGlobalObjectFunctions.cpp: | |
17430 | (JSC::globalFuncEval): | |
17431 | ||
17432 | 2009-09-29 Jeremy Orlow <jorlow@chromium.org> | |
17433 | ||
17434 | Reviewed by Dimitri Glazkov. | |
17435 | ||
17436 | Add GYP generated files to svn:ignore | |
17437 | https://bugs.webkit.org/show_bug.cgi?id=29895 | |
17438 | ||
17439 | The following files are generated by JavaScriptCore's GYP file and should be ignored: | |
17440 | ||
17441 | pcre.mk | |
17442 | wtf.scons | |
17443 | wtf.mk | |
17444 | SConstruct | |
17445 | wtf_config.scons | |
17446 | wtf_config.mk | |
17447 | pcre.scons | |
17448 | ||
17449 | * JavaScriptCore.gyp: Changed property svn:ignore. | |
17450 | ||
17451 | 2009-09-29 Geoffrey Garen <ggaren@apple.com> | |
17452 | ||
17453 | Reviewed by Sam Weinig. | |
17454 | ||
17455 | Standardized an optimization for adding non-numbers. | |
17456 | ||
17457 | SunSpider says maybe a tiny speedup. | |
17458 | ||
17459 | * jit/JITArithmetic.cpp: | |
17460 | (JSC::JIT::emit_op_add): | |
17461 | (JSC::JIT::emitSlow_op_add): | |
17462 | ||
17463 | 2009-09-29 Geoffrey Garen <ggaren@apple.com> | |
17464 | ||
17465 | Windows build fix: export a new symbol. | |
17466 | ||
17467 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
17468 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
17469 | ||
17470 | 2009-09-28 Geoffrey Garen <ggaren@apple.com> | |
17471 | ||
17472 | Reviewed by Sam Weinig. | |
17473 | ||
17474 | Removed virtual destructor from JSGlobalObjectData to eliminate pointer | |
17475 | fix-ups when accessing JSGlobalObject::d. | |
17476 | ||
17477 | Replaced with an explicit destructor function pointer. | |
17478 | ||
17479 | 6% speedup on bench-alloc-nonretained.js. | |
17480 | ||
17481 | * JavaScriptCore.exp: | |
17482 | * runtime/JSGlobalObject.cpp: | |
17483 | (JSC::JSGlobalObject::~JSGlobalObject): | |
17484 | (JSC::JSGlobalObject::destroyJSGlobalObjectData): | |
17485 | * runtime/JSGlobalObject.h: | |
17486 | (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): | |
17487 | (JSC::JSGlobalObject::JSGlobalObject): | |
17488 | ||
17489 | 2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com> | |
17490 | ||
17491 | Reviewed by David Kilzer. | |
17492 | ||
17493 | [Qt] Assert messages prints visible in Symbian | |
17494 | https://bugs.webkit.org/show_bug.cgi?id=29808 | |
17495 | ||
17496 | Asserts use vprintf to print the messages to stderr. | |
17497 | In Symbian Open C it is not possible to see stderr so | |
17498 | I routed the messages to stdout instead. | |
17499 | ||
17500 | * wtf/Assertions.cpp: | |
17501 | ||
17502 | 2009-09-29 Janne Koskinen <janne.p.koskinen@digia.com> | |
17503 | ||
17504 | Reviewed by Darin Adler. | |
17505 | ||
17506 | [Qt] Symbian CRASH macro implementation | |
17507 | ||
17508 | Added Symbian specific crash macro that | |
17509 | stops to crash line if JIT debugging is used. | |
17510 | Additional differentiation of access violation | |
17511 | (KERN-EXEC 3) and CRASH panic. | |
17512 | ||
17513 | * wtf/Assertions.h: | |
17514 | ||
17515 | 2009-09-28 Mark Rowe <mrowe@apple.com> | |
17516 | ||
17517 | Fix the PowerPC build. | |
17518 | ||
17519 | * JavaScriptCore.exp: | |
17520 | ||
17521 | 2009-09-28 Mark Rowe <mrowe@apple.com> | |
17522 | ||
17523 | Reviewed by Gavin Barraclough. | |
17524 | ||
17525 | <rdar://problem/7195704> JavaScriptCore fails to mark registers when built for x86_64 using LLVM GCC. | |
17526 | ||
17527 | * runtime/Collector.cpp: | |
17528 | (JSC::Heap::markCurrentThreadConservatively): Force jmp_buf to use the appropriate alignment for a pointer | |
17529 | to ensure that we correctly interpret the contents of registers during marking. | |
17530 | ||
17531 | 2009-09-28 Geoffrey Garen <ggaren@apple.com> | |
17532 | ||
17533 | Windows build fix: added new exports. | |
17534 | ||
17535 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
17536 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
17537 | ||
17538 | 2009-09-28 Geoffrey Garen <ggaren@apple.com> | |
17539 | ||
17540 | Windows build fix: removed exports that no longer exist. | |
17541 | ||
17542 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
17543 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
17544 | ||
17545 | 2009-09-28 Geoffrey Garen <ggaren@apple.com> | |
17546 | ||
17547 | Reviewed by Darin Adler. | |
17548 | ||
17549 | NotNullPassRefPtr: smart pointer optimized for passing references that are not null | |
17550 | https://bugs.webkit.org/show_bug.cgi?id=29822 | |
17551 | ||
17552 | Added NotNullPassRefPtr, and deployed it in all places that initialize | |
17553 | JavaScript objects. | |
17554 | ||
17555 | 2.2% speedup on bench-allocate-nonretained.js. | |
17556 | ||
17557 | * API/JSCallbackConstructor.cpp: | |
17558 | (JSC::JSCallbackConstructor::JSCallbackConstructor): | |
17559 | * API/JSCallbackConstructor.h: | |
17560 | * API/JSCallbackObject.h: | |
17561 | * API/JSCallbackObjectFunctions.h: | |
17562 | (JSC::JSCallbackObject::JSCallbackObject): | |
17563 | * JavaScriptCore.exp: | |
17564 | * bytecode/CodeBlock.h: | |
17565 | (JSC::CodeBlock::addFunctionDecl): | |
17566 | (JSC::CodeBlock::addFunctionExpr): | |
17567 | * runtime/ArrayConstructor.cpp: | |
17568 | (JSC::ArrayConstructor::ArrayConstructor): | |
17569 | * runtime/ArrayConstructor.h: | |
17570 | * runtime/ArrayPrototype.cpp: | |
17571 | (JSC::ArrayPrototype::ArrayPrototype): | |
17572 | * runtime/ArrayPrototype.h: | |
17573 | * runtime/BooleanConstructor.cpp: | |
17574 | (JSC::BooleanConstructor::BooleanConstructor): | |
17575 | * runtime/BooleanConstructor.h: | |
17576 | * runtime/BooleanObject.cpp: | |
17577 | (JSC::BooleanObject::BooleanObject): | |
17578 | * runtime/BooleanObject.h: | |
17579 | * runtime/BooleanPrototype.cpp: | |
17580 | (JSC::BooleanPrototype::BooleanPrototype): | |
17581 | * runtime/BooleanPrototype.h: | |
17582 | * runtime/DateConstructor.cpp: | |
17583 | (JSC::DateConstructor::DateConstructor): | |
17584 | * runtime/DateConstructor.h: | |
17585 | * runtime/DateInstance.cpp: | |
17586 | (JSC::DateInstance::DateInstance): | |
17587 | * runtime/DateInstance.h: | |
17588 | * runtime/DatePrototype.cpp: | |
17589 | (JSC::DatePrototype::DatePrototype): | |
17590 | * runtime/DatePrototype.h: | |
17591 | * runtime/ErrorConstructor.cpp: | |
17592 | (JSC::ErrorConstructor::ErrorConstructor): | |
17593 | * runtime/ErrorConstructor.h: | |
17594 | * runtime/ErrorInstance.cpp: | |
17595 | (JSC::ErrorInstance::ErrorInstance): | |
17596 | * runtime/ErrorInstance.h: | |
17597 | * runtime/ErrorPrototype.cpp: | |
17598 | (JSC::ErrorPrototype::ErrorPrototype): | |
17599 | * runtime/ErrorPrototype.h: | |
17600 | * runtime/FunctionConstructor.cpp: | |
17601 | (JSC::FunctionConstructor::FunctionConstructor): | |
17602 | * runtime/FunctionConstructor.h: | |
17603 | * runtime/FunctionPrototype.cpp: | |
17604 | (JSC::FunctionPrototype::FunctionPrototype): | |
17605 | * runtime/FunctionPrototype.h: | |
17606 | * runtime/GlobalEvalFunction.cpp: | |
17607 | (JSC::GlobalEvalFunction::GlobalEvalFunction): | |
17608 | * runtime/GlobalEvalFunction.h: | |
17609 | * runtime/InternalFunction.cpp: | |
17610 | (JSC::InternalFunction::InternalFunction): | |
17611 | * runtime/InternalFunction.h: | |
17612 | (JSC::InternalFunction::InternalFunction): | |
17613 | * runtime/JSActivation.cpp: | |
17614 | (JSC::JSActivation::JSActivation): | |
17615 | * runtime/JSActivation.h: | |
17616 | (JSC::JSActivation::JSActivationData::JSActivationData): | |
17617 | * runtime/JSArray.cpp: | |
17618 | (JSC::JSArray::JSArray): | |
17619 | * runtime/JSArray.h: | |
17620 | * runtime/JSByteArray.cpp: | |
17621 | (JSC::JSByteArray::JSByteArray): | |
17622 | * runtime/JSByteArray.h: | |
17623 | * runtime/JSFunction.cpp: | |
17624 | (JSC::JSFunction::JSFunction): | |
17625 | * runtime/JSFunction.h: | |
17626 | * runtime/JSGlobalObject.h: | |
17627 | (JSC::JSGlobalObject::JSGlobalObject): | |
17628 | * runtime/JSONObject.h: | |
17629 | (JSC::JSONObject::JSONObject): | |
17630 | * runtime/JSObject.h: | |
17631 | (JSC::JSObject::JSObject): | |
17632 | (JSC::JSObject::setStructure): | |
17633 | * runtime/JSVariableObject.h: | |
17634 | (JSC::JSVariableObject::JSVariableObject): | |
17635 | * runtime/JSWrapperObject.h: | |
17636 | (JSC::JSWrapperObject::JSWrapperObject): | |
17637 | * runtime/MathObject.cpp: | |
17638 | (JSC::MathObject::MathObject): | |
17639 | * runtime/MathObject.h: | |
17640 | * runtime/NativeErrorConstructor.cpp: | |
17641 | (JSC::NativeErrorConstructor::NativeErrorConstructor): | |
17642 | * runtime/NativeErrorConstructor.h: | |
17643 | * runtime/NativeErrorPrototype.cpp: | |
17644 | (JSC::NativeErrorPrototype::NativeErrorPrototype): | |
17645 | * runtime/NativeErrorPrototype.h: | |
17646 | * runtime/NumberConstructor.cpp: | |
17647 | (JSC::NumberConstructor::NumberConstructor): | |
17648 | * runtime/NumberConstructor.h: | |
17649 | * runtime/NumberObject.cpp: | |
17650 | (JSC::NumberObject::NumberObject): | |
17651 | * runtime/NumberObject.h: | |
17652 | * runtime/NumberPrototype.cpp: | |
17653 | (JSC::NumberPrototype::NumberPrototype): | |
17654 | * runtime/NumberPrototype.h: | |
17655 | * runtime/ObjectConstructor.cpp: | |
17656 | (JSC::ObjectConstructor::ObjectConstructor): | |
17657 | * runtime/ObjectConstructor.h: | |
17658 | * runtime/ObjectPrototype.cpp: | |
17659 | (JSC::ObjectPrototype::ObjectPrototype): | |
17660 | * runtime/ObjectPrototype.h: | |
17661 | * runtime/PropertyNameArray.h: | |
17662 | (JSC::PropertyNameArrayData::setCachedPrototypeChain): | |
17663 | * runtime/PrototypeFunction.cpp: | |
17664 | (JSC::PrototypeFunction::PrototypeFunction): | |
17665 | * runtime/PrototypeFunction.h: | |
17666 | * runtime/RegExpConstructor.cpp: | |
17667 | (JSC::RegExpConstructor::RegExpConstructor): | |
17668 | * runtime/RegExpConstructor.h: | |
17669 | * runtime/RegExpObject.cpp: | |
17670 | (JSC::RegExpObject::RegExpObject): | |
17671 | * runtime/RegExpObject.h: | |
17672 | (JSC::RegExpObject::RegExpObjectData::RegExpObjectData): | |
17673 | * runtime/RegExpPrototype.cpp: | |
17674 | (JSC::RegExpPrototype::RegExpPrototype): | |
17675 | * runtime/RegExpPrototype.h: | |
17676 | * runtime/StringConstructor.cpp: | |
17677 | (JSC::StringConstructor::StringConstructor): | |
17678 | * runtime/StringConstructor.h: | |
17679 | * runtime/StringObject.cpp: | |
17680 | (JSC::StringObject::StringObject): | |
17681 | * runtime/StringObject.h: | |
17682 | * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
17683 | (JSC::StringObjectThatMasqueradesAsUndefined::StringObjectThatMasqueradesAsUndefined): | |
17684 | * runtime/StringPrototype.cpp: | |
17685 | (JSC::StringPrototype::StringPrototype): | |
17686 | * runtime/StringPrototype.h: | |
17687 | * wtf/PassRefPtr.h: | |
17688 | (WTF::NotNullPassRefPtr::NotNullPassRefPtr): | |
17689 | (WTF::NotNullPassRefPtr::~NotNullPassRefPtr): | |
17690 | (WTF::NotNullPassRefPtr::get): | |
17691 | (WTF::NotNullPassRefPtr::clear): | |
17692 | (WTF::NotNullPassRefPtr::releaseRef): | |
17693 | (WTF::NotNullPassRefPtr::operator*): | |
17694 | (WTF::NotNullPassRefPtr::operator->): | |
17695 | (WTF::NotNullPassRefPtr::operator!): | |
17696 | (WTF::NotNullPassRefPtr::operator UnspecifiedBoolType): | |
17697 | * wtf/RefPtr.h: | |
17698 | (WTF::RefPtr::RefPtr): | |
17699 | (WTF::operator==): | |
17700 | ||
17701 | 2009-09-28 Oliver Hunt <oliver@apple.com> | |
17702 | ||
17703 | Reviewed by Geoff Garen. | |
17704 | ||
17705 | Hard dependency on SSE2 instruction set with JIT | |
17706 | https://bugs.webkit.org/show_bug.cgi?id=29779 | |
17707 | ||
17708 | Add floating point support checks to op_jfalse and op_jtrue, and | |
17709 | fix the logic for the slow case of op_add | |
17710 | ||
17711 | * jit/JITArithmetic.cpp: | |
17712 | (JSC::JIT::emitSlow_op_add): | |
17713 | * jit/JITOpcodes.cpp: | |
17714 | (JSC::JIT::emit_op_jfalse): | |
17715 | (JSC::JIT::emit_op_jtrue): | |
17716 | ||
17717 | 2009-09-28 Yaar Schnitman <yaar@chromium.org> | |
17718 | ||
17719 | Reviewed by Dimitri Glazkov. | |
17720 | ||
17721 | Chromium port - recognize we are being built independently | |
17722 | of chromium and look for dependencies under webkit/chromium rather | |
17723 | than chromium/src. | |
17724 | ||
17725 | https://bugs.webkit.org/show_bug.cgi?id=29722 | |
17726 | ||
17727 | * JavaScriptCore.gyp/JavaScriptCore.gyp: | |
17728 | ||
17729 | 2009-09-28 Jakub Wieczorek <faw217@gmail.com> | |
17730 | ||
17731 | Reviewed by Simon Hausmann. | |
17732 | ||
17733 | [Qt] Implement XSLT support with QtXmlPatterns. | |
17734 | https://bugs.webkit.org/show_bug.cgi?id=28303 | |
17735 | ||
17736 | * wtf/Platform.h: Add a WTF_USE_QXMLQUERY #define. | |
17737 | ||
17738 | 2009-09-28 Gabor Loki <loki@inf.u-szeged.hu> | |
17739 | ||
17740 | Reviewed by Simon Hausmann. | |
17741 | ||
17742 | Remove __clear_cache which is an internal function of GCC | |
17743 | https://bugs.webkit.org/show_bug.cgi?id=28886 | |
17744 | ||
17745 | Although __clear_cache is exported from GCC, this is an internal | |
17746 | function. GCC makes no promises about it. | |
17747 | ||
17748 | * jit/ExecutableAllocator.h: | |
17749 | (JSC::ExecutableAllocator::cacheFlush): | |
17750 | ||
17751 | 2009-09-28 Sam Weinig <sam@webkit.org> | |
17752 | ||
17753 | Reviewed by Oliver Hunt. | |
17754 | ||
17755 | Fix an absolute path to somewhere in Oliver's machine to a relative path | |
17756 | for derived JSONObject.lut.h. | |
17757 | ||
17758 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
17759 | ||
17760 | 2009-09-28 Joerg Bornemann <joerg.bornemann@nokia.com> | |
17761 | ||
17762 | Reviewed by Simon Hausmann. | |
17763 | ||
17764 | Add ARM version detection for Windows CE. | |
17765 | ||
17766 | * wtf/Platform.h: | |
17767 | ||
17768 | 2009-09-26 Yongjun Zhang <yongjun.zhang@nokia.com> | |
17769 | ||
17770 | Reviewed by Simon Hausmann. | |
17771 | ||
17772 | Add MarkStackSymbian.cpp to build JavascriptCore for Symbian. | |
17773 | ||
17774 | Re-use Windows shrinkAllocation implementation because Symbian doesn't | |
17775 | support releasing part of memory region. | |
17776 | ||
17777 | Use fastMalloc and fastFree to implement allocateStack and releaseStack | |
17778 | for Symbian port. | |
17779 | ||
17780 | * JavaScriptCore.pri: | |
17781 | * runtime/MarkStack.h: | |
17782 | (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
17783 | * runtime/MarkStackSymbian.cpp: Added. | |
17784 | (JSC::MarkStack::initializePagesize): | |
17785 | (JSC::MarkStack::allocateStack): | |
17786 | (JSC::MarkStack::releaseStack): | |
17787 | ||
17788 | 2009-09-25 Gabor Loki <loki@inf.u-szeged.hu> | |
17789 | ||
17790 | Reviewed by Gavin Barraclough. | |
17791 | ||
17792 | Fix unaligned data access in YARR_JIT on ARMv5 and below. | |
17793 | https://bugs.webkit.org/show_bug.cgi?id=29695 | |
17794 | ||
17795 | On ARMv5 and below all data access should be naturally aligned. | |
17796 | In the YARR_JIT there is a case when character pairs are | |
17797 | loaded from the input string, but this data access is not | |
17798 | naturally aligned. This fix introduces load32WithUnalignedHalfWords | |
17799 | and branch32WithUnalignedHalfWords functions which contain | |
17800 | naturally aligned memory loads - half word loads - on ARMv5 and below. | |
17801 | ||
17802 | * assembler/MacroAssemblerARM.cpp: | |
17803 | (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords): | |
17804 | * assembler/MacroAssemblerARM.h: | |
17805 | (JSC::MacroAssemblerARM::load32WithUnalignedHalfWords): | |
17806 | (JSC::MacroAssemblerARM::branch32WithUnalignedHalfWords): | |
17807 | * assembler/MacroAssemblerARMv7.h: | |
17808 | (JSC::MacroAssemblerARMv7::load32WithUnalignedHalfWords): | |
17809 | (JSC::MacroAssemblerARMv7::branch32): | |
17810 | (JSC::MacroAssemblerARMv7::branch32WithUnalignedHalfWords): | |
17811 | * assembler/MacroAssemblerX86Common.h: | |
17812 | (JSC::MacroAssemblerX86Common::load32WithUnalignedHalfWords): | |
17813 | (JSC::MacroAssemblerX86Common::branch32WithUnalignedHalfWords): | |
17814 | * wtf/Platform.h: | |
17815 | * yarr/RegexJIT.cpp: | |
17816 | (JSC::Yarr::RegexGenerator::generatePatternCharacterPair): | |
17817 | ||
17818 | 2009-09-25 Jeremy Orlow <jorlow@chromium.org> | |
17819 | ||
17820 | This is breaking Chromium try bots, so I'm counting this as a build fix. | |
17821 | ||
17822 | Add more svn:ignore exceptions. On different platforms, these files are | |
17823 | generated with different case for JavaScriptCore. Also there are some | |
17824 | wtf project files that get built apparently. | |
17825 | ||
17826 | * JavaScriptCore.gyp: Changed property svn:ignore. | |
17827 | ||
17828 | 2009-09-25 Ada Chan <adachan@apple.com> | |
17829 | ||
17830 | Build fix. | |
17831 | ||
17832 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
17833 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
17834 | ||
17835 | 2009-09-25 Geoffrey Garen <ggaren@apple.com> | |
17836 | ||
17837 | Reviewed by Darin Adler. | |
17838 | ||
17839 | Inlined some object creation code, including lexicalGlobalObject access | |
17840 | https://bugs.webkit.org/show_bug.cgi?id=29750 | |
17841 | ||
17842 | SunSpider says 0.5% faster. | |
17843 | ||
17844 | 0.8% speedup on bench-alloc-nonretained.js. | |
17845 | 2.5% speedup on v8-splay.js. | |
17846 | ||
17847 | * interpreter/CachedCall.h: | |
17848 | (JSC::CachedCall::CachedCall): | |
17849 | * interpreter/CallFrame.h: | |
17850 | (JSC::ExecState::lexicalGlobalObject): | |
17851 | (JSC::ExecState::globalThisValue): | |
17852 | * interpreter/Interpreter.cpp: | |
17853 | (JSC::Interpreter::dumpRegisters): | |
17854 | (JSC::Interpreter::execute): | |
17855 | (JSC::Interpreter::privateExecute): | |
17856 | * jit/JITStubs.cpp: | |
17857 | (JSC::DEFINE_STUB_FUNCTION): | |
17858 | * runtime/FunctionConstructor.cpp: | |
17859 | (JSC::constructFunction): | |
17860 | * runtime/ScopeChain.cpp: | |
17861 | (JSC::ScopeChainNode::print): | |
17862 | * runtime/ScopeChain.h: | |
17863 | (JSC::ScopeChainNode::ScopeChainNode): | |
17864 | (JSC::ScopeChainNode::~ScopeChainNode): | |
17865 | (JSC::ScopeChainNode::push): | |
17866 | (JSC::ScopeChain::ScopeChain): | |
17867 | (JSC::ScopeChain::globalObject): Added a globalObject data member to ScopeChainNode. | |
17868 | Replaced accessor function for globalObject() with data member. Replaced | |
17869 | globalThisObject() accessor with direct access to globalThis, to match. | |
17870 | ||
17871 | * runtime/JSGlobalObject.cpp: | |
17872 | (JSC::JSGlobalObject::init): | |
17873 | * runtime/JSGlobalObject.h: Inlined array and object construction. | |
17874 | ||
17875 | 2009-09-25 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
17876 | ||
17877 | Reviewed by Gavin Barraclough. | |
17878 | ||
17879 | Add ARM version detection rules for Symbian | |
17880 | https://bugs.webkit.org/show_bug.cgi?id=29715 | |
17881 | ||
17882 | * wtf/Platform.h: | |
17883 | ||
17884 | 2009-09-24 Xan Lopez <xlopez@igalia.com> | |
17885 | ||
17886 | Reviewed by Mark "Do It!" Rowe. | |
17887 | ||
17888 | Some GCC versions don't like C++-style comments in preprocessor | |
17889 | directives, change to C-style to shut them up. | |
17890 | ||
17891 | * wtf/Platform.h: | |
17892 | ||
17893 | 2009-09-24 Oliver Hunt <oliver@apple.com> | |
17894 | ||
17895 | Reviewed by Gavin Barraclough. | |
17896 | ||
17897 | Division is needlessly slow in 64-bit | |
17898 | https://bugs.webkit.org/show_bug.cgi?id=29723 | |
17899 | ||
17900 | Add codegen for op_div on x86-64 | |
17901 | ||
17902 | * jit/JIT.cpp: | |
17903 | (JSC::JIT::privateCompileMainPass): | |
17904 | (JSC::JIT::privateCompileSlowCases): | |
17905 | * jit/JIT.h: | |
17906 | * jit/JITArithmetic.cpp: | |
17907 | (JSC::JIT::compileBinaryArithOpSlowCase): | |
17908 | (JSC::JIT::emit_op_div): | |
17909 | (JSC::JIT::emitSlow_op_div): | |
17910 | * jit/JITInlineMethods.h: | |
17911 | (JSC::JIT::isOperandConstantImmediateDouble): | |
17912 | (JSC::JIT::addressFor): | |
17913 | (JSC::JIT::emitLoadDouble): | |
17914 | (JSC::JIT::emitLoadInt32ToDouble): | |
17915 | (JSC::JIT::emitJumpSlowCaseIfNotImmediateNumber): | |
17916 | ||
17917 | 2009-09-24 Jeremy Orlow <jorlow@chromium.org> | |
17918 | ||
17919 | Reviewed by Dimitri Glazkov. | |
17920 | ||
17921 | Add GYP generated files to svn:ignore | |
17922 | https://bugs.webkit.org/show_bug.cgi?id=29724 | |
17923 | ||
17924 | Adding the following files to the svn:ignore list (all in the | |
17925 | JavaScriptCore/JavaScriptCore.gyp directory) | |
17926 | ||
17927 | JavaScriptCore.xcodeproj | |
17928 | JavaScriptCore.sln | |
17929 | JavaScriptCore.vcproj | |
17930 | JavaScriptCore_Debug.rules | |
17931 | JavaScriptCore_Release.rules | |
17932 | JavaScriptCore_Release - no tcmalloc.rules | |
17933 | JavaScriptCore_Purify.rules | |
17934 | JavaScriptCore.mk | |
17935 | JavaScriptCore_Debug_rules.mk | |
17936 | JavaScriptCore_Release_rules.mk | |
17937 | JavaScriptCore_Release - no tcmalloc_rules.mk | |
17938 | JavaScriptCore_Purify_rules.mk | |
17939 | JavaScriptCore.scons | |
17940 | JavaScriptCore_main.scons | |
17941 | ||
17942 | * JavaScriptCore.gyp: Changed property svn:ignore. | |
17943 | ||
17944 | 2009-09-24 Yong Li <yong.li@torchmobile.com> | |
17945 | ||
17946 | Reviewed by Adam Barth. | |
17947 | ||
17948 | Replace platform-dependent code with WTF::currentTime() | |
17949 | https://bugs.webkit.org/show_bug.cgi?id=29148 | |
17950 | ||
17951 | * jsc.cpp: | |
17952 | (StopWatch::start): | |
17953 | (StopWatch::stop): | |
17954 | (StopWatch::getElapsedMS): | |
17955 | * runtime/TimeoutChecker.cpp: | |
17956 | (JSC::getCPUTime): | |
17957 | ||
17958 | 2009-09-24 Mark Rowe <mrowe@apple.com> | |
17959 | ||
17960 | Reviewed by Sam Weinig. | |
17961 | ||
17962 | <rdar://problem/7215058> FastMalloc scavenging thread should be named | |
17963 | ||
17964 | * wtf/FastMalloc.cpp: | |
17965 | (WTF::TCMalloc_PageHeap::scavengerThread): Set the thread name. | |
17966 | * wtf/Platform.h: Move the knowledge of whether pthread_setname_np exists to here as HAVE(PTHREAD_SETNAME_NP). | |
17967 | * wtf/ThreadingPthreads.cpp: | |
17968 | (WTF::setThreadNameInternal): Use HAVE(PTHREAD_SETNAME_NP). | |
17969 | ||
17970 | 2009-09-24 Geoffrey Garen <ggaren@apple.com> | |
17971 | ||
17972 | Reviewed by Sam Weinig. | |
17973 | ||
17974 | Renamed clear to removeAll, as suggested by Darin Adler. | |
17975 | ||
17976 | * wtf/HashCountedSet.h: | |
17977 | (WTF::::removeAll): | |
17978 | ||
17979 | 2009-09-24 Mark Rowe <mrowe@apple.com> | |
17980 | ||
17981 | Reviewed by Gavin Barraclough. | |
17982 | ||
17983 | Fix FastMalloc to build with assertions enabled. | |
17984 | ||
17985 | * wtf/FastMalloc.cpp: | |
17986 | (WTF::TCMalloc_Central_FreeList::ReleaseToSpans): | |
17987 | * wtf/TCSpinLock.h: | |
17988 | (TCMalloc_SpinLock::IsHeld): | |
17989 | ||
17990 | 2009-09-24 Geoffrey Garen <ggaren@apple.com> | |
17991 | ||
17992 | Suggested by Darin Adler. | |
17993 | ||
17994 | Removed some unnecessary parameter names. | |
17995 | ||
17996 | * wtf/HashCountedSet.h: | |
17997 | ||
17998 | 2009-09-24 Janne Koskinen <janne.p.koskinen@digia.com> | |
17999 | ||
18000 | Reviewed by Simon Hausmann. | |
18001 | ||
18002 | On Windows JSChar is typedef'ed to wchar_t. | |
18003 | ||
18004 | When building with WINSCW for Symbian we need to do the | |
18005 | same typedef. | |
18006 | ||
18007 | * API/JSStringRef.h: | |
18008 | ||
18009 | 2009-09-23 Geoffrey Garen <ggaren@apple.com> | |
18010 | ||
18011 | A piece of my last patch that I forgot. | |
18012 | ||
18013 | * wtf/HashCountedSet.h: | |
18014 | (WTF::::clear): Added HashCountedSet::clear. | |
18015 | ||
18016 | 2009-09-24 Gabor Loki <loki@inf.u-szeged.hu> | |
18017 | ||
18018 | Reviewed by Gavin Barraclough. | |
18019 | ||
18020 | Avoid __clear_cache built-in function if DISABLE_BUILTIN_CLEAR_CACHE define is set | |
18021 | https://bugs.webkit.org/show_bug.cgi?id=28886 | |
18022 | ||
18023 | There are some GCC packages (for example GCC-2006q3 from CodeSourcery) | |
18024 | which contain __clear_cache built-in function only for C while the C++ | |
18025 | version of __clear_cache is missing on ARM architectures. | |
18026 | ||
18027 | Fixed a small bug in the inline assembly of cacheFlush function on | |
18028 | ARM_TRADITIONAL. | |
18029 | ||
18030 | * jit/ExecutableAllocator.h: | |
18031 | (JSC::ExecutableAllocator::cacheFlush): | |
18032 | ||
18033 | 2009-09-23 Geoffrey Garen <ggaren@apple.com> | |
18034 | ||
18035 | Reviewed by Sam Weinig. | |
18036 | ||
18037 | Added the ability to swap vectors with inline capacities, so you can | |
18038 | store a vector with inline capacity in a hash table. | |
18039 | ||
18040 | * wtf/Vector.h: | |
18041 | (WTF::swap): | |
18042 | (WTF::VectorBuffer::swap): | |
18043 | ||
18044 | 2009-09-23 David Kilzer <ddkilzer@apple.com> | |
18045 | ||
18046 | Move definition of USE(PLUGIN_HOST_PROCESS) from WebKitPrefix.h to Platform.h | |
18047 | ||
18048 | Reviewed by Mark Rowe. | |
18049 | ||
18050 | * wtf/Platform.h: Define WTF_USE_PLUGIN_HOST_PROCESS to 1 when | |
18051 | building on 64-bit SnowLeopard. Define to 0 elsewhere. | |
18052 | ||
18053 | 2009-09-22 Oliver Hunt <oliver@apple.com> | |
18054 | ||
18055 | Reviewed by Geoff Garen. | |
18056 | ||
18057 | Code sampling builds are broken. | |
18058 | https://bugs.webkit.org/show_bug.cgi?id=29662 | |
18059 | ||
18060 | Fix build. | |
18061 | ||
18062 | * bytecode/EvalCodeCache.h: | |
18063 | (JSC::EvalCodeCache::get): | |
18064 | * bytecode/SamplingTool.cpp: | |
18065 | (JSC::ScriptSampleRecord::sample): | |
18066 | (JSC::SamplingTool::doRun): | |
18067 | (JSC::SamplingTool::notifyOfScope): | |
18068 | (JSC::compareScriptSampleRecords): | |
18069 | (JSC::SamplingTool::dump): | |
18070 | * bytecode/SamplingTool.h: | |
18071 | (JSC::ScriptSampleRecord::ScriptSampleRecord): | |
18072 | (JSC::ScriptSampleRecord::~ScriptSampleRecord): | |
18073 | (JSC::SamplingTool::SamplingTool): | |
18074 | * bytecompiler/BytecodeGenerator.cpp: | |
18075 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
18076 | (JSC::BytecodeGenerator::emitNewFunction): | |
18077 | (JSC::BytecodeGenerator::emitNewFunctionExpression): | |
18078 | * bytecompiler/BytecodeGenerator.h: | |
18079 | (JSC::BytecodeGenerator::makeFunction): | |
18080 | * debugger/Debugger.cpp: | |
18081 | (JSC::evaluateInGlobalCallFrame): | |
18082 | * debugger/DebuggerCallFrame.cpp: | |
18083 | (JSC::DebuggerCallFrame::evaluate): | |
18084 | * parser/Nodes.cpp: | |
18085 | (JSC::ScopeNode::ScopeNode): | |
18086 | * runtime/Completion.cpp: | |
18087 | (JSC::checkSyntax): | |
18088 | (JSC::evaluate): | |
18089 | * runtime/Executable.cpp: | |
18090 | (JSC::FunctionExecutable::fromGlobalCode): | |
18091 | * runtime/Executable.h: | |
18092 | (JSC::ScriptExecutable::ScriptExecutable): | |
18093 | (JSC::EvalExecutable::EvalExecutable): | |
18094 | (JSC::EvalExecutable::create): | |
18095 | (JSC::ProgramExecutable::ProgramExecutable): | |
18096 | (JSC::FunctionExecutable::create): | |
18097 | (JSC::FunctionExecutable::FunctionExecutable): | |
18098 | * runtime/JSGlobalObjectFunctions.cpp: | |
18099 | (JSC::globalFuncEval): | |
18100 | ||
18101 | 2009-09-22 Darin Adler <darin@apple.com> | |
18102 | ||
18103 | Reviewed by Sam Weinig. | |
18104 | ||
18105 | * wtf/Forward.h: Added PassOwnPtr. | |
18106 | ||
18107 | 2009-09-22 Yaar Schnitman <yaar@chromium.org> | |
18108 | ||
18109 | Reviewed by David Levin. | |
18110 | ||
18111 | Ported chromium.org's javascriptcore.gyp for the webkit chromium port. | |
18112 | ||
18113 | https://bugs.webkit.org/show_bug.cgi?id=29617 | |
18114 | ||
18115 | * JavaScriptCore.gyp/JavaScriptCore.gyp: Added. | |
18116 | ||
18117 | 2009-09-22 Thiago Macieira <thiago.macieira@nokia.com> | |
18118 | ||
18119 | Reviewed by Simon Hausmann. | |
18120 | ||
18121 | Fix compilation with WINSCW: no varargs macros | |
18122 | ||
18123 | Disable variadic arguments for WINSCW just like we do | |
18124 | for MSVC7. | |
18125 | ||
18126 | * wtf/Assertions.h: | |
18127 | ||
18128 | 2009-09-22 Kent Hansen <khansen@trolltech.com> | |
18129 | ||
18130 | Reviewed by Simon Hausmann. | |
18131 | ||
18132 | Disable variadic macros on MSVC7. | |
18133 | ||
18134 | This was originally added in r26589 but not extended | |
18135 | when LOG_DISABLED/ASSERT_DISABLED was introduced. | |
18136 | ||
18137 | * wtf/Assertions.h: | |
18138 | ||
18139 | 2009-09-22 Simon Hausmann <simon.hausmann@nokia.com> | |
18140 | ||
18141 | Unreviewed build fix for Windows CE < 5 | |
18142 | ||
18143 | Define WINCEBASIC to disable the IsDebuggerPresent() code in | |
18144 | wtf/Assertions.cpp. | |
18145 | ||
18146 | * JavaScriptCore.pri: | |
18147 | ||
18148 | 2009-09-22 Joerg Bornemann <joerg.bornemann@nokia.com> | |
18149 | ||
18150 | Reviewed by Simon Hausmann. | |
18151 | ||
18152 | Fix major memory leak in JavaScriptCore RegisterFile on Windows CE | |
18153 | ||
18154 | https://bugs.webkit.org/show_bug.cgi?id=29367 | |
18155 | ||
18156 | On Widows CE we must decommit all committed pages before we release | |
18157 | them. See VirtualFree documentation. | |
18158 | Desktop Windows behaves much smoother in this situation. | |
18159 | ||
18160 | * interpreter/RegisterFile.cpp: | |
18161 | (JSC::RegisterFile::~RegisterFile): | |
18162 | ||
18163 | 2009-09-21 Greg Bolsinga <bolsinga@apple.com> | |
18164 | ||
18165 | Reviewed by Simon Fraser & Sam Weinig. | |
18166 | ||
18167 | Add ENABLE(ORIENTATION_EVENTS) | |
18168 | https://bugs.webkit.org/show_bug.cgi?id=29508 | |
18169 | ||
18170 | * wtf/Platform.h: Also sort PLATFORM(IPHONE) #defines. | |
18171 | ||
18172 | 2009-09-21 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
18173 | ||
18174 | Reviewed by Eric Seidel. | |
18175 | ||
18176 | [Fix] SourceCode's uninitialized member | |
18177 | ||
18178 | Potential source of crashes and bugs was fixed. Default constructor | |
18179 | didn't initialized m_provider member. | |
18180 | ||
18181 | https://bugs.webkit.org/show_bug.cgi?id=29364 | |
18182 | ||
18183 | * parser/SourceCode.h: | |
18184 | (JSC::SourceCode::SourceCode): | |
18185 | ||
18186 | 2009-09-21 Oliver Hunt <oliver@apple.com> | |
18187 | ||
18188 | Reviewed by Geoff Garen. | |
18189 | ||
18190 | REGRESSION (r48582): Crash in StructureStubInfo::initPutByIdTransition when reloading trac.webkit.org | |
18191 | https://bugs.webkit.org/show_bug.cgi?id=29599 | |
18192 | ||
18193 | It is unsafe to attempt to cache new property transitions on | |
18194 | dictionaries of any type. | |
18195 | ||
18196 | * interpreter/Interpreter.cpp: | |
18197 | (JSC::Interpreter::tryCachePutByID): | |
18198 | * jit/JITStubs.cpp: | |
18199 | (JSC::JITThunks::tryCachePutByID): | |
18200 | ||
18201 | 2009-09-21 Oliver Hunt <oliver@apple.com> | |
18202 | ||
18203 | RS=Maciej Stachowiak. | |
18204 | ||
18205 | Re-land SNES fix with corrected assertion. | |
18206 | ||
18207 | * interpreter/Interpreter.cpp: | |
18208 | (JSC::Interpreter::resolveGlobal): | |
18209 | (JSC::Interpreter::tryCachePutByID): | |
18210 | (JSC::Interpreter::tryCacheGetByID): | |
18211 | * jit/JITStubs.cpp: | |
18212 | (JSC::JITThunks::tryCachePutByID): | |
18213 | (JSC::JITThunks::tryCacheGetByID): | |
18214 | (JSC::DEFINE_STUB_FUNCTION): | |
18215 | * runtime/BatchedTransitionOptimizer.h: | |
18216 | (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): | |
18217 | * runtime/JSObject.cpp: | |
18218 | (JSC::JSObject::removeDirect): | |
18219 | * runtime/Structure.cpp: | |
18220 | (JSC::Structure::Structure): | |
18221 | (JSC::Structure::getEnumerablePropertyNames): | |
18222 | (JSC::Structure::despecifyDictionaryFunction): | |
18223 | (JSC::Structure::addPropertyTransitionToExistingStructure): | |
18224 | (JSC::Structure::addPropertyTransition): | |
18225 | (JSC::Structure::removePropertyTransition): | |
18226 | (JSC::Structure::toDictionaryTransition): | |
18227 | (JSC::Structure::toCacheableDictionaryTransition): | |
18228 | (JSC::Structure::toUncacheableDictionaryTransition): | |
18229 | (JSC::Structure::fromDictionaryTransition): | |
18230 | (JSC::Structure::removePropertyWithoutTransition): | |
18231 | * runtime/Structure.h: | |
18232 | (JSC::Structure::isDictionary): | |
18233 | (JSC::Structure::isUncacheableDictionary): | |
18234 | (JSC::Structure::): | |
18235 | * runtime/StructureChain.cpp: | |
18236 | (JSC::StructureChain::isCacheable): | |
18237 | ||
18238 | 2009-09-21 Adam Roben <aroben@apple.com> | |
18239 | ||
18240 | Revert r48573, as it caused many assertion failures | |
18241 | ||
18242 | * interpreter/Interpreter.cpp: | |
18243 | * jit/JITStubs.cpp: | |
18244 | * runtime/BatchedTransitionOptimizer.h: | |
18245 | * runtime/JSObject.cpp: | |
18246 | * runtime/Structure.cpp: | |
18247 | * runtime/Structure.h: | |
18248 | * runtime/StructureChain.cpp: | |
18249 | ||
18250 | 2009-09-21 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
18251 | ||
18252 | Unreviewed make dist build fix. Missing files. | |
18253 | ||
18254 | * GNUmakefile.am: | |
18255 | ||
18256 | 2009-09-19 Gavin Barraclough <barraclough@apple.com> | |
18257 | ||
18258 | Reviewed by Sam 'Cabin Boy' Weinig. | |
18259 | ||
18260 | Fix stack alignment with ARM THUMB2 JIT. | |
18261 | https://bugs.webkit.org/show_bug.cgi?id=29526 | |
18262 | ||
18263 | Stack is currently being decremented by 0x3c, bump this to 0x40 to make this a | |
18264 | multiple of 16 bytes. | |
18265 | ||
18266 | * jit/JITStubs.cpp: | |
18267 | (JSC::JITThunks::JITThunks): | |
18268 | * jit/JITStubs.h: | |
18269 | ||
18270 | 2009-09-20 Oliver Hunt <oliver@apple.com> | |
18271 | ||
18272 | Reviewed by Maciej Stachowiak. | |
18273 | ||
18274 | SNES is too slow | |
18275 | https://bugs.webkit.org/show_bug.cgi?id=29534 | |
18276 | ||
18277 | The problem was that the emulator used multiple classes with | |
18278 | more properties than our dictionary cutoff allowed, this resulted | |
18279 | in more or less all critical logic inside the emulator requiring | |
18280 | uncached property access. | |
18281 | ||
18282 | Rather than simply bumping the dictionary cutoff, this patch | |
18283 | recognises that there are two ways to create a "dictionary" | |
18284 | structure. Either by adding a large number of properties, or | |
18285 | by removing a property. In the case of adding properties we | |
18286 | know all the existing properties will maintain their existing | |
18287 | offsets, so we could cache access to those properties, if we | |
18288 | know they won't be removed. | |
18289 | ||
18290 | To make this possible, this patch adds the logic required to | |
18291 | distinguish a dictionary created by addition from one created | |
18292 | by removal. With this logic in place we can now cache access | |
18293 | to objects with large numbers of properties. | |
18294 | ||
18295 | SNES performance improved by more than 6x. | |
18296 | ||
18297 | * interpreter/Interpreter.cpp: | |
18298 | (JSC::Interpreter::resolveGlobal): | |
18299 | (JSC::Interpreter::tryCachePutByID): | |
18300 | (JSC::Interpreter::tryCacheGetByID): | |
18301 | * jit/JITStubs.cpp: | |
18302 | (JSC::JITThunks::tryCachePutByID): | |
18303 | (JSC::JITThunks::tryCacheGetByID): | |
18304 | (JSC::DEFINE_STUB_FUNCTION): | |
18305 | * runtime/BatchedTransitionOptimizer.h: | |
18306 | (JSC::BatchedTransitionOptimizer::BatchedTransitionOptimizer): | |
18307 | * runtime/JSObject.cpp: | |
18308 | (JSC::JSObject::removeDirect): | |
18309 | * runtime/Structure.cpp: | |
18310 | (JSC::Structure::Structure): | |
18311 | (JSC::Structure::getEnumerablePropertyNames): | |
18312 | (JSC::Structure::despecifyDictionaryFunction): | |
18313 | (JSC::Structure::addPropertyTransitionToExistingStructure): | |
18314 | (JSC::Structure::addPropertyTransition): | |
18315 | (JSC::Structure::removePropertyTransition): | |
18316 | (JSC::Structure::toDictionaryTransition): | |
18317 | (JSC::Structure::toCacheableDictionaryTransition): | |
18318 | (JSC::Structure::toUncacheableDictionaryTransition): | |
18319 | (JSC::Structure::fromDictionaryTransition): | |
18320 | (JSC::Structure::removePropertyWithoutTransition): | |
18321 | * runtime/Structure.h: | |
18322 | (JSC::Structure::isDictionary): | |
18323 | (JSC::Structure::isUncacheableDictionary): | |
18324 | (JSC::Structure::): | |
18325 | * runtime/StructureChain.cpp: | |
18326 | (JSC::StructureChain::isCacheable): | |
18327 | ||
18328 | 2009-09-19 Oliver Hunt <oliver@apple.com> | |
18329 | ||
18330 | Reviewed by Maciej Stachowiak. | |
18331 | ||
18332 | Implement ES5 Object.create function | |
18333 | https://bugs.webkit.org/show_bug.cgi?id=29524 | |
18334 | ||
18335 | Implement Object.create. Very simple patch, effectively Object.defineProperties | |
18336 | only creating the target object itself. | |
18337 | ||
18338 | * runtime/CommonIdentifiers.h: | |
18339 | * runtime/ObjectConstructor.cpp: | |
18340 | (JSC::ObjectConstructor::ObjectConstructor): | |
18341 | (JSC::objectConstructorCreate): | |
18342 | ||
18343 | 2009-09-19 Dan Bernstein <mitz@apple.com> | |
18344 | ||
18345 | Fix clean debug builds. | |
18346 | ||
18347 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
18348 | ||
18349 | 2009-09-19 Joerg Bornemann <joerg.bornemann@nokia.com> | |
18350 | ||
18351 | Reviewed by George Staikos. | |
18352 | ||
18353 | QtWebKit Windows CE compile fix | |
18354 | ||
18355 | https://bugs.webkit.org/show_bug.cgi?id=29379 | |
18356 | ||
18357 | There is no _aligned_alloc or _aligned_free on Windows CE. | |
18358 | We just use the Windows code that was there before and use VirtualAlloc. | |
18359 | But that also means that the BLOCK_SIZE must be 64K as this function | |
18360 | allocates on 64K boundaries. | |
18361 | ||
18362 | * runtime/Collector.cpp: | |
18363 | (JSC::Heap::allocateBlock): | |
18364 | (JSC::Heap::freeBlock): | |
18365 | * runtime/Collector.h: | |
18366 | ||
18367 | 2009-09-19 Oliver Hunt <oliver@apple.com> | |
18368 | ||
18369 | Reviewed by Sam Weinig. | |
18370 | ||
18371 | Implement ES5 Object.defineProperties function | |
18372 | https://bugs.webkit.org/show_bug.cgi?id=29522 | |
18373 | ||
18374 | Implement Object.defineProperties. Fairly simple patch, simply makes use of | |
18375 | existing functionality used for defineProperty. | |
18376 | ||
18377 | * runtime/CommonIdentifiers.h: | |
18378 | * runtime/ObjectConstructor.cpp: | |
18379 | (JSC::ObjectConstructor::ObjectConstructor): | |
18380 | (JSC::defineProperties): | |
18381 | (JSC::objectConstructorDefineProperties): | |
18382 | ||
18383 | 2009-09-19 Oliver Hunt <oliver@apple.com> | |
18384 | ||
18385 | Reviewed by NOBODY (Build fix). | |
18386 | ||
18387 | Windows build fix part2 | |
18388 | ||
18389 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
18390 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
18391 | ||
18392 | 2009-09-19 Oliver Hunt <oliver@apple.com> | |
18393 | ||
18394 | Reviewed by NOBODY (Buildfix). | |
18395 | ||
18396 | Windows build fix part 1. | |
18397 | ||
18398 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
18399 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
18400 | ||
18401 | 2009-09-18 Oliver Hunt <oliver@apple.com> | |
18402 | ||
18403 | Reviewed by Geoff Garen. | |
18404 | ||
18405 | Implement ES5 Object.defineProperty function | |
18406 | https://bugs.webkit.org/show_bug.cgi?id=29503 | |
18407 | ||
18408 | Implement Object.defineProperty. This requires adding the API to | |
18409 | ObjectConstructor, along with a helper function that implements the | |
18410 | ES5 internal [[ToPropertyDescriptor]] function. It then adds | |
18411 | JSObject::defineOwnProperty that implements the appropriate ES5 semantics. | |
18412 | Currently defineOwnProperty uses a delete followed by a put to redefine | |
18413 | attributes of a property, clearly this is less efficient than it could be | |
18414 | but we can improve this if it needs to be possible in future. | |
18415 | ||
18416 | * JavaScriptCore.exp: | |
18417 | * debugger/DebuggerActivation.cpp: | |
18418 | (JSC::DebuggerActivation::defineGetter): | |
18419 | (JSC::DebuggerActivation::defineSetter): | |
18420 | * debugger/DebuggerActivation.h: | |
18421 | * interpreter/Interpreter.cpp: | |
18422 | (JSC::Interpreter::privateExecute): | |
18423 | * jit/JITStubs.cpp: | |
18424 | Update defineGetter/Setter calls | |
18425 | * runtime/CommonIdentifiers.h: | |
18426 | * runtime/JSArray.cpp: | |
18427 | (JSC::JSArray::getOwnPropertySlot): | |
18428 | * runtime/JSGlobalObject.cpp: | |
18429 | (JSC::JSGlobalObject::defineGetter): | |
18430 | (JSC::JSGlobalObject::defineSetter): | |
18431 | * runtime/JSGlobalObject.h: | |
18432 | * runtime/JSObject.cpp: | |
18433 | (JSC::JSObject::defineGetter): | |
18434 | (JSC::JSObject::defineSetter): | |
18435 | (JSC::putDescriptor): | |
18436 | (JSC::JSObject::defineOwnProperty): | |
18437 | * runtime/JSObject.h: | |
18438 | * runtime/ObjectConstructor.cpp: | |
18439 | (JSC::ObjectConstructor::ObjectConstructor): | |
18440 | (JSC::objectConstructorGetOwnPropertyDescriptor): | |
18441 | (JSC::toPropertyDescriptor): | |
18442 | (JSC::objectConstructorDefineProperty): | |
18443 | * runtime/ObjectPrototype.cpp: | |
18444 | (JSC::objectProtoFuncDefineGetter): | |
18445 | (JSC::objectProtoFuncDefineSetter): | |
18446 | * runtime/PropertyDescriptor.cpp: | |
18447 | (JSC::PropertyDescriptor::writable): | |
18448 | (JSC::PropertyDescriptor::enumerable): | |
18449 | (JSC::PropertyDescriptor::configurable): | |
18450 | (JSC::PropertyDescriptor::isDataDescriptor): | |
18451 | (JSC::PropertyDescriptor::isGenericDescriptor): | |
18452 | (JSC::PropertyDescriptor::isAccessorDescriptor): | |
18453 | (JSC::PropertyDescriptor::getter): | |
18454 | (JSC::PropertyDescriptor::setter): | |
18455 | (JSC::PropertyDescriptor::setDescriptor): | |
18456 | (JSC::PropertyDescriptor::setAccessorDescriptor): | |
18457 | (JSC::PropertyDescriptor::setWritable): | |
18458 | (JSC::PropertyDescriptor::setEnumerable): | |
18459 | (JSC::PropertyDescriptor::setConfigurable): | |
18460 | (JSC::PropertyDescriptor::setSetter): | |
18461 | (JSC::PropertyDescriptor::setGetter): | |
18462 | (JSC::PropertyDescriptor::equalTo): | |
18463 | (JSC::PropertyDescriptor::attributesEqual): | |
18464 | (JSC::PropertyDescriptor::attributesWithOverride): | |
18465 | * runtime/PropertyDescriptor.h: | |
18466 | (JSC::PropertyDescriptor::PropertyDescriptor): | |
18467 | (JSC::PropertyDescriptor::value): | |
18468 | (JSC::PropertyDescriptor::setValue): | |
18469 | (JSC::PropertyDescriptor::isEmpty): | |
18470 | (JSC::PropertyDescriptor::writablePresent): | |
18471 | (JSC::PropertyDescriptor::enumerablePresent): | |
18472 | (JSC::PropertyDescriptor::configurablePresent): | |
18473 | (JSC::PropertyDescriptor::setterPresent): | |
18474 | (JSC::PropertyDescriptor::getterPresent): | |
18475 | (JSC::PropertyDescriptor::operator==): | |
18476 | (JSC::PropertyDescriptor::): | |
18477 | ||
18478 | 2009-09-18 Gabor Loki <loki@inf.u-szeged.hu> | |
18479 | ||
18480 | Reviewed by Gavin Barraclough. | |
18481 | ||
18482 | Build fix to enable ARM_THUMB2 on Linux | |
18483 | https://bugs.webkit.org/show_bug.cgi?id= | |
18484 | ||
18485 | * jit/ExecutableAllocator.h: | |
18486 | (JSC::ExecutableAllocator::cacheFlush): | |
18487 | * jit/JITStubs.cpp: | |
18488 | * wtf/Platform.h: | |
18489 | ||
18490 | 2009-09-18 Gabor Loki <loki@inf.u-szeged.hu> | |
18491 | ||
18492 | Reviewed by Gavin Barraclough. | |
18493 | ||
18494 | Defines two pseudo-platforms for ARM and Thumb-2 instruction set. | |
18495 | https://bugs.webkit.org/show_bug.cgi?id=29122 | |
18496 | ||
18497 | Introduces WTF_PLATFORM_ARM_TRADITIONAL and WTF_PLATFORM_ARM_THUMB2 | |
18498 | macros on ARM platforms. The PLATFORM(ARM_THUMB2) should be used | |
18499 | when Thumb-2 instruction set is the required target. The | |
18500 | PLATFORM(ARM_TRADITIONAL) is for generic ARM instruction set. In | |
18501 | case where the code is common the PLATFORM(ARM) have to be used. | |
18502 | ||
18503 | * assembler/ARMAssembler.cpp: | |
18504 | * assembler/ARMAssembler.h: | |
18505 | * assembler/ARMv7Assembler.h: | |
18506 | * assembler/MacroAssembler.h: | |
18507 | * assembler/MacroAssemblerARM.cpp: | |
18508 | * assembler/MacroAssemblerARM.h: | |
18509 | * assembler/MacroAssemblerCodeRef.h: | |
18510 | (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): | |
18511 | * jit/ExecutableAllocator.h: | |
18512 | * jit/JIT.h: | |
18513 | * jit/JITInlineMethods.h: | |
18514 | (JSC::JIT::beginUninterruptedSequence): | |
18515 | (JSC::JIT::preserveReturnAddressAfterCall): | |
18516 | (JSC::JIT::restoreReturnAddressBeforeReturn): | |
18517 | (JSC::JIT::restoreArgumentReference): | |
18518 | (JSC::JIT::restoreArgumentReferenceForTrampoline): | |
18519 | * jit/JITOpcodes.cpp: | |
18520 | * jit/JITStubs.cpp: | |
18521 | (JSC::JITThunks::JITThunks): | |
18522 | * jit/JITStubs.h: | |
18523 | * wtf/Platform.h: | |
18524 | * yarr/RegexJIT.cpp: | |
18525 | (JSC::Yarr::RegexGenerator::generateEnter): | |
18526 | ||
18527 | 2009-09-18 Joerg Bornemann <joerg.bornemann@nokia.com> | |
18528 | ||
18529 | Reviewed by Simon Hausmann. | |
18530 | ||
18531 | Fix the Qt/Windows CE build. | |
18532 | ||
18533 | * JavaScriptCore.pri: Build the ce_time.cpp functions from | |
18534 | within Qt externally. | |
18535 | * wtf/DateMath.cpp: Removed unnecessary Qt #ifdef, for the | |
18536 | Qt build these functions are no external, too. | |
18537 | ||
18538 | 2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com> | |
18539 | ||
18540 | Reviewed by Simon Hausmann. | |
18541 | ||
18542 | Symbian/WINSCW build fox. | |
18543 | ||
18544 | Repeat Q_OS_WIN wchar_t hack for WINSCW, similar to | |
18545 | revision 24774. | |
18546 | ||
18547 | WINSCW defines wchar_t, thus UChar has to be wchar_t | |
18548 | ||
18549 | * wtf/unicode/qt4/UnicodeQt4.h: | |
18550 | ||
18551 | 2009-09-17 Janne Koskinen <janne.p.koskinen@digia.com> | |
18552 | ||
18553 | Reviewed by Simon Hausmann. | |
18554 | ||
18555 | Symbian/WINSCW build fix. | |
18556 | ||
18557 | https://bugs.webkit.org/show_bug.cgi?id=29186 | |
18558 | ||
18559 | WINSCW Template specialisation name in declaration must the be the same as in implementation. | |
18560 | ||
18561 | * runtime/LiteralParser.h: | |
18562 | ||
18563 | 2009-09-15 Norbert Leser <norbert.leser@nokia.com> | |
18564 | ||
18565 | Reviewed by Darin Adler. | |
18566 | ||
18567 | https://bugs.webkit.org/show_bug.cgi?id=27060 | |
18568 | ||
18569 | Symbian compiler for emulator target (WINSCW) fails with | |
18570 | "illegal operand" for m_attributesInPrevious in structure.ccp | |
18571 | (when calling make_pair functions). | |
18572 | This error is apparently due to the compiler not properly | |
18573 | resolving the unsigned type of the declared bitfield. | |
18574 | ||
18575 | Initial patch explicitly casted m_attributesInPrevious | |
18576 | to unsigned, but since bitfield optimization is not critical for | |
18577 | the emulator target, this conditional change in header file | |
18578 | appears to be least intrusive. | |
18579 | ||
18580 | * runtime/Structure.h: | |
18581 | ||
18582 | 2009-09-16 Gabor Loki <loki@inf.u-szeged.hu> | |
18583 | ||
18584 | Reviewed by Darin Adler. | |
18585 | ||
18586 | Fix GCC warnings on ARM_THUMB2 platform | |
18587 | ||
18588 | * assembler/ARMv7Assembler.h: | |
18589 | (JSC::ARMThumbImmediate::countLeadingZerosPartial): | |
18590 | * assembler/MacroAssemblerARMv7.h: | |
18591 | (JSC::MacroAssemblerARMv7::branchTruncateDoubleToInt32): | |
18592 | (JSC::MacroAssemblerARMv7::moveFixedWidthEncoding): | |
18593 | ||
18594 | 2009-09-16 Greg Bolsinga <bolsinga@apple.com> | |
18595 | ||
18596 | Add ENABLE(INSPECTOR) | |
18597 | https://bugs.webkit.org/show_bug.cgi?id=29260 | |
18598 | ||
18599 | Reviewed by David Kilzer. | |
18600 | ||
18601 | * wtf/Platform.h: | |
18602 | ||
18603 | 2009-09-16 Greg Bolsinga <bolsinga@apple.com> | |
18604 | ||
18605 | Add ENABLE(CONTEXT_MENUS) | |
18606 | https://bugs.webkit.org/show_bug.cgi?id=29225 | |
18607 | ||
18608 | Reviewed by David Kilzer. | |
18609 | ||
18610 | * wtf/Platform.h: | |
18611 | ||
18612 | 2009-09-16 Benjamin C Meyer <benjamin.meyer@torchmobile.com> | |
18613 | ||
18614 | Reviewed by Eric Seidel. | |
18615 | ||
18616 | The webkit stdint and stdbool headers exists because | |
18617 | the compiler MSVC doesn't include them. The check | |
18618 | should not check for PLATFORM(WIN_OS) but for MSVC. | |
18619 | ||
18620 | * os-win32/stdbool.h: | |
18621 | * os-win32/stdint.h: | |
18622 | ||
18623 | 2009-09-16 Greg Bolsinga <bolsinga@apple.com> | |
18624 | ||
18625 | Add ENABLE(DRAG_SUPPORT) | |
18626 | https://bugs.webkit.org/show_bug.cgi?id=29233 | |
18627 | ||
18628 | Reviewed by David Kilzer. | |
18629 | ||
18630 | * wtf/Platform.h: | |
18631 | ||
18632 | 2009-09-16 Kevin Ollivier <kevino@theolliviers.com> | |
18633 | ||
18634 | waf build fix after flag was moved to correct place. | |
18635 | ||
18636 | * wscript: | |
18637 | ||
18638 | 2009-09-16 Tor Arne Vestbø <tor.arne.vestbo@nokia.com> | |
18639 | ||
18640 | Reviewed by Simon Hausmann. | |
18641 | ||
18642 | [Qt] Build fix for 64-bit Qt on Mac OS X | |
18643 | ||
18644 | * wtf/Platform.h: Use JSVALUE64 on DARWIN, not only on MAC | |
18645 | ||
18646 | 2009-09-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
18647 | ||
18648 | Reviewed by Simon Hausmann. | |
18649 | ||
18650 | [Qt] Fix wtf/ThreadSpecific.h under Qt to free thread local objects. | |
18651 | https://bugs.webkit.org/show_bug.cgi?id=29295 | |
18652 | ||
18653 | This is an important fix when JavaScript workers are in use, since | |
18654 | unfreed ThreadGlobalDatas leak a big amount of memory (50-100k each). | |
18655 | QThreadStorage calls the destructor of a given object, which is the | |
18656 | ThreadSpecific::Data. Unlike pthread, Qt is object oriented, and does | |
18657 | not support the calling of a static utility function when the thread | |
18658 | is about to close. In this patch we call the ThreadSpecific::destroy() | |
18659 | utility function from the destructor of ThreadSpecific::Data. Moreover, | |
18660 | since Qt resets all thread local values to 0 before the calling of the | |
18661 | appropriate destructors, we set back the pointer to its original value. | |
18662 | This is necessary because the get() method of the ThreadSpecific | |
18663 | object may be called during the exuction of the destructor. | |
18664 | ||
18665 | * wtf/ThreadSpecific.h: | |
18666 | (WTF::ThreadSpecific::Data::~Data): | |
18667 | (WTF::::~ThreadSpecific): | |
18668 | (WTF::::set): | |
18669 | (WTF::::destroy): | |
18670 | ||
18671 | 2009-09-10 Oliver Hunt <oliver@apple.com> | |
18672 | ||
18673 | Reviewed by Geoff Garen. | |
18674 | ||
18675 | Allow anonymous storage inside JSObject | |
18676 | https://bugs.webkit.org/show_bug.cgi?id=29168 | |
18677 | ||
18678 | Add the concept of anonymous slots to Structures so that it is | |
18679 | possible to store references to values that need marking in the | |
18680 | standard JSObject storage buffer. This allows us to reduce the | |
18681 | malloc overhead of some objects (by allowing them to store JS | |
18682 | values in the inline storage of the object) and reduce the | |
18683 | dependence of custom mark functions (if all an objects children | |
18684 | are in the standard object property storage there's no need to | |
18685 | mark them manually). | |
18686 | ||
18687 | * JavaScriptCore.exp: | |
18688 | * runtime/JSObject.h: | |
18689 | (JSC::JSObject::putAnonymousValue): | |
18690 | (JSC::JSObject::getAnonymousValue): | |
18691 | (JSC::JSObject::addAnonymousSlots): | |
18692 | * runtime/JSWrapperObject.h: | |
18693 | (JSC::JSWrapperObject::createStructure): | |
18694 | (JSC::JSWrapperObject::JSWrapperObject): | |
18695 | (JSC::JSWrapperObject::setInternalValue): | |
18696 | * runtime/PropertyMapHashTable.h: | |
18697 | * runtime/Structure.cpp: | |
18698 | (JSC::Structure::~Structure): | |
18699 | (JSC::Structure::materializePropertyMap): | |
18700 | (JSC::Structure::addAnonymousSlotsTransition): | |
18701 | (JSC::Structure::copyPropertyTable): | |
18702 | (JSC::Structure::put): | |
18703 | (JSC::Structure::rehashPropertyMapHashTable): | |
18704 | * runtime/Structure.h: | |
18705 | (JSC::Structure::propertyStorageSize): | |
18706 | (JSC::StructureTransitionTable::reifySingleTransition): | |
18707 | * runtime/StructureTransitionTable.h: | |
18708 | (JSC::StructureTransitionTable::TransitionTable::addSlotTransition): | |
18709 | (JSC::StructureTransitionTable::TransitionTable::removeSlotTransition): | |
18710 | (JSC::StructureTransitionTable::TransitionTable::getSlotTransition): | |
18711 | (JSC::StructureTransitionTable::getAnonymousSlotTransition): | |
18712 | (JSC::StructureTransitionTable::addAnonymousSlotTransition): | |
18713 | (JSC::StructureTransitionTable::removeAnonymousSlotTransition): | |
18714 | ||
18715 | 2009-09-15 Alex Milowski <alex@milowski.com> | |
18716 | ||
18717 | Reviewed by Tor Arne Vestbø. | |
18718 | ||
18719 | Added the ENABLE_MATHML define to the features | |
18720 | ||
18721 | * Configurations/FeatureDefines.xcconfig: | |
18722 | ||
18723 | 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
18724 | ||
18725 | Reviewed by Tor Arne Vestbø. | |
18726 | ||
18727 | [Qt] Build fix for windows. | |
18728 | ||
18729 | After http://trac.webkit.org/changeset/47795 the MinGW build broke, | |
18730 | because MinGW has __mingw_aligned_malloc instead of _aligned_malloc. | |
18731 | ||
18732 | * runtime/Collector.cpp: | |
18733 | (JSC::Heap::allocateBlock): MinGW case added. | |
18734 | (JSC::Heap::freeBlock): MinGW case added. | |
18735 | ||
18736 | 2009-09-15 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
18737 | ||
18738 | Reviewed by Tor Arne Vestbø. | |
18739 | ||
18740 | [Qt] Build fix for Windows/MinGW | |
18741 | ||
18742 | https://bugs.webkit.org/show_bug.cgi?id=29268 | |
18743 | ||
18744 | * wtf/Platform.h: JSVALUE32_64 temporarily disabled on PLATFORM(WIN_OS) with COMPILER(MINGW) | |
18745 | ||
18746 | 2009-09-14 Gabor Loki <loki@inf.u-szeged.hu> | |
18747 | ||
18748 | Reviewed by Gavin Barraclough. | |
18749 | ||
18750 | Detect VFP at runtime in generic ARM port on Linux platform. | |
18751 | https://bugs.webkit.org/show_bug.cgi?id=29076 | |
18752 | ||
18753 | * JavaScriptCore.pri: | |
18754 | * assembler/MacroAssemblerARM.cpp: Added. | |
18755 | (JSC::isVFPPresent): | |
18756 | * assembler/MacroAssemblerARM.h: | |
18757 | (JSC::MacroAssemblerARM::supportsFloatingPoint): | |
18758 | ||
18759 | 2009-09-14 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
18760 | ||
18761 | Reviewed by Tor Arne Vestbø. | |
18762 | ||
18763 | [Qt] Build fix for windows build. | |
18764 | ||
18765 | * JavaScriptCore.pri: Correct a logic error. | |
18766 | * pcre/dftables: Add missing paranthesis for tmpdir function. | |
18767 | ||
18768 | 2009-09-12 Oliver Hunt <oliver@apple.com> | |
18769 | ||
18770 | Reviewed by NOBODY (Build fix). | |
18771 | ||
18772 | Build fix for windows exports (again). | |
18773 | ||
18774 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
18775 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
18776 | ||
18777 | 2009-09-12 Oliver Hunt <oliver@apple.com> | |
18778 | ||
18779 | Reviewed by NOBODY (Build fix). | |
18780 | ||
18781 | Build fix for windows exports. | |
18782 | ||
18783 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
18784 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
18785 | ||
18786 | 2009-09-12 Oliver Hunt <oliver@apple.com> | |
18787 | ||
18788 | Reviewed by NOBODY (Build fix). | |
18789 | ||
18790 | Correct fix for non-allinonefile builds | |
18791 | ||
18792 | * runtime/ObjectConstructor.cpp: | |
18793 | ||
18794 | 2009-09-12 Oliver Hunt <oliver@apple.com> | |
18795 | ||
18796 | Reviewed by NOBODY (Build fix). | |
18797 | ||
18798 | Fix non-allinonefile builds | |
18799 | ||
18800 | * runtime/ObjectConstructor.cpp: | |
18801 | ||
18802 | 2009-09-12 Oliver Hunt <oliver@apple.com> | |
18803 | ||
18804 | Reviewed by Maciej Stachowiak. | |
18805 | ||
18806 | [ES5] Implement Object.keys | |
18807 | https://bugs.webkit.org/show_bug.cgi?id=29170 | |
18808 | ||
18809 | This patch basically requires two separate steps, the first is to split getPropertyNames | |
18810 | into two functions -- getOwnPropertyNames and getPropertyNames, basically making them behave | |
18811 | in the same way as getOwnPropertySlot and getPropertySlot. In essence getOwnPropertyNames | |
18812 | produces the list of properties on an object excluding its prototype chain and getPropertyNames | |
18813 | just iterates the the object and its prototype chain calling getOwnPropertyNames at each level. | |
18814 | ||
18815 | * API/JSCallbackObject.h: | |
18816 | * API/JSCallbackObjectFunctions.h: | |
18817 | (JSC::::getOwnPropertyNames): | |
18818 | * JavaScriptCore.exp: | |
18819 | * debugger/DebuggerActivation.cpp: | |
18820 | (JSC::DebuggerActivation::getOwnPropertyNames): | |
18821 | * debugger/DebuggerActivation.h: | |
18822 | * runtime/CommonIdentifiers.h: | |
18823 | * runtime/JSArray.cpp: | |
18824 | (JSC::JSArray::getOwnPropertyNames): | |
18825 | * runtime/JSArray.h: | |
18826 | * runtime/JSByteArray.cpp: | |
18827 | (JSC::JSByteArray::getOwnPropertyNames): | |
18828 | * runtime/JSByteArray.h: | |
18829 | * runtime/JSNotAnObject.cpp: | |
18830 | (JSC::JSNotAnObject::getOwnPropertyNames): | |
18831 | * runtime/JSNotAnObject.h: | |
18832 | * runtime/JSObject.cpp: | |
18833 | (JSC::JSObject::getOwnPropertyNames): | |
18834 | * runtime/JSObject.h: | |
18835 | * runtime/JSVariableObject.cpp: | |
18836 | (JSC::JSVariableObject::getOwnPropertyNames): | |
18837 | * runtime/JSVariableObject.h: | |
18838 | * runtime/ObjectConstructor.cpp: | |
18839 | (JSC::ObjectConstructor::ObjectConstructor): | |
18840 | (JSC::objectConstructorKeys): | |
18841 | * runtime/RegExpMatchesArray.h: | |
18842 | (JSC::RegExpMatchesArray::getOwnPropertyNames): | |
18843 | * runtime/StringObject.cpp: | |
18844 | (JSC::StringObject::getOwnPropertyNames): | |
18845 | * runtime/StringObject.h: | |
18846 | * runtime/Structure.cpp: | |
18847 | (JSC::Structure::getOwnEnumerablePropertyNames): | |
18848 | (JSC::Structure::getEnumerablePropertyNames): | |
18849 | * runtime/Structure.h: | |
18850 | ||
18851 | 2009-09-11 Oliver Hunt <oliver@apple.com> | |
18852 | ||
18853 | Reviewed by Sam Weinig. | |
18854 | ||
18855 | getPropertyNames caching is invalid when the prototype chain contains objects with custom getPropertyNames | |
18856 | https://bugs.webkit.org/show_bug.cgi?id=29214 | |
18857 | ||
18858 | Add a flag to TypeInfo to indicate whether a type overrides getPropertyNames. | |
18859 | This flag is used to make sure that caching of the property name data is safe. | |
18860 | ||
18861 | * API/JSCallbackConstructor.h: | |
18862 | (JSC::JSCallbackConstructor::createStructure): | |
18863 | * debugger/DebuggerActivation.h: | |
18864 | (JSC::DebuggerActivation::createStructure): | |
18865 | * runtime/BooleanObject.h: | |
18866 | (JSC::BooleanObject::createStructure): | |
18867 | * runtime/DatePrototype.h: | |
18868 | (JSC::DatePrototype::createStructure): | |
18869 | * runtime/FunctionPrototype.h: | |
18870 | (JSC::FunctionPrototype::createStructure): | |
18871 | * runtime/JSONObject.h: | |
18872 | (JSC::JSONObject::createStructure): | |
18873 | * runtime/JSObject.h: | |
18874 | (JSC::JSObject::createStructure): | |
18875 | * runtime/JSTypeInfo.h: | |
18876 | (JSC::TypeInfo::hasDefaultGetPropertyNames): | |
18877 | * runtime/JSVariableObject.h: | |
18878 | (JSC::JSVariableObject::createStructure): | |
18879 | * runtime/JSWrapperObject.h: | |
18880 | (JSC::JSWrapperObject::createStructure): | |
18881 | * runtime/MathObject.h: | |
18882 | (JSC::MathObject::createStructure): | |
18883 | * runtime/NumberConstructor.h: | |
18884 | (JSC::NumberConstructor::createStructure): | |
18885 | * runtime/NumberObject.h: | |
18886 | (JSC::NumberObject::createStructure): | |
18887 | * runtime/RegExpConstructor.h: | |
18888 | (JSC::RegExpConstructor::createStructure): | |
18889 | * runtime/RegExpObject.h: | |
18890 | (JSC::RegExpObject::createStructure): | |
18891 | * runtime/StructureChain.cpp: | |
18892 | (JSC::StructureChain::isCacheable): | |
18893 | ||
18894 | 2009-09-11 Alexey Proskuryakov <ap@webkit.org> | |
18895 | ||
18896 | Reviewed by Geoff Garen. | |
18897 | ||
18898 | https://bugs.webkit.org/show_bug.cgi?id=29207 | |
18899 | Add checks for using WebCore JS context on secondary threads | |
18900 | ||
18901 | * runtime/JSGlobalData.cpp: (JSC::JSGlobalData::JSGlobalData): | |
18902 | * runtime/JSGlobalData.h: | |
18903 | Added a new mainThreadOnly flag that WebCore would set. | |
18904 | ||
18905 | * runtime/Collector.cpp: (JSC::Heap::registerThread): JSC API methods always call this, | |
18906 | so this is a good place to check that the API isn't used form a wrong thread. | |
18907 | ||
18908 | 2009-09-11 Jocelyn Turcotte <jocelyn.turcotte@nokia.com> | |
18909 | ||
18910 | Reviewed by Simon Hausmann. | |
18911 | ||
18912 | Compiling JavaScriptCore on sparc 64 with gcc fails. | |
18913 | ||
18914 | ThreadSafeShared uses the atomic __gnu_cxx::__exchange_and_add with an int, | |
18915 | however on sparc 64 the _Atomic_word argument is typedefed to long (8 bytes). | |
18916 | ||
18917 | The patch disables WTF_USE_LOCKFREE_THREADSAFESHARED in ThreadSafeShared to use | |
18918 | a mutex instead when compiling for sparc 64 with gcc. | |
18919 | ||
18920 | https://bugs.webkit.org/show_bug.cgi?id=29175 | |
18921 | ||
18922 | * wtf/Platform.h: | |
18923 | __sparc64__ is not defined on all OS. | |
18924 | Uses instead: __sparc__ && __arch64__ || __sparcv9 | |
18925 | * wtf/Threading.h: | |
18926 | ||
18927 | 2009-09-11 Prasanth Ullattil <prasanth.ullattil@nokia.com> | |
18928 | ||
18929 | Reviewed by Simon Hausmann. | |
18930 | ||
18931 | Fix compile error on Windows7(64Bit) with latest SDK. | |
18932 | ||
18933 | Added the missing include file. | |
18934 | ||
18935 | * runtime/UString.cpp: | |
18936 | ||
18937 | 2009-09-11 Joerg Bornemann <joerg.bornemann@trolltech.com> | |
18938 | ||
18939 | Reviewed by Simon Hausmann. | |
18940 | ||
18941 | Qt/Windows CE compile fix, include the executable allocator and | |
18942 | markstack implementation in the windows build. | |
18943 | ||
18944 | * JavaScriptCore.pri: | |
18945 | ||
18946 | 2009-09-08 John Abd-El-Malek <jam@chromium.org> | |
18947 | ||
18948 | Reviewed by Dimitri Glazkov. | |
18949 | ||
18950 | Remove unneeded define for ActiveX. | |
18951 | https://bugs.webkit.org/show_bug.cgi?id=29054 | |
18952 | ||
18953 | * wtf/Platform.h: | |
18954 | ||
18955 | 2009-09-10 Mark Rowe <mrowe@apple.com> | |
18956 | ||
18957 | Rubber-stamped by Sam Weinig. | |
18958 | ||
18959 | Update JavaScriptCore and WebKit's FeatureDefines.xcconfig so that they are in sync with WebCore as they need to be. | |
18960 | ||
18961 | * Configurations/FeatureDefines.xcconfig: | |
18962 | ||
18963 | 2009-09-10 Fumitoshi Ukai <ukai@chromium.org> | |
18964 | ||
18965 | Reviewed by Alexey Proskuryakov. | |
18966 | ||
18967 | Export WTF::tryFastMalloc used in WebSocketChannel. | |
18968 | https://bugs.webkit.org/show_bug.cgi?id=28038 | |
18969 | ||
18970 | * JavaScriptCore.exp: | |
18971 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
18972 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
18973 | ||
18974 | 2009-09-10 Oliver Hunt <oliver@apple.com> | |
18975 | ||
18976 | Reviewed by NOBODY (Build fix). | |
18977 | ||
18978 | Make StructureTransitionTable use an enum for the PtrAndFlags member | |
18979 | used for the single transition slot optimisation. | |
18980 | ||
18981 | * runtime/StructureTransitionTable.h: | |
18982 | (JSC::StructureTransitionTable::StructureTransitionTable): | |
18983 | (JSC::StructureTransitionTable::usingSingleTransitionSlot): | |
18984 | (JSC::StructureTransitionTable::): | |
18985 | ||
18986 | 2009-09-10 Oliver Hunt <oliver@apple.com> | |
18987 | ||
18988 | Reviewed by Geoff Garen. | |
18989 | ||
18990 | Refactor StructureTransitionTable and Structure to unify handling of the single slot optimization | |
18991 | https://bugs.webkit.org/show_bug.cgi?id=29141 | |
18992 | ||
18993 | Make StructureTransitionTable encapsulate the single transition slot optimization. | |
18994 | ||
18995 | * runtime/Structure.cpp: | |
18996 | (JSC::Structure::Structure): | |
18997 | (JSC::Structure::~Structure): | |
18998 | (JSC::Structure::addPropertyTransitionToExistingStructure): | |
18999 | (JSC::Structure::addPropertyTransition): | |
19000 | (JSC::Structure::addPropertyWithoutTransition): | |
19001 | (JSC::Structure::removePropertyWithoutTransition): | |
19002 | (JSC::Structure::hasTransition): | |
19003 | * runtime/Structure.h: | |
19004 | (JSC::StructureTransitionTable::contains): | |
19005 | (JSC::StructureTransitionTable::get): | |
19006 | (JSC::StructureTransitionTable::hasTransition): | |
19007 | (JSC::StructureTransitionTable::reifySingleTransition): | |
19008 | * runtime/StructureTransitionTable.h: | |
19009 | (JSC::StructureTransitionTable::StructureTransitionTable): | |
19010 | (JSC::StructureTransitionTable::~StructureTransitionTable): | |
19011 | (JSC::StructureTransitionTable::remove): | |
19012 | (JSC::StructureTransitionTable::add): | |
19013 | (JSC::StructureTransitionTable::table): | |
19014 | (JSC::StructureTransitionTable::singleTransition): | |
19015 | (JSC::StructureTransitionTable::usingSingleTransitionSlot): | |
19016 | (JSC::StructureTransitionTable::setSingleTransition): | |
19017 | (JSC::StructureTransitionTable::setTransitionTable): | |
19018 | (JSC::StructureTransitionTable::): | |
19019 | * wtf/PtrAndFlags.h: | |
19020 | (WTF::PtrAndFlags::PtrAndFlags): | |
19021 | ||
19022 | 2009-09-10 Zoltan Horvath <zoltan@webkit.org> | |
19023 | ||
19024 | Reviewed by Darin Adler. | |
19025 | ||
19026 | Implement fastDeleteSkippingDestructor for FastAllocBase and fastDeleteAllValues for HashSet | |
19027 | https://bugs.webkit.org/show_bug.cgi?id=25930 | |
19028 | ||
19029 | FastAllocBase has been extended with fastDeleteSkippingDestructor function which | |
19030 | releases memory without destructor call. fastDeleteAllValues has been implemented | |
19031 | similar as deleteAllValues but it uses fastDelete function to release memory. | |
19032 | ||
19033 | * wtf/FastAllocBase.h: | |
19034 | (WTF::fastDeleteSkippingDestructor): | |
19035 | * wtf/HashSet.h: | |
19036 | (WTF::fastDeleteAllValues): | |
19037 | ||
19038 | 2009-09-10 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
19039 | ||
19040 | Reviewed by Darin Adler. | |
19041 | ||
19042 | ARM compiler does not understand GCC visibility attribute | |
19043 | https://bugs.webkit.org/show_bug.cgi?id=29079 | |
19044 | ||
19045 | * API/JSBase.h: Make the test more specific to hit only | |
19046 | the GCC compiler | |
19047 | ||
19048 | 2009-09-10 Adam Barth <abarth@webkit.org> | |
19049 | ||
19050 | Unreviewed revert of the previous change. It broke the tests. | |
19051 | ||
19052 | * wtf/dtoa.cpp: | |
19053 | (WTF::dtoa): | |
19054 | ||
19055 | 2009-09-10 Ben Laurie <benl@google.com> | |
19056 | ||
19057 | Reviewed by Adam Barth. | |
19058 | ||
19059 | <https://bugs.webkit.org/show_bug.cgi?id=26836> | |
19060 | ||
19061 | If dtoa was given a small buffer and the number was either infinite or | |
19062 | NaN, then the buffer would be overflowed. | |
19063 | ||
19064 | * wtf/dtoa.cpp: | |
19065 | ||
19066 | 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
19067 | ||
19068 | Reviewed by Darin Adler. | |
19069 | ||
19070 | Change reinterpret_cast to static_cast in r48212. | |
19071 | ||
19072 | * jit/ExecutableAllocator.h: | |
19073 | (JSC::ExecutableAllocator::cacheFlush): | |
19074 | ||
19075 | 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
19076 | ||
19077 | Reviewed by Darin Adler. | |
19078 | ||
19079 | Remove WTF_PLATFORM_FORCE_PACK as it is no longer used | |
19080 | https://bugs.webkit.org/show_bug.cgi?id=29066 | |
19081 | ||
19082 | * wtf/Platform.h: | |
19083 | ||
19084 | 2009-09-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
19085 | ||
19086 | Reviewed by Ariya Hidayat. | |
19087 | ||
19088 | Implement flushing the instruction cache for Symbian | |
19089 | https://bugs.webkit.org/show_bug.cgi?id=29075 | |
19090 | ||
19091 | * jit/ExecutableAllocator.h: | |
19092 | (JSC::ExecutableAllocator::cacheFlush): Call IMB_Range to flush | |
19093 | the instruction cache on Symbian | |
19094 | ||
19095 | 2009-09-09 Kent Hansen <khansen@trolltech.com> | |
19096 | ||
19097 | Reviewed by Darin Adler. | |
19098 | ||
19099 | https://bugs.webkit.org/show_bug.cgi?id=29024 | |
19100 | Make JavaScriptCore compile on platforms with case-insensitive file systems and typeinfo.h in STL | |
19101 | ||
19102 | These platforms include Microsoft Visual Studio 2003, and Symbian with Metrowerks compiler. | |
19103 | ||
19104 | * JavaScriptCore.gypi: | |
19105 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
19106 | * runtime/JSTypeInfo.h: Copied from JavaScriptCore/runtime/TypeInfo.h. | |
19107 | * runtime/Structure.h: | |
19108 | * runtime/TypeInfo.h: Removed. | |
19109 | ||
19110 | 2009-09-08 Oliver Hunt <oliver@apple.com> | |
19111 | ||
19112 | Reviewed by Maciej Stachowiak. | |
19113 | ||
19114 | JSON.stringify(Date) loses the milliseconds information | |
19115 | https://bugs.webkit.org/show_bug.cgi?id=29063 | |
19116 | ||
19117 | Make sure we include milliseconds in the output of toISOString. | |
19118 | ||
19119 | * runtime/DatePrototype.cpp: | |
19120 | (JSC::dateProtoFuncToISOString): | |
19121 | ||
19122 | 2009-09-08 Kevin Ollivier <kevino@theolliviers.com> | |
19123 | ||
19124 | wx build fix, generate derived sources earlier in order to make sure | |
19125 | they're found by the build system when generating the list of sources to build. | |
19126 | ||
19127 | * wscript: | |
19128 | ||
19129 | 2009-09-08 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
19130 | ||
19131 | Reviewed by Simon Hausmann. | |
19132 | ||
19133 | Build fix when USE(LOCKFREE_THREADSAFESHARED) is not defined | |
19134 | https://bugs.webkit.org/show_bug.cgi?id=29011 | |
19135 | ||
19136 | * wtf/Threading.h: Use LOCKFREE_THREADSAFESHARED guard for | |
19137 | atomicIncrement and atomicDecrement | |
19138 | ||
19139 | 2009-09-07 Zoltan Horvath <zoltan@webkit.org> | |
19140 | ||
19141 | Reviewed by Darin Adler. | |
19142 | ||
19143 | Allow custom memory allocation control in Yarr's RegexInterpreter | |
19144 | https://bugs.webkit.org/show_bug.cgi?id=29025 | |
19145 | ||
19146 | Inherits RegexInterpreter classes from FastAllocBase (bug #20422), which has | |
19147 | been instantiated by 'new': | |
19148 | ||
19149 | class ByteDisjunction | |
19150 | -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1462 | |
19151 | ||
19152 | struct BytecodePattern | |
19153 | -> instantiated in JavaScriptCore/yarr/RegexInterpreter.cpp:1279 | |
19154 | ||
19155 | * yarr/RegexInterpreter.h: | |
19156 | ||
19157 | 2009-09-07 Drew Wilson <atwilson@google.com> | |
19158 | ||
19159 | Reverting r48121 to fix Windows build errors. | |
19160 | ||
19161 | * JavaScriptCore.exp: | |
19162 | ||
19163 | 2009-09-07 Drew Wilson <atwilson@google.com> | |
19164 | ||
19165 | Reviewed by David Levin. | |
19166 | ||
19167 | Enable SHARED_WORKERS by default | |
19168 | https://bugs.webkit.org/show_bug.cgi?id=28959 | |
19169 | ||
19170 | * Configurations/FeatureDefines.xcconfig: | |
19171 | ||
19172 | 2009-09-07 Fumitoshi Ukai <ukai@chromium.org> | |
19173 | ||
19174 | Reviewed by Alexey Proskuryakov. | |
19175 | ||
19176 | Export WTF::tryFastMalloc used in WebSocketChannel. | |
19177 | https://bugs.webkit.org/show_bug.cgi?id=28038 | |
19178 | ||
19179 | * JavaScriptCore.exp: | |
19180 | ||
19181 | 2009-09-04 Oliver Hunt <oliver@apple.com> | |
19182 | ||
19183 | Reviewed by NOBODY (Build fix). | |
19184 | ||
19185 | Fix windows export files | |
19186 | ||
19187 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
19188 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
19189 | ||
19190 | 2009-09-04 Oliver Hunt <oliver@apple.com> | |
19191 | ||
19192 | Reviewed by Gavin Barraclough. | |
19193 | ||
19194 | [[ToString]] conversion should use the actual toString function for String objects. | |
19195 | ||
19196 | Remove incorrect specialisations of toString conversions on StringObject. | |
19197 | ||
19198 | * JavaScriptCore.exp: | |
19199 | * runtime/StringObject.cpp: | |
19200 | * runtime/StringObject.h: | |
19201 | ||
19202 | 2009-09-04 Steve Falkenburg <sfalken@apple.com> | |
19203 | ||
19204 | Windows build fix. | |
19205 | ||
19206 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Add new export. | |
19207 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Add new export. | |
19208 | ||
19209 | 2009-09-04 Steve Falkenburg <sfalken@apple.com> | |
19210 | ||
19211 | Windows build fix. | |
19212 | ||
19213 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Remove unneeded export. | |
19214 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Remove unneeded export. | |
19215 | ||
19216 | 2009-09-04 Darin Adler <darin@apple.com> | |
19217 | ||
19218 | Reviewed by Geoff Garen. | |
19219 | ||
19220 | DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) | |
19221 | https://bugs.webkit.org/show_bug.cgi?id=28909 | |
19222 | ||
19223 | Part two. | |
19224 | ||
19225 | Make some improvements to garbage collection code: | |
19226 | ||
19227 | 1) Create a runtime assertion that catches any classes that | |
19228 | override markChildren but have the HasDefaultMark bit set. | |
19229 | 2) Remove checks of the mark bit outside the MarkStack::append | |
19230 | function; they are redundant. | |
19231 | 3) Improve the efficiency of the asObject and asArray functions | |
19232 | when called on JSCell* to avoid a round trip to JSValue. | |
19233 | 4) Make more callers use the checked asCell and asObject | |
19234 | casting functions rather than unchecked casts. | |
19235 | 5) Removed the JSCell::marked function and other GC-related | |
19236 | functions because these operations are no longer things that | |
19237 | code other than the core GC code needs to do directly. Fixed | |
19238 | callers that were calling them. | |
19239 | ||
19240 | * runtime/Collector.cpp: | |
19241 | (JSC::Heap::markConservatively): Removed unneeded call to MarkStack::drain. | |
19242 | (JSC::Heap::markProtectedObjects): Removed unneeded check of the mark | |
19243 | bit and call to MarkStack::drain. | |
19244 | (JSC::Heap::collect): Removed unneeded checks of the mark bit and also | |
19245 | changed call to SmallStrings::mark to call markChildren instead to match | |
19246 | the rest of the objects. | |
19247 | (JSC::typeName): Removed unneeded cast to JSObject*. | |
19248 | ||
19249 | * runtime/JSArray.h: | |
19250 | (JSC::asArray): Added an overload for JSCell* and changed the JSValue | |
19251 | version to call it. Removed some unneeded casts. | |
19252 | (JSC::JSArray::markChildrenDirect): Marked this function inline. It's in | |
19253 | a header, and if not marked inline this could lead to linking problems. | |
19254 | (JSC::MarkStack::markChildren): Added. This helper function is used by | |
19255 | the drain function to avoid repating code. Also added the code here to | |
19256 | check fro default mark violations in debug code. If a markChildren | |
19257 | function adds something to the mark stack, but the type info claimed | |
19258 | hasDefaultMark was true, then we will get an assertion now. Also fixed | |
19259 | the assertion about the mark bit to use the Heap function directly | |
19260 | because we don't have a JSCell::marked function any more. | |
19261 | (JSC::MarkStack::drain): Changed a local variable from "v" to "value", | |
19262 | and from "currentCell" to "cell". Changed to call markChildren in two | |
19263 | places instead of repeating a chain of if statements twice. Changed | |
19264 | code that reads and writes the mark bit to use Heap::isCellMarked and | |
19265 | Heap::markCell so we can eliminate the JSCell::marked and | |
19266 | JSCell::markCellDirect functions. | |
19267 | ||
19268 | * runtime/JSCell.h: Removed JSCell's markCellDirect and marked member | |
19269 | functions. Added a comment explaining that asCell should be deprecated | |
19270 | in favor of the JSValue asCell member function. | |
19271 | (JSC::MarkStack::append): Added the assertion that catches callers | |
19272 | that have set the HasDefaultMark bit incorrectly. Changed | |
19273 | code that reads and writes the mark bit to use Heap::isCellMarked and | |
19274 | Heap::markCell so we can eliminate the JSCell::marked and | |
19275 | JSCell::markCellDirect functions. Moved the overload of | |
19276 | MarkStack::append for JSValue here so it can call through to the cell | |
19277 | version. The old version had a copy of all the code instead, but that | |
19278 | repeated the conversion from JSValue to JSCell* and the check for | |
19279 | whether a value is a cell multiple times. | |
19280 | (JSC::Structure::markAggregate): Moved this function here to avoid | |
19281 | dependencies for Structure.h, since this calls MarkStack::append. | |
19282 | ||
19283 | * runtime/JSObject.cpp: | |
19284 | (JSC::JSObject::markChildren): Added code to clear | |
19285 | m_isCheckingForDefaultMarkViolation so the marking done by JSObject | |
19286 | doesn't trigger the assertion. | |
19287 | ||
19288 | * runtime/JSValue.h: Moved some stray includes that were outside the | |
19289 | header guard inside it. Not sure how that happened! Removed the | |
19290 | GC-related member functions markChildren, hasChildren, marked, and | |
19291 | markDirect. | |
19292 | ||
19293 | * runtime/JSWrapperObject.h: Made markChildren private. | |
19294 | (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the | |
19295 | HasDefaultMark bit was set. | |
19296 | ||
19297 | * runtime/MarkStack.h: Added m_isCheckingForDefaultMarkViolation and | |
19298 | initialized it to false. Moved the append function body from here to | |
19299 | JSCell.h. Added a declaration of a private markChildren function used | |
19300 | inside the drain function. | |
19301 | ||
19302 | * runtime/SmallStrings.cpp: | |
19303 | (JSC::SmallStrings::markChildren): Changed the name and style of this | |
19304 | function to match other functions. This allows us to share the normal | |
19305 | mark stack code path. | |
19306 | ||
19307 | * runtime/SmallStrings.h: Changed the name and interface of mark to | |
19308 | the more-normal markChildren style. | |
19309 | ||
19310 | * runtime/Structure.h: Moved the body of markAggregate into the | |
19311 | JSCell.h to avoid a circular dependency with JSCell.h. | |
19312 | ||
19313 | 2009-09-04 Darin Adler <darin@apple.com> | |
19314 | ||
19315 | Reviewed by Geoff Garen. | |
19316 | ||
19317 | DateInstance object collected on ARM JIT (JSValue: WTF_USE_JSVALUE32) | |
19318 | https://bugs.webkit.org/show_bug.cgi?id=28909 | |
19319 | ||
19320 | Part one. | |
19321 | ||
19322 | Make some improvements to garbage collection code: | |
19323 | ||
19324 | 1) Fix the two classes that had the default mark bit set but | |
19325 | should not. | |
19326 | 2) Remove checks of the mark bit outside the MarkStack::append | |
19327 | function; they are redundant. | |
19328 | 3) Make more callers use the checked asCell and asObject | |
19329 | casting functions rather than unchecked casts. | |
19330 | 4) Removed some GC-related functions because these operations are | |
19331 | no longer things that code other than the core GC code needs | |
19332 | to do directly. Fixed callers that were calling them. | |
19333 | ||
19334 | * bytecode/CodeBlock.cpp: | |
19335 | (JSC::CodeBlock::markAggregate): Removed unneeded check of the mark | |
19336 | bit before calling MarkStack::append. | |
19337 | ||
19338 | * interpreter/Register.h: Removed unneeded marked and markChildren | |
19339 | functions. | |
19340 | ||
19341 | * jit/JITStubs.cpp: | |
19342 | (op_eq): Removed unneeded assertions, instead using checked casting | |
19343 | functions such as asObject. | |
19344 | ||
19345 | * runtime/ArgList.h: Added now-needed forward declaration of MarkStack. | |
19346 | ||
19347 | * runtime/GetterSetter.cpp: | |
19348 | (JSC::GetterSetter::markChildren): Remmoved unneeded check of the mark bit. | |
19349 | ||
19350 | * runtime/GlobalEvalFunction.h: | |
19351 | (JSC::GlobalEvalFunction::createStructure): Added. Fixes a bug where the | |
19352 | HasDefaultMark bit was set. | |
19353 | ||
19354 | * runtime/JSCell.cpp: | |
19355 | (JSC::JSCell::getObject): Use asObject to avoid a direct static_cast. | |
19356 | ||
19357 | * runtime/JSObject.h: | |
19358 | (JSC::asObject): Added an overload for JSCell* and changed the JSValue | |
19359 | version to call it. | |
19360 | (JSC::JSValue::get): Use asObject to avoid a direct static_cast. | |
19361 | ||
19362 | * runtime/JSWrapperObject.h: Made markChildren private. | |
19363 | (JSC::JSWrapperObject::createStructure): Added. Fixes a bug where the | |
19364 | HasDefaultMark bit was set. Later we may want to optimize this for | |
19365 | wrapper types that never have cells in their internal values, but there | |
19366 | is no measured performance regression in SunSpider or V8 doing this | |
19367 | all the time. | |
19368 | ||
19369 | * runtime/MarkStack.cpp: Tweaked formatting. | |
19370 | ||
19371 | 2009-09-04 Kevin Ollivier <kevino@theolliviers.com> | |
19372 | ||
19373 | wx build fix. Switch USE_ defines over to the compiler so that they can be | |
19374 | checked by files not including config.h (like WebCorePrefix.h). | |
19375 | ||
19376 | * wtf/Platform.h: | |
19377 | ||
19378 | 2009-09-03 Yong Li <yong.li@torchmobile.com> | |
19379 | ||
19380 | Reviewed by David Levin. | |
19381 | ||
19382 | Remove unnecessary dependency on unistd.h | |
19383 | https://bugs.webkit.org/show_bug.cgi?id=28962 | |
19384 | ||
19385 | * runtime/Completion.cpp: | |
19386 | ||
19387 | 2009-09-03 Fumitoshi Ukai <ukai@chromium.org> | |
19388 | ||
19389 | Reviewed by Eric Seidel. | |
19390 | ||
19391 | Add strnstr for Linux and Windows in StringExtras.h | |
19392 | https://bugs.webkit.org/show_bug.cgi?id=28901 | |
19393 | ||
19394 | * wtf/StringExtras.h: | |
19395 | (strnstr): | |
19396 | ||
19397 | 2009-09-03 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
19398 | ||
19399 | Reviewed by Darin Adler. | |
19400 | ||
19401 | Allow custom memory allocation control for JavaScriptCore's HashEntry class | |
19402 | https://bugs.webkit.org/show_bug.cgi?id=27830 | |
19403 | ||
19404 | Inherits HashEntry class from FastAllocBase because it has been | |
19405 | instantiated by 'new' JavaScriptCore/runtime/Lookup.cpp:32. | |
19406 | ||
19407 | * runtime/Lookup.h: | |
19408 | ||
19409 | 2009-09-02 Gavin Barraclough <barraclough@apple.com> | |
19410 | ||
19411 | Should crash if JIT code buffer allocation fails. | |
19412 | ||
19413 | https://bugs.webkit.org/show_bug.cgi?id=28926 | |
19414 | <rdar://problem/7031922> | |
19415 | ||
19416 | * jit/ExecutableAllocatorPosix.cpp: | |
19417 | (JSC::ExecutablePool::systemAlloc): | |
19418 | * jit/ExecutableAllocatorWin.cpp: | |
19419 | (JSC::ExecutablePool::systemAlloc): | |
19420 | ||
19421 | 2009-09-02 Kevin Ollivier <kevino@theolliviers.com> | |
19422 | ||
19423 | waf build fixes for Windows/MSVC. | |
19424 | ||
19425 | * wscript: | |
19426 | ||
19427 | 2009-09-02 Kevin Ollivier <kevino@theolliviers.com> | |
19428 | ||
19429 | Build fix for building on Windows. | |
19430 | ||
19431 | * wtf/ThreadingPthreads.cpp: | |
19432 | ||
19433 | 2009-09-02 Norbert Leser <norbert.leser@nokia.com> | |
19434 | ||
19435 | Reviewed by Eric Seidel. | |
19436 | ||
19437 | Use fastMalloc when neither MMAP nor VIRTUALALLOC are enabled | |
19438 | ||
19439 | RegisterFile constructor currently throws #error when both | |
19440 | MMAP and VIRTUALALLOC conditions fail. | |
19441 | On any platform that does not provide these features | |
19442 | (for instance, Symbian), | |
19443 | the fallback should be regular malloc (or fastMalloc). | |
19444 | It is functionally equivalent in this case, even though it may | |
19445 | have certain drawbacks such as lack of dynamic pre-allocation. | |
19446 | ||
19447 | * interpreter/RegisterFile.cpp: | |
19448 | (JSC::RegisterFile::~RegisterFile): | |
19449 | * interpreter/RegisterFile.h: | |
19450 | (JSC::RegisterFile::RegisterFile): | |
19451 | ||
19452 | 2009-08-31 Robert Agoston <Agoston.Robert@stud.u-szeged.hu> | |
19453 | ||
19454 | Reviewed by Gavin Barraclough. | |
19455 | ||
19456 | Fixed typo. | |
19457 | https://bugs.webkit.org/show_bug.cgi?id=28691 | |
19458 | ||
19459 | * parser/Parser.h: | |
19460 | (JSC::Parser::parse): | |
19461 | ||
19462 | 2009-08-27 Oliver Hunt <oliver@apple.com> | |
19463 | ||
19464 | Reviewed by Maciej Stachowiak. | |
19465 | ||
19466 | JSON Stringifier does not follow ES5 spec for handling of Number, String and Boolean objects | |
19467 | https://bugs.webkit.org/show_bug.cgi?id=28797 | |
19468 | ||
19469 | Fixed unwrapBoxedPrimitive to do the right thing, which necessitated a couple of new exception | |
19470 | checks, and corrected the logic in gap to correctly convert Number and String objects. | |
19471 | ||
19472 | * runtime/JSONObject.cpp: | |
19473 | (JSC::unwrapBoxedPrimitive): | |
19474 | (JSC::gap): | |
19475 | (JSC::Stringifier::Stringifier): | |
19476 | (JSC::Stringifier::appendStringifiedValue): | |
19477 | ||
19478 | 2009-08-27 Oliver Hunt <oliver@apple.com> | |
19479 | ||
19480 | Reviewed by Adam Roben. | |
19481 | ||
19482 | JSON.stringify replacer array does not accept values that are not string primitives. | |
19483 | https://bugs.webkit.org/show_bug.cgi?id=28788 | |
19484 | ||
19485 | Update the JSON stringifier to initialise its replacer array according to the most | |
19486 | recent version of the spec. | |
19487 | ||
19488 | * runtime/Identifier.h: | |
19489 | (JSC::Identifier::from): | |
19490 | * runtime/JSONObject.cpp: | |
19491 | (JSC::Stringifier::Stringifier): | |
19492 | ||
19493 | 2009-08-27 Alexey Proskuryakov <ap@apple.com> | |
19494 | ||
19495 | Reviewed by Oliver Hunt. | |
19496 | ||
19497 | https://bugs.webkit.org/show_bug.cgi?id=28753 | |
19498 | <rdar://problem/7173448> Excessive number of threads (and a crash) | |
19499 | ||
19500 | * wtf/Threading.h: (WTF::atomicIncrement): Changed atomicIncrement to match decrement | |
19501 | and return the new value. Also added using directives for these functions, to match | |
19502 | te rest of WTF. | |
19503 | ||
19504 | 2009-08-27 Brent Fulgham <bfulgham@webkit.org> | |
19505 | ||
19506 | Reviewed by Adam Roben. | |
19507 | ||
19508 | Link the testapi against CFLite when building the WinCairo port. | |
19509 | ||
19510 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add new Release_CFLite | |
19511 | target. Update all targets to inherit from either the | |
19512 | JavaScriptCF.vsprops (Apple target) or the JavaScriptCFLite.vsprops | |
19513 | file (WinCairo target). | |
19514 | * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: Remove | |
19515 | input file CoreFoundation.lib. This is provided by either the | |
19516 | JavaScriptCF.vsprops or JavaScriptCFLite.vsprops file. | |
19517 | ||
19518 | 2009-08-27 Steve Falkenburg <sfalken@apple.com> | |
19519 | ||
19520 | Reviewed by Geoff Garen. | |
19521 | ||
19522 | Fix Windows-specific crash due to missing memory clearing call. | |
19523 | ||
19524 | * runtime/Collector.cpp: | |
19525 | (JSC::Heap::allocateBlock): | |
19526 | ||
19527 | 2009-08-27 Brent Fulgham <bfulgham@webkit.org> | |
19528 | ||
19529 | Build fix: JavaScriptCore_debug.def missing some exports. Apple | |
19530 | Windows build does not use this file, so it was not noticed previously. | |
19531 | ||
19532 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
19533 | ||
19534 | 2009-08-27 Gavin Barraclough <barraclough@apple.com> | |
19535 | ||
19536 | Reviewed by Oliver Hunt. | |
19537 | ||
19538 | x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates. | |
19539 | https://bugs.webkit.org/show_bug.cgi?id=28317 | |
19540 | ||
19541 | Missed one, fix part II. | |
19542 | ||
19543 | * assembler/MacroAssemblerX86Common.h: | |
19544 | (JSC::MacroAssemblerX86Common::move): | |
19545 | * assembler/X86Assembler.h: | |
19546 | (JSC::CAN_SIGN_EXTEND_8_32): | |
19547 | ||
19548 | 2009-08-27 Oliver Hunt <oliver@apple.com> | |
19549 | ||
19550 | Reviewed by Adam Roben. | |
19551 | ||
19552 | JSON.stringify replacer array does not accept values that are not string primitives. | |
19553 | https://bugs.webkit.org/show_bug.cgi?id=28788 | |
19554 | ||
19555 | Update the JSON stringifier to initialise its replacer array according to the most | |
19556 | recent version of the spec. | |
19557 | ||
19558 | * runtime/Identifier.h: | |
19559 | (JSC::Identifier::from): | |
19560 | * runtime/JSONObject.cpp: | |
19561 | (JSC::Stringifier::Stringifier): | |
19562 | ||
19563 | 2009-08-27 Oliver Hunt <oliver@apple.com> | |
19564 | ||
19565 | Reviewed by Alexey Proskuryakov. | |
19566 | ||
19567 | JSON parser accepts trailing comma in array literals | |
19568 | https://bugs.webkit.org/show_bug.cgi?id=28779 | |
19569 | ||
19570 | Update parser to correctly fail if there's a trailing comma. | |
19571 | ||
19572 | * runtime/LiteralParser.cpp: | |
19573 | (JSC::LiteralParser::parse): | |
19574 | ||
19575 | 2009-08-26 Oliver Hunt <oliver@apple.com> | |
19576 | ||
19577 | Reviewed by Gavin Barraclough. | |
19578 | ||
19579 | 'this' in JSON.parse reviver is the global object | |
19580 | https://bugs.webkit.org/show_bug.cgi?id=28752 | |
19581 | ||
19582 | This is a technically simple change, we merely update the code for calling | |
19583 | the reviver function to pass the correct this object. Doing so however | |
19584 | exposes the holder to arbitrary mutation by the reviver function so it is | |
19585 | necessary for us to now guard all property accesses against the possibility | |
19586 | of failure. | |
19587 | ||
19588 | * runtime/JSArray.h: | |
19589 | JSON needs to delete a property from the array, so we friend its | |
19590 | Walker class so that we can make a non-virtual call to the arrays | |
19591 | delete and getOwnPropertySlot methods. | |
19592 | * runtime/JSONObject.cpp: | |
19593 | (JSC::Walker::callReviver): | |
19594 | We need to pass the correct this object | |
19595 | (JSC::Walker::walk): | |
19596 | Update calls to callReviver, and update property logic logic | |
19597 | to correctly handle the holder being mutated by the reviver | |
19598 | function. | |
19599 | ||
19600 | 2009-08-26 Alice Liu <alice.liu@apple.com> | |
19601 | ||
19602 | Windows build fix: added some exported symbols | |
19603 | ||
19604 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
19605 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
19606 | ||
19607 | 2009-08-26 Geoffrey Garen <ggaren@apple.com> | |
19608 | ||
19609 | Windows build fix: Removed some exported symbols that no longer exist. | |
19610 | ||
19611 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
19612 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
19613 | ||
19614 | 2009-08-26 Gavin Barraclough <barraclough@apple.com> | |
19615 | ||
19616 | Reviewed by Olliejver Hunt. | |
19617 | ||
19618 | x86-64 GTK broken due to code offsets changing, pointers sometimes packed into immediates. | |
19619 | https://bugs.webkit.org/show_bug.cgi?id=28317 | |
19620 | ||
19621 | We rely on a slightly OS X specific behaviour, that x86-64 applications have a 4Gb zero page, | |
19622 | so pointers are never representable as a 32-bit integer, and always have to be represented by | |
19623 | a separate immediate load instruction, rather than within the immediate field of an arithmetic | |
19624 | or memory operation. | |
19625 | ||
19626 | We explicitly check for a couple of cases where a value might be representable in 32-bit, but | |
19627 | these probably never kick in on Mac OS, and only kick in to hose GTK. Deleting these does not | |
19628 | show a performance degradation on SunSpider. Remove. | |
19629 | ||
19630 | * assembler/MacroAssemblerX86_64.h: | |
19631 | (JSC::MacroAssemblerX86_64::storePtr): | |
19632 | (JSC::MacroAssemblerX86_64::branchPtr): | |
19633 | ||
19634 | 2009-08-26 Geoffrey Garen <ggaren@apple.com> | |
19635 | ||
19636 | Reviewed by Oliver Hunt. | |
19637 | ||
19638 | A bit of Collector refatoring. | |
19639 | ||
19640 | SunSpider says no change. v8 says 1.003x faster (1.02x faster on splay). | |
19641 | ||
19642 | * JavaScriptCore.exp: | |
19643 | ||
19644 | * runtime/JSCell.cpp: | |
19645 | (JSC::JSCell::toPrimitive): | |
19646 | (JSC::JSCell::getPrimitiveNumber): | |
19647 | (JSC::JSCell::toBoolean): | |
19648 | (JSC::JSCell::toNumber): | |
19649 | (JSC::JSCell::toString): | |
19650 | (JSC::JSCell::toObject): Removed pure virtual functions from | |
19651 | JSCell, so the collector can construct one. This allowed | |
19652 | me to remove a bunch of ASSERT_NOT_REACHED throughout the | |
19653 | code, too. | |
19654 | ||
19655 | * runtime/JSCell.h: | |
19656 | (JSC::JSCell::JSCell): ditto | |
19657 | (JSC::Heap::heap): Inlined this function because it's trivial. | |
19658 | ||
19659 | * JavaScriptCore.exp: | |
19660 | ||
19661 | * runtime/Collector.cpp: | |
19662 | (JSC::Heap::destroy): | |
19663 | (JSC::Heap::allocateBlock): | |
19664 | (JSC::Heap::freeBlock): | |
19665 | (JSC::Heap::freeBlocks): Renamed freeHeap to freeBlocks, since | |
19666 | it doesn't actually free the Heap object. | |
19667 | (JSC::Heap::heapAllocate): | |
19668 | (JSC::Heap::sweep): | |
19669 | * runtime/Collector.h: Refactored block allocation and destruction | |
19670 | into helper functions. | |
19671 | ||
19672 | * runtime/GetterSetter.cpp: | |
19673 | * runtime/JSAPIValueWrapper.cpp: | |
19674 | * runtime/JSPropertyNameIterator.cpp: Removed dummy implementations | |
19675 | of pure virtual functions. (See above.) | |
19676 | ||
19677 | === End re-roll-in of r47738:47740 with Windows crash fixed === | |
19678 | ||
19679 | 2009-08-26 Geoffrey Garen <ggaren@apple.com> | |
19680 | ||
19681 | Build fix: start out with a 32-bit value to avoid a shortening warning. | |
19682 | ||
19683 | * runtime/Collector.cpp: | |
19684 | (JSC::Heap::sweep): | |
19685 | ||
19686 | 2009-08-24 Geoffrey Garen <ggaren@apple.com> | |
19687 | ||
19688 | Reviewed by Oliver Hunt. | |
19689 | ||
19690 | Substantially reduced VM thrash in the GC heap. | |
19691 | ||
19692 | 1.08x faster on v8 (1.60x faster on v8-splay). | |
19693 | ||
19694 | 1.40x faster on bench-alloc-nonretained. | |
19695 | ||
19696 | 1.90x faster on bench-alloc-retained. | |
19697 | ||
19698 | SunSpider says no change. | |
19699 | ||
19700 | * runtime/Collector.cpp: | |
19701 | (JSC::Heap::heapAllocate): Fixed a long-standing bug: update a few local | |
19702 | variables unconditionally after calling collect(), since they may be used | |
19703 | even if we don't "goto scan". (In the bug I saw, usedBlocks got out of | |
19704 | sync with heap.usedBlocks). | |
19705 | (JSC::Heap::sweep): Keep enough free heap space to accomodate | |
19706 | the number of objects we'll allocate before the next GC, plus 25%, for | |
19707 | good measure. | |
19708 | * runtime/Collector.h: Bumped the block size to 256k. This seems to give | |
19709 | the best cache performance, and it prevents us from initiating lots of | |
19710 | VM traffic to recover very small chunks of memory. | |
19711 | ||
19712 | === Begin re-roll-in of r47738:47740 with Windows crash fixed === | |
19713 | ||
19714 | 2009-08-25 Drew Wilson <atwilson@google.com> | |
19715 | ||
19716 | Reviewed by David Levin. | |
19717 | ||
19718 | postMessage() spec now supports sending arrays of ports | |
19719 | https://bugs.webkit.org/show_bug.cgi?id=26902 | |
19720 | ||
19721 | Added OwnPtr to VectorTraits so we can store OwnPtrs in Vectors. | |
19722 | ||
19723 | * wtf/VectorTraits.h: | |
19724 | ||
19725 | 2009-08-26 Xan Lopez <xlopez@igalia.com> | |
19726 | ||
19727 | Rubber-stamped by Gustavo Noronha. | |
19728 | ||
19729 | Remove duplicated files from file list. | |
19730 | ||
19731 | * GNUmakefile.am: | |
19732 | ||
19733 | 2009-08-26 Oliver Hunt <oliver@apple.com> | |
19734 | ||
19735 | Reviewed by NOBODY (Build fix). | |
19736 | ||
19737 | More export fixes. | |
19738 | ||
19739 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
19740 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
19741 | ||
19742 | 2009-08-26 Oliver Hunt <oliver@apple.com> | |
19743 | ||
19744 | Reviewed by NOBODY (Build fix). | |
19745 | ||
19746 | Hopefully fix all the exports from JSC on windows | |
19747 | ||
19748 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
19749 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
19750 | ||
19751 | 2009-08-26 Oliver Hunt <oliver@apple.com> | |
19752 | ||
19753 | Reviewed by NOBODY (Build fixes). | |
19754 | ||
19755 | Forgot I added files to JavaScriptCore. | |
19756 | ||
19757 | * GNUmakefile.am: | |
19758 | * JavaScriptCore.gypi: | |
19759 | * JavaScriptCore.pri: | |
19760 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
19761 | * JavaScriptCoreSources.bkl: | |
19762 | ||
19763 | 2009-08-25 Oliver Hunt <oliver@apple.com> | |
19764 | ||
19765 | Reviewed by Gavin Barraclough. | |
19766 | ||
19767 | [ES5] Implement getOwnPropertyDescriptor | |
19768 | https://bugs.webkit.org/show_bug.cgi?id=28724 | |
19769 | ||
19770 | Implement the core runtime support for getOwnPropertyDescriptor. | |
19771 | This adds a virtual getOwnPropertyDescriptor method to every class | |
19772 | that implements getOwnPropertySlot that shadows the behaviour of | |
19773 | getOwnPropertySlot. The alternative would be to make getOwnPropertySlot | |
19774 | (or PropertySlots in general) provide property attribute information, | |
19775 | but quick testing showed this to be a regression. | |
19776 | ||
19777 | * JavaScriptCore.exp: | |
19778 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
19779 | * runtime/Arguments.cpp: | |
19780 | (JSC::Arguments::getOwnPropertyDescriptor): | |
19781 | * runtime/Arguments.h: | |
19782 | * runtime/ArrayPrototype.cpp: | |
19783 | (JSC::ArrayPrototype::getOwnPropertyDescriptor): | |
19784 | * runtime/ArrayPrototype.h: | |
19785 | * runtime/CommonIdentifiers.h: | |
19786 | * runtime/DatePrototype.cpp: | |
19787 | (JSC::DatePrototype::getOwnPropertyDescriptor): | |
19788 | * runtime/DatePrototype.h: | |
19789 | * runtime/JSArray.cpp: | |
19790 | (JSC::JSArray::getOwnPropertyDescriptor): | |
19791 | * runtime/JSArray.h: | |
19792 | * runtime/JSByteArray.cpp: | |
19793 | (JSC::JSByteArray::getOwnPropertyDescriptor): | |
19794 | * runtime/JSByteArray.h: | |
19795 | * runtime/JSFunction.cpp: | |
19796 | (JSC::JSFunction::getOwnPropertyDescriptor): | |
19797 | * runtime/JSFunction.h: | |
19798 | * runtime/JSGlobalObject.h: | |
19799 | (JSC::JSGlobalObject::getOwnPropertyDescriptor): | |
19800 | * runtime/JSNotAnObject.cpp: | |
19801 | (JSC::JSNotAnObject::getOwnPropertyDescriptor): | |
19802 | * runtime/JSNotAnObject.h: | |
19803 | * runtime/JSONObject.cpp: | |
19804 | (JSC::JSONObject::getOwnPropertySlot): | |
19805 | (JSC::JSONObject::getOwnPropertyDescriptor): | |
19806 | * runtime/JSONObject.h: | |
19807 | * runtime/JSObject.cpp: | |
19808 | (JSC::JSObject::getOwnPropertyDescriptor): | |
19809 | (JSC::JSObject::getPropertyDescriptor): | |
19810 | * runtime/JSObject.h: | |
19811 | * runtime/JSString.cpp: | |
19812 | (JSC::JSString::getStringPropertyDescriptor): | |
19813 | (JSC::JSString::getOwnPropertyDescriptor): | |
19814 | * runtime/JSString.h: | |
19815 | * runtime/JSVariableObject.cpp: | |
19816 | (JSC::JSVariableObject::symbolTableGet): | |
19817 | * runtime/JSVariableObject.h: | |
19818 | * runtime/Lookup.h: | |
19819 | (JSC::getStaticPropertyDescriptor): | |
19820 | (JSC::getStaticFunctionDescriptor): | |
19821 | (JSC::getStaticValueDescriptor): | |
19822 | Add property descriptor equivalents of the lookup | |
19823 | table access functions | |
19824 | ||
19825 | * runtime/MathObject.cpp: | |
19826 | (JSC::MathObject::getOwnPropertySlot): | |
19827 | (JSC::MathObject::getOwnPropertyDescriptor): | |
19828 | * runtime/MathObject.h: | |
19829 | * runtime/NumberConstructor.cpp: | |
19830 | (JSC::NumberConstructor::getOwnPropertyDescriptor): | |
19831 | * runtime/NumberConstructor.h: | |
19832 | * runtime/ObjectConstructor.cpp: | |
19833 | (JSC::ObjectConstructor::ObjectConstructor): | |
19834 | (JSC::objectConstructorGetOwnPropertyDescriptor): | |
19835 | * runtime/PropertyDescriptor.cpp: Added. | |
19836 | (JSC::PropertyDescriptor::writable): | |
19837 | (JSC::PropertyDescriptor::enumerable): | |
19838 | (JSC::PropertyDescriptor::configurable): | |
19839 | (JSC::PropertyDescriptor::hasAccessors): | |
19840 | (JSC::PropertyDescriptor::setUndefined): | |
19841 | (JSC::PropertyDescriptor::getter): | |
19842 | (JSC::PropertyDescriptor::setter): | |
19843 | (JSC::PropertyDescriptor::setDescriptor): | |
19844 | (JSC::PropertyDescriptor::setAccessorDescriptor): | |
19845 | * runtime/PropertyDescriptor.h: Added. | |
19846 | (JSC::PropertyDescriptor::PropertyDescriptor): | |
19847 | (JSC::PropertyDescriptor::attributes): | |
19848 | (JSC::PropertyDescriptor::isValid): | |
19849 | (JSC::PropertyDescriptor::value): | |
19850 | * runtime/RegExpConstructor.cpp: | |
19851 | (JSC::RegExpConstructor::getOwnPropertyDescriptor): | |
19852 | * runtime/RegExpConstructor.h: | |
19853 | * runtime/RegExpMatchesArray.h: | |
19854 | (JSC::RegExpMatchesArray::getOwnPropertyDescriptor): | |
19855 | * runtime/RegExpObject.cpp: | |
19856 | (JSC::RegExpObject::getOwnPropertyDescriptor): | |
19857 | * runtime/RegExpObject.h: | |
19858 | * runtime/StringObject.cpp: | |
19859 | (JSC::StringObject::getOwnPropertyDescriptor): | |
19860 | * runtime/StringObject.h: | |
19861 | * runtime/StringPrototype.cpp: | |
19862 | (JSC::StringPrototype::getOwnPropertyDescriptor): | |
19863 | * runtime/StringPrototype.h: | |
19864 | ||
19865 | 2009-08-24 Gavin Barraclough <barraclough@apple.com> | |
19866 | ||
19867 | Reviewed by Darin Adler. | |
19868 | ||
19869 | How many copies of the parameters do you need? | |
19870 | https://bugs.webkit.org/show_bug.cgi?id=28701 | |
19871 | ||
19872 | The function parameters in JSC get copied a lot - and unnecessarily so. | |
19873 | ||
19874 | Originally this happened due to duplicating FunctionBodyNodes on recompilation, | |
19875 | though the problem has been exacerbated by copying the parameters from the | |
19876 | original function body onto the executable, then back onto the real body that | |
19877 | will be generated (this happens on every function). And this is all made worse | |
19878 | since the data structures in question are a little ugly - C style arrays of C++ | |
19879 | objects containing ref counts, so they need a full copy-construct (rather than | |
19880 | a simple memcpy). | |
19881 | ||
19882 | This can all be greatly simplified by just punting the parameters off into | |
19883 | their own ref-counted object, and forgoing all the copying. | |
19884 | ||
19885 | ~no performance change, possible slight progression. | |
19886 | ||
19887 | * bytecompiler/BytecodeGenerator.cpp: | |
19888 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
19889 | * bytecompiler/BytecodeGenerator.h: | |
19890 | (JSC::BytecodeGenerator::makeFunction): | |
19891 | * parser/Nodes.cpp: | |
19892 | (JSC::FunctionParameters::FunctionParameters): | |
19893 | (JSC::FunctionBodyNode::FunctionBodyNode): | |
19894 | (JSC::FunctionBodyNode::finishParsing): | |
19895 | * parser/Nodes.h: | |
19896 | (JSC::FunctionBodyNode::parameters): | |
19897 | (JSC::FunctionBodyNode::parameterCount): | |
19898 | * runtime/Executable.cpp: | |
19899 | (JSC::FunctionExecutable::~FunctionExecutable): | |
19900 | (JSC::FunctionExecutable::compile): | |
19901 | (JSC::FunctionExecutable::reparseExceptionInfo): | |
19902 | (JSC::FunctionExecutable::fromGlobalCode): | |
19903 | (JSC::FunctionExecutable::paramString): | |
19904 | * runtime/Executable.h: | |
19905 | (JSC::FunctionExecutable::FunctionExecutable): | |
19906 | (JSC::FunctionExecutable::parameterCount): | |
19907 | ||
19908 | 2009-08-25 Brent Fulgham <bfulgham@webkit.org> | |
19909 | ||
19910 | Reviewed by NOBODY (Buildfix). | |
19911 | ||
19912 | * JavaScriptCore.vcproj/jsc/jsc.vcproj: Add Debug_CFLite target | |
19913 | that inherits from the debug_wincairo property sheet and therefore | |
19914 | links to the proper debug library. | |
19915 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: Add Debug_CFLite target | |
19916 | that inherits from the debug_wincairo property sheet and therefore | |
19917 | links to the proper debug library. | |
19918 | ||
19919 | 2009-08-25 Chris Marrin <cmarrin@apple.com> | |
19920 | ||
19921 | Reviewed by Simon Fraser. | |
19922 | ||
19923 | Export tryFastMalloc for Canvas3D work | |
19924 | https://bugs.webkit.org/show_bug.cgi?id=28018 | |
19925 | ||
19926 | * JavaScriptCore.exp: | |
19927 | ||
19928 | 2009-08-25 David Levin <levin@chromium.org> | |
19929 | ||
19930 | Reviewed by Adam Roben. | |
19931 | ||
19932 | PLATFORM(CFNETWORK) should be USE(CFNETWORK). | |
19933 | https://bugs.webkit.org/show_bug.cgi?id=28713 | |
19934 | ||
19935 | * wtf/Platform.h: Added a #define to catch this issue in the | |
19936 | future. The define would generate an error on gcc without the | |
19937 | space in the expansion, but Visual C++ needs the space to cause an error. | |
19938 | ||
19939 | 2009-08-24 Brent Fulgham <bfulgham@webkit.org> | |
19940 | ||
19941 | Reviewed by Steve Falkenburg. | |
19942 | ||
19943 | Revise CFLite Debug build to emit DLL's with _debug label. | |
19944 | https://bugs.webkit.org/show_bug.cgi?id=28695. | |
19945 | ||
19946 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Modify | |
19947 | Cairo debug build to inherit from new debug_cairo property sheet. | |
19948 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCFLite.vsprops: | |
19949 | Modify to look for debug CFLite when in debug build. | |
19950 | ||
19951 | 2009-08-24 Gavin Barraclough <barraclough@apple.com> | |
19952 | ||
19953 | Reviewed by Oliver Adler & Darin Hunt. | |
19954 | ||
19955 | https://bugs.webkit.org/show_bug.cgi?id=28691 | |
19956 | Do not retain ScopeNodes outside of parsing | |
19957 | ||
19958 | There is now no need for these to exist outside of parsing - their use in the runtime is replaced by Executable types. | |
19959 | ||
19960 | * bytecode/EvalCodeCache.h: | |
19961 | (JSC::EvalCodeCache::get): | |
19962 | * bytecompiler/BytecodeGenerator.cpp: | |
19963 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
19964 | (JSC::BytecodeGenerator::emitNewFunction): | |
19965 | (JSC::BytecodeGenerator::emitNewFunctionExpression): | |
19966 | * bytecompiler/BytecodeGenerator.h: | |
19967 | (JSC::BytecodeGenerator::makeFunction): | |
19968 | * debugger/Debugger.cpp: | |
19969 | (JSC::Debugger::recompileAllJSFunctions): | |
19970 | (JSC::evaluateInGlobalCallFrame): | |
19971 | * debugger/DebuggerCallFrame.cpp: | |
19972 | (JSC::DebuggerCallFrame::evaluate): | |
19973 | * interpreter/Interpreter.cpp: | |
19974 | (JSC::Interpreter::execute): | |
19975 | (JSC::Interpreter::prepareForRepeatCall): | |
19976 | (JSC::Interpreter::privateExecute): | |
19977 | * jit/JITStubs.cpp: | |
19978 | (JSC::DEFINE_STUB_FUNCTION): | |
19979 | * parser/Nodes.cpp: | |
19980 | (JSC::ScopeNodeData::ScopeNodeData): | |
19981 | (JSC::ProgramNode::create): | |
19982 | (JSC::EvalNode::create): | |
19983 | (JSC::FunctionBodyNode::create): | |
19984 | * parser/Nodes.h: | |
19985 | (JSC::ScopeNode::adoptData): | |
19986 | (JSC::FunctionBodyNode::parameterCount): | |
19987 | * parser/Parser.cpp: | |
19988 | * parser/Parser.h: | |
19989 | (JSC::Parser::arena): | |
19990 | (JSC::Parser::Parser): | |
19991 | (JSC::Parser::parse): | |
19992 | * runtime/ArrayPrototype.cpp: | |
19993 | (JSC::isNumericCompareFunction): | |
19994 | (JSC::arrayProtoFuncSort): | |
19995 | * runtime/Completion.cpp: | |
19996 | (JSC::checkSyntax): | |
19997 | (JSC::evaluate): | |
19998 | * runtime/Executable.cpp: | |
19999 | (JSC::FunctionExecutable::~FunctionExecutable): | |
20000 | (JSC::EvalExecutable::compile): | |
20001 | (JSC::ProgramExecutable::checkSyntax): | |
20002 | (JSC::ProgramExecutable::compile): | |
20003 | (JSC::FunctionExecutable::compile): | |
20004 | (JSC::EvalExecutable::generateJITCode): | |
20005 | (JSC::ProgramExecutable::generateJITCode): | |
20006 | (JSC::FunctionExecutable::generateJITCode): | |
20007 | (JSC::FunctionExecutable::reparseExceptionInfo): | |
20008 | (JSC::EvalExecutable::reparseExceptionInfo): | |
20009 | (JSC::FunctionExecutable::recompile): | |
20010 | (JSC::FunctionExecutable::fromGlobalCode): | |
20011 | (JSC::FunctionExecutable::copyParameters): | |
20012 | (JSC::FunctionExecutable::paramString): | |
20013 | * runtime/Executable.h: | |
20014 | (JSC::ScriptExecutable::ScriptExecutable): | |
20015 | (JSC::ScriptExecutable::sourceID): | |
20016 | (JSC::ScriptExecutable::sourceURL): | |
20017 | (JSC::ScriptExecutable::lineNo): | |
20018 | (JSC::ScriptExecutable::lastLine): | |
20019 | (JSC::ScriptExecutable::usesEval): | |
20020 | (JSC::ScriptExecutable::usesArguments): | |
20021 | (JSC::ScriptExecutable::needsActivation): | |
20022 | (JSC::ScriptExecutable::recordParse): | |
20023 | (JSC::EvalExecutable::bytecode): | |
20024 | (JSC::EvalExecutable::jitCode): | |
20025 | (JSC::ProgramExecutable::bytecode): | |
20026 | (JSC::ProgramExecutable::reparseExceptionInfo): | |
20027 | (JSC::ProgramExecutable::jitCode): | |
20028 | (JSC::FunctionExecutable::FunctionExecutable): | |
20029 | (JSC::FunctionExecutable::make): | |
20030 | (JSC::FunctionExecutable::bytecode): | |
20031 | (JSC::FunctionExecutable::isGenerated): | |
20032 | (JSC::FunctionExecutable::name): | |
20033 | (JSC::FunctionExecutable::parameterCount): | |
20034 | (JSC::FunctionExecutable::jitCode): | |
20035 | * runtime/FunctionConstructor.cpp: | |
20036 | (JSC::constructFunction): | |
20037 | * runtime/JSGlobalData.cpp: | |
20038 | (JSC::JSGlobalData::numericCompareFunction): | |
20039 | * runtime/JSGlobalObjectFunctions.cpp: | |
20040 | (JSC::globalFuncEval): | |
20041 | ||
20042 | 2009-08-24 Darin Adler <darin@apple.com> | |
20043 | ||
20044 | * runtime/ObjectPrototype.cpp: | |
20045 | (JSC::ObjectPrototype::put): Landed revised version I had tested but forgot | |
20046 | to land. Leave out the branch, since we don't need one. | |
20047 | ||
20048 | 2009-08-24 Darin Adler <darin@apple.com> | |
20049 | ||
20050 | Reviewed by Geoff Garen. | |
20051 | ||
20052 | Array index miss case creates a string every time | |
20053 | https://bugs.webkit.org/show_bug.cgi?id=28664 | |
20054 | ||
20055 | SunSpider test results I saw: | |
20056 | ||
20057 | 0.5% faster overall | |
20058 | 1% faster on crypto-aes | |
20059 | 20% faster on crypto-md5 | |
20060 | 13% faster on crypto-sha1 | |
20061 | ||
20062 | * runtime/ObjectPrototype.cpp: | |
20063 | (JSC::ObjectPrototype::ObjectPrototype): Initialize m_hasNoPropertiesWithUInt32Names | |
20064 | to true. | |
20065 | (JSC::ObjectPrototype::put): Clearly m_hasNoPropertiesWithUInt32Names if the new | |
20066 | property has a name that is the string form of a UInt32. | |
20067 | (JSC::ObjectPrototype::getOwnPropertySlot): Don't call JSObject::getOwnPropertySlot | |
20068 | if m_hasNoPropertiesWithUInt32Names is true, and it is highly likely to be true. | |
20069 | ||
20070 | * runtime/ObjectPrototype.h: Added declarations for the above. | |
20071 | ||
20072 | 2009-08-24 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
20073 | ||
20074 | Unreviewed. Fix a typo in my distcheck build fix. | |
20075 | ||
20076 | * GNUmakefile.am: | |
20077 | ||
20078 | 2009-08-23 Gustavo Noronha Silva <gns@gnome.org> | |
20079 | ||
20080 | Unreviewed build fix for make distcheck. | |
20081 | ||
20082 | * GNUmakefile.am: Added files required for the build. | |
20083 | ||
20084 | 2009-08-22 Maciej Stachowiak <mjs@apple.com> | |
20085 | ||
20086 | Reviewed by Mark Rowe. | |
20087 | ||
20088 | REGRESSION(r47639-r47660): Webkit crashes on launch on PowerPC | |
20089 | https://bugs.webkit.org/show_bug.cgi?id=28655 | |
20090 | ||
20091 | * runtime/JSFunction.cpp: | |
20092 | (JSC::JSFunction::JSFunction): Initialize properly with a VPtrHackExecutable. | |
20093 | * wtf/Platform.h: | |
20094 | ||
20095 | 2009-08-22 Darin Adler <darin@apple.com> | |
20096 | ||
20097 | Fix storage leak from syntax tree arena allocation patch. | |
20098 | ||
20099 | * parser/Nodes.h: CommaNode needs to inherit from ParserArenaDeletable | |
20100 | because it has a vector. | |
20101 | ||
20102 | 2009-08-21 Darin Adler <darin@apple.com> | |
20103 | ||
20104 | Fix Qt build. | |
20105 | ||
20106 | * parser/Nodes.cpp: | |
20107 | (JSC::ScopeNodeData::ScopeNodeData): Made non-inline again. | |
20108 | This is used outside Nodes.cpp so can't be inline unless | |
20109 | it is in the header. | |
20110 | ||
20111 | 2009-08-21 Darin Adler <darin@apple.com> | |
20112 | ||
20113 | Two loose ends from the last commit. | |
20114 | ||
20115 | * JavaScriptCore.xcodeproj/project.pbxproj: Made ParserArena.h | |
20116 | and create_hash_table project-internal instead of "private". | |
20117 | * runtime/Executable.h: Removed accidentally-added constructor. | |
20118 | ||
20119 | 2009-08-21 Darin Adler <darin@apple.com> | |
20120 | ||
20121 | Reviewed by Gavin Barraclough. | |
20122 | ||
20123 | Syntax tree nodes should use arena allocation | |
20124 | https://bugs.webkit.org/show_bug.cgi?id=25674 | |
20125 | ||
20126 | Use an actual arena now. 0.6% speedup on SunSpider. | |
20127 | ||
20128 | New and improved with 100% less leaking of the universe. | |
20129 | ||
20130 | * JavaScriptCore.exp: | |
20131 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
20132 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
20133 | Removed all exports involving the class FunctionBodyNode, which no | |
20134 | longer needs to be used outside JavaScriptCore. | |
20135 | ||
20136 | * JavaScriptCore.xcodeproj/project.pbxproj: Made Nodes.h and | |
20137 | Executable.h project-internal instead of "private". | |
20138 | ||
20139 | * bytecompiler/BytecodeGenerator.cpp: | |
20140 | (JSC::BytecodeGenerator::BytecodeGenerator): Updated since VarStack | |
20141 | contains const Identifier* now. | |
20142 | ||
20143 | * parser/Grammar.y: Made identifiers from the lexer be const | |
20144 | Identifier* and updated since VarStack contains const Identifier* now. | |
20145 | ||
20146 | * parser/Lexer.cpp: | |
20147 | (JSC::Lexer::setCode): Pass in ParserArena, used for identifiers. | |
20148 | (JSC::Lexer::makeIdentifier): Changed return type to const Identifier* | |
20149 | and changed to call ParserArena. | |
20150 | (JSC::Lexer::clear): Removed the code to manage m_identifiers and | |
20151 | added code to set m_arena to 0. | |
20152 | * parser/Lexer.h: Updated for changes above. | |
20153 | ||
20154 | * parser/NodeConstructors.h: | |
20155 | (JSC::ParserArenaFreeable::operator new): Added. Calls allocateFreeable | |
20156 | on the arena. | |
20157 | (JSC::ParserArenaDeletable::operator new): Changed to call the | |
20158 | allocateDeletable function on the arena instead of deleteWithArena. | |
20159 | (JSC::PropertyNode::PropertyNode): Added new constructor that makes | |
20160 | numeric identifiers. Some day we might want to optimize this for | |
20161 | integers so it doesn't create a string for each one. | |
20162 | (JSC::ContinueNode::ContinueNode): Initialize m_ident to nullIdentifier | |
20163 | since it's now a const Identifier& so it can't be left uninitialized. | |
20164 | (JSC::BreakNode::BreakNode): Ditto. | |
20165 | (JSC::CaseClauseNode::CaseClauseNode): Updated to use SourceElements* | |
20166 | to keep track of the statements rather than a separate statement vector. | |
20167 | (JSC::BlockNode::BlockNode): Ditto. | |
20168 | (JSC::ForInNode::ForInNode): Initialize m_ident to nullIdentifier. | |
20169 | ||
20170 | * parser/Nodes.cpp: Moved the comment explaining emitBytecode in here. | |
20171 | It seemed strangely out of place in the header. | |
20172 | (JSC::ThrowableExpressionData::emitThrowError): Added an overload for | |
20173 | UString as well as Identifier. | |
20174 | (JSC::SourceElements::singleStatement): Added. | |
20175 | (JSC::SourceElements::lastStatement): Added. | |
20176 | (JSC::RegExpNode::emitBytecode): Changed the throwError code to use | |
20177 | the substitution mechanism instead of doing a string append. | |
20178 | (JSC::SourceElements::emitBytecode): Added. Replaces the old | |
20179 | statementListEmitCode function, since we now keep the SourceElements | |
20180 | objects around. | |
20181 | (JSC::BlockNode::lastStatement): Added. | |
20182 | (JSC::BlockNode::emitBytecode): Changed to use emitBytecode instead of | |
20183 | statementListEmitCode. | |
20184 | (JSC::CaseClauseNode::emitBytecode): Added. | |
20185 | (JSC::CaseBlockNode::emitBytecodeForBlock): Changed to use emitBytecode | |
20186 | instead of statementListEmitCode. | |
20187 | (JSC::ScopeNodeData::ScopeNodeData): Changed to store the | |
20188 | SourceElements* instead of using releaseContentsIntoVector. | |
20189 | (JSC::ScopeNode::emitStatementsBytecode): Added. | |
20190 | (JSC::ScopeNode::singleStatement): Added. | |
20191 | (JSC::ProgramNode::emitBytecode): Call emitStatementsBytecode instead | |
20192 | of statementListEmitCode. | |
20193 | (JSC::EvalNode::emitBytecode): Ditto. | |
20194 | (JSC::FunctionBodyNode::emitBytecode): Call emitStatementsBytecode | |
20195 | insetad of statementListEmitCode and check for the return node using | |
20196 | the new functions. | |
20197 | ||
20198 | * parser/Nodes.h: Changed VarStack to store const Identifier* instead | |
20199 | of Identifier and rely on the arena to control lifetime. Added a new | |
20200 | ParserArenaFreeable class. Made ParserArenaDeletable inherit from | |
20201 | FastAllocBase instead of having its own operator new. Base the Node | |
20202 | class on ParserArenaFreeable. Changed the various Node classes | |
20203 | to use const Identifier& instead of Identifier to avoid the need to | |
20204 | call their destructors and allow them to function as "freeable" in the | |
20205 | arena. Removed extraneous JSC_FAST_CALL on definitions of inline functions. | |
20206 | Changed ElementNode, PropertyNode, ArgumentsNode, ParameterNode, | |
20207 | CaseClauseNode, ClauseListNode, and CaseBlockNode to use ParserArenaFreeable | |
20208 | as a base class since they do not descend from Node. Eliminated the | |
20209 | StatementVector type and instead have various classes use SourceElements* | |
20210 | instead of StatementVector. This prevents those classes from having to | |
20211 | use ParserArenaDeletable to make sure the vector destructor is called. | |
20212 | ||
20213 | * parser/Parser.cpp: | |
20214 | (JSC::Parser::parse): Pass the arena to the lexer. | |
20215 | ||
20216 | * parser/Parser.h: Added an include of ParserArena.h, which is no longer | |
20217 | included by Nodes.h. | |
20218 | (JSC::Parser::parseFunctionFromGlobalCode): Changed to use the | |
20219 | singleStatement function, since there is no longer any children function. | |
20220 | Removed some unneeded use of RefPtr. | |
20221 | ||
20222 | * parser/ParserArena.cpp: | |
20223 | (JSC::ParserArena::ParserArena): Added. Initializes the new members, | |
20224 | m_freeableMemory, m_freeablePoolEnd, and m_identifiers. | |
20225 | (JSC::ParserArena::freeablePool): Added. Computes the pool pointer, | |
20226 | since we store only the current pointer and the end of pool pointer. | |
20227 | (JSC::ParserArena::deallocateObjects): Added. Contains the common | |
20228 | memory-deallocation logic used by both the destructor and the | |
20229 | reset function. | |
20230 | (JSC::ParserArena::~ParserArena): Changed to call deallocateObjects. | |
20231 | (JSC::ParserArena::reset): Ditto. Also added code to zero out the | |
20232 | new structures, and switched to use clear() instead of shrink(0) since | |
20233 | we don't really reuse arenas. | |
20234 | (JSC::ParserArena::makeNumericIdentifier): Added. | |
20235 | (JSC::ParserArena::allocateFreeablePool): Added. Used when the pool | |
20236 | is empty. | |
20237 | (JSC::ParserArena::isEmpty): Added. No longer inline, which is fine | |
20238 | since this is used only for assertions at the moment. | |
20239 | (JSC::ParserArena::derefWithArena): Make non-inline. | |
20240 | ||
20241 | * parser/ParserArena.h: Added an actual arena of "freeable" objects, | |
20242 | ones that don't need destructors to be called. Also added a separate | |
20243 | IdentifierArena object, a segmented vector of identifiers that used | |
20244 | to be in the Lexer. | |
20245 | ||
20246 | * runtime/Executable.h: Moved the definition of the | |
20247 | FunctionExecutable::make function here. It can't go in JSFunction.h | |
20248 | since that header has to be used outside JavaScriptCore and so can't | |
20249 | include this, which includes Nodes.h. The function could be moved | |
20250 | elswhere if we don't want to include JSFunction.h in this header, but | |
20251 | for now this seems to be the best place. | |
20252 | ||
20253 | * runtime/JSFunction.h: Removed the include of Executable.h and | |
20254 | definition of the FunctionExecutable::make function. | |
20255 | ||
20256 | * wtf/FastMalloc.cpp: Fixed an incorrect comment. | |
20257 | ||
20258 | 2009-08-21 Mark Rowe <mrowe@apple.com> | |
20259 | ||
20260 | Fix the non-JIT build. | |
20261 | ||
20262 | * runtime/Executable.cpp: | |
20263 | * runtime/Executable.h: | |
20264 | ||
20265 | 2009-08-21 Gavin Barraclough <barraclough@apple.com> | |
20266 | ||
20267 | Speculative QuickTime build fix. | |
20268 | ||
20269 | * runtime/JSArray.cpp: | |
20270 | ||
20271 | 2009-08-21 Gavin Barraclough <barraclough@apple.com> | |
20272 | ||
20273 | Speculative QT build fix. | |
20274 | ||
20275 | * runtime/StringPrototype.cpp: | |
20276 | ||
20277 | 2009-08-21 Gavin Barraclough <barraclough@apple.com> | |
20278 | ||
20279 | Reviewed by Oliver Hunt. | |
20280 | ||
20281 | Restructure Executable types so that host functions do not hold a FunctionExecutable. | |
20282 | https://bugs.webkit.org/show_bug.cgi?id=28621 | |
20283 | ||
20284 | All JSFunction objects have a pointer to an Executable*. This is currently always a | |
20285 | FunctionExecutable, however this has a couple of drawbacks. Host functions do not | |
20286 | store a range of information that the FunctionExecutable provides (source, name, | |
20287 | CodeBlock & information presently held on the FunctionBodyNode). | |
20288 | ||
20289 | [ * nearly all... see below! ] | |
20290 | ||
20291 | Instead, make JSFunctions hold a pointer to an ExecutableBase, move fields specific | |
20292 | to JS sourced executable types (source, node) into a new subclass (ScriptExecutable), | |
20293 | and create a new NativeExecutable type. We now provide a new method in JSFunction | |
20294 | to access & downcast to FunctionExecutable, but in doing so we can make an early | |
20295 | check (with an ASSERT) to ensure that the Executable read from a function will only | |
20296 | be treated as a FunctionExecutable (and thus the JS sepcific fields will only be | |
20297 | accessed) if the JSFunction is not a host function. | |
20298 | ||
20299 | There is one JSFunction that currently does not have an Executable, which is the | |
20300 | object created to allow us to read out the vtable pointer. By making this change | |
20301 | we can also add a new Executable type fror this object (VPtrHackExecutable). | |
20302 | Since this means that really all JSFunctions have an Executable we no longer have | |
20303 | to null-check m_executable before us it - particularly in isHostFunction(). | |
20304 | ||
20305 | This patch removes CacheableEvalExecutable, since all subclasses of ExecutableBase | |
20306 | can now be ref-counted - since both JSFunction holds (and ref-counts) an ExecutableBase | |
20307 | that might be a FunctionExecutable or a NativeExecutable. This does now mean that all | |
20308 | ProgramExecutables and EvalExecutables (unnecessarily) provide an interface to be | |
20309 | ref-counted, however this seems less-bad than host functions unnecessarily providing | |
20310 | interface to access non-host specific information. | |
20311 | ||
20312 | The class hierarcy has changed from this: | |
20313 | ||
20314 | - ExecutableBase | |
20315 | - ProgramExecutable | |
20316 | - EvalExecutable | |
20317 | - CacheableEvalExecutable (also RefCounted by multiple-inheritance) | |
20318 | - FunctionExecutable (also RefCounted by multiple-inheritance, 'special' FunctionExecutable also used for host functions) | |
20319 | ||
20320 | To this: | |
20321 | ||
20322 | - RefCounted | |
20323 | - ExecutableBase | |
20324 | - NativeExecutable | |
20325 | - VPtrHackExecutable | |
20326 | - ScriptExecutable | |
20327 | - ProgramExecutable | |
20328 | - EvalExecutable | |
20329 | - FunctionExecutable | |
20330 | ||
20331 | This patch speeds up sunspidey by a couple of ms (presumably due to the changes to isHostFunction()). | |
20332 | ||
20333 | * bytecode/CodeBlock.cpp: | |
20334 | (JSC::CodeBlock::CodeBlock): | |
20335 | * bytecode/CodeBlock.h: | |
20336 | (JSC::CodeBlock::ownerExecutable): | |
20337 | (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
20338 | * bytecode/EvalCodeCache.h: | |
20339 | (JSC::EvalCodeCache::get): | |
20340 | * debugger/Debugger.cpp: | |
20341 | (JSC::Debugger::recompileAllJSFunctions): | |
20342 | * interpreter/CachedCall.h: | |
20343 | (JSC::CachedCall::CachedCall): | |
20344 | * interpreter/Interpreter.cpp: | |
20345 | (JSC::Interpreter::callEval): | |
20346 | (JSC::Interpreter::privateExecute): | |
20347 | * jit/JITStubs.cpp: | |
20348 | (JSC::DEFINE_STUB_FUNCTION): | |
20349 | * profiler/Profiler.cpp: | |
20350 | (JSC::createCallIdentifierFromFunctionImp): | |
20351 | * runtime/Arguments.h: | |
20352 | (JSC::Arguments::getArgumentsData): | |
20353 | (JSC::Arguments::Arguments): | |
20354 | * runtime/Executable.cpp: | |
20355 | (JSC::NativeExecutable::~NativeExecutable): | |
20356 | (JSC::VPtrHackExecutable::~VPtrHackExecutable): | |
20357 | * runtime/Executable.h: | |
20358 | (JSC::ExecutableBase::ExecutableBase): | |
20359 | (JSC::ExecutableBase::~ExecutableBase): | |
20360 | (JSC::ExecutableBase::isHostFunction): | |
20361 | (JSC::NativeExecutable::NativeExecutable): | |
20362 | (JSC::VPtrHackExecutable::VPtrHackExecutable): | |
20363 | (JSC::ScriptExecutable::ScriptExecutable): | |
20364 | (JSC::ScriptExecutable::source): | |
20365 | (JSC::ScriptExecutable::sourceID): | |
20366 | (JSC::ScriptExecutable::sourceURL): | |
20367 | (JSC::ScriptExecutable::lineNo): | |
20368 | (JSC::ScriptExecutable::lastLine): | |
20369 | (JSC::ScriptExecutable::usesEval): | |
20370 | (JSC::ScriptExecutable::usesArguments): | |
20371 | (JSC::ScriptExecutable::needsActivation): | |
20372 | (JSC::EvalExecutable::EvalExecutable): | |
20373 | (JSC::EvalExecutable::create): | |
20374 | (JSC::ProgramExecutable::ProgramExecutable): | |
20375 | (JSC::FunctionExecutable::FunctionExecutable): | |
20376 | * runtime/FunctionPrototype.cpp: | |
20377 | (JSC::functionProtoFuncToString): | |
20378 | * runtime/JSFunction.cpp: | |
20379 | (JSC::JSFunction::JSFunction): | |
20380 | (JSC::JSFunction::~JSFunction): | |
20381 | (JSC::JSFunction::markChildren): | |
20382 | (JSC::JSFunction::getCallData): | |
20383 | (JSC::JSFunction::call): | |
20384 | (JSC::JSFunction::lengthGetter): | |
20385 | (JSC::JSFunction::getConstructData): | |
20386 | (JSC::JSFunction::construct): | |
20387 | * runtime/JSFunction.h: | |
20388 | (JSC::JSFunction::executable): | |
20389 | (JSC::JSFunction::jsExecutable): | |
20390 | (JSC::JSFunction::isHostFunction): | |
20391 | ||
20392 | 2009-08-20 Oliver Hunt <oliver@apple.com> | |
20393 | ||
20394 | Reviewed by Maciej Stachowiak. | |
20395 | ||
20396 | Browser hangs on opening Web Inspector. | |
20397 | https://bugs.webkit.org/show_bug.cgi?id=28438 | |
20398 | ||
20399 | Code generation needs to be able to walk the entire scopechain in some | |
20400 | cases, however the symbol table used by activations was a member of the | |
20401 | codeblock. Following recompilation this may no longer exist, leading | |
20402 | to a crash or hang on lookup. | |
20403 | ||
20404 | We fix this by introducing a refcounted SymbolTable subclass, SharedSymbolTable, | |
20405 | for the CodeBlocks used by function code. This allows activations to | |
20406 | maintain ownership of a copy of the symbol table even after recompilation so | |
20407 | they can continue to work. | |
20408 | ||
20409 | * bytecode/CodeBlock.cpp: | |
20410 | (JSC::CodeBlock::CodeBlock): | |
20411 | * bytecode/CodeBlock.h: | |
20412 | (JSC::CodeBlock::symbolTable): | |
20413 | (JSC::CodeBlock::sharedSymbolTable): | |
20414 | (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
20415 | (JSC::FunctionCodeBlock::FunctionCodeBlock): | |
20416 | (JSC::FunctionCodeBlock::~FunctionCodeBlock): | |
20417 | * interpreter/Interpreter.cpp: | |
20418 | (JSC::Interpreter::retrieveArguments): | |
20419 | * runtime/Executable.cpp: | |
20420 | (JSC::EvalExecutable::generateBytecode): | |
20421 | (JSC::FunctionExecutable::generateBytecode): | |
20422 | (JSC::FunctionExecutable::reparseExceptionInfo): | |
20423 | (JSC::EvalExecutable::reparseExceptionInfo): | |
20424 | * runtime/JSActivation.h: | |
20425 | (JSC::JSActivation::JSActivationData::JSActivationData): | |
20426 | (JSC::JSActivation::JSActivationData::~JSActivationData): | |
20427 | * runtime/SymbolTable.h: | |
20428 | ||
20429 | 2009-08-20 Xan Lopez <xlopez@igalia.com> | |
20430 | ||
20431 | Add new file to GTK+ build. | |
20432 | ||
20433 | * GNUmakefile.am: | |
20434 | ||
20435 | 2009-08-20 Geoffrey Garen <ggaren@apple.com> | |
20436 | ||
20437 | Reviewed by Maciej Stachowiak. | |
20438 | ||
20439 | Added a number => string cache. | |
20440 | ||
20441 | 1.07x faster on v8 (1.7x faster on v8-splay). | |
20442 | 1.004x faster on SunSpider. | |
20443 | ||
20444 | * runtime/JSCell.h: Moved JSValue::toString to JSString.h. | |
20445 | * runtime/JSGlobalData.h: Holds the cache. | |
20446 | * runtime/JSNumberCell.cpp: | |
20447 | (JSC::JSNumberCell::toString): | |
20448 | (JSC::JSNumberCell::toThisString): Removed -0 special case. | |
20449 | UString handles this now, since too many clients were | |
20450 | special-casing it. | |
20451 | ||
20452 | * runtime/JSString.h: | |
20453 | (JSC::JSValue::toString): Use the cache when converting | |
20454 | an int or double to string. | |
20455 | ||
20456 | * runtime/Operations.h: | |
20457 | (JSC::concatenateStrings): Call toString to take advantage | |
20458 | of the cache. | |
20459 | ||
20460 | * runtime/SmallStrings.h: | |
20461 | (JSC::NumericStrings::add): | |
20462 | (JSC::NumericStrings::lookup): The cache. | |
20463 | ||
20464 | * runtime/UString.cpp: | |
20465 | (JSC::UString::from): Added -0 special case mentioned above. | |
20466 | Removed appendNumeric because it's mutually exclusive with the | |
20467 | cache. | |
20468 | ||
20469 | 2009-08-20 Oliver Hunt <oliver@apple.com> | |
20470 | ||
20471 | Reviewed by Gavin Barraclough. | |
20472 | ||
20473 | REGRESSION: fast/profiler/call.html is crashing occasionally | |
20474 | https://bugs.webkit.org/show_bug.cgi?id=28476 | |
20475 | ||
20476 | Using the codeblock for information about how many parameters and | |
20477 | locals a function has is unsafe in certain circumstances. The | |
20478 | basic scenario is all function code being cleared in response to | |
20479 | the debugger or profiler being enabled, and then an activation is | |
20480 | marked before its associated function is re-executed. | |
20481 | ||
20482 | To deal with this scenario we store the variable count of a function | |
20483 | directly in the FunctionExecutable, and then use that information. | |
20484 | ||
20485 | * runtime/Arguments.h: | |
20486 | (JSC::Arguments::getArgumentsData): | |
20487 | * runtime/Executable.cpp: | |
20488 | (JSC::FunctionExecutable::generateBytecode): | |
20489 | * runtime/Executable.h: | |
20490 | (JSC::FunctionExecutable::FunctionExecutable): | |
20491 | (JSC::FunctionExecutable::variableCount): | |
20492 | * runtime/JSActivation.cpp: | |
20493 | (JSC::JSActivation::markChildren): | |
20494 | ||
20495 | 2009-08-20 Gavin Barraclough <barraclough@apple.com> | |
20496 | ||
20497 | Reviewed by Oliver Hunt. | |
20498 | ||
20499 | Numbering of arguments to emitGetJITStubArg/emitPutJITStubArg incorrect | |
20500 | <bug lost in the great bug disasteroony of 08/20/09!> | |
20501 | ||
20502 | The argumentNumber argument to emitGetJITStubArg/emitPutJITStubArg should match | |
20503 | the argument number used within the stub functions in JITStubs.cpp, but it doesn't. | |
20504 | ||
20505 | Firstly, all the numbers changed when we added a void* 'reserved' as the first slot | |
20506 | (rather than leaving argument 0 unused), and secondly in 32_64 builds the index to | |
20507 | peek/poke needs to be multiplies by 2 (since the argument to peek/poke is a number | |
20508 | of machine words, and on 32_64 build the argument slots to stub functions are two | |
20509 | words wide). | |
20510 | ||
20511 | * jit/JIT.h: | |
20512 | * jit/JITCall.cpp: | |
20513 | (JSC::JIT::compileOpCallSetupArgs): | |
20514 | (JSC::JIT::compileOpConstructSetupArgs): | |
20515 | (JSC::JIT::compileOpCallVarargsSetupArgs): | |
20516 | (JSC::JIT::compileOpCall): | |
20517 | * jit/JITInlineMethods.h: | |
20518 | (JSC::JIT::emitPutJITStubArg): | |
20519 | (JSC::JIT::emitPutJITStubArgConstant): | |
20520 | (JSC::JIT::emitGetJITStubArg): | |
20521 | (JSC::JIT::emitPutJITStubArgFromVirtualRegister): | |
20522 | * jit/JITOpcodes.cpp: | |
20523 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
20524 | * jit/JITPropertyAccess.cpp: | |
20525 | (JSC::JIT::privateCompilePutByIdTransition): | |
20526 | ||
20527 | 2009-08-20 Oliver Hunt <oliver@apple.com> | |
20528 | ||
20529 | Reviewed by Geoff Garen. | |
20530 | ||
20531 | REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest | |
20532 | https://bugs.webkit.org/show_bug.cgi?id=28332 | |
20533 | ||
20534 | Follow up style fixes that were missed in review. | |
20535 | ||
20536 | * runtime/Structure.cpp: | |
20537 | (JSC::Structure::hasTransition): | |
20538 | * runtime/Structure.h: | |
20539 | (JSC::Structure::get): | |
20540 | (JSC::StructureTransitionTable::contains): | |
20541 | * runtime/StructureTransitionTable.h: | |
20542 | (JSC::StructureTransitionTable::add): | |
20543 | ||
20544 | 2009-08-20 Oliver Hunt <oliver@apple.com> | |
20545 | ||
20546 | Add new exports to windows jsc build | |
20547 | ||
20548 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
20549 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
20550 | ||
20551 | 2009-08-20 Oliver Hunt <oliver@apple.com> | |
20552 | ||
20553 | Reviewed by Gavin Barraclough. | |
20554 | ||
20555 | REGRESSION: significant slowdown on Celtic Kane "AJAX declaration" subtest | |
20556 | https://bugs.webkit.org/show_bug.cgi?id=28332 | |
20557 | ||
20558 | The method check optimisation made transitions aware of the value being | |
20559 | assigned when a transition was assigning a function. This had the side | |
20560 | effect of making every assignment of a function expression result in a | |
20561 | new transition, and thus a new Structure. The net result of this is that | |
20562 | the common JS idiom of | |
20563 | ||
20564 | function MyObject() { | |
20565 | this.myFunction = function(...){...}; | |
20566 | } | |
20567 | new MyObject(); | |
20568 | ||
20569 | Will produce a unique structure on every iteration, meaning that all | |
20570 | caching is defeated and there is a significant amount of structure churn. | |
20571 | ||
20572 | The fix is to return the transition to its original form where it is | |
20573 | keyed off a property name + attributes tuple, but have each transition | |
20574 | support an optional transition on a specific value. | |
20575 | ||
20576 | * JavaScriptCore.exp: | |
20577 | * runtime/JSObject.h: | |
20578 | (JSC::JSObject::putDirectInternal): | |
20579 | * runtime/Structure.cpp: | |
20580 | (JSC::Structure::~Structure): | |
20581 | (JSC::Structure::addPropertyTransitionToExistingStructure): | |
20582 | (JSC::Structure::addPropertyTransition): | |
20583 | (JSC::Structure::hasTransition): | |
20584 | * runtime/Structure.h: | |
20585 | (JSC::Structure::transitionedFor): | |
20586 | (JSC::Structure::hasTransition): | |
20587 | (JSC::Structure::): | |
20588 | (JSC::StructureTransitionTable::contains): | |
20589 | (JSC::StructureTransitionTable::get): | |
20590 | * runtime/StructureTransitionTable.h: | |
20591 | (JSC::StructureTransitionTableHashTraits::emptyValue): | |
20592 | (JSC::StructureTransitionTable::hasTransition): | |
20593 | (JSC::StructureTransitionTable::remove): | |
20594 | (JSC::StructureTransitionTable::add): | |
20595 | ||
20596 | 2009-08-20 Gavin Barraclough <barraclough@apple.com> | |
20597 | ||
20598 | Reviewed by Oliver Hunt. | |
20599 | ||
20600 | Remove FunctionCodeBlock. | |
20601 | https://bugs.webkit.org/show_bug.cgi?id=28502 | |
20602 | ||
20603 | These only exist to allow JIT code to dereference properties off the | |
20604 | CodeBlock for any callee, regardless of whether it is a host function. | |
20605 | ||
20606 | Instead just use the FunctionExecutable. Copy the m_parameters field | |
20607 | from the CodeBlock into the Executable, and use this to distinguish | |
20608 | between host functions, functions that have been bytecompiled, and | |
20609 | functions that have not. | |
20610 | ||
20611 | m_parameters is moved to ExecutableBase rather than FunctionExecutable | |
20612 | so that (as a separate change) we can move make a separate class of | |
20613 | executable for host code, which is not devived from FunctionExecutable | |
20614 | (host code does not feature any of the properties that normal executable | |
20615 | do and will provide, such as source, attributes, and a parsed name). | |
20616 | ||
20617 | 1% win on v8 tests, 0.5% on sunspider. | |
20618 | ||
20619 | * bytecode/CodeBlock.cpp: | |
20620 | (JSC::CodeBlock::derefStructures): | |
20621 | (JSC::CodeBlock::refStructures): | |
20622 | (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): | |
20623 | (JSC::CodeBlock::handlerForBytecodeOffset): | |
20624 | (JSC::CodeBlock::lineNumberForBytecodeOffset): | |
20625 | (JSC::CodeBlock::expressionRangeForBytecodeOffset): | |
20626 | (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): | |
20627 | (JSC::CodeBlock::functionRegisterForBytecodeOffset): | |
20628 | (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): | |
20629 | (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): | |
20630 | * bytecode/CodeBlock.h: | |
20631 | (JSC::): | |
20632 | (JSC::CodeBlock::source): | |
20633 | (JSC::CodeBlock::sourceOffset): | |
20634 | (JSC::CodeBlock::evalCodeCache): | |
20635 | (JSC::CodeBlock::createRareDataIfNecessary): | |
20636 | ||
20637 | remove NativeCodeBlocks and the NativeCode code type. | |
20638 | ||
20639 | * jit/JIT.cpp: | |
20640 | (JSC::JIT::linkCall): | |
20641 | ||
20642 | Revert to previous behaviour (as currently still commented!) that Hhost functions have a null codeblock. | |
20643 | ||
20644 | * jit/JITCall.cpp: | |
20645 | (JSC::JIT::compileOpCallInitializeCallFrame): | |
20646 | (JSC::JIT::compileOpCallSetupArgs): | |
20647 | (JSC::JIT::compileOpCallVarargsSetupArgs): | |
20648 | (JSC::JIT::compileOpConstructSetupArgs): | |
20649 | (JSC::JIT::compileOpCallVarargs): | |
20650 | (JSC::JIT::compileOpCall): | |
20651 | (JSC::JIT::compileOpCallSlowCase): | |
20652 | ||
20653 | Bring the 32_64 & non-32_64 JITs into line with each other, callee in regT0. | |
20654 | ||
20655 | * jit/JITOpcodes.cpp: | |
20656 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
20657 | ||
20658 | Rewrite call trampolines to not use the CodeBlock. | |
20659 | ||
20660 | * jit/JITStubs.cpp: | |
20661 | (JSC::DEFINE_STUB_FUNCTION): | |
20662 | ||
20663 | Make call_JSFunction & call_arityCheck return the callee, don't expect to be passed the CodeBlock. | |
20664 | ||
20665 | * runtime/Executable.cpp: | |
20666 | (JSC::FunctionExecutable::generateBytecode): | |
20667 | (JSC::FunctionExecutable::recompile): | |
20668 | (JSC::FunctionExecutable::FunctionExecutable): | |
20669 | * runtime/Executable.h: | |
20670 | (JSC::ExecutableBase::): | |
20671 | (JSC::ExecutableBase::ExecutableBase): | |
20672 | (JSC::FunctionExecutable::isHostFunction): | |
20673 | ||
20674 | Add m_numParameters. | |
20675 | ||
20676 | * runtime/JSFunction.cpp: | |
20677 | (JSC::JSFunction::~JSFunction): | |
20678 | ||
20679 | Only call generatedBytecode() on JSFunctions non-host FunctionExecutables. | |
20680 | ||
20681 | 2009-08-20 Yongjun Zhang <yongjun.zhang@nokia.com> | |
20682 | ||
20683 | Reviewed by Eric Seidel. | |
20684 | ||
20685 | https://bugs.webkit.org/show_bug.cgi?id=28054 | |
20686 | ||
20687 | Use a helper function to work around winscw compiler forward declaration bug | |
20688 | regarding templated classes. | |
20689 | ||
20690 | Add parenthesis around (PassRefPtr::*UnspecifiedBoolType) to make winscw compiler | |
20691 | work with the default UnSpecifiedBoolType() operator, which removes the winscw | |
20692 | specific bool cast hack. | |
20693 | ||
20694 | * wtf/PassRefPtr.h: | |
20695 | (WTF::derefIfNotNull): | |
20696 | (WTF::PassRefPtr::~PassRefPtr): | |
20697 | ||
20698 | 2009-08-19 Yong Li <yong.li@torchmobile.com> | |
20699 | ||
20700 | Reviewed by Gavin Barraclough. | |
20701 | ||
20702 | Change namespace ARM to ARMRegisters | |
20703 | X86 to X86Registers to avoid conflict with macros | |
20704 | https://bugs.webkit.org/show_bug.cgi?id=28428 | |
20705 | ||
20706 | * assembler/ARMAssembler.cpp: | |
20707 | * assembler/ARMAssembler.h: | |
20708 | * assembler/ARMv7Assembler.h: | |
20709 | * assembler/MacroAssemblerARM.h: | |
20710 | * assembler/MacroAssemblerARMv7.h: | |
20711 | * assembler/MacroAssemblerX86Common.h: | |
20712 | * assembler/MacroAssemblerX86_64.h: | |
20713 | * assembler/X86Assembler.h: | |
20714 | * jit/JIT.h: | |
20715 | * jit/JITArithmetic.cpp: | |
20716 | * jit/JITInlineMethods.h: | |
20717 | * jit/JITOpcodes.cpp: | |
20718 | * wrec/WRECGenerator.cpp: | |
20719 | * wrec/WRECGenerator.h: | |
20720 | * yarr/RegexJIT.cpp: | |
20721 | ||
20722 | 2009-08-19 Oliver Hunt <oliver@apple.com> | |
20723 | ||
20724 | Reviewed by Gavin Barraclough. | |
20725 | ||
20726 | Devirtualise marking | |
20727 | https://bugs.webkit.org/show_bug.cgi?id=28294 | |
20728 | ||
20729 | We actually need to mark the value in a number object if we're using the | |
20730 | 32bit number representation. | |
20731 | ||
20732 | * runtime/NumberObject.h: | |
20733 | (JSC::NumberObject::createStructure): | |
20734 | ||
20735 | 2009-08-19 Gavin Barraclough <barraclough@apple.com> | |
20736 | ||
20737 | Reviewed by Darin Adler. | |
20738 | ||
20739 | We probably shouldn't be keeping the AST for eval nodes around forevar. | |
20740 | https://bugs.webkit.org/show_bug.cgi?id=28469 | |
20741 | ||
20742 | EvalNodes don't destroyData() (delete their parser data) since they need to hold onto | |
20743 | their varStack. Copy a list of variable onto EvalCodeBlock, and this can go away. | |
20744 | ||
20745 | * bytecode/CodeBlock.h: | |
20746 | (JSC::EvalCodeBlock::variable): | |
20747 | (JSC::EvalCodeBlock::numVariables): | |
20748 | (JSC::EvalCodeBlock::adoptVariables): | |
20749 | * bytecompiler/BytecodeGenerator.cpp: | |
20750 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
20751 | * interpreter/Interpreter.cpp: | |
20752 | (JSC::Interpreter::execute): | |
20753 | * parser/Nodes.h: | |
20754 | * runtime/Executable.cpp: | |
20755 | (JSC::EvalExecutable::generateBytecode): | |
20756 | * runtime/Executable.h: | |
20757 | ||
20758 | 2009-08-19 Jungshik Shin <jshin@chromium.org> | |
20759 | ||
20760 | Reviewed by Darin Adler. | |
20761 | ||
20762 | http://bugs.webkit.org/show_bug.cgi?id=28441 | |
20763 | ||
20764 | Fix a build issue with ICU 4.2 or later on Windows with Visual C++. | |
20765 | Instead of defining all isXXX and toupper/tolower as | |
20766 | WTF_Please_use_ASCIICType_instead_of_ctype_see_comment_in_ASCIICType_h, | |
20767 | #define them to be different by prepending 'WTF_...ASCIIType_h' with | |
20768 | the originial names like 'toupper_WTF_...ASCIIType_h'. | |
20769 | ||
20770 | * wtf/DisallowCType.h: | |
20771 | ||
20772 | 2009-08-18 Oliver Hunt <oliver@apple.com> | |
20773 | ||
20774 | Reviewed by Gavin Barraclough. | |
20775 | ||
20776 | Assigning a function to an object should always use the existing transition, even if the transition is not specialized | |
20777 | https://bugs.webkit.org/show_bug.cgi?id=28442 | |
20778 | ||
20779 | Check for an unspecialized transition as an alternative to always failing if specialisation does not match. | |
20780 | ||
20781 | * runtime/Structure.cpp: | |
20782 | (JSC::Structure::addPropertyTransitionToExistingStructure): | |
20783 | ||
20784 | 2009-08-18 Dirk Schulze <krit@webkit.org> | |
20785 | ||
20786 | Reviewed by Oliver Hunt. | |
20787 | ||
20788 | Added additional getter to ByteArray with an unsigned char as return. | |
20789 | ByteArray can take unsigned char directly now. | |
20790 | ||
20791 | * wtf/ByteArray.h: | |
20792 | (WTF::ByteArray::set): | |
20793 | (WTF::ByteArray::get): | |
20794 | ||
20795 | 2009-08-18 Peter Kasting <pkasting@google.com> | |
20796 | ||
20797 | Reviewed by Eric Seidel. | |
20798 | ||
20799 | https://bugs.webkit.org/show_bug.cgi?id=28415 | |
20800 | Set svn:eol-style CRLF on all .sln and .vcproj files that don't already | |
20801 | have it. | |
20802 | ||
20803 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: | |
20804 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: | |
20805 | ||
20806 | 2009-08-18 Xan Lopez <xlopez@igalia.com> | |
20807 | ||
20808 | Try to fix the GTK+ build. | |
20809 | ||
20810 | * GNUmakefile.am: | |
20811 | ||
20812 | 2009-08-17 Gavin Barraclough <barraclough@apple.com> | |
20813 | ||
20814 | Reviewed by Sam Weinig. | |
20815 | ||
20816 | No, silly runtime, AST nodes are not for you. | |
20817 | ||
20818 | We still use AST nodes (ScopeNodes, particularly FunctionBodyNodes) within | |
20819 | the runtime, which means that these nodes must be persisted outside of the | |
20820 | arena, contain both parser & runtime data, etc. This is all a bit of a mess. | |
20821 | ||
20822 | Move functionality into a new FunctionExecutable class. | |
20823 | ||
20824 | * API/JSCallbackFunction.cpp: | |
20825 | * API/JSObjectRef.cpp: | |
20826 | * JavaScriptCore.exp: | |
20827 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
20828 | * bytecode/CodeBlock.cpp: | |
20829 | (JSC::CodeBlock::CodeBlock): | |
20830 | (JSC::CodeBlock::markAggregate): | |
20831 | (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): | |
20832 | (JSC::CodeBlock::lineNumberForBytecodeOffset): | |
20833 | (JSC::CodeBlock::shrinkToFit): | |
20834 | * bytecode/CodeBlock.h: | |
20835 | (JSC::CodeBlock::getBytecodeIndex): | |
20836 | (JSC::CodeBlock::discardBytecode): | |
20837 | (JSC::CodeBlock::instructionCount): | |
20838 | (JSC::CodeBlock::getJITCode): | |
20839 | (JSC::CodeBlock::executablePool): | |
20840 | (JSC::CodeBlock::ownerExecutable): | |
20841 | (JSC::CodeBlock::extractExceptionInfo): | |
20842 | (JSC::CodeBlock::addFunctionDecl): | |
20843 | (JSC::CodeBlock::functionDecl): | |
20844 | (JSC::CodeBlock::numberOfFunctionDecls): | |
20845 | (JSC::CodeBlock::addFunctionExpr): | |
20846 | (JSC::CodeBlock::functionExpr): | |
20847 | (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
20848 | (JSC::ProgramCodeBlock::ProgramCodeBlock): | |
20849 | (JSC::EvalCodeBlock::EvalCodeBlock): | |
20850 | (JSC::FunctionCodeBlock::FunctionCodeBlock): | |
20851 | (JSC::NativeCodeBlock::NativeCodeBlock): | |
20852 | * bytecode/EvalCodeCache.h: | |
20853 | * bytecode/SamplingTool.cpp: | |
20854 | (JSC::SamplingTool::doRun): | |
20855 | * bytecompiler/BytecodeGenerator.cpp: | |
20856 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
20857 | (JSC::BytecodeGenerator::emitNewFunction): | |
20858 | (JSC::BytecodeGenerator::emitNewFunctionExpression): | |
20859 | * bytecompiler/BytecodeGenerator.h: | |
20860 | * debugger/Debugger.cpp: | |
20861 | (JSC::Debugger::recompileAllJSFunctions): | |
20862 | * interpreter/CachedCall.h: | |
20863 | (JSC::CachedCall::CachedCall): | |
20864 | * interpreter/CallFrameClosure.h: | |
20865 | * interpreter/Interpreter.cpp: | |
20866 | (JSC::Interpreter::unwindCallFrame): | |
20867 | (JSC::Interpreter::throwException): | |
20868 | (JSC::Interpreter::execute): | |
20869 | (JSC::Interpreter::prepareForRepeatCall): | |
20870 | (JSC::Interpreter::debug): | |
20871 | (JSC::Interpreter::privateExecute): | |
20872 | (JSC::Interpreter::retrieveLastCaller): | |
20873 | * interpreter/Interpreter.h: | |
20874 | * jit/JIT.cpp: | |
20875 | (JSC::JIT::privateCompile): | |
20876 | * jit/JIT.h: | |
20877 | (JSC::JIT::compile): | |
20878 | * jit/JITOpcodes.cpp: | |
20879 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
20880 | (JSC::JIT::emit_op_new_func): | |
20881 | (JSC::JIT::emit_op_new_func_exp): | |
20882 | * jit/JITStubs.cpp: | |
20883 | (JSC::DEFINE_STUB_FUNCTION): | |
20884 | * jit/JITStubs.h: | |
20885 | (JSC::): | |
20886 | * parser/Nodes.cpp: | |
20887 | (JSC::FunctionBodyNode::reparseDataIfNecessary): | |
20888 | * parser/Nodes.h: | |
20889 | (JSC::EvalNode::partialDestroyData): | |
20890 | * parser/Parser.h: | |
20891 | * profiler/ProfileGenerator.cpp: | |
20892 | * profiler/Profiler.cpp: | |
20893 | (JSC::Profiler::createCallIdentifier): | |
20894 | (JSC::createCallIdentifierFromFunctionImp): | |
20895 | * runtime/Arguments.h: | |
20896 | (JSC::Arguments::getArgumentsData): | |
20897 | (JSC::Arguments::Arguments): | |
20898 | (JSC::JSActivation::copyRegisters): | |
20899 | * runtime/ArrayPrototype.cpp: | |
20900 | (JSC::isNumericCompareFunction): | |
20901 | * runtime/CallData.h: | |
20902 | (JSC::): | |
20903 | * runtime/Collector.cpp: | |
20904 | (JSC::Heap::collect): | |
20905 | * runtime/ConstructData.h: | |
20906 | (JSC::): | |
20907 | * runtime/ExceptionHelpers.cpp: | |
20908 | (JSC::createUndefinedVariableError): | |
20909 | (JSC::createInvalidParamError): | |
20910 | (JSC::createNotAConstructorError): | |
20911 | (JSC::createNotAFunctionError): | |
20912 | (JSC::createNotAnObjectError): | |
20913 | * runtime/Executable.cpp: Added. | |
20914 | (JSC::EvalExecutable::generateBytecode): | |
20915 | (JSC::ProgramExecutable::generateBytecode): | |
20916 | (JSC::FunctionExecutable::generateBytecode): | |
20917 | (JSC::EvalExecutable::generateJITCode): | |
20918 | (JSC::ProgramExecutable::generateJITCode): | |
20919 | (JSC::FunctionExecutable::generateJITCode): | |
20920 | (JSC::FunctionExecutable::isHostFunction): | |
20921 | (JSC::FunctionExecutable::markAggregate): | |
20922 | (JSC::FunctionExecutable::reparseExceptionInfo): | |
20923 | (JSC::EvalExecutable::reparseExceptionInfo): | |
20924 | (JSC::FunctionExecutable::recompile): | |
20925 | (JSC::FunctionExecutable::FunctionExecutable): | |
20926 | * runtime/Executable.h: | |
20927 | (JSC::ExecutableBase::~ExecutableBase): | |
20928 | (JSC::ExecutableBase::ExecutableBase): | |
20929 | (JSC::ExecutableBase::source): | |
20930 | (JSC::ExecutableBase::sourceID): | |
20931 | (JSC::ExecutableBase::lastLine): | |
20932 | (JSC::ExecutableBase::usesEval): | |
20933 | (JSC::ExecutableBase::usesArguments): | |
20934 | (JSC::ExecutableBase::needsActivation): | |
20935 | (JSC::ExecutableBase::astNode): | |
20936 | (JSC::ExecutableBase::generatedJITCode): | |
20937 | (JSC::ExecutableBase::getExecutablePool): | |
20938 | (JSC::EvalExecutable::EvalExecutable): | |
20939 | (JSC::EvalExecutable::bytecode): | |
20940 | (JSC::EvalExecutable::varStack): | |
20941 | (JSC::EvalExecutable::evalNode): | |
20942 | (JSC::EvalExecutable::jitCode): | |
20943 | (JSC::ProgramExecutable::ProgramExecutable): | |
20944 | (JSC::ProgramExecutable::reparseExceptionInfo): | |
20945 | (JSC::ProgramExecutable::bytecode): | |
20946 | (JSC::ProgramExecutable::programNode): | |
20947 | (JSC::ProgramExecutable::jitCode): | |
20948 | (JSC::FunctionExecutable::FunctionExecutable): | |
20949 | (JSC::FunctionExecutable::name): | |
20950 | (JSC::FunctionExecutable::bytecode): | |
20951 | (JSC::FunctionExecutable::generatedBytecode): | |
20952 | (JSC::FunctionExecutable::usesEval): | |
20953 | (JSC::FunctionExecutable::usesArguments): | |
20954 | (JSC::FunctionExecutable::parameterCount): | |
20955 | (JSC::FunctionExecutable::paramString): | |
20956 | (JSC::FunctionExecutable::isGenerated): | |
20957 | (JSC::FunctionExecutable::body): | |
20958 | (JSC::FunctionExecutable::jitCode): | |
20959 | (JSC::FunctionExecutable::createNativeThunk): | |
20960 | * runtime/FunctionConstructor.cpp: | |
20961 | (JSC::constructFunction): | |
20962 | * runtime/FunctionPrototype.cpp: | |
20963 | (JSC::functionProtoFuncToString): | |
20964 | * runtime/JSActivation.cpp: | |
20965 | (JSC::JSActivation::JSActivation): | |
20966 | (JSC::JSActivation::markChildren): | |
20967 | (JSC::JSActivation::isDynamicScope): | |
20968 | (JSC::JSActivation::argumentsGetter): | |
20969 | * runtime/JSActivation.h: | |
20970 | (JSC::JSActivation::JSActivationData::JSActivationData): | |
20971 | * runtime/JSFunction.cpp: | |
20972 | (JSC::JSFunction::isHostFunction): | |
20973 | (JSC::JSFunction::JSFunction): | |
20974 | (JSC::JSFunction::~JSFunction): | |
20975 | (JSC::JSFunction::markChildren): | |
20976 | (JSC::JSFunction::getCallData): | |
20977 | (JSC::JSFunction::call): | |
20978 | (JSC::JSFunction::lengthGetter): | |
20979 | (JSC::JSFunction::getConstructData): | |
20980 | (JSC::JSFunction::construct): | |
20981 | * runtime/JSFunction.h: | |
20982 | (JSC::JSFunction::executable): | |
20983 | (JSC::FunctionExecutable::make): | |
20984 | * runtime/JSGlobalData.cpp: | |
20985 | (JSC::JSGlobalData::JSGlobalData): | |
20986 | (JSC::JSGlobalData::numericCompareFunction): | |
20987 | * runtime/JSGlobalData.h: | |
20988 | ||
20989 | 2009-08-17 Mark Rowe <mrowe@apple.com> | |
20990 | ||
20991 | Reviewed by Darin Adler. | |
20992 | ||
20993 | Fix 300,000+ leaks seen during the regression tests. | |
20994 | ||
20995 | EvalCodeCache::get was heap-allocating an EvalExecutable instance without adopting the initial reference. | |
20996 | While fixing this we noticed that EvalExecutable was a RefCounted type that was sometimes stack allocated. | |
20997 | To make this cleaner and to prevent clients from attempting to ref a stack-allocated instance, we move the | |
20998 | refcounting down to a new CacheableEvalExecutable class that derives from EvalExecutable. EvalCodeCache::get | |
20999 | now uses CacheableEvalExecutable::create and avoids the leak. | |
21000 | ||
21001 | * bytecode/EvalCodeCache.h: | |
21002 | (JSC::EvalCodeCache::get): | |
21003 | * interpreter/Interpreter.cpp: | |
21004 | (JSC::Interpreter::callEval): | |
21005 | * runtime/Executable.h: | |
21006 | (JSC::CacheableEvalExecutable::create): | |
21007 | (JSC::CacheableEvalExecutable::CacheableEvalExecutable): | |
21008 | ||
21009 | 2009-08-17 Oliver Hunt <oliver@apple.com> | |
21010 | ||
21011 | RS=Mark Rowe. | |
21012 | ||
21013 | REGRESSION (r47292): Prototype.js is broken by ES5 Arguments changes | |
21014 | https://bugs.webkit.org/show_bug.cgi?id=28341 | |
21015 | <rdar://problem/7145615> | |
21016 | ||
21017 | Reverting r47292. Alas Prototype.js breaks with Arguments inheriting | |
21018 | from Array as ES5 attempted. Prototype.js defines $A in terms of a | |
21019 | function it places on (among other global objects) the Array prototype, | |
21020 | thus breaking $A for arrays. | |
21021 | ||
21022 | * runtime/Arguments.h: | |
21023 | (JSC::Arguments::Arguments): | |
21024 | * runtime/JSGlobalObject.cpp: | |
21025 | (JSC::JSGlobalObject::reset): | |
21026 | (JSC::JSGlobalObject::markChildren): | |
21027 | * runtime/JSGlobalObject.h: | |
21028 | (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): | |
21029 | * runtime/ObjectPrototype.cpp: | |
21030 | (JSC::ObjectPrototype::ObjectPrototype): | |
21031 | * runtime/ObjectPrototype.h: | |
21032 | * tests/mozilla/ecma_3/Function/arguments-001.js: | |
21033 | ||
21034 | 2009-08-17 Peter Kasting <pkasting@google.com> | |
21035 | ||
21036 | Reviewed by Steve Falkenburg. | |
21037 | ||
21038 | https://bugs.webkit.org/show_bug.cgi?id=27323 | |
21039 | Only add Cygwin to the path when it isn't already there. This avoids | |
21040 | causing problems for people who purposefully have non-Cygwin versions of | |
21041 | executables like svn in front of the Cygwin ones in their paths. | |
21042 | ||
21043 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
21044 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: | |
21045 | * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
21046 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
21047 | * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
21048 | ||
21049 | 2009-08-17 Xan Lopez <xlopez@igalia.com> | |
21050 | ||
21051 | Reviewed by Mark Rowe. | |
21052 | ||
21053 | Fix build with FAST_MALLOC_MATCH_VALIDATION enabled. | |
21054 | ||
21055 | * wtf/FastMalloc.cpp: | |
21056 | (WTF::fastMalloc): | |
21057 | (WTF::fastCalloc): | |
21058 | (WTF::fastRealloc): | |
21059 | ||
21060 | 2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> | |
21061 | ||
21062 | Reviewed by Mark Rowe. | |
21063 | ||
21064 | Fix crash on ./ecma_2/RegExp/exec-002.js. | |
21065 | https://bugs.webkit.org/show_bug.cgi?id=28353 | |
21066 | ||
21067 | Change the order of freeParenthesesDisjunctionContext and | |
21068 | popParenthesesDisjunctionContext on all call sites as the pop | |
21069 | method is accessing backTrack->lastContext which is the context | |
21070 | that is about to be freed. | |
21071 | ||
21072 | * yarr/RegexInterpreter.cpp: | |
21073 | (JSC::Yarr::Interpreter::parenthesesDoBacktrack): | |
21074 | (JSC::Yarr::Interpreter::backtrackParentheses): | |
21075 | ||
21076 | 2009-08-16 Holger Hans Peter Freyther <zecke@selfish.org> | |
21077 | ||
21078 | Reviewed by Mark Rowe. | |
21079 | ||
21080 | https://bugs.webkit.org/show_bug.cgi?id=28352 | |
21081 | ||
21082 | Fix coding style violations. Use m_ for C++ class members. Remove | |
21083 | trailing whitespace on empty lines. | |
21084 | ||
21085 | * yarr/RegexInterpreter.cpp: | |
21086 | (JSC::Yarr::Interpreter::ParenthesesDisjunctionContext::ParenthesesDisjunctionContext): | |
21087 | (JSC::Yarr::Interpreter::tryConsumeCharacter): | |
21088 | (JSC::Yarr::Interpreter::tryConsumeBackReference): | |
21089 | (JSC::Yarr::Interpreter::parenthesesDoBacktrack): | |
21090 | (JSC::Yarr::Interpreter::backtrackParentheses): | |
21091 | (JSC::Yarr::ByteCompiler::ByteCompiler): | |
21092 | (JSC::Yarr::ByteCompiler::compile): | |
21093 | (JSC::Yarr::ByteCompiler::checkInput): | |
21094 | (JSC::Yarr::ByteCompiler::assertionBOL): | |
21095 | (JSC::Yarr::ByteCompiler::assertionEOL): | |
21096 | (JSC::Yarr::ByteCompiler::assertionWordBoundary): | |
21097 | (JSC::Yarr::ByteCompiler::atomPatternCharacter): | |
21098 | (JSC::Yarr::ByteCompiler::atomCharacterClass): | |
21099 | (JSC::Yarr::ByteCompiler::atomBackReference): | |
21100 | (JSC::Yarr::ByteCompiler::atomParenthesesSubpatternBegin): | |
21101 | (JSC::Yarr::ByteCompiler::atomParentheticalAssertionBegin): | |
21102 | (JSC::Yarr::ByteCompiler::popParenthesesStack): | |
21103 | (JSC::Yarr::ByteCompiler::closeAlternative): | |
21104 | (JSC::Yarr::ByteCompiler::closeBodyAlternative): | |
21105 | (JSC::Yarr::ByteCompiler::atomParenthesesEnd): | |
21106 | (JSC::Yarr::ByteCompiler::regexBegin): | |
21107 | (JSC::Yarr::ByteCompiler::alterantiveBodyDisjunction): | |
21108 | (JSC::Yarr::ByteCompiler::alterantiveDisjunction): | |
21109 | (JSC::Yarr::ByteCompiler::emitDisjunction): | |
21110 | ||
21111 | 2009-08-15 Mark Rowe <mrowe@apple.com> | |
21112 | ||
21113 | Fix the build with JIT disabled. | |
21114 | ||
21115 | * runtime/Arguments.h: Only compile the jitCode method when the JIT is enabled. | |
21116 | * runtime/Executable.h: Include PrototypeFunction.h so the compiler knows what | |
21117 | NativeFunctionWrapper is when the JIT is disabled. | |
21118 | ||
21119 | 2009-08-15 Adam Bergkvist <adam.bergkvist@ericsson.com> | |
21120 | ||
21121 | Reviewed by Sam Weinig. | |
21122 | ||
21123 | Added ENABLE_EVENTSOURCE flag. | |
21124 | https://bugs.webkit.org/show_bug.cgi?id=14997 | |
21125 | ||
21126 | * Configurations/FeatureDefines.xcconfig: | |
21127 | ||
21128 | 2009-08-14 Gavin Barraclough <barraclough@apple.com> | |
21129 | ||
21130 | * parser/Parser.h: | |
21131 | (JSC::EvalExecutable::parse): | |
21132 | (JSC::ProgramExecutable::parse): | |
21133 | * runtime/Executable.h: | |
21134 | ||
21135 | 2009-08-14 Gavin Barraclough <barraclough@apple.com> | |
21136 | ||
21137 | Reviewed by Oliver Hunt. | |
21138 | ||
21139 | Remove AST nodes from use within the Runtime (outside of parsing), stage 1 | |
21140 | https://bugs.webkit.org/show_bug.cgi?id=28330 | |
21141 | ||
21142 | Remove the EvalNode and ProgramNode from use in the runtime. They still exist | |
21143 | after this patch, but are hidden behind EvalExecutable and FunctionExecutable, | |
21144 | and are also still reachable behind CodeBlock::m_ownerNode. | |
21145 | ||
21146 | The next step will be to beat back FunctionBodyNode in the same fashion. | |
21147 | Then remove the usage via CodeBlock, then only construct these nodes only on | |
21148 | demand during bytecode generation. | |
21149 | ||
21150 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
21151 | * bytecode/CodeBlock.h: | |
21152 | (JSC::GlobalCodeBlock::GlobalCodeBlock): | |
21153 | (JSC::GlobalCodeBlock::~GlobalCodeBlock): | |
21154 | (JSC::ProgramCodeBlock::ProgramCodeBlock): | |
21155 | (JSC::EvalCodeBlock::EvalCodeBlock): | |
21156 | (JSC::FunctionCodeBlock::FunctionCodeBlock): | |
21157 | (JSC::NativeCodeBlock::NativeCodeBlock): | |
21158 | * bytecode/EvalCodeCache.h: | |
21159 | (JSC::EvalCodeCache::get): | |
21160 | * debugger/Debugger.cpp: | |
21161 | (JSC::evaluateInGlobalCallFrame): | |
21162 | * debugger/DebuggerCallFrame.cpp: | |
21163 | (JSC::DebuggerCallFrame::evaluate): | |
21164 | * interpreter/Interpreter.cpp: | |
21165 | (JSC::Interpreter::callEval): | |
21166 | (JSC::Interpreter::execute): | |
21167 | * interpreter/Interpreter.h: | |
21168 | * parser/Nodes.cpp: | |
21169 | (JSC::FunctionBodyNode::createNativeThunk): | |
21170 | (JSC::FunctionBodyNode::generateBytecode): | |
21171 | (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): | |
21172 | * parser/Parser.h: | |
21173 | (JSC::Parser::parse): | |
21174 | (JSC::Parser::reparse): | |
21175 | (JSC::Parser::parseFunctionFromGlobalCode): | |
21176 | (JSC::::parse): | |
21177 | * runtime/Completion.cpp: | |
21178 | (JSC::checkSyntax): | |
21179 | (JSC::evaluate): | |
21180 | * runtime/Error.cpp: | |
21181 | (JSC::throwError): | |
21182 | * runtime/Error.h: | |
21183 | * runtime/Executable.h: Added. | |
21184 | (JSC::TemplateExecutable::TemplateExecutable): | |
21185 | (JSC::TemplateExecutable::markAggregate): | |
21186 | (JSC::TemplateExecutable::sourceURL): | |
21187 | (JSC::TemplateExecutable::lineNo): | |
21188 | (JSC::TemplateExecutable::bytecode): | |
21189 | (JSC::TemplateExecutable::jitCode): | |
21190 | (JSC::EvalExecutable::EvalExecutable): | |
21191 | (JSC::ProgramExecutable::ProgramExecutable): | |
21192 | * runtime/FunctionConstructor.cpp: | |
21193 | (JSC::constructFunction): | |
21194 | * runtime/FunctionConstructor.h: | |
21195 | * runtime/JSGlobalData.cpp: | |
21196 | (JSC::JSGlobalData::numericCompareFunction): | |
21197 | * runtime/JSGlobalObject.cpp: | |
21198 | (JSC::JSGlobalObject::~JSGlobalObject): | |
21199 | (JSC::JSGlobalObject::markChildren): | |
21200 | * runtime/JSGlobalObject.h: | |
21201 | (JSC::JSGlobalObject::codeBlocks): | |
21202 | * runtime/JSGlobalObjectFunctions.cpp: | |
21203 | (JSC::globalFuncEval): | |
21204 | ||
21205 | 2009-08-14 Darin Adler <darin@apple.com> | |
21206 | ||
21207 | Reviewed by Sam Weinig. | |
21208 | ||
21209 | Rename the confusing isObject(<class>) to inherits(<class>). | |
21210 | It still works on non-objects, returning false. | |
21211 | ||
21212 | * runtime/ArrayConstructor.cpp: | |
21213 | (JSC::arrayConstructorIsArray): Removed unneeded isObject call | |
21214 | and updated remaining isObject call to new name, inherits. | |
21215 | ||
21216 | * runtime/JSCell.h: Renamed isObject(<class>) to inherits(<class>) | |
21217 | but more importantly, made it non-virtual (it was already inline) | |
21218 | so it is now as fast as JSObject::inherits was. | |
21219 | ||
21220 | * runtime/JSObject.h: Removed inherits function since the one | |
21221 | in the base class is fine as-is. Also made various JSCell functions | |
21222 | that should not be called on JSObject uncallable by making them | |
21223 | both private and not implemented. | |
21224 | (JSC::JSCell::inherits): Updated name. | |
21225 | (JSC::JSValue::inherits): Ditto. | |
21226 | ||
21227 | * debugger/Debugger.cpp: | |
21228 | (JSC::Debugger::recompileAllJSFunctions): | |
21229 | * interpreter/Interpreter.cpp: | |
21230 | (JSC::Interpreter::unwindCallFrame): | |
21231 | * runtime/ArrayPrototype.cpp: | |
21232 | (JSC::arrayProtoFuncToString): | |
21233 | (JSC::arrayProtoFuncToLocaleString): | |
21234 | (JSC::arrayProtoFuncConcat): | |
21235 | * runtime/BooleanPrototype.cpp: | |
21236 | (JSC::booleanProtoFuncToString): | |
21237 | (JSC::booleanProtoFuncValueOf): | |
21238 | * runtime/DateConstructor.cpp: | |
21239 | (JSC::constructDate): | |
21240 | * runtime/DatePrototype.cpp: | |
21241 | (JSC::dateProtoFuncToString): | |
21242 | (JSC::dateProtoFuncToUTCString): | |
21243 | (JSC::dateProtoFuncToISOString): | |
21244 | (JSC::dateProtoFuncToDateString): | |
21245 | (JSC::dateProtoFuncToTimeString): | |
21246 | (JSC::dateProtoFuncToLocaleString): | |
21247 | (JSC::dateProtoFuncToLocaleDateString): | |
21248 | (JSC::dateProtoFuncToLocaleTimeString): | |
21249 | (JSC::dateProtoFuncGetTime): | |
21250 | (JSC::dateProtoFuncGetFullYear): | |
21251 | (JSC::dateProtoFuncGetUTCFullYear): | |
21252 | (JSC::dateProtoFuncToGMTString): | |
21253 | (JSC::dateProtoFuncGetMonth): | |
21254 | (JSC::dateProtoFuncGetUTCMonth): | |
21255 | (JSC::dateProtoFuncGetDate): | |
21256 | (JSC::dateProtoFuncGetUTCDate): | |
21257 | (JSC::dateProtoFuncGetDay): | |
21258 | (JSC::dateProtoFuncGetUTCDay): | |
21259 | (JSC::dateProtoFuncGetHours): | |
21260 | (JSC::dateProtoFuncGetUTCHours): | |
21261 | (JSC::dateProtoFuncGetMinutes): | |
21262 | (JSC::dateProtoFuncGetUTCMinutes): | |
21263 | (JSC::dateProtoFuncGetSeconds): | |
21264 | (JSC::dateProtoFuncGetUTCSeconds): | |
21265 | (JSC::dateProtoFuncGetMilliSeconds): | |
21266 | (JSC::dateProtoFuncGetUTCMilliseconds): | |
21267 | (JSC::dateProtoFuncGetTimezoneOffset): | |
21268 | (JSC::dateProtoFuncSetTime): | |
21269 | (JSC::setNewValueFromTimeArgs): | |
21270 | (JSC::setNewValueFromDateArgs): | |
21271 | (JSC::dateProtoFuncSetYear): | |
21272 | (JSC::dateProtoFuncGetYear): | |
21273 | * runtime/FunctionPrototype.cpp: | |
21274 | (JSC::functionProtoFuncToString): | |
21275 | * runtime/JSActivation.cpp: | |
21276 | (JSC::JSActivation::argumentsGetter): | |
21277 | * runtime/JSValue.h: | |
21278 | * runtime/RegExpConstructor.cpp: | |
21279 | (JSC::constructRegExp): | |
21280 | * runtime/RegExpPrototype.cpp: | |
21281 | (JSC::regExpProtoFuncTest): | |
21282 | (JSC::regExpProtoFuncExec): | |
21283 | (JSC::regExpProtoFuncCompile): | |
21284 | (JSC::regExpProtoFuncToString): | |
21285 | * runtime/ScopeChain.cpp: | |
21286 | (JSC::ScopeChain::localDepth): | |
21287 | * runtime/StringPrototype.cpp: | |
21288 | (JSC::stringProtoFuncReplace): | |
21289 | (JSC::stringProtoFuncToString): | |
21290 | (JSC::stringProtoFuncMatch): | |
21291 | (JSC::stringProtoFuncSearch): | |
21292 | (JSC::stringProtoFuncSplit): | |
21293 | Updated to new name, inherits, from old name, isObject. | |
21294 | ||
21295 | 2009-07-31 Harald Fernengel <harald.fernengel@nokia.com> | |
21296 | ||
21297 | Reviewed by Simon Hausmann. | |
21298 | ||
21299 | Adding QNX as a platform. Currently only tested with Qt. | |
21300 | ||
21301 | https://bugs.webkit.org/show_bug.cgi?id=27885 | |
21302 | ||
21303 | * JavaScriptCore/runtime/Collector.cpp: Added retrieving of stack base | |
21304 | since QNX doesn't have the pthread _nt functions | |
21305 | * JavaScriptCore/wtf/Platform.h: Added WTF_PLATFORM_QNX and corresponding | |
21306 | defines | |
21307 | * WebCore/bridge/npapi.h: Build fix for missing typedefs on QNX | |
21308 | ||
21309 | 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> | |
21310 | ||
21311 | Reviewed by Simon Hausmann. | |
21312 | ||
21313 | Currently generic ARM and ARMv7 platforms work only with JSVALUE32 | |
21314 | https://bugs.webkit.org/show_bug.cgi?id=28300 | |
21315 | ||
21316 | * wtf/Platform.h: | |
21317 | ||
21318 | 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> | |
21319 | ||
21320 | Reviewed by Simon Hausmann. | |
21321 | ||
21322 | Enable JIT on ARM for QT by default | |
21323 | https://bugs.webkit.org/show_bug.cgi?id=28259 | |
21324 | ||
21325 | * wtf/Platform.h: | |
21326 | ||
21327 | 2009-08-14 Gabor Loki <loki@inf.u-szeged.hu> | |
21328 | ||
21329 | Reviewed by Simon Hausmann. | |
21330 | ||
21331 | Enable YARR_JIT on ARM for QT by default | |
21332 | https://bugs.webkit.org/show_bug.cgi?id=28259 | |
21333 | ||
21334 | * wtf/Platform.h: | |
21335 | ||
21336 | 2009-08-14 Oliver Hunt <oliver@apple.com> | |
21337 | ||
21338 | Reviewed by Gavin Barraclough. | |
21339 | ||
21340 | [ES5] Arguments object should inherit from Array | |
21341 | https://bugs.webkit.org/show_bug.cgi?id=28298 | |
21342 | ||
21343 | Make the Arguments object conform to the behaviour specified in ES5. | |
21344 | The simple portion of this is to make Arguments use Array.prototype | |
21345 | as its prototype rather than Object.prototype. | |
21346 | ||
21347 | The spec then requires us to set instance.constructor to the pristine | |
21348 | Object constructor, and instance.toString and instance.toLocaleString | |
21349 | to the pristine versions from Object.prototype. To do this we now | |
21350 | make the ObjectPrototype constructor return its toString and | |
21351 | toLocaleString functions (similar to the call and apply functions | |
21352 | from FunctionPrototype). | |
21353 | ||
21354 | Oddly enough this reports itself as a slight win, but given the code | |
21355 | isn't hit in the tests that claim to have improved I put this down to | |
21356 | code motion. | |
21357 | ||
21358 | * runtime/Arguments.h: | |
21359 | (JSC::Arguments::Arguments): | |
21360 | (JSC::Arguments::initializeStandardProperties): | |
21361 | * runtime/JSGlobalObject.cpp: | |
21362 | (JSC::JSGlobalObject::reset): | |
21363 | (JSC::JSGlobalObject::markChildren): | |
21364 | * runtime/JSGlobalObject.h: | |
21365 | (JSC::JSGlobalObject::JSGlobalObjectData::JSGlobalObjectData): | |
21366 | (JSC::JSGlobalObject::objectConstructor): | |
21367 | (JSC::JSGlobalObject::objectToStringFunction): | |
21368 | (JSC::JSGlobalObject::objectToLocaleStringFunction): | |
21369 | * runtime/ObjectPrototype.cpp: | |
21370 | (JSC::ObjectPrototype::ObjectPrototype): | |
21371 | * runtime/ObjectPrototype.h: | |
21372 | * tests/mozilla/ecma_3/Function/arguments-001.js: | |
21373 | Update test to new es5 behaviour | |
21374 | ||
21375 | 2009-08-14 Oliver Hunt <oliver@apple.com> | |
21376 | ||
21377 | Remove MarkStack::drain from the JSC exports file | |
21378 | ||
21379 | MarkStack::drain is now marked inline, the including it in the exports file | |
21380 | produces an ld warning | |
21381 | ||
21382 | * JavaScriptCore.exp: | |
21383 | ||
21384 | 2009-08-13 Sam Weinig <sam@webkit.org> | |
21385 | ||
21386 | Reviewed by Oliver Hunt. | |
21387 | ||
21388 | Remove accidentally left in debugging statement. | |
21389 | ||
21390 | * runtime/JSArray.h: | |
21391 | (JSC::MarkStack::drain): | |
21392 | ||
21393 | 2009-08-13 Oliver Hunt <oliver@apple.com> | |
21394 | ||
21395 | Reviewed by Maciej Stachowiak. | |
21396 | ||
21397 | [ES5] Implement Array.isArray | |
21398 | https://bugs.webkit.org/show_bug.cgi?id=28296 | |
21399 | ||
21400 | Add support for Array.isArray to the Array constructor | |
21401 | ||
21402 | * runtime/ArrayConstructor.cpp: | |
21403 | (JSC::ArrayConstructor::ArrayConstructor): | |
21404 | (JSC::arrayConstructorIsArray): | |
21405 | * runtime/ArrayConstructor.h: | |
21406 | * runtime/CommonIdentifiers.h: | |
21407 | * runtime/JSArray.h: | |
21408 | (JSC::MarkStack::drain): | |
21409 | * runtime/JSGlobalObject.cpp: | |
21410 | (JSC::JSGlobalObject::reset): | |
21411 | ||
21412 | 2009-08-13 Oliver Hunt <oliver@apple.com> | |
21413 | ||
21414 | Reviewed by NOBODY (Buildfix). | |
21415 | ||
21416 | Attempt to fix windows build | |
21417 | ||
21418 | * runtime/Collector.cpp: | |
21419 | ||
21420 | 2009-08-13 Oliver Hunt <oliver@apple.com> | |
21421 | ||
21422 | Reviewed by Maciej Stachowiak. | |
21423 | ||
21424 | Devirtualise marking | |
21425 | https://bugs.webkit.org/show_bug.cgi?id=28294 | |
21426 | ||
21427 | Add a bit to TypeInfo to indicate that an object uses the standard | |
21428 | JSObject::markChildren method. This allows us to devirtualise marking | |
21429 | of most objects (though a branch is still needed). We also add a branch | |
21430 | to identify arrays thus devirtualising marking in that case as well. | |
21431 | ||
21432 | In order to make the best use of this devirtualisation I've also reworked | |
21433 | the MarkStack::drain() logic to make the iteration more efficient. | |
21434 | ||
21435 | * API/JSCallbackConstructor.h: | |
21436 | (JSC::JSCallbackConstructor::createStructure): | |
21437 | * API/JSCallbackFunction.h: | |
21438 | (JSC::JSCallbackFunction::createStructure): | |
21439 | * JavaScriptCore.exp: | |
21440 | * runtime/BooleanObject.h: | |
21441 | (JSC::BooleanObject::createStructure): | |
21442 | * runtime/FunctionPrototype.h: | |
21443 | (JSC::FunctionPrototype::createStructure): | |
21444 | * runtime/InternalFunction.h: | |
21445 | (JSC::InternalFunction::createStructure): | |
21446 | * runtime/JSAPIValueWrapper.h: | |
21447 | (JSC::JSAPIValueWrapper::JSAPIValueWrapper): | |
21448 | * runtime/JSArray.cpp: | |
21449 | (JSC::JSArray::markChildren): | |
21450 | * runtime/JSArray.h: | |
21451 | (JSC::JSArray::markChildrenDirect): | |
21452 | (JSC::MarkStack::drain): | |
21453 | * runtime/JSByteArray.cpp: | |
21454 | (JSC::JSByteArray::createStructure): | |
21455 | * runtime/JSCell.h: | |
21456 | (JSC::MarkStack::append): | |
21457 | * runtime/JSGlobalData.cpp: | |
21458 | (JSC::JSGlobalData::JSGlobalData): | |
21459 | * runtime/JSNumberCell.h: | |
21460 | (JSC::JSNumberCell::createStructure): | |
21461 | * runtime/JSONObject.h: | |
21462 | (JSC::JSONObject::createStructure): | |
21463 | * runtime/JSObject.cpp: | |
21464 | (JSC::JSObject::markChildren): | |
21465 | * runtime/JSObject.h: | |
21466 | (JSC::JSObject::markChildrenDirect): | |
21467 | (JSC::JSObject::createStructure): | |
21468 | * runtime/JSString.h: | |
21469 | (JSC::JSString::createStructure): | |
21470 | * runtime/JSType.h: | |
21471 | (JSC::): | |
21472 | * runtime/MarkStack.h: | |
21473 | (JSC::MarkStack::MarkStack): | |
21474 | (JSC::MarkStack::MarkSet::MarkSet): | |
21475 | (JSC::MarkStack::MarkStackArray::last): | |
21476 | * runtime/MathObject.h: | |
21477 | (JSC::MathObject::createStructure): | |
21478 | * runtime/NumberConstructor.h: | |
21479 | (JSC::NumberConstructor::createStructure): | |
21480 | * runtime/NumberObject.h: | |
21481 | (JSC::NumberObject::createStructure): | |
21482 | * runtime/RegExpConstructor.h: | |
21483 | (JSC::RegExpConstructor::createStructure): | |
21484 | * runtime/RegExpObject.h: | |
21485 | (JSC::RegExpObject::createStructure): | |
21486 | * runtime/StringObjectThatMasqueradesAsUndefined.h: | |
21487 | (JSC::StringObjectThatMasqueradesAsUndefined::createStructure): | |
21488 | * runtime/TypeInfo.h: | |
21489 | (JSC::TypeInfo::hasDefaultMark): | |
21490 | ||
21491 | 2009-08-13 Darin Adler <darin@apple.com> | |
21492 | ||
21493 | Reviewed by Mark Rowe. | |
21494 | ||
21495 | Some small bits of housekeeping. | |
21496 | ||
21497 | * JavaScriptCore.xcodeproj/project.pbxproj: Make Parser.h | |
21498 | project instead of private. Remove JSONObject.lut.h. | |
21499 | ||
21500 | * assembler/ARMAssembler.h: Remove unneeded WTF prefix. | |
21501 | * assembler/AssemblerBufferWithConstantPool.h: Ditto. | |
21502 | * bytecompiler/BytecodeGenerator.h: Ditto. | |
21503 | ||
21504 | * wtf/SegmentedVector.h: Add a "using" statement as we do | |
21505 | with the other WTF headers. | |
21506 | ||
21507 | 2009-08-13 Darin Adler <darin@apple.com> | |
21508 | ||
21509 | Fix Tiger build. | |
21510 | ||
21511 | * parser/Grammar.y: Use a template function so we can compile | |
21512 | setStatementLocation even if it comes before YYLTYPE is defined. | |
21513 | ||
21514 | 2009-08-13 Darin Adler <darin@apple.com> | |
21515 | ||
21516 | Reviewed by George Staikos. | |
21517 | ||
21518 | Too much use of void* in Grammar.y | |
21519 | https://bugs.webkit.org/show_bug.cgi?id=28287 | |
21520 | ||
21521 | * parser/Grammar.y: Changed all the helper functions to | |
21522 | take a JSGlobalData* instead of a void*. A couple formatting | |
21523 | tweaks that I missed when breaking this into pieces. | |
21524 | ||
21525 | 2009-08-13 Darin Adler <darin@apple.com> | |
21526 | ||
21527 | Reviewed by George Staikos. | |
21528 | ||
21529 | Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 | |
21530 | ||
21531 | * parser/Grammar.y: Reduced and sorted includes. Tweaked comment | |
21532 | format. Marked a few more functions inline. | |
21533 | ||
21534 | 2009-08-13 Darin Adler <darin@apple.com> | |
21535 | ||
21536 | Reviewed by George Staikos. | |
21537 | ||
21538 | Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 | |
21539 | ||
21540 | * parser/Grammar.y: Pass the number to the PropertyNode instead of | |
21541 | first turning it into an Identifier. | |
21542 | ||
21543 | * parser/NodeConstructors.h: | |
21544 | (JSC::PropertyNode::PropertyNode): Add an overload that takes a double | |
21545 | so the code to convert to a string can be here instead of Grammar.y. | |
21546 | * parser/Nodes.h: Ditto. | |
21547 | ||
21548 | 2009-08-13 Darin Adler <darin@apple.com> | |
21549 | ||
21550 | Reviewed by George Staikos. | |
21551 | ||
21552 | Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 | |
21553 | ||
21554 | * parser/Grammar.y: Eliminate the DBG macro. | |
21555 | ||
21556 | 2009-08-13 Darin Adler <darin@apple.com> | |
21557 | ||
21558 | Reviewed by George Staikos. | |
21559 | ||
21560 | Another part of https://bugs.webkit.org/show_bug.cgi?id=28287 | |
21561 | ||
21562 | * parser/Grammar.y: Eliminate the SET_EXCEPTION_LOCATION macro. | |
21563 | ||
21564 | 2009-08-13 Darin Adler <darin@apple.com> | |
21565 | ||
21566 | Reviewed by George Staikos. | |
21567 | ||
21568 | George asked me to break the patch from | |
21569 | https://bugs.webkit.org/show_bug.cgi?id=28287 | |
21570 | into smaller pieces and land it in stages. | |
21571 | ||
21572 | * parser/Grammar.y: Eliminate the LEXER macro. | |
21573 | ||
21574 | 2009-08-13 Mark Rowe <mrowe@apple.com> | |
21575 | ||
21576 | Try some more to fix the Windows build. | |
21577 | ||
21578 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. | |
21579 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. | |
21580 | ||
21581 | 2009-08-13 Mark Rowe <mrowe@apple.com> | |
21582 | ||
21583 | Try and fix the Windows build. | |
21584 | ||
21585 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: Export a new symbol. | |
21586 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Ditto. | |
21587 | ||
21588 | 2009-08-13 Darin Adler <darin@apple.com> | |
21589 | ||
21590 | Reviewed by David Levin. | |
21591 | ||
21592 | JavaScriptCore tweaks to get ready for the parser arena | |
21593 | https://bugs.webkit.org/show_bug.cgi?id=28243 | |
21594 | ||
21595 | Eliminate dependencies on Nodes.h outside JavaScriptCore, | |
21596 | and cut down on them inside JavaScriptCore. | |
21597 | ||
21598 | Change regular expression parsing to use identifiers as | |
21599 | with other strings we parse. | |
21600 | ||
21601 | Fix a couple things that are needed to use const Identifier | |
21602 | more, which will be part of the parser arena work. | |
21603 | ||
21604 | * JavaScriptCore.exp: Resorted and updated. | |
21605 | ||
21606 | * JavaScriptCore.xcodeproj/project.pbxproj: Changed | |
21607 | CollectorHeapIterator.h to be project-internal. | |
21608 | ||
21609 | * bytecompiler/BytecodeGenerator.cpp: | |
21610 | (JSC::BytecodeGenerator::emitPushNewScope): Added const. | |
21611 | * bytecompiler/BytecodeGenerator.h: Ditto. | |
21612 | ||
21613 | * debugger/Debugger.cpp: | |
21614 | (JSC::Debugger::recompileAllJSFunctions): Moved this function | |
21615 | here from WebCore. Here is better since it uses so many internals. | |
21616 | Removed unimportant optimization for the no listener case. | |
21617 | * debugger/Debugger.h: Ditto. Also removed unneeded include | |
21618 | and tweaked formatting and comments. | |
21619 | ||
21620 | * debugger/DebuggerCallFrame.cpp: | |
21621 | (JSC::DebuggerCallFrame::functionName): Call asFunction instead | |
21622 | of doing the unchecked static_cast. | |
21623 | (JSC::DebuggerCallFrame::calculatedFunctionName): Ditto. | |
21624 | ||
21625 | * jit/JITStubs.cpp: | |
21626 | (JSC::op_call_JSFunction): Call isHostFunction on the body rather | |
21627 | than on the JSFunction. | |
21628 | (JSC::vm_lazyLinkCall): Ditto. | |
21629 | (JSC::op_construct_JSConstruct): Ditto. | |
21630 | ||
21631 | * parser/Grammar.y: Changed callers to use new scanRegExp with | |
21632 | out arguments instead of relying on state in the Lexer. And | |
21633 | callers that just want to skip a regular expression to use | |
21634 | skipRegExp. | |
21635 | ||
21636 | * parser/Lexer.cpp: | |
21637 | (JSC::Lexer::scanRegExp): Changed to use out arguments, and to | |
21638 | add a prefix argument so we can add in the "=" character as needed. | |
21639 | Also rewrote to streamline the logic a bit inspired by suggestions | |
21640 | by David Levin. | |
21641 | (JSC::Lexer::skipRegExp): Added. Version of the function above that | |
21642 | does not actually put the regular expression into a string. | |
21643 | (JSC::Lexer::clear): Removed code to clear m_pattern and m_flags. | |
21644 | * parser/Lexer.h: Changed scanRegExp to have out arguments. Added | |
21645 | skipRegExp. Eliminated pattern, flags, m_pattern, and m_flags. | |
21646 | ||
21647 | * parser/NodeConstructors.h: | |
21648 | (JSC::RegExpNode::RegExpNode): Changed to take const Identifier&. | |
21649 | * parser/Nodes.cpp: | |
21650 | (JSC::RegExpNode::emitBytecode): Changed since m_pattern and | |
21651 | m_flags are now Identifier instead of UString. | |
21652 | (JSC::FunctionBodyNode::make): Moved this function here instead | |
21653 | of putting it in the JSFunction.h header. | |
21654 | * parser/Nodes.h: Changed RegExpNode to use Identifier. | |
21655 | ||
21656 | * profiler/Profiler.cpp: | |
21657 | (JSC::Profiler::createCallIdentifier): Changed to use isHostFunction | |
21658 | on the body instead of on the JSFunction object. | |
21659 | * runtime/FunctionPrototype.cpp: | |
21660 | (JSC::functionProtoFuncToString): Ditto. | |
21661 | ||
21662 | * runtime/JSFunction.cpp: | |
21663 | (JSC::JSFunction::isHostFunction): Moved here from header. | |
21664 | (JSC::JSFunction::isHostFunctionNonInline): Added. | |
21665 | (JSC::JSFunction::JSFunction): Removed unneeded initialization of | |
21666 | m_body to 0. | |
21667 | (JSC::JSFunction::setBody): Moved here from header. | |
21668 | ||
21669 | * runtime/JSFunction.h: Removed unneeded includes. Moved private | |
21670 | constructor down to the private section. Made virtual functions | |
21671 | private. Removed unneeded overload of setBody and moved the body | |
21672 | of the function into the .cpp file. Changed assertions to use | |
21673 | the non-inline version of isHostFunction. | |
21674 | ||
21675 | * runtime/PropertySlot.cpp: | |
21676 | (JSC::PropertySlot::functionGetter): Use asFunction instead | |
21677 | of doing the unchecked static_cast. | |
21678 | ||
21679 | * wtf/SegmentedVector.h: | |
21680 | (WTF::SegmentedVector::isEmpty): Added. | |
21681 | ||
21682 | 2009-08-13 Mark Rowe <mrowe@apple.com> | |
21683 | ||
21684 | Rubber-stamped by Darin Adler. | |
21685 | ||
21686 | Use the version of operator new that takes a JSGlobalData when allocating FuncDeclNode and FuncExprNode | |
21687 | from within the grammar to prevent these nodes from being leaked. | |
21688 | ||
21689 | * parser/Grammar.y: | |
21690 | ||
21691 | 2009-08-13 Simon Hausmann <simon.hausmann@nokia.com> | |
21692 | ||
21693 | Reviewed by Ariya Hidayat. | |
21694 | ||
21695 | Remove the special-case for Qt wrt JSVALUE_32 introduced in | |
21696 | r46709. It must've been a dependency issue on the bot, as | |
21697 | after a manual build all the tests pass on amd64 and ia32. | |
21698 | ||
21699 | * wtf/Platform.h: | |
21700 | ||
21701 | 2009-08-12 Gabor Loki <loki@inf.u-szeged.hu> | |
21702 | ||
21703 | Reviewed by Gavin Barraclough. | |
21704 | ||
21705 | Add optimize call and property access support for ARM JIT. | |
21706 | https://bugs.webkit.org/show_bug.cgi?id=24986 | |
21707 | ||
21708 | For tightly coupled sequences the BEGIN_UNINTERRUPTED_SEQUENCE and | |
21709 | END_UNINTERRUPTED_SEQUENCE macros have been introduced which ensure | |
21710 | space for instructions and constants of the named sequence. This | |
21711 | method is vital for those architecture which are using constant pool. | |
21712 | ||
21713 | The 'latePatch' method - which was linked to JmpSrc - is replaced with | |
21714 | a port specific solution (each calls are marked to place their address | |
21715 | on the constant pool). | |
21716 | ||
21717 | * assembler/ARMAssembler.cpp: | |
21718 | (JSC::ARMAssembler::linkBranch): | |
21719 | (JSC::ARMAssembler::executableCopy): Add extra align for constant pool. | |
21720 | * assembler/ARMAssembler.h: | |
21721 | (JSC::ARMAssembler::JmpSrc::JmpSrc): | |
21722 | (JSC::ARMAssembler::sizeOfConstantPool): | |
21723 | (JSC::ARMAssembler::jmp): | |
21724 | (JSC::ARMAssembler::linkCall): | |
21725 | * assembler/ARMv7Assembler.h: | |
21726 | * assembler/AbstractMacroAssembler.h: | |
21727 | * assembler/AssemblerBufferWithConstantPool.h: | |
21728 | (JSC::AssemblerBufferWithConstantPool::flushIfNoSpaceFor): Fix the | |
21729 | computation of the remaining space. | |
21730 | * assembler/MacroAssemblerARM.h: | |
21731 | (JSC::MacroAssemblerARM::branch32): | |
21732 | (JSC::MacroAssemblerARM::nearCall): | |
21733 | (JSC::MacroAssemblerARM::call): | |
21734 | (JSC::MacroAssemblerARM::branchPtrWithPatch): | |
21735 | (JSC::MacroAssemblerARM::ensureSpace): | |
21736 | (JSC::MacroAssemblerARM::sizeOfConstantPool): | |
21737 | (JSC::MacroAssemblerARM::prepareCall): | |
21738 | * assembler/X86Assembler.h: | |
21739 | * jit/JIT.h: | |
21740 | * jit/JITCall.cpp: | |
21741 | (JSC::JIT::compileOpCall): | |
21742 | * jit/JITInlineMethods.h: | |
21743 | (JSC::JIT::beginUninterruptedSequence): | |
21744 | (JSC::JIT::endUninterruptedSequence): | |
21745 | * jit/JITPropertyAccess.cpp: | |
21746 | (JSC::JIT::emit_op_method_check): | |
21747 | (JSC::JIT::compileGetByIdHotPath): | |
21748 | (JSC::JIT::compileGetByIdSlowCase): | |
21749 | (JSC::JIT::emit_op_put_by_id): | |
21750 | ||
21751 | 2009-08-12 Gavin Barraclough <barraclough@apple.com> | |
21752 | ||
21753 | Rubber Stamped by Dave Kilzer. | |
21754 | ||
21755 | Disable WTF_USE_JSVALUE32_64 on iPhone for now (support not yet added for ARMv7). | |
21756 | ||
21757 | * wtf/Platform.h: | |
21758 | ||
21759 | 2009-08-12 Gavin Barraclough <barraclough@apple.com> | |
21760 | ||
21761 | Reviewed by Maciej Stachoviak. | |
21762 | ||
21763 | Ooops - moved code that had been accidentally added to op_new_func instead of | |
21764 | op_new_func_exp, to where it shoulds be. | |
21765 | ||
21766 | * interpreter/Interpreter.cpp: | |
21767 | (JSC::Interpreter::privateExecute): | |
21768 | * wtf/Platform.h: | |
21769 | ||
21770 | 2009-08-12 Ada Chan <adachan@apple.com> | |
21771 | ||
21772 | Added workaround for the limitation that VirtualFree with MEM_RELEASE | |
21773 | can only accept the base address returned by VirtualAlloc when the region | |
21774 | was reserved and it can only free the entire region, and not a part of it. | |
21775 | ||
21776 | Reviewed by Oliver Hunt. | |
21777 | ||
21778 | * runtime/MarkStack.h: | |
21779 | (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
21780 | * runtime/MarkStackWin.cpp: | |
21781 | (JSC::MarkStack::releaseStack): | |
21782 | ||
21783 | 2009-08-12 Balazs Kelemen <kelemen.balazs.3@stud.u-szeged.hu> | |
21784 | ||
21785 | Reviewed by Ariya Hidayat. | |
21786 | ||
21787 | Build fix: use std::numeric_limits<long long>::min() instead of LLONG_MIN | |
21788 | since LLONG_MIN is not defined in standard c++. | |
21789 | ||
21790 | * runtime/UString.cpp: | |
21791 | (JSC::UString::from): | |
21792 | ||
21793 | 2009-08-12 Benjamin Otte <otte@gnome.org> | |
21794 | ||
21795 | Reviewed by Jan Alonzo. | |
21796 | ||
21797 | Buildfix for Gtk platforms debug builds. | |
21798 | ||
21799 | * GNUmakefile.am: Choose MarkStackPosix.cpp or MarkStackWin.cpp | |
21800 | depending on platform. | |
21801 | ||
21802 | 2009-08-12 Simon Hausmann <simon.hausmann@nokia.com> | |
21803 | ||
21804 | Prospective build fix for Mac and 32-bit Windows. | |
21805 | ||
21806 | * runtime/UString.cpp: Include wtf/StringExtras.h for snprintf. | |
21807 | (JSC::UString::from): Use %lld instead of %I64d for snprintf | |
21808 | on non-windows platforms. | |
21809 | ||
21810 | 2009-08-12 Prasanth Ullattil <prasanth.ullattil@nokia.com> | |
21811 | ||
21812 | Reviewed by Simon Hausmann. | |
21813 | ||
21814 | Fix compile error on 64Bit Windows, when UString::from | |
21815 | is called with an intptr_t. | |
21816 | ||
21817 | Added new UString::From overload with long long parameter. | |
21818 | ||
21819 | Thanks to Holger for the long long idea. | |
21820 | ||
21821 | * runtime/UString.cpp: | |
21822 | (JSC::UString::from): | |
21823 | * runtime/UString.h: | |
21824 | ||
21825 | 2009-08-11 Oliver Hunt <oliver@apple.com> | |
21826 | ||
21827 | Reviewed by Mark Rowe. | |
21828 | ||
21829 | Minor style fixes. | |
21830 | ||
21831 | * runtime/UString.h: | |
21832 | (JSC::UString::Rep::createEmptyBuffer): | |
21833 | * wtf/FastMalloc.h: | |
21834 | (WTF::TryMallocReturnValue::getValue): | |
21835 | ||
21836 | 2009-08-11 Oliver Hunt <oliver@apple.com> | |
21837 | ||
21838 | Reviewed by Gavin Barraclough. | |
21839 | ||
21840 | Make it harder to misuse try* allocation routines | |
21841 | https://bugs.webkit.org/show_bug.cgi?id=27469 | |
21842 | ||
21843 | Jump through a few hoops to make it much harder to accidentally | |
21844 | miss null-checking of values returned by the try-* allocation | |
21845 | routines. | |
21846 | ||
21847 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
21848 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
21849 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
21850 | * runtime/JSArray.cpp: | |
21851 | (JSC::JSArray::putSlowCase): | |
21852 | (JSC::JSArray::increaseVectorLength): | |
21853 | * runtime/StringPrototype.cpp: | |
21854 | (JSC::stringProtoFuncFontsize): | |
21855 | (JSC::stringProtoFuncLink): | |
21856 | * runtime/UString.cpp: | |
21857 | (JSC::allocChars): | |
21858 | (JSC::reallocChars): | |
21859 | (JSC::expandCapacity): | |
21860 | (JSC::UString::Rep::reserveCapacity): | |
21861 | (JSC::UString::expandPreCapacity): | |
21862 | (JSC::createRep): | |
21863 | (JSC::concatenate): | |
21864 | (JSC::UString::spliceSubstringsWithSeparators): | |
21865 | (JSC::UString::replaceRange): | |
21866 | (JSC::UString::append): | |
21867 | (JSC::UString::operator=): | |
21868 | * runtime/UString.h: | |
21869 | (JSC::UString::Rep::createEmptyBuffer): | |
21870 | * wtf/FastMalloc.cpp: | |
21871 | (WTF::tryFastZeroedMalloc): | |
21872 | (WTF::tryFastMalloc): | |
21873 | (WTF::tryFastCalloc): | |
21874 | (WTF::tryFastRealloc): | |
21875 | (WTF::TCMallocStats::tryFastMalloc): | |
21876 | (WTF::TCMallocStats::tryFastCalloc): | |
21877 | (WTF::TCMallocStats::tryFastRealloc): | |
21878 | * wtf/FastMalloc.h: | |
21879 | (WTF::TryMallocReturnValue::TryMallocReturnValue): | |
21880 | (WTF::TryMallocReturnValue::~TryMallocReturnValue): | |
21881 | (WTF::TryMallocReturnValue::operator PossiblyNull<T>): | |
21882 | (WTF::TryMallocReturnValue::getValue): | |
21883 | * wtf/Platform.h: | |
21884 | * wtf/PossiblyNull.h: Added. | |
21885 | (WTF::PossiblyNull::PossiblyNull): | |
21886 | (WTF::PossiblyNull::~PossiblyNull): | |
21887 | (WTF::::getValue): | |
21888 | ||
21889 | 2009-08-11 Gavin Barraclough <barraclough@apple.com> | |
21890 | ||
21891 | Reviewed by NOBODY (build fix part deux). | |
21892 | ||
21893 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
21894 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
21895 | ||
21896 | 2009-08-11 Gavin Barraclough <barraclough@apple.com> | |
21897 | ||
21898 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
21899 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
21900 | ||
21901 | 2009-08-11 Gavin Barraclough <barraclough@apple.com> | |
21902 | ||
21903 | Reviewed by Oliver Hunt. | |
21904 | ||
21905 | Restrict use of FuncDeclNode & FuncExprNode to the parser. | |
21906 | https://bugs.webkit.org/show_bug.cgi?id=28209 | |
21907 | ||
21908 | These objects were also being referenced from the CodeBlock. By changing this | |
21909 | to just retain pointers to FunctionBodyNodes these classes can be restricted to | |
21910 | use during parsing. | |
21911 | ||
21912 | No performance impact (or sub-percent progression). | |
21913 | ||
21914 | * JavaScriptCore.exp: | |
21915 | Update symbols. | |
21916 | ||
21917 | * bytecode/CodeBlock.cpp: | |
21918 | (JSC::CodeBlock::mark): | |
21919 | (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): | |
21920 | (JSC::CodeBlock::shrinkToFit): | |
21921 | * bytecode/CodeBlock.h: | |
21922 | (JSC::CodeBlock::addFunction): | |
21923 | (JSC::CodeBlock::function): | |
21924 | Unify m_functions & m_functionExpressions into a single Vector<RefPtr<FuncExprNode> >. | |
21925 | ||
21926 | * bytecompiler/BytecodeGenerator.cpp: | |
21927 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
21928 | (JSC::BytecodeGenerator::addConstant): | |
21929 | (JSC::BytecodeGenerator::emitNewFunction): | |
21930 | (JSC::BytecodeGenerator::emitNewFunctionExpression): | |
21931 | * bytecompiler/BytecodeGenerator.h: | |
21932 | FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. | |
21933 | ||
21934 | * interpreter/Interpreter.cpp: | |
21935 | (JSC::Interpreter::execute): | |
21936 | (JSC::Interpreter::privateExecute): | |
21937 | Update to reflect chnages in CodeBlock. | |
21938 | ||
21939 | * jit/JITOpcodes.cpp: | |
21940 | (JSC::JIT::emit_op_new_func_exp): | |
21941 | * jit/JITStubs.cpp: | |
21942 | (JSC::DEFINE_STUB_FUNCTION): | |
21943 | * jit/JITStubs.h: | |
21944 | (JSC::): | |
21945 | Update to reflect chnages in CodeBlock. | |
21946 | ||
21947 | * parser/Grammar.y: | |
21948 | FunctionStacks now contain FunctionBodyNodes not FuncDeclNodes. | |
21949 | ||
21950 | * parser/NodeConstructors.h: | |
21951 | (JSC::FuncExprNode::FuncExprNode): | |
21952 | (JSC::FuncDeclNode::FuncDeclNode): | |
21953 | * parser/Nodes.cpp: | |
21954 | (JSC::ScopeNodeData::mark): | |
21955 | (JSC::FunctionBodyNode::finishParsing): | |
21956 | * parser/Nodes.h: | |
21957 | (JSC::FunctionBodyNode::ident): | |
21958 | Move m_ident & make methods from FuncDeclNode & FuncExprNode to FunctionBodyNode. | |
21959 | ||
21960 | * runtime/JSFunction.h: | |
21961 | (JSC::FunctionBodyNode::make): | |
21962 | Make this method inline (was FuncDeclNode::makeFunction). | |
21963 | ||
21964 | 2009-08-11 Oliver Hunt <oliver@apple.com> | |
21965 | ||
21966 | Reviewed by Gavin Barraclough. | |
21967 | ||
21968 | Native JSON.stringify does not omit functions | |
21969 | https://bugs.webkit.org/show_bug.cgi?id=28117 | |
21970 | ||
21971 | Objects that are callable should be treated as undefined when | |
21972 | serialising to JSON. | |
21973 | ||
21974 | * runtime/JSONObject.cpp: | |
21975 | (JSC::Stringifier::appendStringifiedValue): | |
21976 | ||
21977 | 2009-08-11 Oliver Hunt <oliver@apple.com> | |
21978 | ||
21979 | Reviewed by Geoff Garen. | |
21980 | ||
21981 | REGRESSION: Hang/crash in BytecodeGenerator::constRegisterFor loading simple page | |
21982 | https://bugs.webkit.org/show_bug.cgi?id=28169 | |
21983 | ||
21984 | Handle the case where someone has attempted to shadow a property | |
21985 | on the global object with a constant. | |
21986 | ||
21987 | * bytecompiler/BytecodeGenerator.cpp: | |
21988 | (JSC::BytecodeGenerator::constRegisterFor): | |
21989 | * parser/Nodes.cpp: | |
21990 | (JSC::ConstDeclNode::emitCodeSingle): | |
21991 | ||
21992 | 2009-08-11 John Gregg <johnnyg@google.com> | |
21993 | ||
21994 | Reviewed by Maciej Stachowiak. | |
21995 | ||
21996 | Desktop Notifications API | |
21997 | https://bugs.webkit.org/show_bug.cgi?id=25463 | |
21998 | ||
21999 | Adds ENABLE_NOTIFICATION flag. | |
22000 | ||
22001 | * Configurations/FeatureDefines.xcconfig: | |
22002 | * wtf/Platform.h: | |
22003 | ||
22004 | 2009-08-11 Maxime Simon <simon.maxime@gmail.com> | |
22005 | ||
22006 | Reviewed by Eric Seidel. | |
22007 | ||
22008 | Modifications on JavaScriptCore to allow Haiku port. | |
22009 | https://bugs.webkit.org/show_bug.cgi?id=28121 | |
22010 | ||
22011 | * runtime/Collector.cpp: Haiku doesn't have sys/mman.h, using OS.h instead. | |
22012 | (JSC::currentThreadStackBase): Haiku uses its own threading system. | |
22013 | * wtf/Platform.h: Defining all Haiku platform values. | |
22014 | * wtf/haiku/MainThreadHaiku.cpp: Adding a missing header (NotImplemented.h). | |
22015 | ||
22016 | 2009-08-11 Jessie Berlin <jberlin@apple.com> | |
22017 | ||
22018 | Reviewed by Adam Roben. | |
22019 | ||
22020 | Fix windows build. | |
22021 | ||
22022 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
22023 | ||
22024 | 2009-08-11 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
22025 | ||
22026 | Reviewed by Tor Arne Vestbø. | |
22027 | ||
22028 | Buildfix for Qt-win platforms. | |
22029 | ||
22030 | * JavaScriptCore.pri: Choose MarkStackPosix.cpp or MarkStackWin.cpp depend on platform. | |
22031 | ||
22032 | 2009-08-10 Oliver Hunt <oliver@apple.com> | |
22033 | ||
22034 | Reviewed by NOBODY (And another build fix). | |
22035 | ||
22036 | Add new exports for MSVC | |
22037 | ||
22038 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
22039 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
22040 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
22041 | ||
22042 | 2009-08-10 Oliver Hunt <oliver@apple.com> | |
22043 | ||
22044 | Reviewed by NOBODY (yet another build fix). | |
22045 | ||
22046 | Remove obsolete entries from MSVC exports file | |
22047 | ||
22048 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
22049 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
22050 | ||
22051 | 2009-08-10 Oliver Hunt <oliver@apple.com> | |
22052 | ||
22053 | Add includes needed for non-allinonefile builds | |
22054 | ||
22055 | * runtime/GetterSetter.h: | |
22056 | * runtime/ScopeChain.h: | |
22057 | ||
22058 | 2009-08-10 Oliver Hunt <oliver@apple.com> | |
22059 | ||
22060 | Fix export file for last build fix | |
22061 | ||
22062 | * JavaScriptCore.exp: | |
22063 | ||
22064 | 2009-08-10 Oliver Hunt <oliver@apple.com> | |
22065 | ||
22066 | Hoist page size initialization into platform specific code. | |
22067 | ||
22068 | * jit/ExecutableAllocatorPosix.cpp: | |
22069 | * jit/ExecutableAllocatorWin.cpp: | |
22070 | * runtime/MarkStack.h: | |
22071 | (JSC::MarkStack::pageSize): | |
22072 | * runtime/MarkStackPosix.cpp: | |
22073 | (JSC::MarkStack::initializePagesize): | |
22074 | * runtime/MarkStackWin.cpp: | |
22075 | (JSC::MarkStack::initializePagesize): | |
22076 | ||
22077 | 2009-08-07 Oliver Hunt <oliver@apple.com> | |
22078 | ||
22079 | Reviewed by Gavin Barraclough. | |
22080 | ||
22081 | Stack overflow crash in JavaScript garbage collector mark pass | |
22082 | https://bugs.webkit.org/show_bug.cgi?id=12216 | |
22083 | ||
22084 | Make the GC mark phase iterative by using an explicit mark stack. | |
22085 | To do this marking any single object is performed in multiple stages | |
22086 | * The object is appended to the MarkStack, this sets the marked | |
22087 | bit for the object using the new markDirect() function, and then | |
22088 | returns | |
22089 | * When the MarkStack is drain()ed the object is popped off the stack | |
22090 | and markChildren(MarkStack&) is called on the object to collect | |
22091 | all of its children. drain() then repeats until the stack is empty. | |
22092 | ||
22093 | Additionally I renamed a number of methods from 'mark' to 'markAggregate' | |
22094 | in order to make it more clear that marking of those object was not | |
22095 | going to result in an actual recursive mark. | |
22096 | ||
22097 | * GNUmakefile.am | |
22098 | * JavaScriptCore.exp: | |
22099 | * JavaScriptCore.gypi: | |
22100 | * JavaScriptCore.pri: | |
22101 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
22102 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
22103 | * bytecode/CodeBlock.cpp: | |
22104 | (JSC::CodeBlock::markAggregate): | |
22105 | * bytecode/CodeBlock.h: | |
22106 | * bytecode/EvalCodeCache.h: | |
22107 | (JSC::EvalCodeCache::markAggregate): | |
22108 | * debugger/DebuggerActivation.cpp: | |
22109 | (JSC::DebuggerActivation::markChildren): | |
22110 | * debugger/DebuggerActivation.h: | |
22111 | * interpreter/Register.h: | |
22112 | * interpreter/RegisterFile.h: | |
22113 | (JSC::RegisterFile::markGlobals): | |
22114 | (JSC::RegisterFile::markCallFrames): | |
22115 | * parser/Nodes.cpp: | |
22116 | (JSC::ScopeNodeData::markAggregate): | |
22117 | (JSC::EvalNode::markAggregate): | |
22118 | (JSC::FunctionBodyNode::markAggregate): | |
22119 | * parser/Nodes.h: | |
22120 | (JSC::ScopeNode::markAggregate): | |
22121 | * runtime/ArgList.cpp: | |
22122 | (JSC::MarkedArgumentBuffer::markLists): | |
22123 | * runtime/ArgList.h: | |
22124 | * runtime/Arguments.cpp: | |
22125 | (JSC::Arguments::markChildren): | |
22126 | * runtime/Arguments.h: | |
22127 | * runtime/Collector.cpp: | |
22128 | (JSC::Heap::markConservatively): | |
22129 | (JSC::Heap::markCurrentThreadConservativelyInternal): | |
22130 | (JSC::Heap::markCurrentThreadConservatively): | |
22131 | (JSC::Heap::markOtherThreadConservatively): | |
22132 | (JSC::Heap::markStackObjectsConservatively): | |
22133 | (JSC::Heap::markProtectedObjects): | |
22134 | (JSC::Heap::collect): | |
22135 | * runtime/Collector.h: | |
22136 | * runtime/GetterSetter.cpp: | |
22137 | (JSC::GetterSetter::markChildren): | |
22138 | * runtime/GetterSetter.h: | |
22139 | (JSC::GetterSetter::GetterSetter): | |
22140 | (JSC::GetterSetter::createStructure): | |
22141 | * runtime/GlobalEvalFunction.cpp: | |
22142 | (JSC::GlobalEvalFunction::markChildren): | |
22143 | * runtime/GlobalEvalFunction.h: | |
22144 | * runtime/JSActivation.cpp: | |
22145 | (JSC::JSActivation::markChildren): | |
22146 | * runtime/JSActivation.h: | |
22147 | * runtime/JSArray.cpp: | |
22148 | (JSC::JSArray::markChildren): | |
22149 | * runtime/JSArray.h: | |
22150 | * runtime/JSCell.h: | |
22151 | (JSC::JSCell::markCellDirect): | |
22152 | (JSC::JSCell::markChildren): | |
22153 | (JSC::JSValue::markDirect): | |
22154 | (JSC::JSValue::markChildren): | |
22155 | (JSC::JSValue::hasChildren): | |
22156 | (JSC::MarkStack::append): | |
22157 | (JSC::MarkStack::drain): | |
22158 | * runtime/JSFunction.cpp: | |
22159 | (JSC::JSFunction::markChildren): | |
22160 | * runtime/JSFunction.h: | |
22161 | * runtime/JSGlobalData.cpp: | |
22162 | (JSC::JSGlobalData::JSGlobalData): | |
22163 | * runtime/JSGlobalData.h: | |
22164 | * runtime/JSGlobalObject.cpp: | |
22165 | (JSC::markIfNeeded): | |
22166 | (JSC::JSGlobalObject::markChildren): | |
22167 | * runtime/JSGlobalObject.h: | |
22168 | * runtime/JSNotAnObject.cpp: | |
22169 | (JSC::JSNotAnObject::markChildren): | |
22170 | * runtime/JSNotAnObject.h: | |
22171 | * runtime/JSONObject.cpp: | |
22172 | (JSC::Stringifier::markAggregate): | |
22173 | (JSC::JSONObject::markStringifiers): | |
22174 | * runtime/JSONObject.h: | |
22175 | * runtime/JSObject.cpp: | |
22176 | (JSC::JSObject::markChildren): | |
22177 | (JSC::JSObject::defineGetter): | |
22178 | (JSC::JSObject::defineSetter): | |
22179 | * runtime/JSObject.h: | |
22180 | * runtime/JSPropertyNameIterator.cpp: | |
22181 | (JSC::JSPropertyNameIterator::markChildren): | |
22182 | * runtime/JSPropertyNameIterator.h: | |
22183 | (JSC::JSPropertyNameIterator::createStructure): | |
22184 | (JSC::JSPropertyNameIterator::JSPropertyNameIterator): | |
22185 | (JSC::JSPropertyNameIterator::create): | |
22186 | * runtime/JSStaticScopeObject.cpp: | |
22187 | (JSC::JSStaticScopeObject::markChildren): | |
22188 | * runtime/JSStaticScopeObject.h: | |
22189 | * runtime/JSType.h: | |
22190 | (JSC::): | |
22191 | * runtime/JSValue.h: | |
22192 | * runtime/JSWrapperObject.cpp: | |
22193 | (JSC::JSWrapperObject::markChildren): | |
22194 | * runtime/JSWrapperObject.h: | |
22195 | * runtime/MarkStack.cpp: Added. | |
22196 | (JSC::MarkStack::compact): | |
22197 | * runtime/MarkStack.h: Added. | |
22198 | (JSC::): | |
22199 | (JSC::MarkStack::MarkStack): | |
22200 | (JSC::MarkStack::append): | |
22201 | (JSC::MarkStack::appendValues): | |
22202 | (JSC::MarkStack::~MarkStack): | |
22203 | (JSC::MarkStack::MarkSet::MarkSet): | |
22204 | (JSC::MarkStack::pageSize): | |
22205 | ||
22206 | MarkStackArray is a non-shrinking, mmap-based vector type | |
22207 | used for storing objects to be marked. | |
22208 | (JSC::MarkStack::MarkStackArray::MarkStackArray): | |
22209 | (JSC::MarkStack::MarkStackArray::~MarkStackArray): | |
22210 | (JSC::MarkStack::MarkStackArray::expand): | |
22211 | (JSC::MarkStack::MarkStackArray::append): | |
22212 | (JSC::MarkStack::MarkStackArray::removeLast): | |
22213 | (JSC::MarkStack::MarkStackArray::isEmpty): | |
22214 | (JSC::MarkStack::MarkStackArray::size): | |
22215 | (JSC::MarkStack::MarkStackArray::shrinkAllocation): | |
22216 | * runtime/MarkStackPosix.cpp: Added. | |
22217 | (JSC::MarkStack::allocateStack): | |
22218 | (JSC::MarkStack::releaseStack): | |
22219 | * runtime/MarkStackWin.cpp: Added. | |
22220 | (JSC::MarkStack::allocateStack): | |
22221 | (JSC::MarkStack::releaseStack): | |
22222 | ||
22223 | * runtime/ScopeChain.h: | |
22224 | * runtime/ScopeChainMark.h: | |
22225 | (JSC::ScopeChain::markAggregate): | |
22226 | * runtime/SmallStrings.cpp: | |
22227 | (JSC::SmallStrings::mark): | |
22228 | * runtime/Structure.h: | |
22229 | (JSC::Structure::markAggregate): | |
22230 | ||
22231 | 2009-08-10 Mark Rowe <mrowe@apple.com> | |
22232 | ||
22233 | Reviewed by Darin Adler. | |
22234 | ||
22235 | Fix hundreds of "pointer being freed was not allocated" errors seen on the build bot. | |
22236 | ||
22237 | * wtf/FastMalloc.h: Implement nothrow variants of the delete and delete[] operators since | |
22238 | we implement the nothrow variants of new and new[]. The nothrow variant of delete is called | |
22239 | explicitly in the implementation of std::sort which was resulting in FastMalloc-allocated | |
22240 | memory being passed to the system allocator to free. | |
22241 | ||
22242 | 2009-08-10 Jan Michael Alonzo <jmalonzo@webkit.org> | |
22243 | ||
22244 | [Gtk] Unreviewed build fix. Move JSAPIValueWrapper.cpp/.h in the debug | |
22245 | section. This file is already part of AllInOneFile in Release builds. | |
22246 | ||
22247 | * GNUmakefile.am: | |
22248 | ||
22249 | 2009-08-10 Darin Adler <darin@apple.com> | |
22250 | ||
22251 | * wtf/FastMalloc.h: Fix build. | |
22252 | ||
22253 | 2009-08-10 Darin Adler <darin@apple.com> | |
22254 | ||
22255 | Reviewed by Mark Rowe. | |
22256 | ||
22257 | FastMalloc.h has cross-platform code but marked as WinCE-only | |
22258 | https://bugs.webkit.org/show_bug.cgi?id=28160 | |
22259 | ||
22260 | 1) The support for nothrow was inside #if PLATFORM(WINCE) even though it is | |
22261 | not platform-specific. | |
22262 | 2) The code tried to override operator delete nothrow, which does not exist. | |
22263 | 3) The code in the header checks the value of USE_SYSTEM_MALLOC, but the code | |
22264 | in FastMalloc.cpp checks only if the macro is defined. | |
22265 | ||
22266 | * wtf/FastMalloc.h: See above. | |
22267 | * wtf/FastMalloc.cpp: Ditto. | |
22268 | ||
22269 | 2009-08-10 Sam Weinig <sam@webkit.org> | |
22270 | ||
22271 | Reviewed by Anders Carlsson. | |
22272 | ||
22273 | Fix an annoying indentation issue. | |
22274 | ||
22275 | * runtime/DateConstructor.cpp: | |
22276 | (JSC::constructDate): | |
22277 | ||
22278 | 2009-08-10 Xan Lopez <xlopez@igalia.com> | |
22279 | ||
22280 | Unreviewed build fix. | |
22281 | ||
22282 | Add new files to makefile. | |
22283 | ||
22284 | * GNUmakefile.am: | |
22285 | ||
22286 | 2009-08-10 Simon Hausmann <simon.hausmann@nokia.com> | |
22287 | ||
22288 | Fix compilation with the interpreter instead of the JIT by including | |
22289 | PrototypeFunction.h as forward-declared through NativeFunctionWrapper.h. | |
22290 | ||
22291 | * runtime/ObjectConstructor.cpp: | |
22292 | ||
22293 | 2009-08-09 Oliver Hunt <oliver@apple.com> | |
22294 | ||
22295 | Reviewed by George Staikos. | |
22296 | ||
22297 | JSON.stringify replacer returning undefined does not omit object properties | |
22298 | https://bugs.webkit.org/show_bug.cgi?id=28118 | |
22299 | ||
22300 | Correct behaviour of stringify when using a replacer function that returns | |
22301 | undefined. This is a simple change to move the undefined value check to | |
22302 | after the replacer function is called. This means that the replacer function | |
22303 | is now called for properties with the value undefined, however i've confirmed | |
22304 | that this behaviour is correct. | |
22305 | ||
22306 | In addition I've made the cyclic object exception have a more useful error | |
22307 | message. | |
22308 | ||
22309 | * runtime/JSONObject.cpp: | |
22310 | (JSC::Stringifier::appendStringifiedValue): | |
22311 | ||
22312 | 2009-08-08 Oliver Hunt <oliver@apple.com> | |
22313 | ||
22314 | Reviewed by Eric Seidel and Sam Weinig. | |
22315 | ||
22316 | [ES5] Implement Object.getPrototypeOf | |
22317 | https://bugs.webkit.org/show_bug.cgi?id=28114 | |
22318 | ||
22319 | Implement getPrototypeOf | |
22320 | ||
22321 | * runtime/CommonIdentifiers.h: | |
22322 | * runtime/JSGlobalObject.cpp: | |
22323 | (JSC::JSGlobalObject::reset): | |
22324 | * runtime/ObjectConstructor.cpp: | |
22325 | (JSC::ObjectConstructor::ObjectConstructor): | |
22326 | (JSC::objectConsGetPrototypeOf): | |
22327 | * runtime/ObjectConstructor.h: | |
22328 | ||
22329 | 2009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22330 | ||
22331 | Reviewed by Eric Seidel. | |
22332 | ||
22333 | Allow custom memory allocation control for Noncopyable class | |
22334 | https://bugs.webkit.org/show_bug.cgi?id=27879 | |
22335 | ||
22336 | Several classes which are inherited from Noncopyable are instantiated by | |
22337 | operator new, so Noncopyable class has been inherited from FastAllocBase. | |
22338 | ||
22339 | * wtf/Noncopyable.h: | |
22340 | ||
22341 | 2009-08-07 George Staikos <george.staikos@torchmobile.com> | |
22342 | ||
22343 | Reviewed by Eric Seidel. | |
22344 | ||
22345 | https://bugs.webkit.org/show_bug.cgi?id=27305 | |
22346 | Implement WinCE-specific unicode layer. | |
22347 | Written by George Staikos <george.staikos@torchmobile.com> | |
22348 | with bug fixes by Yong Li <yong.li@torchmobile.com> | |
22349 | refactored by Joe Mason <joe.mason@torchmobile.com> | |
22350 | ||
22351 | * wtf/Platform.h: | |
22352 | * wtf/unicode/Unicode.h: | |
22353 | * wtf/unicode/wince/UnicodeWince.cpp: Added. | |
22354 | (WTF::Unicode::toLower): | |
22355 | (WTF::Unicode::toUpper): | |
22356 | (WTF::Unicode::foldCase): | |
22357 | (WTF::Unicode::isPrintableChar): | |
22358 | (WTF::Unicode::isSpace): | |
22359 | (WTF::Unicode::isLetter): | |
22360 | (WTF::Unicode::isUpper): | |
22361 | (WTF::Unicode::isLower): | |
22362 | (WTF::Unicode::isDigit): | |
22363 | (WTF::Unicode::isPunct): | |
22364 | (WTF::Unicode::toTitleCase): | |
22365 | (WTF::Unicode::direction): | |
22366 | (WTF::Unicode::category): | |
22367 | (WTF::Unicode::decompositionType): | |
22368 | (WTF::Unicode::combiningClass): | |
22369 | (WTF::Unicode::mirroredChar): | |
22370 | (WTF::Unicode::digitValue): | |
22371 | * wtf/unicode/wince/UnicodeWince.h: Added. | |
22372 | (WTF::Unicode::): | |
22373 | (WTF::Unicode::isSeparatorSpace): | |
22374 | (WTF::Unicode::isHighSurrogate): | |
22375 | (WTF::Unicode::isLowSurrogate): | |
22376 | (WTF::Unicode::isArabicChar): | |
22377 | (WTF::Unicode::hasLineBreakingPropertyComplexContext): | |
22378 | (WTF::Unicode::umemcasecmp): | |
22379 | (WTF::Unicode::surrogateToUcs4): | |
22380 | ||
22381 | 2009-08-07 Yongjun Zhang <yongjun.zhang@nokia.com> | |
22382 | ||
22383 | Reviewed by Eric Seidel. | |
22384 | ||
22385 | https://bugs.webkit.org/show_bug.cgi?id=28069 | |
22386 | ||
22387 | Add inline to help winscw compiler resolve specialized argument in | |
22388 | templated functions. | |
22389 | ||
22390 | * runtime/LiteralParser.cpp: | |
22391 | (JSC::LiteralParser::Lexer::lexString): | |
22392 | ||
22393 | 2009-08-07 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22394 | ||
22395 | Reviewed by Eric Seidel. | |
22396 | ||
22397 | Allow custom memory allocation control for RegExpObjectData struct | |
22398 | http://bugs.webkit.org/show_bug.cgi?id=26750 | |
22399 | ||
22400 | Inherits RegExpObjectData struct from FastAllocBase because | |
22401 | it has been instantiated by 'new' in JavaScriptCore/runtime/RegExpObject.cpp:62 | |
22402 | ||
22403 | * runtime/RegExpObject.h: | |
22404 | ||
22405 | 2009-08-06 Norbert Leser <norbert.leser@nokia.com> | |
22406 | ||
22407 | Reviewed by Darin Adler. | |
22408 | ||
22409 | Updated patch for bug #27059: | |
22410 | Symbian platform always uses little endian encoding, | |
22411 | regardless of compiler. | |
22412 | We need to make sure that we correctly detect EABI architecture | |
22413 | for armv5 targets on Symbian, | |
22414 | where __EABI__ is set but not __ARM_EABI__ | |
22415 | ||
22416 | * wtf/Platform.h: | |
22417 | ||
22418 | 2009-08-06 Adam Barth <abarth@webkit.org> | |
22419 | ||
22420 | Unreviewed revert. | |
22421 | ||
22422 | http://bugs.webkit.org/show_bug.cgi?id=27879 | |
22423 | ||
22424 | Revert 46877 because it broke GTK. | |
22425 | ||
22426 | * wtf/Noncopyable.h: | |
22427 | ||
22428 | 2009-08-06 Gavin Barraclough <barraclough@apple.com> | |
22429 | ||
22430 | Reviewed by Oliver Hunt. | |
22431 | ||
22432 | Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification. | |
22433 | ( https://bugs.webkit.org/show_bug.cgi?id=27635 ) | |
22434 | ||
22435 | This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%. | |
22436 | (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled). | |
22437 | ||
22438 | * bytecode/CodeBlock.cpp: | |
22439 | (JSC::printStructureStubInfo): | |
22440 | - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
22441 | ||
22442 | * bytecode/CodeBlock.h: | |
22443 | (JSC::): | |
22444 | (JSC::CallLinkInfo::seenOnce): | |
22445 | (JSC::CallLinkInfo::setSeen): | |
22446 | (JSC::MethodCallLinkInfo::seenOnce): | |
22447 | (JSC::MethodCallLinkInfo::setSeen): | |
22448 | - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once. | |
22449 | ||
22450 | * bytecode/StructureStubInfo.cpp: | |
22451 | (JSC::StructureStubInfo::deref): | |
22452 | - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
22453 | ||
22454 | * bytecode/StructureStubInfo.h: | |
22455 | (JSC::StructureStubInfo::StructureStubInfo): | |
22456 | (JSC::StructureStubInfo::initGetByIdSelf): | |
22457 | (JSC::StructureStubInfo::initGetByIdProto): | |
22458 | (JSC::StructureStubInfo::initGetByIdChain): | |
22459 | (JSC::StructureStubInfo::initGetByIdSelfList): | |
22460 | (JSC::StructureStubInfo::initGetByIdProtoList): | |
22461 | (JSC::StructureStubInfo::initPutByIdTransition): | |
22462 | (JSC::StructureStubInfo::initPutByIdReplace): | |
22463 | (JSC::StructureStubInfo::seenOnce): | |
22464 | (JSC::StructureStubInfo::setSeen): | |
22465 | - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once. | |
22466 | ||
22467 | * bytecompiler/BytecodeGenerator.cpp: | |
22468 | (JSC::BytecodeGenerator::emitGetById): | |
22469 | (JSC::BytecodeGenerator::emitPutById): | |
22470 | - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
22471 | ||
22472 | * jit/JIT.cpp: | |
22473 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
22474 | (JSC::JIT::unlinkCall): | |
22475 | - Remove the "don't lazy link" stage of calls. | |
22476 | ||
22477 | * jit/JIT.h: | |
22478 | (JSC::JIT::compileCTIMachineTrampolines): | |
22479 | - Remove the "don't lazy link" stage of calls. | |
22480 | ||
22481 | * jit/JITCall.cpp: | |
22482 | (JSC::JIT::compileOpCallSlowCase): | |
22483 | - Remove the "don't lazy link" stage of calls. | |
22484 | ||
22485 | * jit/JITStubs.cpp: | |
22486 | (JSC::JITThunks::JITThunks): | |
22487 | (JSC::JITThunks::tryCachePutByID): | |
22488 | (JSC::JITThunks::tryCacheGetByID): | |
22489 | (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
22490 | (JSC::JITStubs::getPolymorphicAccessStructureListSlot): | |
22491 | - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. | |
22492 | ||
22493 | * jit/JITStubs.h: | |
22494 | (JSC::JITThunks::ctiStringLengthTrampoline): | |
22495 | (JSC::JITStubs::): | |
22496 | - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. | |
22497 | ||
22498 | * wtf/PtrAndFlags.h: | |
22499 | (WTF::PtrAndFlags::PtrAndFlags): | |
22500 | (WTF::PtrAndFlags::operator!): | |
22501 | (WTF::PtrAndFlags::operator->): | |
22502 | - Add ! and -> operators, add constuctor with pointer argument. | |
22503 | ||
22504 | 2009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22505 | ||
22506 | Reviewed by Adam Barth. | |
22507 | ||
22508 | Allow custom memory allocation control for Noncopyable class | |
22509 | https://bugs.webkit.org/show_bug.cgi?id=27879 | |
22510 | ||
22511 | Several classes which inherited from Noncopyable are instantiated by | |
22512 | operator new, so Noncopyable class has been inherited from FastAllocBase. | |
22513 | ||
22514 | * wtf/Noncopyable.h: | |
22515 | ||
22516 | 2009-08-06 Mark Rowe <mrowe@apple.com> | |
22517 | ||
22518 | Rubber-stamped by Sam Weinig. | |
22519 | ||
22520 | Add explicit dependencies for our build verification scripts to ensure that they always run after linking has completed. | |
22521 | ||
22522 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
22523 | ||
22524 | 2009-08-06 Mark Rowe <mrowe@apple.com> | |
22525 | ||
22526 | Bring a little order to our otherwise out of control lives. | |
22527 | ||
22528 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
22529 | ||
22530 | 2009-08-06 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22531 | ||
22532 | Reviewed by Darin Adler. | |
22533 | ||
22534 | Allow custom memory allocation control for JavaScriptCore's PolymorphicAccessStructureList struct | |
22535 | https://bugs.webkit.org/show_bug.cgi?id=27877 | |
22536 | ||
22537 | Inherits PolymorphicAccessStructureList struct from FastAllocBase because it has been instantiated by | |
22538 | 'new' in JavaScriptCore/jit/JITStubs.cpp:1229. | |
22539 | ||
22540 | * bytecode/Instruction.h: | |
22541 | ||
22542 | 2009-08-05 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22543 | ||
22544 | Reviewed by Darin Adler. | |
22545 | ||
22546 | Allow custom memory allocation control for JavaScriptCore's ScopeNodeData struct | |
22547 | https://bugs.webkit.org/show_bug.cgi?id=27875 | |
22548 | ||
22549 | Inherits ScopeNodeData struct from FastAllocBase because it has been instantiated by | |
22550 | 'new' in JavaScriptCore/parser/Nodes.cpp:1848. | |
22551 | ||
22552 | * parser/Nodes.h: | |
22553 | ||
22554 | 2009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
22555 | ||
22556 | Reviewed by Gavin Barraclough. | |
22557 | ||
22558 | Add floating point support for generic ARM port. | |
22559 | https://bugs.webkit.org/show_bug.cgi?id=24986 | |
22560 | ||
22561 | * assembler/ARMAssembler.cpp: | |
22562 | (JSC::ARMAssembler::doubleTransfer): | |
22563 | * assembler/ARMAssembler.h: | |
22564 | (JSC::ARM::): | |
22565 | (JSC::ARMAssembler::): | |
22566 | (JSC::ARMAssembler::faddd_r): | |
22567 | (JSC::ARMAssembler::fsubd_r): | |
22568 | (JSC::ARMAssembler::fmuld_r): | |
22569 | (JSC::ARMAssembler::fcmpd_r): | |
22570 | (JSC::ARMAssembler::fdtr_u): | |
22571 | (JSC::ARMAssembler::fdtr_d): | |
22572 | (JSC::ARMAssembler::fmsr_r): | |
22573 | (JSC::ARMAssembler::fsitod_r): | |
22574 | (JSC::ARMAssembler::fmstat): | |
22575 | * assembler/MacroAssemblerARM.h: | |
22576 | (JSC::MacroAssemblerARM::): | |
22577 | (JSC::MacroAssemblerARM::supportsFloatingPoint): | |
22578 | (JSC::MacroAssemblerARM::loadDouble): | |
22579 | (JSC::MacroAssemblerARM::storeDouble): | |
22580 | (JSC::MacroAssemblerARM::addDouble): | |
22581 | (JSC::MacroAssemblerARM::subDouble): | |
22582 | (JSC::MacroAssemblerARM::mulDouble): | |
22583 | (JSC::MacroAssemblerARM::convertInt32ToDouble): | |
22584 | (JSC::MacroAssemblerARM::branchDouble): | |
22585 | * jit/JIT.h: | |
22586 | ||
22587 | 2009-08-05 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
22588 | ||
22589 | Reviewed by Gavin Barraclough. | |
22590 | ||
22591 | Add JIT support for generic ARM port without optimizations. | |
22592 | https://bugs.webkit.org/show_bug.cgi?id=24986 | |
22593 | ||
22594 | All JIT optimizations are disabled. | |
22595 | ||
22596 | Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
22597 | Signed off by Gabor Loki <loki@inf.u-szeged.hu> | |
22598 | ||
22599 | * assembler/ARMAssembler.cpp: | |
22600 | (JSC::ARMAssembler::baseIndexTransfer32): | |
22601 | * assembler/AbstractMacroAssembler.h: | |
22602 | (JSC::AbstractMacroAssembler::Imm32::Imm32): | |
22603 | * assembler/MacroAssemblerARM.h: | |
22604 | (JSC::MacroAssemblerARM::store32): | |
22605 | (JSC::MacroAssemblerARM::move): | |
22606 | (JSC::MacroAssemblerARM::branch32): | |
22607 | (JSC::MacroAssemblerARM::add32): | |
22608 | (JSC::MacroAssemblerARM::sub32): | |
22609 | (JSC::MacroAssemblerARM::load32): | |
22610 | * bytecode/CodeBlock.h: | |
22611 | (JSC::CodeBlock::getBytecodeIndex): | |
22612 | * jit/JIT.h: | |
22613 | * jit/JITInlineMethods.h: | |
22614 | (JSC::JIT::restoreArgumentReference): | |
22615 | * jit/JITOpcodes.cpp: | |
22616 | * jit/JITStubs.cpp: | |
22617 | * jit/JITStubs.h: | |
22618 | (JSC::JITStackFrame::returnAddressSlot): | |
22619 | * wtf/Platform.h: | |
22620 | ||
22621 | 2009-08-04 Gavin Barraclough <barraclough@apple.com> | |
22622 | ||
22623 | Rubber Stamped by Oiver Hunt. | |
22624 | ||
22625 | Revert r46643 since this breaks the Yarr::Interpreter running the v8 tests. | |
22626 | https://bugs.webkit.org/show_bug.cgi?id=27874 | |
22627 | ||
22628 | * yarr/RegexInterpreter.cpp: | |
22629 | (JSC::Yarr::Interpreter::allocDisjunctionContext): | |
22630 | (JSC::Yarr::Interpreter::freeDisjunctionContext): | |
22631 | (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): | |
22632 | (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): | |
22633 | ||
22634 | 2009-08-04 Oliver Hunt <oliver@apple.com> | |
22635 | ||
22636 | PPC64 Build fix | |
22637 | ||
22638 | * wtf/Platform.h: | |
22639 | ||
22640 | 2009-08-04 Benjamin C Meyer <benjamin.meyer@torchmobile.com> | |
22641 | ||
22642 | Reviewed by Adam Treat | |
22643 | ||
22644 | Explicitly include limits.h header when using INT_MAX and INT_MIN | |
22645 | ||
22646 | * interpreter/Interpreter.cpp | |
22647 | ||
22648 | 2009-08-03 Harald Fernengel <harald.fernengel@nokia.com> | |
22649 | ||
22650 | Reviewed by Darin Adler. | |
22651 | ||
22652 | Fix compile error for ambigous call to abs() | |
22653 | https://bugs.webkit.org/show_bug.cgi?id=27873 | |
22654 | ||
22655 | Fix ambiguity in abs(long int) call by calling labs() instead | |
22656 | ||
22657 | * wtf/DateMath.cpp: replace call to abs() with labs() | |
22658 | ||
22659 | 2009-08-03 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
22660 | ||
22661 | Reviewed by Eric Seidel. | |
22662 | ||
22663 | [Qt] Consolidate common gcc flags to WebKit.pri | |
22664 | https://bugs.webkit.org/show_bug.cgi?id=27934 | |
22665 | ||
22666 | * JavaScriptCore.pro: | |
22667 | ||
22668 | 2009-08-03 Ada Chan <adachan@apple.com> | |
22669 | ||
22670 | Fixed the Tiger build. | |
22671 | ||
22672 | * wtf/FastMalloc.cpp: | |
22673 | ||
22674 | 2009-08-03 Ada Chan <adachan@apple.com> | |
22675 | ||
22676 | Reviewed by Darin Adler. | |
22677 | ||
22678 | Don't use background thread to scavenge memory on Tiger until we figure out why it causes a crash. | |
22679 | https://bugs.webkit.org/show_bug.cgi?id=27900 | |
22680 | ||
22681 | * wtf/FastMalloc.cpp: | |
22682 | ||
22683 | 2009-08-03 Fumitoshi Ukai <ukai@chromium.org> | |
22684 | ||
22685 | Reviewed by Jan Alonzo. | |
22686 | ||
22687 | Fix build break on Gtk/x86_64. | |
22688 | https://bugs.webkit.org/show_bug.cgi?id=27936 | |
22689 | ||
22690 | Use JSVALUE64 for X86_64 LINUX, except Qt. | |
22691 | ||
22692 | * wtf/Platform.h: | |
22693 | ||
22694 | 2009-08-02 Xan Lopez <xlopez@igalia.com> | |
22695 | ||
22696 | Fix the GTK+ build. | |
22697 | ||
22698 | * wtf/Platform.h: | |
22699 | ||
22700 | 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
22701 | ||
22702 | Reviewed by Sam Weinig. | |
22703 | ||
22704 | Disabled JSVALUE32_64 on Qt builds, since all layout tests mysteriously | |
22705 | crash with it enabled. | |
22706 | ||
22707 | * wtf/Platform.h: | |
22708 | ||
22709 | 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
22710 | ||
22711 | Qt build fix. | |
22712 | ||
22713 | Added JSAPIValueWrapper.cpp to the build. | |
22714 | ||
22715 | * JavaScriptCore.pri: | |
22716 | ||
22717 | 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
22718 | ||
22719 | Windows build fix. | |
22720 | ||
22721 | Exported symbols for JSAPIValueWrapper. | |
22722 | ||
22723 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
22724 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
22725 | ||
22726 | 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
22727 | ||
22728 | GTK build fix. | |
22729 | ||
22730 | * jit/JITStubs.cpp: #include <stdarg.h>, for a definition of va_start. | |
22731 | ||
22732 | 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
22733 | ||
22734 | Qt build fix. | |
22735 | ||
22736 | * runtime/Collector.cpp: #include <limits.h>, for a definition of ULONG_MAX. | |
22737 | ||
22738 | 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
22739 | ||
22740 | Windows build fix: Nixed JSImmediate::prototype, JSImmediate::toObject, | |
22741 | and JSImmediate::toThisObject, and removed their exported symbols. | |
22742 | ||
22743 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
22744 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
22745 | * runtime/JSImmediate.cpp: | |
22746 | * runtime/JSImmediate.h: | |
22747 | ||
22748 | 2009-08-02 Geoffrey Garen <ggaren@apple.com> | |
22749 | ||
22750 | Reviewed by Mark Rowe. | |
22751 | ||
22752 | Enabled JSVALUE32_64 by default on all platforms other than x86_64 (which uses JSVALUE64). | |
22753 | ||
22754 | * wtf/Platform.h: | |
22755 | ||
22756 | 2009-08-02 Kevin Ollivier <kevino@theolliviers.com> | |
22757 | ||
22758 | Reviewed by Jan Alonzo. | |
22759 | ||
22760 | Script for building the JavaScriptCore library for wx. | |
22761 | https://bugs.webkit.org/show_bug.cgi?id=27619 | |
22762 | ||
22763 | * wscript: Added. | |
22764 | ||
22765 | 2009-08-02 Yong Li <yong.li@torchmobile.com> | |
22766 | ||
22767 | Reviewed by George Staikos. | |
22768 | ||
22769 | DateMath depends on strftime and localtime, which need to be imported manually on WinCE | |
22770 | https://bugs.webkit.org/show_bug.cgi?id=26558 | |
22771 | ||
22772 | * wtf/DateMath.cpp: | |
22773 | ||
22774 | 2009-08-01 David Kilzer <ddkilzer@apple.com> | |
22775 | ||
22776 | wtf/Threading.h: added include of Platform.h | |
22777 | ||
22778 | Reviewed by Mark Rowe. | |
22779 | ||
22780 | * wtf/Threading.h: Added #include "Platform.h" since this header | |
22781 | uses PLATFORM() and other macros. | |
22782 | ||
22783 | 2009-08-01 Mark Rowe <mrowe@apple.com> | |
22784 | ||
22785 | Rubber-stamped by Oliver Hunt. | |
22786 | ||
22787 | Roll out r46668 as it was misinformed. ScopeChain is only used with placement new. | |
22788 | ||
22789 | * runtime/ScopeChain.h: | |
22790 | ||
22791 | 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22792 | ||
22793 | Allow custom memory allocation control for JavaScriptCore's HashMap class | |
22794 | http://bugs.webkit.org/show_bug.cgi?id=27871 | |
22795 | ||
22796 | Inherits HashMap class from FastAllocBase because it has been | |
22797 | instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:148. | |
22798 | ||
22799 | * wtf/RefPtrHashMap.h: | |
22800 | (WTF::): | |
22801 | ||
22802 | 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22803 | ||
22804 | Allow custom memory allocation control for JavaScriptCore's ScopeChain class | |
22805 | https://bugs.webkit.org/show_bug.cgi?id=27834 | |
22806 | ||
22807 | Inherits ScopeChain class from FastAllocBase because it has been | |
22808 | instantiated by 'new' in JavaScriptCore/runtime/JSFunction.h:109. | |
22809 | ||
22810 | * runtime/ScopeChain.h: | |
22811 | ||
22812 | 2009-08-01 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22813 | ||
22814 | Reviewed by Darin Adler. | |
22815 | ||
22816 | Allow custom memory allocation control for JavaScriptCore's RegExpConstructorPrivate struct | |
22817 | https://bugs.webkit.org/show_bug.cgi?id=27833 | |
22818 | ||
22819 | Inherits RegExpConstructorPrivate class from FastAllocBase because it has been | |
22820 | instantiated by 'new' in JavaScriptCore/runtime/RegExpConstructor.cpp:152. | |
22821 | ||
22822 | * runtime/RegExpConstructor.cpp: | |
22823 | ||
22824 | 2009-07-31 Yong Li <yong.li@torchmobile.com> | |
22825 | ||
22826 | Reviewed by George Staikos. | |
22827 | ||
22828 | Resurrect the old GetTickCount implementation of currentTime, controlled by WTF_USE_QUERY_PERFORMANCE_COUNTER | |
22829 | currentSystemTime taken from older WebKit; currentTime written by Yong Li <yong.li@torchmobile.com>; cleanup by Joe Mason <joe.mason@torchmobile.com> | |
22830 | https://bugs.webkit.org/show_bug.cgi?id=27848 | |
22831 | ||
22832 | * wtf/CurrentTime.cpp: | |
22833 | (WTF::currentSystemTime): get current time with GetCurrentFT | |
22834 | (WTF::currentTime): track msec elapsed since first currentSystemTime call using GetTickCount | |
22835 | * wtf/Platform.h: | |
22836 | ||
22837 | 2009-07-31 Ada Chan <adachan@apple.com> | |
22838 | ||
22839 | Fixes the Windows release-PGO build. | |
22840 | ||
22841 | Reviewed by Jon Honeycutt. | |
22842 | ||
22843 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Suppresses the warning about unreachable code that we get by adding "return 0" to WTF::TCMalloc_PageHeap::runScavengerThread(). | |
22844 | * wtf/FastMalloc.cpp: | |
22845 | (WTF::TCMalloc_PageHeap::runScavengerThread): Fixes the error about the method not returning a value in the release-PGO build. | |
22846 | ||
22847 | 2009-07-31 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
22848 | ||
22849 | Change malloc to fastMalloc and free to fastFree in Yarr's RegexInterpreter.cpp | |
22850 | https://bugs.webkit.org/show_bug.cgi?id=27874 | |
22851 | ||
22852 | Use fastMalloc and fastFree instead of malloc and free in RegexInterpreter.cpp's methods. | |
22853 | ||
22854 | * yarr/RegexInterpreter.cpp: | |
22855 | (JSC::Yarr::Interpreter::allocDisjunctionContext): | |
22856 | (JSC::Yarr::Interpreter::freeDisjunctionContext): | |
22857 | (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): | |
22858 | (JSC::Yarr::Interpreter::freeParenthesesDisjunctionContext): | |
22859 | ||
22860 | 2009-07-30 Xan Lopez <xlopez@igalia.com> | |
22861 | ||
22862 | Reviewed by Jan Alonzo. | |
22863 | ||
22864 | Fix compiler warning. | |
22865 | ||
22866 | GCC does not like C++-style comments in preprocessor directives. | |
22867 | ||
22868 | * wtf/Platform.h: | |
22869 | ||
22870 | 2009-07-30 John McCall <rjmccall@apple.com> | |
22871 | ||
22872 | Reviewed by Gavin Barraclough. | |
22873 | ||
22874 | Optimize the X86_64 trampolines: avoid the need for filler arguments | |
22875 | and move the stub-args area closer to the stack pointer. | |
22876 | ||
22877 | * jit/JIT.h: adjust patch offsets because of slight code-size change | |
22878 | * jit/JITCode.h: | |
22879 | (JSC::JITCode::execute): don't pass filler args | |
22880 | * jit/JITStubs.cpp: | |
22881 | (ctiTrampoline): (X86_64): push args onto stack, use args directly | |
22882 | (ctiVMThrowTrampoline): (X86_64): adjust %rsp by correct displacement | |
22883 | (ctiOpThrowNotCaught): (X86_64): adjust %rsp by correct displacement | |
22884 | * jit/JITStubs.h: | |
22885 | (JITStackFrame): (X86_64): move args area earlier | |
22886 | (ctiTrampoline): remove filler args from prototype | |
22887 | ||
22888 | 2009-07-30 Gavin Barraclough <barraclough@apple.com> | |
22889 | ||
22890 | Temporarily revert r46618 since this is b0rking on Linux. | |
22891 | ||
22892 | 2009-07-23 Gavin Barraclough <barraclough@apple.com> | |
22893 | ||
22894 | Reviewed by Oliver Hunt. | |
22895 | ||
22896 | Make get_by_id/put_by_id/method_check/call defer optimization using a data flag rather than a code modification. | |
22897 | ( https://bugs.webkit.org/show_bug.cgi?id=27635 ) | |
22898 | ||
22899 | This improves performance of ENABLE(ASSEMBLER_WX_EXCLUSIVE) builds by 2-2.5%, reducing the overhead to about 2.5%. | |
22900 | (No performance impact with ASSEMBLER_WX_EXCLUSIVE disabled). | |
22901 | ||
22902 | * bytecode/CodeBlock.cpp: | |
22903 | (JSC::printStructureStubInfo): | |
22904 | - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
22905 | ||
22906 | * bytecode/CodeBlock.h: | |
22907 | (JSC::): | |
22908 | (JSC::CallLinkInfo::seenOnce): | |
22909 | (JSC::CallLinkInfo::setSeen): | |
22910 | (JSC::MethodCallLinkInfo::seenOnce): | |
22911 | (JSC::MethodCallLinkInfo::setSeen): | |
22912 | - Change a pointer in CallLinkInfo/MethodCallLinkInfo to use a PtrAndFlags, use a flag to track when an op has been executed once. | |
22913 | ||
22914 | * bytecode/StructureStubInfo.cpp: | |
22915 | (JSC::StructureStubInfo::deref): | |
22916 | - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
22917 | ||
22918 | * bytecode/StructureStubInfo.h: | |
22919 | (JSC::StructureStubInfo::StructureStubInfo): | |
22920 | (JSC::StructureStubInfo::initGetByIdSelf): | |
22921 | (JSC::StructureStubInfo::initGetByIdProto): | |
22922 | (JSC::StructureStubInfo::initGetByIdChain): | |
22923 | (JSC::StructureStubInfo::initGetByIdSelfList): | |
22924 | (JSC::StructureStubInfo::initGetByIdProtoList): | |
22925 | (JSC::StructureStubInfo::initPutByIdTransition): | |
22926 | (JSC::StructureStubInfo::initPutByIdReplace): | |
22927 | (JSC::StructureStubInfo::seenOnce): | |
22928 | (JSC::StructureStubInfo::setSeen): | |
22929 | - Make StructureStubInfo store the type as an integer, rather than an OpcodeID, add a flag to track when an op has been executed once. | |
22930 | ||
22931 | * bytecompiler/BytecodeGenerator.cpp: | |
22932 | (JSC::BytecodeGenerator::emitGetById): | |
22933 | (JSC::BytecodeGenerator::emitPutById): | |
22934 | - Make StructureStubInfo store the type as an integer, rather than an OpcodeID. | |
22935 | ||
22936 | * jit/JIT.cpp: | |
22937 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
22938 | (JSC::JIT::unlinkCall): | |
22939 | - Remove the "don't lazy link" stage of calls. | |
22940 | ||
22941 | * jit/JIT.h: | |
22942 | (JSC::JIT::compileCTIMachineTrampolines): | |
22943 | - Remove the "don't lazy link" stage of calls. | |
22944 | ||
22945 | * jit/JITCall.cpp: | |
22946 | (JSC::JIT::compileOpCallSlowCase): | |
22947 | - Remove the "don't lazy link" stage of calls. | |
22948 | ||
22949 | * jit/JITStubs.cpp: | |
22950 | (JSC::JITThunks::JITThunks): | |
22951 | (JSC::JITThunks::tryCachePutByID): | |
22952 | (JSC::JITThunks::tryCacheGetByID): | |
22953 | (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
22954 | (JSC::JITStubs::getPolymorphicAccessStructureListSlot): | |
22955 | - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. | |
22956 | ||
22957 | * jit/JITStubs.h: | |
22958 | (JSC::JITThunks::ctiStringLengthTrampoline): | |
22959 | (JSC::JITStubs::): | |
22960 | - Remove the "don't lazy link" stage of calls, and the "_second" stage of get_by_id/put_by_id/method_check. | |
22961 | ||
22962 | * wtf/PtrAndFlags.h: | |
22963 | (WTF::PtrAndFlags::PtrAndFlags): | |
22964 | (WTF::PtrAndFlags::operator!): | |
22965 | (WTF::PtrAndFlags::operator->): | |
22966 | - Add ! and -> operators, add constuctor with pointer argument. | |
22967 | ||
22968 | 2009-07-30 Geoffrey Garen <ggaren@apple.com> | |
22969 | ||
22970 | Reviewed by Gavin Barraclough. | |
22971 | ||
22972 | Fixed failing tests seen on Windows buildbot. | |
22973 | ||
22974 | * jit/JITStubs.cpp: | |
22975 | (JSC::DEFINE_STUB_FUNCTION): | |
22976 | * jit/JITStubs.h: | |
22977 | (JSC::): Use "int" instead of "bool" to guarantee a 32-bit result, | |
22978 | regardless of compiler. gcc on mac uses 32-bit values for bool, | |
22979 | but gcc on linux and MSVC on Windows use 8-bit values. | |
22980 | ||
22981 | 2009-07-30 Geoffrey Garen <ggaren@apple.com> | |
22982 | ||
22983 | Windows build fix: added missing symbols on Windows. | |
22984 | ||
22985 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
22986 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
22987 | ||
22988 | 2009-07-30 Geoffrey Garen <ggaren@apple.com> | |
22989 | ||
22990 | Windows build fix: removed stale symbols on Windows. | |
22991 | ||
22992 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
22993 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
22994 | ||
22995 | === End merge of nitro-extreme branch 2009-07-30 === | |
22996 | ||
22997 | 2009-07-20 Geoffrey Garen <ggaren@apple.com> | |
22998 | ||
22999 | Fixed a post-review typo in r46066 that caused tons of test failures. | |
23000 | ||
23001 | SunSpider reports no change. | |
23002 | ||
23003 | * runtime/JSArray.cpp: | |
23004 | (JSC::JSArray::JSArray): Initialize the full vector capacity, to avoid | |
23005 | uninitialized members at the end. | |
23006 | ||
23007 | 2009-07-20 Geoffrey Garen <ggaren@apple.com> | |
23008 | ||
23009 | Windows WebKit build fix: Added some missing exports. | |
23010 | ||
23011 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
23012 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
23013 | ||
23014 | 2009-07-17 Geoffrey Garen <ggaren@apple.com> | |
23015 | ||
23016 | Reviewed by Sam Weinig. | |
23017 | ||
23018 | Get the branch working on windows. | |
23019 | https://bugs.webkit.org/show_bug.cgi?id=27391 | |
23020 | ||
23021 | SunSpider says 0.3% faster. | |
23022 | ||
23023 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
23024 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: Updated | |
23025 | MSVC export lists to fix linker errors. | |
23026 | ||
23027 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: Added / removed | |
23028 | new / old project files. | |
23029 | ||
23030 | * jit/JIT.cpp: | |
23031 | (JSC::JIT::privateCompileCTIMachineTrampolines): Used #pragma pack to tell | |
23032 | MSVC that these structures represent actual memory layout, and should not be | |
23033 | automatically aligned. Changed the return value load to load a 64bit quantity | |
23034 | into the canonical registers. | |
23035 | ||
23036 | * jit/JIT.h: Moved OBJECT_OFFSETOF definition to StdLibExtras.h because | |
23037 | it's needed by more than just the JIT, and it supplements a standard library | |
23038 | macro (offsetof). | |
23039 | ||
23040 | * jit/JITCall.cpp: | |
23041 | (JSC::JIT::compileOpCallInitializeCallFrame): Fixed an incorrectly signed | |
23042 | cast to resolve an MSVC warning. | |
23043 | ||
23044 | * jit/JITStubs.h: Used #pragma pack to tell MSVC that these structures | |
23045 | represent actual memory layout, and should not be automatically aligned. | |
23046 | ||
23047 | * runtime/JSArray.cpp: | |
23048 | (JSC::JSArray::JSArray): Replaced memset_pattern8 with a for loop, since | |
23049 | memset_pattern8 is not portable. (I verified that this version of the loop | |
23050 | gives the best performance / generated code in GCC.) | |
23051 | ||
23052 | * runtime/JSObject.h: | |
23053 | (JSC::JSObject::JSObject): Removed accidental usage of FIELD_OFFSET -- | |
23054 | OBJECT_OFFSETOF is our new macro name. (FIELD_OFFSET conflicts with a | |
23055 | definition in winnt.h.) | |
23056 | ||
23057 | * runtime/JSValue.cpp: Added some headers needed by non-all-in-one builds. | |
23058 | ||
23059 | * runtime/JSValue.h: | |
23060 | (JSC::JSValue::): Made the tag signed, to match MSVC's signed enum values. | |
23061 | (GCC doesn't seem to care one way or the other.) | |
23062 | ||
23063 | * wtf/MainThread.cpp: Moved the StdLibExtras.h #include -- I did this a | |
23064 | while ago to resolve a conflict with winnt.h. I can't remember if it's truly | |
23065 | still needed, but what the heck. | |
23066 | ||
23067 | * wtf/StdLibExtras.h: Moved OBJECT_OFFSETOF definition here. | |
23068 | ||
23069 | 2009-07-06 Geoffrey Garen <ggaren@apple.com> | |
23070 | ||
23071 | Reviewed by Sam Weinig (?). | |
23072 | ||
23073 | Fixed an assertion seen during the stress test. | |
23074 | ||
23075 | Don't assume that, if op1 is constant, op2 is not, and vice versa. Sadly, | |
23076 | not all constants get folded. | |
23077 | ||
23078 | * jit/JITArithmetic.cpp: | |
23079 | (JSC::JIT::emit_op_jnless): | |
23080 | (JSC::JIT::emitSlow_op_jnless): | |
23081 | (JSC::JIT::emit_op_jnlesseq): | |
23082 | (JSC::JIT::emitSlow_op_jnlesseq): | |
23083 | ||
23084 | 2009-07-06 Geoffrey Garen <ggaren@apple.com> | |
23085 | ||
23086 | Reviewed by Sam Weinig. | |
23087 | ||
23088 | Include op_convert_this in result caching. | |
23089 | ||
23090 | No change on SunSpider or v8. | |
23091 | ||
23092 | * jit/JITOpcodes.cpp: | |
23093 | (JSC::JIT::emit_op_convert_this): | |
23094 | ||
23095 | * jit/JITStubs.cpp: | |
23096 | (JSC::DEFINE_STUB_FUNCTION): | |
23097 | * jit/JITStubs.h: | |
23098 | (JSC::): Made the op_convert_this JIT stub return an EncodedJSValue, so | |
23099 | to maintain the result caching contract that { tag, payload } can be | |
23100 | found in { regT1, regT0 }. | |
23101 | ||
23102 | 2009-07-06 Geoffrey Garen <ggaren@apple.com> | |
23103 | ||
23104 | Reviewed by Sam Weinig. | |
23105 | ||
23106 | Implemented result chaining. | |
23107 | ||
23108 | 1% faster on SunSpider. 4%-5% faster on v8. | |
23109 | ||
23110 | * assembler/MacroAssemblerX86Common.h: | |
23111 | (JSC::MacroAssemblerX86Common::move): | |
23112 | * assembler/X86Assembler.h: | |
23113 | (JSC::X86Assembler::movl_rr): Added an optimization to eliminate | |
23114 | no-op mov instructions, to simplify chaining. | |
23115 | ||
23116 | * jit/JIT.cpp: | |
23117 | (JSC::JIT::JIT): | |
23118 | * jit/JIT.h: Added data members and helper functions for recording | |
23119 | chained results. We record both a mapping from virtual to machine register | |
23120 | and the opcode for which the mapping is valid, to help ensure that the | |
23121 | mapping isn't used after the mapped register has been stomped by other | |
23122 | instructions. | |
23123 | ||
23124 | * jit/JITCall.cpp: | |
23125 | (JSC::JIT::compileOpCallVarargs): | |
23126 | (JSC::JIT::compileOpCallVarargsSlowCase): | |
23127 | (JSC::JIT::emit_op_ret): | |
23128 | (JSC::JIT::emit_op_construct_verify): | |
23129 | (JSC::JIT::compileOpCall): | |
23130 | (JSC::JIT::compileOpCallSlowCase): Chain function call results. | |
23131 | ||
23132 | * jit/JITInlineMethods.h: | |
23133 | (JSC::JIT::emitLoadTag): | |
23134 | (JSC::JIT::emitLoadPayload): | |
23135 | (JSC::JIT::emitLoad): | |
23136 | (JSC::JIT::emitLoad2): | |
23137 | (JSC::JIT::isLabeled): | |
23138 | (JSC::JIT::map): | |
23139 | (JSC::JIT::unmap): | |
23140 | (JSC::JIT::isMapped): | |
23141 | (JSC::JIT::getMappedPayload): | |
23142 | (JSC::JIT::getMappedTag): Use helper functions when loading virtual | |
23143 | registers into machine registers, in case the loads can be eliminated | |
23144 | by chaining. | |
23145 | ||
23146 | * jit/JITOpcodes.cpp: | |
23147 | (JSC::JIT::emit_op_mov): | |
23148 | (JSC::JIT::emit_op_end): | |
23149 | (JSC::JIT::emit_op_instanceof): | |
23150 | (JSC::JIT::emit_op_get_global_var): | |
23151 | (JSC::JIT::emit_op_put_global_var): | |
23152 | (JSC::JIT::emit_op_get_scoped_var): | |
23153 | (JSC::JIT::emit_op_put_scoped_var): | |
23154 | (JSC::JIT::emit_op_to_primitive): | |
23155 | (JSC::JIT::emit_op_resolve_global): | |
23156 | (JSC::JIT::emit_op_jneq_ptr): | |
23157 | (JSC::JIT::emit_op_next_pname): | |
23158 | (JSC::JIT::emit_op_to_jsnumber): | |
23159 | (JSC::JIT::emit_op_catch): Chain results from these opcodes. | |
23160 | ||
23161 | (JSC::JIT::emit_op_profile_will_call): | |
23162 | (JSC::JIT::emit_op_profile_did_call): Load the profiler into regT2 to | |
23163 | avoid stomping a chained result. | |
23164 | ||
23165 | * jit/JITPropertyAccess.cpp: | |
23166 | (JSC::JIT::emit_op_method_check): | |
23167 | (JSC::JIT::emit_op_get_by_val): | |
23168 | (JSC::JIT::emit_op_get_by_id): Chain results from these opcodes. | |
23169 | ||
23170 | * jit/JITStubCall.h: | |
23171 | (JSC::JITStubCall::addArgument): Always use { regT1, regT0 }, to facilitate | |
23172 | chaining. | |
23173 | ||
23174 | (JSC::JITStubCall::call): Unmap all mapped registers, since our callee | |
23175 | stub might stomp them. | |
23176 | ||
23177 | 2009-07-01 Sam Weinig <sam@webkit.org> | |
23178 | ||
23179 | Reviewed by Gavin Barraclough. | |
23180 | ||
23181 | Don't reload values in emitBinaryDoubleOp. | |
23182 | ||
23183 | SunSpider reports a 0.6% progression. | |
23184 | ||
23185 | * jit/JIT.h: | |
23186 | * jit/JITArithmetic.cpp: | |
23187 | (JSC::JIT::emit_op_jnless): | |
23188 | (JSC::JIT::emit_op_jnlesseq): | |
23189 | (JSC::JIT::emitBinaryDoubleOp): | |
23190 | ||
23191 | 2009-07-01 Sam Weinig <sam@webkit.org> | |
23192 | ||
23193 | Reviewed by Geoffrey Garen. | |
23194 | ||
23195 | Convert op_div to load op1 and op2 up front. | |
23196 | ||
23197 | * jit/JITArithmetic.cpp: | |
23198 | (JSC::JIT::emit_op_div): | |
23199 | ||
23200 | 2009-07-01 Sam Weinig <sam@webkit.org> | |
23201 | ||
23202 | Reviewed by Geoffrey Garen. | |
23203 | ||
23204 | Don't emit code in emitBinaryDoubleOp if code is unreachable, observable | |
23205 | via an empty (unlinked) jumplist passed in. This only effects op_jnless | |
23206 | and op_jnlesseq at present. | |
23207 | ||
23208 | * jit/JITArithmetic.cpp: | |
23209 | (JSC::JIT::emitSlow_op_jnless): | |
23210 | (JSC::JIT::emitSlow_op_jnlesseq): | |
23211 | (JSC::JIT::emitBinaryDoubleOp): | |
23212 | ||
23213 | 2009-07-01 Geoffrey Garen <ggaren@apple.com> | |
23214 | ||
23215 | Reviewed by Sam Weinig. | |
23216 | ||
23217 | Converted op_mod to put { tag, payload } in { regT1, regT0 }, and | |
23218 | tidied up its constant case. | |
23219 | ||
23220 | SunSpider reports a 0.2% regression, but a micro-benchmark of op_mod | |
23221 | shows a 12% speedup, and the SunSpider test that uses op_mod most should | |
23222 | benefit a lot from result caching in the end, since it almost always | |
23223 | performs (expression) % constant. | |
23224 | ||
23225 | * jit/JITArithmetic.cpp: | |
23226 | (JSC::JIT::emit_op_mod): | |
23227 | (JSC::JIT::emitSlow_op_mod): | |
23228 | ||
23229 | 2009-06-30 Sam Weinig <sam@webkit.org> | |
23230 | ||
23231 | Reviewed by Geoffrey Garen. | |
23232 | ||
23233 | Converted some more arithmetic ops to put { tag, payload } in | |
23234 | { regT1, regT0 }. | |
23235 | ||
23236 | * jit/JITArithmetic.cpp: | |
23237 | (JSC::JIT::emit_op_mul): | |
23238 | (JSC::JIT::emitSlow_op_mul): | |
23239 | ||
23240 | 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
23241 | ||
23242 | Reviewed by Sam Weinig. | |
23243 | ||
23244 | Converted some more arithmetic ops to put { tag, payload } in | |
23245 | { regT1, regT0 }, and added a case for subtract constant. | |
23246 | ||
23247 | SunSpider says no change. v8 says 0.3% slower. | |
23248 | ||
23249 | * jit/JIT.h: | |
23250 | * jit/JITArithmetic.cpp: | |
23251 | (JSC::JIT::emit_op_add): | |
23252 | (JSC::JIT::emitAdd32Constant): | |
23253 | (JSC::JIT::emitSlow_op_add): | |
23254 | (JSC::JIT::emit_op_sub): | |
23255 | (JSC::JIT::emitSub32Constant): | |
23256 | (JSC::JIT::emitSlow_op_sub): | |
23257 | ||
23258 | 2009-06-30 Gavin Barraclough <barraclough@apple.com> | |
23259 | ||
23260 | Reviewed by Sam Weinig. | |
23261 | ||
23262 | Remove more uses of addressFor(), load double constants directly from | |
23263 | the constantpool in the CodeBlock, rather than from the register file. | |
23264 | ||
23265 | * jit/JITArithmetic.cpp: | |
23266 | (JSC::JIT::emitAdd32Constant): | |
23267 | (JSC::JIT::emitBinaryDoubleOp): | |
23268 | ||
23269 | 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
23270 | ||
23271 | Reviewed by Sam Weinig. | |
23272 | ||
23273 | Fixed a bug in postfix ops, where we would treat x = x++ and x = x-- | |
23274 | as a no-op, even if x were not an int, and the ++/-- could have side-effects. | |
23275 | ||
23276 | * jit/JITArithmetic.cpp: | |
23277 | (JSC::JIT::emit_op_post_inc): | |
23278 | (JSC::JIT::emitSlow_op_post_inc): | |
23279 | (JSC::JIT::emit_op_post_dec): | |
23280 | (JSC::JIT::emitSlow_op_post_dec): | |
23281 | ||
23282 | 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
23283 | ||
23284 | Reviewed by Sam Weinig. | |
23285 | ||
23286 | Converted some arithmetic ops to put { tag, payload } in | |
23287 | { regT1, regT0 }. | |
23288 | ||
23289 | SunSpider says 0.7% faster. v8 says no change. | |
23290 | ||
23291 | * jit/JIT.h: | |
23292 | * jit/JITArithmetic.cpp: | |
23293 | (JSC::JIT::emit_op_jnless): | |
23294 | (JSC::JIT::emit_op_jnlesseq): | |
23295 | (JSC::JIT::emit_op_lshift): | |
23296 | (JSC::JIT::emit_op_rshift): | |
23297 | (JSC::JIT::emit_op_bitand): | |
23298 | (JSC::JIT::emit_op_bitor): | |
23299 | (JSC::JIT::emit_op_bitxor): | |
23300 | * jit/JITInlineMethods.h: | |
23301 | (JSC::JIT::isOperandConstantImmediateInt): | |
23302 | (JSC::JIT::getOperandConstantImmediateInt): | |
23303 | ||
23304 | 2009-06-30 Gavin Barraclough <barraclough@apple.com> | |
23305 | ||
23306 | Reviewed by Sam Weinig. | |
23307 | ||
23308 | Start removing cases of addressFor(). | |
23309 | ||
23310 | * jit/JIT.h: | |
23311 | * jit/JITArithmetic.cpp: | |
23312 | (JSC::JIT::emitAdd32Constant): | |
23313 | (JSC::JIT::emitBinaryDoubleOp): | |
23314 | (JSC::JIT::emit_op_div): | |
23315 | * jit/JITInlineMethods.h: | |
23316 | (JSC::JIT::emitLoadDouble): | |
23317 | (JSC::JIT::emitLoadInt32ToDouble): | |
23318 | (JSC::JIT::emitStoreDouble): | |
23319 | * jit/JITOpcodes.cpp: | |
23320 | (JSC::JIT::emit_op_jfalse): | |
23321 | (JSC::JIT::emit_op_jtrue): | |
23322 | ||
23323 | 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
23324 | ||
23325 | Rolled back in my last patch with regression fixed. | |
23326 | ||
23327 | * jit/JIT.cpp: | |
23328 | (JSC::JIT::privateCompileSlowCases): | |
23329 | * jit/JIT.h: | |
23330 | * jit/JITOpcodes.cpp: | |
23331 | (JSC::JIT::emit_op_loop_if_less): | |
23332 | (JSC::JIT::emit_op_loop_if_lesseq): | |
23333 | (JSC::JIT::emit_op_resolve_global): | |
23334 | (JSC::JIT::emitSlow_op_resolve_global): | |
23335 | (JSC::JIT::emit_op_eq): | |
23336 | (JSC::JIT::emitSlow_op_eq): | |
23337 | (JSC::JIT::emit_op_neq): | |
23338 | (JSC::JIT::emitSlow_op_neq): | |
23339 | ||
23340 | 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
23341 | ||
23342 | Rolled out my last patch because it was a 2% SunSpider regression. | |
23343 | ||
23344 | * jit/JIT.cpp: | |
23345 | (JSC::JIT::privateCompileSlowCases): | |
23346 | * jit/JIT.h: | |
23347 | * jit/JITOpcodes.cpp: | |
23348 | (JSC::JIT::emit_op_loop_if_less): | |
23349 | (JSC::JIT::emit_op_loop_if_lesseq): | |
23350 | (JSC::JIT::emit_op_resolve_global): | |
23351 | (JSC::JIT::emit_op_eq): | |
23352 | (JSC::JIT::emitSlow_op_eq): | |
23353 | (JSC::JIT::emit_op_neq): | |
23354 | (JSC::JIT::emitSlow_op_neq): | |
23355 | ||
23356 | 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
23357 | ||
23358 | Reviewed by Gavin "Sam Weinig" Barraclough. | |
23359 | ||
23360 | Standardized the rest of our opcodes to put { tag, payload } in | |
23361 | { regT1, regT0 } where possible. | |
23362 | ||
23363 | * jit/JIT.cpp: | |
23364 | (JSC::JIT::privateCompileSlowCases): | |
23365 | * jit/JIT.h: | |
23366 | * jit/JITOpcodes.cpp: | |
23367 | (JSC::JIT::emit_op_loop_if_less): | |
23368 | (JSC::JIT::emit_op_loop_if_lesseq): | |
23369 | (JSC::JIT::emit_op_resolve_global): | |
23370 | (JSC::JIT::emitSlow_op_resolve_global): | |
23371 | (JSC::JIT::emit_op_eq): | |
23372 | (JSC::JIT::emitSlow_op_eq): | |
23373 | (JSC::JIT::emit_op_neq): | |
23374 | (JSC::JIT::emitSlow_op_neq): | |
23375 | ||
23376 | 2009-06-30 Gavin Barraclough <barraclough@apple.com> | |
23377 | ||
23378 | Reviewed by Geoffrey Garen. | |
23379 | ||
23380 | Replace calls to store32(tagFor()) and store32(payloadFor()) | |
23381 | with emitStoreInt32(), emitStoreBool(), and emitStoreCell(). | |
23382 | ||
23383 | * jit/JIT.h: | |
23384 | * jit/JITArithmetic.cpp: | |
23385 | (JSC::JIT::emit_op_negate): | |
23386 | (JSC::JIT::emit_op_lshift): | |
23387 | (JSC::JIT::emit_op_rshift): | |
23388 | (JSC::JIT::emit_op_bitand): | |
23389 | (JSC::JIT::emitBitAnd32Constant): | |
23390 | (JSC::JIT::emit_op_bitor): | |
23391 | (JSC::JIT::emitBitOr32Constant): | |
23392 | (JSC::JIT::emit_op_bitxor): | |
23393 | (JSC::JIT::emitBitXor32Constant): | |
23394 | (JSC::JIT::emit_op_bitnot): | |
23395 | (JSC::JIT::emit_op_post_inc): | |
23396 | (JSC::JIT::emit_op_post_dec): | |
23397 | (JSC::JIT::emit_op_pre_inc): | |
23398 | (JSC::JIT::emit_op_pre_dec): | |
23399 | (JSC::JIT::emit_op_add): | |
23400 | (JSC::JIT::emitAdd32Constant): | |
23401 | (JSC::JIT::emit_op_sub): | |
23402 | (JSC::JIT::emitSub32ConstantLeft): | |
23403 | (JSC::JIT::emitSub32ConstantRight): | |
23404 | (JSC::JIT::emit_op_mul): | |
23405 | (JSC::JIT::emitSlow_op_mul): | |
23406 | (JSC::JIT::emit_op_div): | |
23407 | (JSC::JIT::emit_op_mod): | |
23408 | * jit/JITCall.cpp: | |
23409 | (JSC::JIT::emit_op_load_varargs): | |
23410 | * jit/JITInlineMethods.h: | |
23411 | (JSC::JIT::emitStoreInt32): | |
23412 | (JSC::JIT::emitStoreCell): | |
23413 | (JSC::JIT::emitStoreBool): | |
23414 | (JSC::JIT::emitStore): | |
23415 | * jit/JITOpcodes.cpp: | |
23416 | (JSC::JIT::emit_op_instanceof): | |
23417 | (JSC::JIT::emit_op_not): | |
23418 | (JSC::JIT::emit_op_eq): | |
23419 | (JSC::JIT::emitSlow_op_eq): | |
23420 | (JSC::JIT::emit_op_neq): | |
23421 | (JSC::JIT::emitSlow_op_neq): | |
23422 | (JSC::JIT::compileOpStrictEq): | |
23423 | (JSC::JIT::emit_op_eq_null): | |
23424 | (JSC::JIT::emit_op_neq_null): | |
23425 | * jit/JITStubCall.h: | |
23426 | (JSC::JITStubCall::call): | |
23427 | ||
23428 | 2009-06-30 Geoffrey Garen <ggaren@apple.com> | |
23429 | ||
23430 | Reviewed by Sam Weinig. | |
23431 | ||
23432 | Standardized the rest of the property access instructions to put { tag, | |
23433 | payload } in { regT1, regT0 }. | |
23434 | ||
23435 | Small v8 speedup, 0.2% SunSpider slowdown. | |
23436 | ||
23437 | * jit/JIT.h: | |
23438 | * jit/JITInlineMethods.h: | |
23439 | (JSC::JIT::emitLoad): | |
23440 | (JSC::JIT::emitLoad2): | |
23441 | * jit/JITPropertyAccess.cpp: | |
23442 | (JSC::JIT::emit_op_get_by_val): | |
23443 | (JSC::JIT::emitSlow_op_get_by_val): | |
23444 | (JSC::JIT::emit_op_put_by_val): | |
23445 | (JSC::JIT::emitSlow_op_put_by_val): | |
23446 | (JSC::JIT::emit_op_put_by_id): | |
23447 | (JSC::JIT::emitSlow_op_put_by_id): | |
23448 | (JSC::JIT::patchPutByIdReplace): | |
23449 | ||
23450 | 2009-06-29 Sam Weinig <sam@webkit.org> | |
23451 | ||
23452 | Reviewed by Gavin Barraclough. | |
23453 | ||
23454 | Various cleanups. | |
23455 | - Use fpRegT* instead of X86::xmm*. | |
23456 | - Use a switch statement in emitBinaryDoubleOp instead of a bunch of | |
23457 | if/elses. | |
23458 | ||
23459 | * jit/JITArithmetic.cpp: | |
23460 | (JSC::JIT::emitAdd32Constant): | |
23461 | (JSC::JIT::emitBinaryDoubleOp): | |
23462 | (JSC::JIT::emit_op_div): | |
23463 | ||
23464 | 2009-06-29 Sam Weinig <sam@webkit.org> | |
23465 | ||
23466 | Reviewed by Geoffrey Garen. | |
23467 | ||
23468 | Add inline code dealing with doubles for op_jfalse and op_jtrue. | |
23469 | ||
23470 | * assembler/MacroAssemblerX86Common.h: | |
23471 | (JSC::MacroAssemblerX86Common::): | |
23472 | (JSC::MacroAssemblerX86Common::zeroDouble): | |
23473 | * jit/JITOpcodes.cpp: | |
23474 | (JSC::JIT::emit_op_jfalse): | |
23475 | (JSC::JIT::emit_op_jtrue): | |
23476 | ||
23477 | 2009-06-28 Geoffrey Garen <ggaren@apple.com> | |
23478 | ||
23479 | Reviewed by Sam Weinig. | |
23480 | ||
23481 | Standardized op_get_by_id to put { tag, payload } in { regT1, regT0 }. | |
23482 | ||
23483 | SunSpider and v8 report maybe 0.2%-0.4% regressions, but the optimization | |
23484 | this enables will win much more than that back. | |
23485 | ||
23486 | * jit/JIT.cpp: | |
23487 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
23488 | * jit/JIT.h: | |
23489 | * jit/JITPropertyAccess.cpp: | |
23490 | (JSC::JIT::emit_op_method_check): | |
23491 | (JSC::JIT::emit_op_get_by_id): | |
23492 | (JSC::JIT::compileGetByIdHotPath): | |
23493 | (JSC::JIT::compileGetByIdSlowCase): | |
23494 | (JSC::JIT::patchGetByIdSelf): | |
23495 | (JSC::JIT::privateCompilePatchGetArrayLength): | |
23496 | (JSC::JIT::privateCompileGetByIdProto): | |
23497 | (JSC::JIT::privateCompileGetByIdSelfList): | |
23498 | (JSC::JIT::privateCompileGetByIdProtoList): | |
23499 | (JSC::JIT::privateCompileGetByIdChainList): | |
23500 | (JSC::JIT::privateCompileGetByIdChain): | |
23501 | ||
23502 | 2009-06-26 Geoffrey Garen <ggaren@apple.com> | |
23503 | ||
23504 | Reviewed by Maciej Stachowiak. | |
23505 | ||
23506 | Standardized op_call to put { tag, payload } in { regT1, regT0 }. | |
23507 | ||
23508 | SunSpider and v8 report no change. | |
23509 | ||
23510 | * jit/JIT.cpp: | |
23511 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
23512 | * jit/JITCall.cpp: | |
23513 | (JSC::JIT::compileOpCallInitializeCallFrame): | |
23514 | (JSC::JIT::compileOpCallSetupArgs): | |
23515 | (JSC::JIT::compileOpConstructSetupArgs): | |
23516 | (JSC::JIT::compileOpCallVarargsSetupArgs): | |
23517 | (JSC::JIT::compileOpCallVarargs): | |
23518 | (JSC::JIT::compileOpCall): | |
23519 | (JSC::JIT::compileOpCallSlowCase): | |
23520 | ||
23521 | 2009-06-26 Sam Weinig <sam@webkit.org> | |
23522 | ||
23523 | Reviewed by Geoffrey Garen. | |
23524 | ||
23525 | Handle multiplying by zero a little better by | |
23526 | inlining the case that both operands are non-negative | |
23527 | into the slowpath. | |
23528 | ||
23529 | * assembler/MacroAssemblerX86Common.h: | |
23530 | (JSC::MacroAssemblerX86Common::branchOr32): | |
23531 | * jit/JITArithmetic.cpp: | |
23532 | (JSC::JIT::emit_op_mul): | |
23533 | (JSC::JIT::emitSlow_op_mul): | |
23534 | ||
23535 | 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
23536 | ||
23537 | Reviewed by Sam Weinig. | |
23538 | ||
23539 | Optimize x++ to ++x inside for loops. | |
23540 | ||
23541 | Sadly, no measurable speedup, but this should help with result chaining. | |
23542 | ||
23543 | * parser/Nodes.cpp: | |
23544 | (JSC::ForNode::emitBytecode): | |
23545 | ||
23546 | 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
23547 | ||
23548 | Reviewed by Sam Weinig. | |
23549 | ||
23550 | Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. | |
23551 | ||
23552 | * jit/JITArithmetic.cpp: | |
23553 | (JSC::JIT::emitSlow_op_bitnot): | |
23554 | (JSC::JIT::emit_op_post_inc): | |
23555 | ||
23556 | 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
23557 | ||
23558 | Reviewed by Sam Weinig. | |
23559 | ||
23560 | Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. | |
23561 | ||
23562 | * jit/JITArithmetic.cpp: | |
23563 | (JSC::JIT::emit_op_bitnot): | |
23564 | (JSC::JIT::emit_op_post_dec): | |
23565 | (JSC::JIT::emit_op_pre_inc): | |
23566 | (JSC::JIT::emitSlow_op_pre_inc): | |
23567 | (JSC::JIT::emit_op_pre_dec): | |
23568 | (JSC::JIT::emitSlow_op_pre_dec): | |
23569 | ||
23570 | 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
23571 | ||
23572 | Reviewed by Sam Weinig. | |
23573 | ||
23574 | Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. | |
23575 | ||
23576 | * jit/JITArithmetic.cpp: | |
23577 | (JSC::JIT::emit_op_negate): | |
23578 | (JSC::JIT::emitSlow_op_negate): | |
23579 | * jit/JITCall.cpp: | |
23580 | (JSC::JIT::emit_op_construct_verify): | |
23581 | (JSC::JIT::emitSlow_op_construct_verify): | |
23582 | ||
23583 | 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
23584 | ||
23585 | Reviewed by Sam Weinig. | |
23586 | ||
23587 | Standardized some more opcodes to put { tag, payload } in { regT1, regT0 }. | |
23588 | ||
23589 | * jit/JITOpcodes.cpp: | |
23590 | (JSC::JIT::emit_op_loop_if_true): | |
23591 | (JSC::JIT::emit_op_jfalse): | |
23592 | (JSC::JIT::emit_op_jtrue): | |
23593 | (JSC::JIT::emit_op_jeq_null): | |
23594 | (JSC::JIT::emit_op_jneq_null): | |
23595 | (JSC::JIT::emit_op_eq_null): | |
23596 | (JSC::JIT::emit_op_neq_null): | |
23597 | ||
23598 | 2009-06-25 Geoffrey Garen <ggaren@apple.com> | |
23599 | ||
23600 | Reviewed by Sam Weinig (sort of, maybe). | |
23601 | ||
23602 | Fixed some ASSERTs in http/tests/security. | |
23603 | ||
23604 | These ASSERTs were introduced by http://trac.webkit.org/changeset/45057, | |
23605 | but the underlying problem was actually older. http://trac.webkit.org/changeset/45057 | |
23606 | just exposed the problem by enabling optimization in more cases. | |
23607 | ||
23608 | The ASSERTs fired because we tested PropertySlot::slotBase() for validity, | |
23609 | but slotBase() ASSERTs if it's invalid, so we would ASSERT before | |
23610 | the test could happen. Solution: Remove the ASSERT. Maybe it was valid | |
23611 | once, but it clearly goes against a pattern we've deployed of late. | |
23612 | ||
23613 | The underlying problem was that WebCore would re-use a PropertySlot in | |
23614 | the case of a forwarding access, and the second use would not completely | |
23615 | overwrite the first use. Solution: Make sure to overwrite m_offset when | |
23616 | setting a value on a PropertySlot. (Other values already get implicitly | |
23617 | overwritten during reuse.) | |
23618 | ||
23619 | * runtime/PropertySlot.h: | |
23620 | (JSC::PropertySlot::PropertySlot): | |
23621 | (JSC::PropertySlot::setValueSlot): | |
23622 | (JSC::PropertySlot::setValue): | |
23623 | (JSC::PropertySlot::setRegisterSlot): | |
23624 | (JSC::PropertySlot::setUndefined): | |
23625 | (JSC::PropertySlot::slotBase): | |
23626 | (JSC::PropertySlot::clearOffset): | |
23627 | ||
23628 | 2009-06-24 Gavin Barraclough <barraclough@apple.com> | |
23629 | ||
23630 | Reviewed by Geoff Garen. | |
23631 | ||
23632 | Enable JIT_OPTIMIZE_METHOD_CALLS on the branch, implementation matches current implemenatation in ToT. | |
23633 | ||
23634 | * jit/JIT.h: | |
23635 | * jit/JITPropertyAccess.cpp: | |
23636 | (JSC::JIT::emit_op_method_check): | |
23637 | (JSC::JIT::emitSlow_op_method_check): | |
23638 | (JSC::JIT::emit_op_get_by_id): | |
23639 | (JSC::JIT::compileGetByIdHotPath): | |
23640 | (JSC::JIT::emitSlow_op_get_by_id): | |
23641 | (JSC::JIT::compileGetByIdSlowCase): | |
23642 | ||
23643 | 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
23644 | ||
23645 | Reviewed by Sam Weinig. | |
23646 | ||
23647 | Bit off a tiny bit more of standardizing opcode behavior to help with result | |
23648 | caching. | |
23649 | ||
23650 | SunSpider reports no change, v8 maybe a tiny speedup. | |
23651 | ||
23652 | * jit/JITOpcodes.cpp: | |
23653 | (JSC::JIT::emit_op_to_jsnumber): | |
23654 | (JSC::JIT::emitSlow_op_to_jsnumber): | |
23655 | (JSC::JIT::emit_op_convert_this): | |
23656 | (JSC::JIT::emitSlow_op_convert_this): | |
23657 | ||
23658 | 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
23659 | ||
23660 | Reviewed by Sam Weinig. | |
23661 | ||
23662 | Bit off a tiny bit more of standardizing opcode behavior to help with result | |
23663 | caching -- including removing my old enemy, op_resolve_function, because | |
23664 | it was non-standard, and removing it felt better than helping it limp along. | |
23665 | ||
23666 | SunSpider reports no change, v8 maybe a tiny speedup. | |
23667 | ||
23668 | * bytecode/CodeBlock.cpp: | |
23669 | (JSC::CodeBlock::dump): | |
23670 | * bytecode/Opcode.h: | |
23671 | * bytecompiler/BytecodeGenerator.cpp: | |
23672 | * bytecompiler/BytecodeGenerator.h: | |
23673 | * interpreter/Interpreter.cpp: | |
23674 | (JSC::Interpreter::privateExecute): | |
23675 | * jit/JIT.cpp: | |
23676 | (JSC::JIT::privateCompileMainPass): | |
23677 | * jit/JIT.h: | |
23678 | * jit/JITOpcodes.cpp: | |
23679 | (JSC::JIT::emit_op_get_scoped_var): | |
23680 | (JSC::JIT::emit_op_put_scoped_var): | |
23681 | (JSC::JIT::emit_op_to_primitive): | |
23682 | (JSC::JIT::emitSlow_op_to_primitive): | |
23683 | * jit/JITStubs.cpp: | |
23684 | * jit/JITStubs.h: | |
23685 | * parser/Nodes.cpp: | |
23686 | (JSC::FunctionCallResolveNode::emitBytecode): | |
23687 | ||
23688 | 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
23689 | ||
23690 | Reviewed by Sam Weinig. | |
23691 | ||
23692 | Bit off a tiny bit of standardizing opcode behavior to help with result | |
23693 | caching. | |
23694 | ||
23695 | 0.6% SunSpider speedup. 0.3% v8 speedup. | |
23696 | ||
23697 | * jit/JITInlineMethods.h: | |
23698 | (JSC::JIT::emitLoad): Accomodate a base register that overlaps with payload | |
23699 | by loading tag before payload, to avoid stomping base/payload. | |
23700 | ||
23701 | * jit/JITOpcodes.cpp: | |
23702 | (JSC::JIT::emit_op_mov): Abide by the standard "tag in regT1, payload in | |
23703 | regT0" semantics. | |
23704 | ||
23705 | (JSC::JIT::emit_op_get_global_var): | |
23706 | (JSC::JIT::emit_op_put_global_var): Ditto. Also, removed some irrelevent | |
23707 | loads while I was at it. The global object's "d" pointer never changes | |
23708 | after construction. | |
23709 | ||
23710 | 2009-06-23 Gavin Barraclough <barraclough@apple.com> | |
23711 | ||
23712 | Reviewed by Sam Weinig. | |
23713 | ||
23714 | Remove 'arguments' field from Register union (again). | |
23715 | This time do so without breaking tests (radical, I know). | |
23716 | ||
23717 | * interpreter/CallFrame.h: | |
23718 | (JSC::ExecState::optionalCalleeArguments): | |
23719 | (JSC::ExecState::setArgumentCount): | |
23720 | (JSC::ExecState::init): | |
23721 | * interpreter/Interpreter.cpp: | |
23722 | (JSC::Interpreter::dumpRegisters): | |
23723 | (JSC::Interpreter::unwindCallFrame): | |
23724 | (JSC::Interpreter::privateExecute): | |
23725 | (JSC::Interpreter::retrieveArguments): | |
23726 | * interpreter/Register.h: | |
23727 | (JSC::Register::withInt): | |
23728 | (JSC::Register::): | |
23729 | (JSC::Register::Register): | |
23730 | (JSC::Register::i): | |
23731 | * jit/JITStubs.cpp: | |
23732 | (JSC::JITStubs::cti_op_tear_off_arguments): | |
23733 | * runtime/Arguments.h: | |
23734 | (JSC::JSActivation::copyRegisters): | |
23735 | (JSC::Register::arguments): | |
23736 | * runtime/JSActivation.cpp: | |
23737 | (JSC::JSActivation::argumentsGetter): | |
23738 | * runtime/JSActivation.h: | |
23739 | ||
23740 | 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
23741 | ||
23742 | Reviewed by Sam Weinig. | |
23743 | ||
23744 | Removed some result register tracking cruft in preparation for a new | |
23745 | result tracking mechanism. | |
23746 | ||
23747 | SunSpider reports no change. | |
23748 | ||
23749 | * assembler/AbstractMacroAssembler.h: | |
23750 | * assembler/X86Assembler.h: | |
23751 | (JSC::X86Assembler::JmpDst::JmpDst): No need to track jump targets in | |
23752 | machine code; we already do this in bytecode. | |
23753 | ||
23754 | * jit/JIT.cpp: | |
23755 | (JSC::JIT::JIT): | |
23756 | (JSC::JIT::emitTimeoutCheck): Make sure to save and restore the result | |
23757 | registers, so an opcode with a timeout check can still benefit from result | |
23758 | register caching. | |
23759 | ||
23760 | (JSC::JIT::privateCompileMainPass): | |
23761 | (JSC::JIT::privateCompileSlowCases): Removed calls to killLastResultRegister() | |
23762 | in preparation for something new. | |
23763 | ||
23764 | * jit/JIT.h: | |
23765 | * jit/JITArithmetic.cpp: | |
23766 | (JSC::JIT::emit_op_jnless): | |
23767 | (JSC::JIT::emit_op_jnlesseq): | |
23768 | * jit/JITInlineMethods.h: | |
23769 | (JSC::JIT::emitGetFromCallFrameHeaderPtr): | |
23770 | (JSC::JIT::emitGetFromCallFrameHeader32): | |
23771 | * jit/JITOpcodes.cpp: | |
23772 | (JSC::JIT::emit_op_jmp): | |
23773 | (JSC::JIT::emit_op_jfalse): | |
23774 | (JSC::JIT::emit_op_jtrue): | |
23775 | (JSC::JIT::emit_op_jeq_null): | |
23776 | (JSC::JIT::emit_op_jneq_null): | |
23777 | (JSC::JIT::emit_op_jneq_ptr): | |
23778 | (JSC::JIT::emit_op_jsr): | |
23779 | (JSC::JIT::emit_op_sret): | |
23780 | (JSC::JIT::emit_op_jmp_scopes): ditto | |
23781 | ||
23782 | * jit/JITStubCall.h: | |
23783 | (JSC::JITStubCall::JITStubCall): | |
23784 | (JSC::JITStubCall::getArgument): added a mechanism for reloading an argument | |
23785 | you passed to a JIT stub, for use in emitTimeoutCheck. | |
23786 | ||
23787 | 2009-06-23 Sam Weinig <sam@webkit.org> | |
23788 | ||
23789 | Reviewed by Geoffrey Garen. | |
23790 | ||
23791 | Remove now-useless inplace variants of binary ops. | |
23792 | ||
23793 | * jit/JIT.h: | |
23794 | * jit/JITArithmetic.cpp: | |
23795 | (JSC::JIT::emit_op_bitand): | |
23796 | (JSC::JIT::emit_op_bitor): | |
23797 | (JSC::JIT::emit_op_bitxor): | |
23798 | (JSC::JIT::emit_op_add): | |
23799 | (JSC::JIT::emit_op_sub): | |
23800 | (JSC::JIT::emit_op_mul): | |
23801 | ||
23802 | 2009-06-23 Sam Weinig <sam@webkit.org> | |
23803 | ||
23804 | Reviewed by Geoffrey Garen. | |
23805 | ||
23806 | Move off memory operands to aid in re-enabling result caching. | |
23807 | ||
23808 | - No regression measured. | |
23809 | ||
23810 | * jit/JIT.h: | |
23811 | * jit/JITArithmetic.cpp: | |
23812 | (JSC::JIT::emit_op_negate): | |
23813 | (JSC::JIT::emit_op_jnless): | |
23814 | (JSC::JIT::emit_op_jnlesseq): | |
23815 | (JSC::JIT::emit_op_lshift): | |
23816 | (JSC::JIT::emit_op_rshift): | |
23817 | (JSC::JIT::emit_op_bitand): | |
23818 | (JSC::JIT::emitBitAnd32Constant): | |
23819 | (JSC::JIT::emitBitAnd32InPlace): | |
23820 | (JSC::JIT::emit_op_bitor): | |
23821 | (JSC::JIT::emitBitOr32Constant): | |
23822 | (JSC::JIT::emitBitOr32InPlace): | |
23823 | (JSC::JIT::emit_op_bitxor): | |
23824 | (JSC::JIT::emitBitXor32Constant): | |
23825 | (JSC::JIT::emitBitXor32InPlace): | |
23826 | (JSC::JIT::emit_op_bitnot): | |
23827 | (JSC::JIT::emit_op_post_inc): | |
23828 | (JSC::JIT::emit_op_post_dec): | |
23829 | (JSC::JIT::emit_op_pre_inc): | |
23830 | (JSC::JIT::emitSlow_op_pre_inc): | |
23831 | (JSC::JIT::emit_op_pre_dec): | |
23832 | (JSC::JIT::emitSlow_op_pre_dec): | |
23833 | (JSC::JIT::emit_op_add): | |
23834 | (JSC::JIT::emitAdd32Constant): | |
23835 | (JSC::JIT::emitAdd32InPlace): | |
23836 | (JSC::JIT::emitSlow_op_add): | |
23837 | (JSC::JIT::emitSlowAdd32Constant): | |
23838 | (JSC::JIT::emit_op_sub): | |
23839 | (JSC::JIT::emitSlow_op_sub): | |
23840 | (JSC::JIT::emitSub32ConstantLeft): | |
23841 | (JSC::JIT::emitSub32ConstantRight): | |
23842 | (JSC::JIT::emitSub32InPlaceLeft): | |
23843 | (JSC::JIT::emitSub32InPlaceRight): | |
23844 | (JSC::JIT::emitBinaryDoubleOp): | |
23845 | (JSC::JIT::emit_op_mul): | |
23846 | (JSC::JIT::emitMul32InPlace): | |
23847 | (JSC::JIT::emit_op_div): | |
23848 | (JSC::JIT::emit_op_mod): | |
23849 | * jit/JITCall.cpp: | |
23850 | (JSC::JIT::compileOpCallVarargs): | |
23851 | * jit/JITOpcodes.cpp: | |
23852 | (JSC::JIT::emit_op_loop_if_less): | |
23853 | (JSC::JIT::emit_op_loop_if_lesseq): | |
23854 | (JSC::JIT::emit_op_instanceof): | |
23855 | (JSC::JIT::emit_op_to_primitive): | |
23856 | (JSC::JIT::emit_op_not): | |
23857 | (JSC::JIT::emit_op_jneq_ptr): | |
23858 | (JSC::JIT::emit_op_eq): | |
23859 | (JSC::JIT::emit_op_neq): | |
23860 | (JSC::JIT::emit_op_to_jsnumber): | |
23861 | * jit/JITPropertyAccess.cpp: | |
23862 | (JSC::JIT::emit_op_get_by_val): | |
23863 | (JSC::JIT::emit_op_put_by_val): | |
23864 | ||
23865 | 2009-06-23 Geoffrey Garen <ggaren@apple.com> | |
23866 | ||
23867 | Reviewed by Sam Weinig. | |
23868 | ||
23869 | Fixed some missing and/or misplaced labels in bytecode generation, so | |
23870 | we don't have to work around them in JIT code generation. | |
23871 | ||
23872 | * bytecompiler/BytecodeGenerator.cpp: | |
23873 | (JSC::BytecodeGenerator::emitJumpSubroutine): | |
23874 | * parser/Nodes.cpp: | |
23875 | (JSC::TryNode::emitBytecode): | |
23876 | ||
23877 | 2009-06-22 Geoffrey Garen <ggaren@apple.com> | |
23878 | ||
23879 | Reviewed by Sam Weinig. | |
23880 | ||
23881 | For member function calls, emit "this" directly into the "this" slot | |
23882 | for the function call, instead of moving it there later. This reduces | |
23883 | time spent in op_mov during certain calls, like "a.b.c()". | |
23884 | ||
23885 | 1%-2% speedup on v8, mostly richards and delta-blue. | |
23886 | ||
23887 | * parser/Nodes.cpp: | |
23888 | (JSC::FunctionCallDotNode::emitBytecode): | |
23889 | ||
23890 | 2009-06-22 Gavin Barraclough <barraclough@apple.com> | |
23891 | ||
23892 | Reviewed by Sam Weinig. | |
23893 | ||
23894 | Remove 'arguments' field from Register union. Having JSCell derived types in the union is | |
23895 | dangerous since it opens the possibility for the field to be written as a raw pointer but | |
23896 | then read as a JSValue. This will lead to statle data being read for the tag, which may | |
23897 | be dangerous. Having removed Arguments* types form Register, all arguments objects must | |
23898 | always explicitly be stored in the register file as JSValues. | |
23899 | ||
23900 | * interpreter/CallFrame.h: | |
23901 | (JSC::ExecState::optionalCalleeArguments): | |
23902 | * interpreter/Interpreter.cpp: | |
23903 | (JSC::Interpreter::unwindCallFrame): | |
23904 | (JSC::Interpreter::privateExecute): | |
23905 | (JSC::Interpreter::retrieveArguments): | |
23906 | * interpreter/Register.h: | |
23907 | (JSC::Register::): | |
23908 | * jit/JITStubs.cpp: | |
23909 | (JSC::JITStubs::cti_op_tear_off_arguments): | |
23910 | * runtime/Arguments.h: | |
23911 | (JSC::JSActivation::copyRegisters): | |
23912 | * runtime/JSActivation.cpp: | |
23913 | (JSC::JSActivation::argumentsGetter): | |
23914 | * runtime/JSActivation.h: | |
23915 | ||
23916 | 2009-06-03 Sam Weinig <sam@webkit.org> | |
23917 | ||
23918 | Reviewed by Geoffrey Garen. | |
23919 | ||
23920 | Add back known this value optimization by abstracting | |
23921 | slow case if not JSCell jumps. | |
23922 | ||
23923 | * jit/JIT.h: | |
23924 | * jit/JITCall.cpp: | |
23925 | (JSC::JIT::compileOpCallVarargs): | |
23926 | (JSC::JIT::compileOpCallVarargsSlowCase): | |
23927 | (JSC::JIT::compileOpCall): | |
23928 | (JSC::JIT::compileOpCallSlowCase): | |
23929 | * jit/JITInlineMethods.h: | |
23930 | (JSC::JIT::emitJumpSlowCaseIfNotJSCell): | |
23931 | (JSC::JIT::linkSlowCaseIfNotJSCell): | |
23932 | * jit/JITOpcodes.cpp: | |
23933 | (JSC::JIT::emit_op_instanceof): | |
23934 | (JSC::JIT::emitSlow_op_instanceof): | |
23935 | * jit/JITPropertyAccess.cpp: | |
23936 | (JSC::JIT::emit_op_get_by_val): | |
23937 | (JSC::JIT::emitSlow_op_get_by_val): | |
23938 | (JSC::JIT::emit_op_put_by_val): | |
23939 | (JSC::JIT::emitSlow_op_put_by_val): | |
23940 | (JSC::JIT::emit_op_get_by_id): | |
23941 | (JSC::JIT::emitSlow_op_get_by_id): | |
23942 | (JSC::JIT::emit_op_put_by_id): | |
23943 | (JSC::JIT::emitSlow_op_put_by_id): | |
23944 | ||
23945 | 2009-06-01 Geoffrey Garen <ggaren@apple.com> | |
23946 | ||
23947 | Reviewed by Sam Weinig. | |
23948 | ||
23949 | Fixed some of the regression in crypto-aes.js. (8.5% speedup in | |
23950 | crypto-aes.js.) | |
23951 | ||
23952 | SunSpider reports no change overall. | |
23953 | ||
23954 | Division was producing double results, which took the slow path through | |
23955 | array access code. | |
23956 | ||
23957 | Strangely, all my attempts at versions of this patch that modified array | |
23958 | access code to accept ints encoded as doubles along the fast or slow paths | |
23959 | were regressions. So I did this instead. | |
23960 | ||
23961 | * jit/JITArithmetic.cpp: | |
23962 | (JSC::JIT::emit_op_div): When dividing an int by an int, go ahead and try | |
23963 | to turn the result into an int. Don't just do int division, though, because | |
23964 | testing shows it to be slower than SSE double division, and the corner | |
23965 | cases are pretty complicated / lengthy on top of that. Also, don't try | |
23966 | to canonicalize division of known tiny numerators into ints, since that's a | |
23967 | waste of time. | |
23968 | ||
23969 | 2009-05-26 Geoffrey Garen <ggaren@apple.com> | |
23970 | ||
23971 | Reviewed by Oliver Hunt. | |
23972 | ||
23973 | Fixed a regression caused by my recent fix for NaN. | |
23974 | ||
23975 | * jit/JITArithmetic.cpp: | |
23976 | (JSC::JIT::emitBinaryDoubleOp): Actually do the comparison in reverse | |
23977 | order, like the ChangeLog said we would, bokay? | |
23978 | ||
23979 | 2009-05-26 Geoffrey Garen <ggaren@apple.com> | |
23980 | ||
23981 | Reviewed by Sam Weinig and Oliver Hunt. | |
23982 | ||
23983 | Fixed two edge cases in %: | |
23984 | ||
23985 | - Don't do -2147483648 % x as a fast case, since you might do -2147483648 % -1, | |
23986 | which will signal a hardware exception due to overflow. | |
23987 | ||
23988 | - In the case of a zero remainder, be sure to store negative zero if the | |
23989 | dividend was zero. | |
23990 | ||
23991 | SunSpider reports no change. | |
23992 | ||
23993 | * jit/JITArithmetic.cpp: | |
23994 | (JSC::JIT::emit_op_mod): | |
23995 | (JSC::JIT::emitSlow_op_mod): | |
23996 | ||
23997 | 2009-05-25 Geoffrey Garen <ggaren@apple.com> | |
23998 | ||
23999 | Reviewed by Maciej Stachowiak. | |
24000 | ||
24001 | Fixed a regression when comparing to NaN. | |
24002 | ||
24003 | * jit/JITArithmetic.cpp: | |
24004 | (JSC::JIT::emitBinaryDoubleOp): For op_jnless and op_jnless_eq, do the | |
24005 | comparison in reverse order, and jump if the result is below or | |
24006 | below-or-equal. This ensures that we do jump in the case of NaN. | |
24007 | ||
24008 | 2009-05-25 Geoffrey Garen <ggaren@apple.com> | |
24009 | ||
24010 | Reviewed by Oliver Hunt. | |
24011 | ||
24012 | SunSpider says no change. | |
24013 | ||
24014 | Fixed regressions in fast/js/var-declarations-shadowing.html and | |
24015 | fast/js/equality.html, caused by recent == and != optimizations. | |
24016 | ||
24017 | * jit/JITStubs.cpp: | |
24018 | (JSC::JITStubs::cti_op_eq): Don't treat "compare to string" as always | |
24019 | numeric or string comparison. If the second operand is an object, you | |
24020 | need to ToPrimitive it, and start all over again. Also, I wrote out each | |
24021 | of the possible cases explicitly, to cut down on redundant branching. | |
24022 | ||
24023 | 2009-05-25 Sam Weinig <sam@webkit.org> | |
24024 | ||
24025 | Reviewed by Mark Rowe. | |
24026 | ||
24027 | Fix bug in fast/js/constant-folding.html where we were not negating | |
24028 | -0 properly. | |
24029 | ||
24030 | * jit/JITArithmetic.cpp: | |
24031 | (JSC::JIT::emit_op_negate): | |
24032 | ||
24033 | 2009-05-23 Geoffrey Garen <ggaren@apple.com> | |
24034 | ||
24035 | Reviewed by Oliver Hunt. | |
24036 | ||
24037 | Refactored new slow case codegen for == and !=. | |
24038 | ||
24039 | SunSpider reports no change, maybe a tiny speedup. | |
24040 | ||
24041 | * jit/JITOpcodes.cpp: | |
24042 | (JSC::JIT::emitSlow_op_eq): | |
24043 | (JSC::JIT::emitSlow_op_neq): Made a vptr comparison a *Ptr operation, | |
24044 | instead of *32, to make it portable to 64bit. Reorganized the string | |
24045 | and generic cases to make their control flow a little clearer. | |
24046 | ||
24047 | 2009-05-23 Geoffrey Garen <ggaren@apple.com> | |
24048 | ||
24049 | Reviewed by Maciej Stachowiak. | |
24050 | ||
24051 | Optimized == and != for our new value representation -- especially for strings. | |
24052 | ||
24053 | 14% speedup on date-format-tofte. | |
24054 | ||
24055 | * jit/JITOpcodes.cpp: | |
24056 | (JSC::JIT::emit_op_eq): | |
24057 | (JSC::JIT::emitSlow_op_eq): | |
24058 | (JSC::JIT::emit_op_neq): | |
24059 | (JSC::JIT::emitSlow_op_neq): | |
24060 | * jit/JITStubCall.h: | |
24061 | (JSC::JITStubCall::JITStubCall): | |
24062 | * jit/JITStubs.cpp: | |
24063 | (JSC::JITStubs::cti_op_eq): | |
24064 | (JSC::JITStubs::cti_op_eq_strings): | |
24065 | (JSC::JITStubs::cti_op_call_eval): | |
24066 | * jit/JITStubs.h: | |
24067 | (JSC::): | |
24068 | * runtime/JSValue.h: | |
24069 | ||
24070 | 2009-05-22 Sam Weinig <sam@webkit.org> | |
24071 | ||
24072 | Reviewed by Gavin Barraclough. | |
24073 | ||
24074 | Fix non-SSE enabled builds. | |
24075 | ||
24076 | * jit/JITArithmetic.cpp: | |
24077 | (JSC::JIT::emitSlow_op_add): Don't early return here, we still need to call the JIT stub. | |
24078 | (JSC::JIT::emitSlow_op_sub): Ditto. | |
24079 | ||
24080 | 2009-05-22 Geoffrey Garen <ggaren@apple.com> | |
24081 | ||
24082 | Reviewed by Sam Weinig. | |
24083 | ||
24084 | Here's a thought: let's not take a jit stub call just to multiply by 1, | |
24085 | bokay? | |
24086 | ||
24087 | imul doesn't set the zero flag, so to test for a zero result, we need | |
24088 | an explicit instruction. (Luckily, it does set the overflow flag, so | |
24089 | we can still use that.) | |
24090 | ||
24091 | * jit/JIT.h: | |
24092 | * jit/JITArithmetic.cpp: | |
24093 | (JSC::JIT::emit_op_mul): | |
24094 | (JSC::JIT::emitSlow_op_mul): | |
24095 | (JSC::JIT::emitMul32InPlace): | |
24096 | ||
24097 | 2009-05-22 Sam Weinig <sam@webkit.org> | |
24098 | ||
24099 | Reviewed by Geoffrey "Premature Commit" Garen. | |
24100 | ||
24101 | Add back constant integer cases for op_add. | |
24102 | ||
24103 | * jit/JIT.h: | |
24104 | * jit/JITArithmetic.cpp: | |
24105 | (JSC::JIT::emit_op_add): | |
24106 | (JSC::JIT::emitAdd32Constant): | |
24107 | (JSC::JIT::emitSlow_op_add): | |
24108 | (JSC::JIT::emitSlowAdd32Constant): | |
24109 | * jit/JITInlineMethods.h: | |
24110 | (JSC::JIT::getConstantOperandImmediateDouble): | |
24111 | (JSC::JIT::isOperandConstantImmediateDouble): | |
24112 | ||
24113 | 2009-05-22 Geoffrey Garen <ggaren@apple.com> | |
24114 | ||
24115 | Reviewed by Sam Weinig. | |
24116 | ||
24117 | Added fast double cases for op_jnless and op_jnlesseq. | |
24118 | ||
24119 | * assembler/AbstractMacroAssembler.h: | |
24120 | (JSC::AbstractMacroAssembler::JumpList::jumps): New accesor, used by | |
24121 | addSlowCase. | |
24122 | ||
24123 | * assembler/X86Assembler.h: | |
24124 | (JSC::X86Assembler::ucomisd_rm): New method for comparing register to | |
24125 | memory. | |
24126 | ||
24127 | * jit/JIT.h: | |
24128 | * jit/JITArithmetic.cpp: | |
24129 | (JSC::JIT::emit_op_jnless): | |
24130 | (JSC::JIT::emitSlow_op_jnless): | |
24131 | (JSC::JIT::emit_op_jnlesseq): | |
24132 | (JSC::JIT::emitSlow_op_jnlesseq): | |
24133 | (JSC::JIT::emit_op_add): | |
24134 | (JSC::JIT::emit_op_sub): | |
24135 | (JSC::JIT::emitBinaryDoubleOp): | |
24136 | (JSC::JIT::emit_op_mul): | |
24137 | (JSC::JIT::emit_op_div): Modified emitBinaryDoubleOp to accept comparison/jump | |
24138 | operations in addition to operations with explicit result registers. | |
24139 | ||
24140 | * jit/JITInlineMethods.h: | |
24141 | (JSC::JIT::addSlowCase): Added an "addSlowCase" for JumpLists, so clients | |
24142 | can track multiple jumps to the same slow case condition together. | |
24143 | ||
24144 | 2009-05-21 Sam Weinig <sam@webkit.org> | |
24145 | ||
24146 | Reviewed by Gavin Barraclough. | |
24147 | ||
24148 | Implement op_negate inline fast cases. | |
24149 | ||
24150 | * assembler/MacroAssemblerX86Common.h: | |
24151 | (JSC::MacroAssemblerX86Common::neg32): | |
24152 | * assembler/X86Assembler.h: | |
24153 | (JSC::X86Assembler::): | |
24154 | (JSC::X86Assembler::negl_m): | |
24155 | (JSC::X86Assembler::xorpd_rr): | |
24156 | * jit/JIT.cpp: | |
24157 | (JSC::JIT::privateCompileMainPass): | |
24158 | (JSC::JIT::privateCompileSlowCases): | |
24159 | * jit/JIT.h: | |
24160 | * jit/JITArithmetic.cpp: | |
24161 | (JSC::JIT::emit_op_negate): | |
24162 | (JSC::JIT::emitSlow_op_negate): | |
24163 | ||
24164 | 2009-05-20 Sam Weinig <sam@webkit.org> | |
24165 | ||
24166 | Reviewed by Gavin Barraclough. | |
24167 | ||
24168 | Update the patchOffsetGetByIdSlowCaseCall constant for the | |
24169 | case that OPCODE_SAMPLING is enabled. | |
24170 | ||
24171 | * jit/JIT.h: | |
24172 | ||
24173 | 2009-05-20 Geoffrey Garen <ggaren@apple.com> | |
24174 | ||
24175 | Reviewed by Sam Weinig. | |
24176 | ||
24177 | Added support for inline subtraction of doubles. | |
24178 | ||
24179 | * jit/JITArithmetic.cpp: | |
24180 | (JSC::JIT::emit_op_sub): | |
24181 | (JSC::JIT::emitSlow_op_sub): | |
24182 | (JSC::JIT::emitSlowSub32InPlaceLeft): | |
24183 | (JSC::JIT::emitBinaryDoubleOp): | |
24184 | ||
24185 | 2009-05-20 Sam Weinig <sam@webkit.org> | |
24186 | ||
24187 | Reviewed by Geoffrey Garen. | |
24188 | ||
24189 | Added support for inline division. | |
24190 | ||
24191 | * assembler/X86Assembler.h: | |
24192 | (JSC::X86Assembler::): | |
24193 | (JSC::X86Assembler::divsd_rr): | |
24194 | (JSC::X86Assembler::divsd_mr): | |
24195 | * bytecode/CodeBlock.cpp: | |
24196 | (JSC::CodeBlock::dump): | |
24197 | * bytecode/Opcode.h: | |
24198 | * bytecompiler/BytecodeGenerator.cpp: | |
24199 | (JSC::BytecodeGenerator::emitBinaryOp): | |
24200 | * interpreter/Interpreter.cpp: | |
24201 | (JSC::Interpreter::privateExecute): | |
24202 | * jit/JIT.cpp: | |
24203 | (JSC::JIT::privateCompileMainPass): | |
24204 | (JSC::JIT::privateCompileSlowCases): | |
24205 | * jit/JIT.h: | |
24206 | * jit/JITArithmetic.cpp: | |
24207 | (JSC::JIT::emitBinaryDoubleOp): | |
24208 | (JSC::JIT::emit_op_div): | |
24209 | (JSC::JIT::emitSlow_op_div): | |
24210 | ||
24211 | 2009-05-20 Geoffrey Garen <ggaren@apple.com> | |
24212 | ||
24213 | Reviewed by Sam Weinig. | |
24214 | ||
24215 | Added support for inline addition of doubles. | |
24216 | ||
24217 | * jit/JITArithmetic.cpp: | |
24218 | (JSC::JIT::emit_op_add): | |
24219 | (JSC::JIT::emitSlow_op_add): | |
24220 | (JSC::JIT::emitSlowAdd32InPlace): | |
24221 | (JSC::JIT::emitBinaryDoubleOp): | |
24222 | (JSC::JIT::emit_op_mul): | |
24223 | (JSC::JIT::emitSlow_op_mul): | |
24224 | ||
24225 | 2009-05-20 Geoffrey Garen <ggaren@apple.com> | |
24226 | ||
24227 | Reviewed by Sam Weinig. | |
24228 | ||
24229 | Factored inline double operations into a helper function, so that we | |
24230 | can reuse this code for other math operations. | |
24231 | ||
24232 | * jit/JIT.h: | |
24233 | * jit/JITArithmetic.cpp: | |
24234 | (JSC::JIT::emitBinaryDoubleOp): | |
24235 | (JSC::JIT::emit_op_mul): | |
24236 | * jit/JITCall.cpp: | |
24237 | (JSC::JIT::compileOpCallInitializeCallFrame): | |
24238 | ||
24239 | 2009-05-20 Geoffrey Garen <ggaren@apple.com> | |
24240 | ||
24241 | Reviewed by Sam Weinig. | |
24242 | ||
24243 | Added support for inline multiplication of doubles. | |
24244 | ||
24245 | * assembler/X86Assembler.h: | |
24246 | (JSC::X86Assembler::cvtsi2sd_mr): New function, useful for loading an | |
24247 | int32 into a double register. | |
24248 | ||
24249 | * jit/JITArithmetic.cpp: | |
24250 | (JSC::JIT::emit_op_mul): | |
24251 | (JSC::JIT::emitSlow_op_mul): Filled out these cases for double arithmetic. | |
24252 | ||
24253 | * jit/JIT.h: | |
24254 | * jit/JITInlineMethods.h: | |
24255 | (JSC::JIT::addressFor): New function, useful for addressing a JSValue's | |
24256 | full 64bits as a double. | |
24257 | ||
24258 | 2009-05-19 Sam Weinig <sam@webkit.org> | |
24259 | ||
24260 | Reviewed by Geoffrey Garen. | |
24261 | ||
24262 | Implement and enable optimized calls. | |
24263 | ||
24264 | * jit/JIT.cpp: | |
24265 | (JSC::JIT::privateCompileCTIMachineTrampolines): Add ENABLE(JIT_OPTIMIZE_CALL) guards | |
24266 | around the the optimize call only trampolines (virtualCallPreLink and virtualCallLink). | |
24267 | Update the trampolines to account for the new JSValue representation. | |
24268 | (JSC::JIT::unlinkCall): Use NULL instead of JSValue noValue. | |
24269 | ||
24270 | * jit/JITCall.cpp: | |
24271 | (JSC::JIT::compileOpCall): Update to account for the new JSValue representation | |
24272 | (JSC::JIT::compileOpCallSlowCase): Ditto. | |
24273 | ||
24274 | * jit/JITStubs.h: Remove incorrect !ENABLE(JIT_OPTIMIZE_CALL) guard. | |
24275 | ||
24276 | * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_CALL. | |
24277 | ||
24278 | 2009-05-19 Sam Weinig <sam@webkit.org> | |
24279 | ||
24280 | Reviewed by Geoffrey Garen. | |
24281 | ||
24282 | Implement and enable optimized property access. | |
24283 | ||
24284 | * assembler/AbstractMacroAssembler.h: Fix comment. | |
24285 | * jit/JIT.cpp: | |
24286 | (JSC::JIT::privateCompileCTIMachineTrampolines): Remove array length trampoline | |
24287 | and implement the string length trampoline. | |
24288 | * jit/JIT.h: Add new constants for patch offsets. | |
24289 | * jit/JITInlineMethods.h: Remove FIELD_OFFSET which is now in StdLibExtras.h. | |
24290 | * jit/JITPropertyAccess.cpp: | |
24291 | (JSC::JIT::emit_op_get_by_id): | |
24292 | (JSC::JIT::emitSlow_op_get_by_id): | |
24293 | (JSC::JIT::emit_op_put_by_id): | |
24294 | (JSC::JIT::emitSlow_op_put_by_id): | |
24295 | (JSC::JIT::compilePutDirectOffset): | |
24296 | (JSC::JIT::compileGetDirectOffset): | |
24297 | (JSC::JIT::privateCompilePutByIdTransition): | |
24298 | (JSC::JIT::patchGetByIdSelf): | |
24299 | (JSC::JIT::patchPutByIdReplace): | |
24300 | (JSC::JIT::privateCompilePatchGetArrayLength): | |
24301 | (JSC::JIT::privateCompileGetByIdProto): | |
24302 | (JSC::JIT::privateCompileGetByIdSelfList): | |
24303 | (JSC::JIT::privateCompileGetByIdProtoList): | |
24304 | (JSC::JIT::privateCompileGetByIdChainList): | |
24305 | (JSC::JIT::privateCompileGetByIdChain): | |
24306 | * jit/JITStubCall.h: | |
24307 | (JSC::JITStubCall::addArgument): Add version of addArgument that takes | |
24308 | two registers for the tag and payload. | |
24309 | * jit/JITStubs.cpp: | |
24310 | (JSC::JITStubs::JITStubs): Remove array length trampoline pointer. | |
24311 | (JSC::JITStubs::cti_op_get_by_id_self_fail): | |
24312 | * jit/JITStubs.h: | |
24313 | * runtime/JSObject.h: | |
24314 | (JSC::JSObject::JSObject): Move m_inheritorID below the property storage | |
24315 | to align it to a 16 byte boundary. | |
24316 | * wtf/Platform.h: Enable ENABLE_JIT_OPTIMIZE_PROPERTY_ACCESS | |
24317 | * wtf/StdLibExtras.h: Move FIELD_OFFSET here. | |
24318 | ||
24319 | 2009-05-17 Sam Weinig <sam@webkit.org> | |
24320 | ||
24321 | Reviewed by Geoffrey Garen. | |
24322 | ||
24323 | Remove unneeded ExecState parameter from the number JSValue constructors. | |
24324 | ||
24325 | * runtime/JSValue.h: | |
24326 | (JSC::jsNumber): | |
24327 | (JSC::jsNaN): | |
24328 | (JSC::JSValue::JSValue): | |
24329 | ||
24330 | 2009-05-15 Sam Weinig <sam@webkit.org> | |
24331 | ||
24332 | Reviewed by Geoffrey Garen. | |
24333 | ||
24334 | Implemented fast path for op_put_by_val when putting to arrays. | |
24335 | ||
24336 | * jit/JITPropertyAccess.cpp: | |
24337 | (JSC::JIT::emit_op_put_by_val): | |
24338 | (JSC::JIT::emitSlow_op_put_by_val): | |
24339 | ||
24340 | 2009-05-15 Geoffrey Garen <ggaren@apple.com> (Mostly by Sam) | |
24341 | ||
24342 | Reviewed by Sam Weinig. | |
24343 | ||
24344 | Implemented fast path for op_get_by_val when accessing array. | |
24345 | ||
24346 | * jit/JIT.cpp: | |
24347 | * jit/JITPropertyAccess.cpp: | |
24348 | (JSC::JIT::emit_op_get_by_val): | |
24349 | (JSC::JIT::emitSlow_op_get_by_val): | |
24350 | ||
24351 | 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
24352 | ||
24353 | Reviewed by Sam Weinig. | |
24354 | ||
24355 | Fixed a failure in fast/js/math-transforms.html caused by failing to | |
24356 | preserve -0 in multiplication. | |
24357 | ||
24358 | * assembler/X86Assembler.h: | |
24359 | (JSC::X86Assembler::jz): | |
24360 | * jit/JITArithmetic.cpp: | |
24361 | (JSC::JIT::emit_op_mul): | |
24362 | (JSC::JIT::emitSlow_op_mul): | |
24363 | (JSC::JIT::emitMul32Constant): | |
24364 | (JSC::JIT::emitMul32InPlace): Check both for overflow and for zero when | |
24365 | doing multiplication. Use a slow case to get these right. | |
24366 | ||
24367 | 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
24368 | ||
24369 | Reviewed by Sam Weinig. | |
24370 | ||
24371 | Fixed a bug in the varargs calling convention. | |
24372 | ||
24373 | * jit/JITCall.cpp: | |
24374 | (JSC::JIT::compileOpCallVarargs): Move the argument count into regT1, | |
24375 | since that's where ctiVirtualCall expects it to be. | |
24376 | ||
24377 | 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
24378 | ||
24379 | Reviewed by Sam Weinig. | |
24380 | ||
24381 | Fixed a small bug in instanceof's looping code. | |
24382 | ||
24383 | * jit/JITOpcodes.cpp: | |
24384 | (JSC::JIT::emit_op_instanceof): NULL means the object has no prototype, | |
24385 | so only loop when *not* equal to NULL. | |
24386 | ||
24387 | 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
24388 | ||
24389 | Reviewed by Sam Weinig. | |
24390 | ||
24391 | Fixed a small bug in instanceof's result writing code. | |
24392 | ||
24393 | * jit/JITOpcodes.cpp: | |
24394 | (JSC::JIT::emit_op_instanceof): Make sure to fill out the payload bits | |
24395 | in all cases. | |
24396 | ||
24397 | 2009-05-14 Sam Weinig <sam@webkit.org> | |
24398 | ||
24399 | Reviewed by Geoffrey Garen. | |
24400 | ||
24401 | Removed an invalid assertion in cti_op_urshift which | |
24402 | depended on a fast path for op_urshift which has | |
24403 | never existed. | |
24404 | ||
24405 | * jit/JITStubs.cpp: | |
24406 | (JSC::JITStubs::cti_op_urshift): | |
24407 | ||
24408 | 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
24409 | ||
24410 | Reviewed by Sam Weinig. | |
24411 | ||
24412 | Fixed loop_if_true, which had the same reversed test that jtrue had. | |
24413 | ||
24414 | * jit/JITOpcodes.cpp: | |
24415 | (JSC::JIT::emit_op_loop_if_true): | |
24416 | ||
24417 | 2009-05-14 Sam Weinig <sam@webkit.org> | |
24418 | ||
24419 | Reviewed by Geoffrey Garen. | |
24420 | ||
24421 | In op_neq, we apparently want to check that one value | |
24422 | does *not* equal another. Go figure. | |
24423 | ||
24424 | * jit/JITOpcodes.cpp: | |
24425 | (JSC::JIT::emit_op_neq): | |
24426 | ||
24427 | 2009-05-14 Sam Weinig <sam@webkit.org> | |
24428 | ||
24429 | Reviewed by Geoffrey Garen. | |
24430 | ||
24431 | The slow case of op_mod should call op_mod's jit stub, | |
24432 | not op_mul. That would be dumb. | |
24433 | ||
24434 | * jit/JITArithmetic.cpp: | |
24435 | (JSC::JIT::emitSlow_op_mod): | |
24436 | ||
24437 | 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
24438 | ||
24439 | Reviewed by Sam Weinig. | |
24440 | ||
24441 | Fixed problems when using 'arguments' due to a half-initialized register. | |
24442 | ||
24443 | * interpreter/CallFrame.h: | |
24444 | (JSC::ExecState::setCalleeArguments): | |
24445 | (JSC::ExecState::init): Require a full JSValue when setting up the | |
24446 | 'arguments' virtual register, since this register is accessible from JIT | |
24447 | code and bytecode, and needs to be a true JSValue. | |
24448 | ||
24449 | * interpreter/CallFrameClosure.h: | |
24450 | (JSC::CallFrameClosure::resetCallFrame): ditto | |
24451 | ||
24452 | * interpreter/Interpreter.cpp: | |
24453 | (JSC::Interpreter::privateExecute): ditto | |
24454 | ||
24455 | * interpreter/Register.h: Removed the constructor that allowed assignment | |
24456 | of a JSArguments* to a register. That is not safe. See above. | |
24457 | ||
24458 | * jit/JITStubs.cpp: | |
24459 | (JSC::JITStubs::cti_op_create_arguments): | |
24460 | (JSC::JITStubs::cti_op_create_arguments_no_params): ditto | |
24461 | ||
24462 | 2009-05-14 Sam Weinig <sam@webkit.org> | |
24463 | ||
24464 | Reviewed by Geoffrey Garen. | |
24465 | ||
24466 | We really want to go to the slow case in op_jfalse and | |
24467 | op_jtrue if the value is *not* boolean. | |
24468 | ||
24469 | * jit/JITOpcodes.cpp: | |
24470 | (JSC::JIT::emit_op_jfalse): | |
24471 | (JSC::JIT::emit_op_jtrue): | |
24472 | ||
24473 | 2009-05-14 Sam Weinig <sam@webkit.org> | |
24474 | ||
24475 | Reviewed by Geoffrey Garen. | |
24476 | ||
24477 | Flipped the condition when emitting a an op_loop_if_less or op_loop_if_lesseq | |
24478 | if the first operand is a constant. | |
24479 | ||
24480 | * jit/JITOpcodes.cpp: | |
24481 | (JSC::JIT::emit_op_loop_if_less): | |
24482 | (JSC::JIT::emit_op_loop_if_lesseq): | |
24483 | ||
24484 | 2009-05-14 Sam Weinig <sam@webkit.org> | |
24485 | ||
24486 | Reviewed by Geoffrey Garen. | |
24487 | ||
24488 | Added missing return in op_jnless and op_jnlesseq. | |
24489 | ||
24490 | * jit/JITArithmetic.cpp: | |
24491 | (JSC::JIT::emit_op_jnless): | |
24492 | (JSC::JIT::emit_op_jnlesseq): | |
24493 | ||
24494 | 2009-05-14 Sam Weinig <sam@webkit.org> | |
24495 | ||
24496 | Reviewed by Geoffrey Garen. | |
24497 | ||
24498 | Load constants into the the register file as a temporary measure to | |
24499 | aid bring up. This allows us to use to treat constants like any | |
24500 | other virtual register. | |
24501 | ||
24502 | * jit/JITOpcodes.cpp: | |
24503 | (JSC::JIT::emit_op_enter): | |
24504 | (JSC::JIT::emit_op_enter_with_activation): | |
24505 | ||
24506 | 2009-05-14 Geoffrey Garen <ggaren@apple.com> | |
24507 | ||
24508 | Reviewed by Sam Weinig. | |
24509 | ||
24510 | Implemented op_strict_eq. Original patch by Snowy, by way of Sam and Gavin. | |
24511 | ||
24512 | * assembler/MacroAssemblerX86Common.h: | |
24513 | (JSC::MacroAssemblerX86Common::set8): Added set8, since it's slightly | |
24514 | faster than set32, and the new value representation usually doesn't | |
24515 | need set32. | |
24516 | ||
24517 | * jit/JIT.cpp: | |
24518 | * jit/JIT.h: | |
24519 | * jit/JITInlineMethods.h: | |
24520 | (JSC::JIT::emitLoadTag): | |
24521 | (JSC::JIT::emitLoadPayload): Added helper functions for dealing with | |
24522 | constants. Eventually, we should write special cases for all constants, | |
24523 | but these are helpful in the short term. | |
24524 | ||
24525 | * jit/JITOpcodes.cpp: | |
24526 | (JSC::JIT::compileOpStrictEq): | |
24527 | (JSC::JIT::emitSlow_op_stricteq): | |
24528 | (JSC::JIT::emitSlow_op_nstricteq): teh opcodez. | |
24529 | ||
24530 | * runtime/JSValue.h: | |
24531 | (JSC::JSValue::): | |
24532 | (JSC::JSValue::isDouble): Added a LowestTag for clarity. | |
24533 | ||
24534 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24535 | ||
24536 | Reviewed by Sam Weinig. | |
24537 | ||
24538 | Fixed some bugs in host function calls. | |
24539 | ||
24540 | testapi now passes! | |
24541 | ||
24542 | * jit/JIT.cpp: Changed some registers around to avoid overwriting edx:eax, | |
24543 | which is how JSValues are now returned. Also changed the code that | |
24544 | passes thisValue to pass the full 64bits of the value. Also added | |
24545 | an #error compiler directive to other platform builds, since the JSValue | |
24546 | return signature probably won't return in edx:eax on those platforms, | |
24547 | and we'll have to investigate a solution. | |
24548 | ||
24549 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24550 | ||
24551 | Reviewed by Sam Weinig. | |
24552 | ||
24553 | Removed parameters from functions that are intended never to use their | |
24554 | parameters. | |
24555 | ||
24556 | * jit/JITPropertyAccess.cpp: | |
24557 | (JSC::JIT::emitSlow_op_get_by_val): | |
24558 | (JSC::JIT::emitSlow_op_put_by_val): | |
24559 | ||
24560 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24561 | ||
24562 | Reviewed by Sam Weinig. | |
24563 | ||
24564 | Ported op_instance_of from TOT. It's basically the same, but some register | |
24565 | stuff changed to memory stuff. | |
24566 | ||
24567 | * jit/JITInlineMethods.h: | |
24568 | (JSC::JIT::emitPutJITStubArgFromVirtualRegister): | |
24569 | (JSC::JIT::emitStore): Changed to use helper functions. | |
24570 | ||
24571 | * jit/JITOpcodes.cpp: | |
24572 | (JSC::JIT::emit_op_instanceof): | |
24573 | (JSC::JIT::emitSlow_op_instanceof): Ported from TOT. | |
24574 | ||
24575 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24576 | ||
24577 | Reviewed by Gavin Barraclough. | |
24578 | ||
24579 | Added a comment to explain an exception-handling subtelty that we found | |
24580 | hard to remember when reviewing my last patch. | |
24581 | ||
24582 | * jit/JITOpcodes.cpp: | |
24583 | (JSC::JIT::emit_op_catch): | |
24584 | ||
24585 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24586 | ||
24587 | Reviewed by Sam Weinig. | |
24588 | ||
24589 | Implemented try/catch. | |
24590 | ||
24591 | * jit/JITOpcodes.cpp: | |
24592 | (JSC::JIT::emit_op_throw): Updated to use JITStackFrame abstraction. | |
24593 | (JSC::JIT::emit_op_catch): Filled out. | |
24594 | ||
24595 | 2009-05-13 Sam Weinig <sam@webkit.org> | |
24596 | ||
24597 | Reviewed by Geoffrey Garen. | |
24598 | ||
24599 | Implemented op_loop_if_true, op_jfalse, op_jtrue, op_jeq_null and op_jneq_null | |
24600 | ||
24601 | * jit/JITOpcodes.cpp: | |
24602 | (JSC::JIT::emitSlow_op_instanceof): Moved from below to be next to its | |
24603 | fast brother. | |
24604 | ||
24605 | (JSC::JIT::emit_op_loop_if_true): Similar to the old version | |
24606 | in that it tries to do the integer case first and reduce the | |
24607 | number of jumps you might need to take. | |
24608 | (JSC::JIT::emitSlow_op_loop_if_true): | |
24609 | ||
24610 | (JSC::JIT::emit_op_jfalse): Very similar to op_loop_if_true, only | |
24611 | the inverse and without a timeout check. | |
24612 | (JSC::JIT::emitSlow_op_jfalse): | |
24613 | ||
24614 | (JSC::JIT::emit_op_jtrue): Very similar to op_loop_if_true except | |
24615 | without the timeout check. | |
24616 | (JSC::JIT::emitSlow_op_jtrue): | |
24617 | ||
24618 | (JSC::JIT::emit_op_jeq_null): Very similar to the implementation | |
24619 | of op_eq, except it takes jumps instead of copying the condition | |
24620 | to a dst. | |
24621 | (JSC::JIT::emit_op_jneq_null): Ditto but for op_neq. | |
24622 | ||
24623 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24624 | ||
24625 | Reviewed by Sam Weinig. | |
24626 | ||
24627 | Implemented op_call_varargs. | |
24628 | ||
24629 | * jit/JITCall.cpp: | |
24630 | (JSC::JIT::compileOpCallVarargsSetupArgs): | |
24631 | (JSC::JIT::compileOpCallVarargs): | |
24632 | (JSC::JIT::emit_op_call): | |
24633 | (JSC::JIT::emit_op_call_eval): | |
24634 | (JSC::JIT::emit_op_load_varargs): | |
24635 | (JSC::JIT::emit_op_call_varargs): | |
24636 | (JSC::JIT::emit_op_construct): | |
24637 | * jit/JITOpcodes.cpp: | |
24638 | (JSC::JIT::emit_op_jneq_ptr): | |
24639 | ||
24640 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24641 | ||
24642 | Reviewed by Sam Weinig. | |
24643 | ||
24644 | Implemented op_call_eval. | |
24645 | ||
24646 | * jit/JITCall.cpp: | |
24647 | (JSC::JIT::compileOpCallVarargsSetupArgs): | |
24648 | (JSC::JIT::compileOpCall): | |
24649 | * jit/JITStubCall.h: | |
24650 | (JSC::CallEvalJITStub::CallEvalJITStub): | |
24651 | ||
24652 | 2009-05-13 Sam Weinig <sam@webkit.org> | |
24653 | ||
24654 | Reviewed by Gavin Barraclough. | |
24655 | ||
24656 | Implemented op_not. (Gavin did most of the work!) | |
24657 | ||
24658 | * jit/JITOpcodes.cpp: | |
24659 | (JSC::JIT::emit_op_not): | |
24660 | (JSC::JIT::emitSlow_op_not): | |
24661 | ||
24662 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24663 | ||
24664 | Reviewed by Sam Weinig. | |
24665 | ||
24666 | Implemented op_global_resolve. | |
24667 | ||
24668 | * jit/JITOpcodes.cpp: | |
24669 | (JSC::JIT::emit_op_loop_if_less): | |
24670 | (JSC::JIT::emit_op_loop_if_lesseq): Added back accidentally removed | |
24671 | early returns. | |
24672 | ||
24673 | (JSC::JIT::emit_op_resolve_global): | |
24674 | * jit/JITStubs.cpp: | |
24675 | (JSC::JITStubs::cti_op_resolve_global): Pretty similar to the old code, | |
24676 | but we need two reads and a TimesEight step in order to account for the | |
24677 | 64bit value size. | |
24678 | ||
24679 | * jit/JITStubs.h: | |
24680 | (JSC::): Slightly tweaked this code to specialize for a JSGlobalObject*, | |
24681 | to avoid having to pass an irrelevant tag pointer to the stub. | |
24682 | ||
24683 | 2009-05-13 Sam Weinig <sam@webkit.org> | |
24684 | ||
24685 | Reviewed by Geoffrey Garen. | |
24686 | ||
24687 | Implemented op_to_jsnumber. | |
24688 | ||
24689 | * jit/JITOpcodes.cpp: | |
24690 | (JSC::JIT::emit_op_to_jsnumber): | |
24691 | (JSC::JIT::emitSlow_op_to_jsnumber): | |
24692 | ||
24693 | 2009-05-13 Sam Weinig <sam@webkit.org> | |
24694 | ||
24695 | Reviewed by Geoffrey Garen. | |
24696 | ||
24697 | Implemented op_convert_this. | |
24698 | ||
24699 | * jit/JITOpcodes.cpp: | |
24700 | (JSC::JIT::emit_op_convert_this): | |
24701 | (JSC::JIT::emitSlow_op_convert_this): | |
24702 | ||
24703 | 2009-05-13 Geoffrey Garen <ggaren@apple.com> | |
24704 | ||
24705 | Reviewed by Sam Weinig. | |
24706 | ||
24707 | Got basic JS function and constructor calls working. | |
24708 | ||
24709 | * jit/JIT.cpp: | |
24710 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
24711 | * jit/JIT.h: | |
24712 | * jit/JITCall.cpp: | |
24713 | (JSC::JIT::compileOpCallSetupArgs): | |
24714 | (JSC::JIT::compileOpCallVarargsSetupArgs): | |
24715 | (JSC::JIT::compileOpConstructSetupArgs): | |
24716 | (JSC::JIT::emit_op_ret): | |
24717 | (JSC::JIT::emit_op_construct_verify): | |
24718 | (JSC::JIT::emitSlow_op_construct_verify): | |
24719 | (JSC::JIT::emitSlow_op_call): | |
24720 | (JSC::JIT::emitSlow_op_call_eval): | |
24721 | (JSC::JIT::emitSlow_op_call_varargs): | |
24722 | (JSC::JIT::emitSlow_op_construct): | |
24723 | (JSC::JIT::compileOpCall): Filled out these cases, with call_eval #if'd out. | |
24724 | ||
24725 | * jit/JITInlineMethods.h: | |
24726 | (JSC::JIT::emitPutJITStubArgFromVirtualRegister): | |
24727 | (JSC::JIT::emitLoad): Restored some legacy "*CTIArg*" functions, | |
24728 | since I wanted to avoid the complexity of revamping the API here while | |
24729 | trying to bring it up. Eventually, we should re-remove all of these functions. | |
24730 | ||
24731 | (JSC::JIT::recordJumpTarget): Removed unnecessary macro cruft. You will | |
24732 | not silence me, Sam Weinig! The world will know that you are a crufty, | |
24733 | crufty, crufty programmer!!! | |
24734 | ||
24735 | * jit/JITOpcodes.cpp: | |
24736 | * jit/JITStubs.cpp: | |
24737 | (JSC::): | |
24738 | * jit/JITStubs.h: Changed up some offsets in the JITStackFrame class, since | |
24739 | and off-by-one error was causing stack misalignment. | |
24740 | ||
24741 | 2009-05-13 Sam Weinig <sam@webkit.org> | |
24742 | ||
24743 | Reviewed by Geoffrey Garen. | |
24744 | ||
24745 | Implement op_eq_null and op_neq_null. | |
24746 | ||
24747 | * assembler/MacroAssemblerX86Common.h: | |
24748 | (JSC::MacroAssemblerX86Common::set8): | |
24749 | (JSC::MacroAssemblerX86Common::setTest8): | |
24750 | * jit/JITOpcodes.cpp: | |
24751 | (JSC::JIT::emit_op_stricteq): | |
24752 | (JSC::JIT::emitSlow_op_stricteq): | |
24753 | (JSC::JIT::emit_op_nstricteq): | |
24754 | (JSC::JIT::emitSlow_op_nstricteq): | |
24755 | (JSC::JIT::emit_op_eq_null): | |
24756 | (JSC::JIT::emit_op_neq_null): | |
24757 | * jsc.cpp: | |
24758 | ||
24759 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24760 | ||
24761 | Reviewed by Geoffrey Garen. | |
24762 | ||
24763 | Implement op_new_error. | |
24764 | ||
24765 | * jit/JITOpcodes.cpp: | |
24766 | (JSC::JIT::emit_op_new_error): | |
24767 | * jit/JITStubCall.h: | |
24768 | (JSC::JITStubCall::addArgument): Add a version of addArgument | |
24769 | that takes a constant JSValue. | |
24770 | ||
24771 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24772 | ||
24773 | Reviewed by Geoffrey Garen. | |
24774 | ||
24775 | Remove now unused emitGetVariableObjectRegister and emitPutVariableObjectRegister. | |
24776 | ||
24777 | * jit/JIT.cpp: | |
24778 | * jit/JIT.h: | |
24779 | ||
24780 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24781 | ||
24782 | Reviewed by Geoffrey Garen. | |
24783 | ||
24784 | Implement op_to_primitive and op_next_pname. | |
24785 | ||
24786 | * jit/JITOpcodes.cpp: | |
24787 | (JSC::JIT::emitSlow_op_construct_verify): | |
24788 | (JSC::JIT::emit_op_to_primitive): | |
24789 | (JSC::JIT::emitSlow_op_to_primitive): | |
24790 | (JSC::JIT::emitSlow_op_loop_if_true): | |
24791 | (JSC::JIT::emit_op_jtrue): | |
24792 | (JSC::JIT::emit_op_next_pname): | |
24793 | ||
24794 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24795 | ||
24796 | Reviewed by Geoffrey Garen. | |
24797 | ||
24798 | Add op_get_global_var, op_put_global_var, emit_op_get_scoped_var, emit_op_put_scoped_var and | |
24799 | op_unexpected_load. | |
24800 | ||
24801 | * jit/JIT.h: | |
24802 | * jit/JITInlineMethods.h: | |
24803 | (JSC::JIT::tagFor): | |
24804 | (JSC::JIT::payloadFor): | |
24805 | (JSC::JIT::emitLoad): | |
24806 | (JSC::JIT::emitStore): | |
24807 | (JSC::JIT::emitLoadReturnValue): | |
24808 | * jit/JITOpcodes.cpp: | |
24809 | (JSC::JIT::emit_op_get_global_var): | |
24810 | (JSC::JIT::emit_op_put_global_var): | |
24811 | (JSC::JIT::emit_op_get_scoped_var): | |
24812 | (JSC::JIT::emit_op_put_scoped_var): | |
24813 | (JSC::JIT::emit_op_unexpected_load): | |
24814 | ||
24815 | 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
24816 | ||
24817 | Reviewed by Sam Weinig. | |
24818 | ||
24819 | Added overflow handling to op_sub. | |
24820 | ||
24821 | * jit/JIT.h: | |
24822 | * jit/JITArithmetic.cpp: | |
24823 | (JSC::JIT::emitSlow_op_sub): | |
24824 | (JSC::JIT::emitSlowSub32InPlaceLeft): | |
24825 | ||
24826 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24827 | ||
24828 | Reviewed by Geoffrey Garen. | |
24829 | ||
24830 | Remove a function call by folding op_get_by_id and op_put_by_id into | |
24831 | their respective compile functions. | |
24832 | ||
24833 | * jit/JIT.h: | |
24834 | * jit/JITPropertyAccess.cpp: | |
24835 | (JSC::JIT::emit_op_get_by_id): | |
24836 | (JSC::JIT::emitSlow_op_get_by_id): | |
24837 | (JSC::JIT::emit_op_put_by_id): | |
24838 | (JSC::JIT::emitSlow_op_put_by_id): | |
24839 | ||
24840 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24841 | ||
24842 | Reviewed by Geoffrey Garen. | |
24843 | ||
24844 | Make JITStubCall work in 64bit by making the stack index | |
24845 | step dependent on the size of void*. | |
24846 | ||
24847 | * jit/JITStubCall.h: | |
24848 | (JSC::JITStubCall::JITStubCall): | |
24849 | (JSC::JITStubCall::addArgument): | |
24850 | ||
24851 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24852 | ||
24853 | Reviewed by Geoffrey Garen. | |
24854 | ||
24855 | Implement simple version of property access opcodes | |
24856 | which just call a stub functions. | |
24857 | ||
24858 | * jit/JITOpcodes.cpp: | |
24859 | * jit/JITPropertyAccess.cpp: | |
24860 | (JSC::JIT::emitSlow_op_put_by_id): | |
24861 | (JSC::JIT::emitSlow_op_get_by_id): | |
24862 | (JSC::JIT::emit_op_get_by_val): | |
24863 | (JSC::JIT::emitSlow_op_get_by_val): | |
24864 | (JSC::JIT::emit_op_put_by_val): | |
24865 | (JSC::JIT::emitSlow_op_put_by_val): | |
24866 | (JSC::JIT::emit_op_put_by_index): | |
24867 | (JSC::JIT::emit_op_put_getter): | |
24868 | (JSC::JIT::emit_op_put_setter): | |
24869 | (JSC::JIT::emit_op_del_by_id): | |
24870 | (JSC::JIT::compileGetByIdHotPath): | |
24871 | (JSC::JIT::compilePutByIdHotPath): | |
24872 | * jit/JITStubCall.h: | |
24873 | (JSC::JITStubCall::addArgument): | |
24874 | * jsc.cpp: | |
24875 | ||
24876 | 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
24877 | ||
24878 | Reviewed by Sam Weinig. | |
24879 | ||
24880 | Added work-around for XCode debugging echo problem. | |
24881 | ||
24882 | * jsc.cpp: | |
24883 | (runInteractive): | |
24884 | ||
24885 | 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
24886 | ||
24887 | Reviewed by Sam Weinig. | |
24888 | ||
24889 | Added overflow handling to op_add. | |
24890 | ||
24891 | * jit/JIT.h: | |
24892 | * jit/JITArithmetic.cpp: | |
24893 | (JSC::JIT::emitSlow_op_add): | |
24894 | (JSC::JIT::emitSlowAdd32InPlace): | |
24895 | ||
24896 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24897 | ||
24898 | Reviewed by Geoffrey Garen. | |
24899 | ||
24900 | Add slow cases for op_jnless or emit_op_jnlesseq. | |
24901 | ||
24902 | * jit/JITArithmetic.cpp: | |
24903 | (JSC::JIT::emitSlow_op_jnless): | |
24904 | (JSC::JIT::emitSlow_op_jnlesseq): | |
24905 | ||
24906 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24907 | ||
24908 | Reviewed by Geoffrey Garen. | |
24909 | ||
24910 | Add implementations for op_jnless, emit_op_jnlesseq, op_loop_if_less and op_loop_if_lesseq. | |
24911 | No slow cases for op_jnless or emit_op_jnlesseq yet. | |
24912 | ||
24913 | * jit/JITArithmetic.cpp: | |
24914 | (JSC::JIT::emit_op_jnless): | |
24915 | (JSC::JIT::emitSlow_op_jnless): | |
24916 | (JSC::JIT::emit_op_jnlesseq): | |
24917 | (JSC::JIT::emitSlow_op_jnlesseq): | |
24918 | * jit/JITOpcodes.cpp: | |
24919 | (JSC::JIT::emit_op_loop_if_less): | |
24920 | (JSC::JIT::emitSlow_op_loop_if_less): | |
24921 | (JSC::JIT::emit_op_loop_if_lesseq): | |
24922 | (JSC::JIT::emitSlow_op_loop_if_lesseq): | |
24923 | ||
24924 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24925 | ||
24926 | Reviewed by Geoffrey Garen. | |
24927 | ||
24928 | Turn the RECORD_JUMP_TARGET macro into an inline function. | |
24929 | ||
24930 | * jit/JIT.h: | |
24931 | * jit/JITInlineMethods.h: | |
24932 | (JSC::JIT::recordJumpTarget): | |
24933 | * jit/JITOpcodes.cpp: | |
24934 | (JSC::JIT::emit_op_jmp): | |
24935 | (JSC::JIT::emit_op_jsr): | |
24936 | (JSC::JIT::emit_op_jmp_scopes): | |
24937 | ||
24938 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24939 | ||
24940 | Add MacroAssemblerX86Common::set8 to fix the build. | |
24941 | ||
24942 | * assembler/MacroAssemblerX86Common.h: | |
24943 | (JSC::MacroAssemblerX86Common::set8): | |
24944 | ||
24945 | 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
24946 | ||
24947 | Reviewed by Sam Weinig. | |
24948 | ||
24949 | Added overflow recovery for pre_inc and pre_dec. | |
24950 | ||
24951 | Turned some short-circuit code into early returns, as is the WebKit style. | |
24952 | ||
24953 | * jit/JITArithmetic.cpp: | |
24954 | (JSC::JIT::emit_op_post_inc): | |
24955 | (JSC::JIT::emitSlow_op_post_inc): | |
24956 | (JSC::JIT::emit_op_post_dec): | |
24957 | (JSC::JIT::emitSlow_op_post_dec): | |
24958 | (JSC::JIT::emitSlow_op_pre_inc): | |
24959 | (JSC::JIT::emitSlow_op_pre_dec): | |
24960 | ||
24961 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24962 | ||
24963 | Reviewed by Geoffrey Garen. | |
24964 | ||
24965 | Implement op_jmp, op_loop, op_eq and op_neq. | |
24966 | ||
24967 | * jit/JITOpcodes.cpp: | |
24968 | (JSC::JIT::emit_op_jmp): | |
24969 | (JSC::JIT::emit_op_loop): | |
24970 | (JSC::JIT::emit_op_eq): | |
24971 | (JSC::JIT::emitSlow_op_eq): | |
24972 | (JSC::JIT::emit_op_neq): | |
24973 | (JSC::JIT::emitSlow_op_neq): | |
24974 | (JSC::JIT::emit_op_enter): | |
24975 | (JSC::JIT::emit_op_enter_with_activation): | |
24976 | ||
24977 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24978 | ||
24979 | Reviewed by Geoffrey Garen. | |
24980 | ||
24981 | Implement the slow cases for arithmetic opcodes. | |
24982 | ||
24983 | * jit/JITArithmetic.cpp: | |
24984 | (JSC::JIT::emitSlow_op_lshift): | |
24985 | (JSC::JIT::emitSlow_op_rshift): | |
24986 | (JSC::JIT::emitSlow_op_bitand): | |
24987 | (JSC::JIT::emitSlow_op_bitor): | |
24988 | (JSC::JIT::emitSlow_op_bitxor): | |
24989 | (JSC::JIT::emitSlow_op_bitnot): | |
24990 | (JSC::JIT::emitSlow_op_sub): | |
24991 | (JSC::JIT::emitSlow_op_mul): | |
24992 | (JSC::JIT::emitSlow_op_mod): | |
24993 | (JSC::JIT::emit_op_mod): | |
24994 | ||
24995 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
24996 | ||
24997 | Reviewed by Geoffrey Garen. | |
24998 | ||
24999 | Implement op_bitnot. | |
25000 | ||
25001 | * assembler/MacroAssemblerX86Common.h: | |
25002 | (JSC::MacroAssemblerX86Common::not32): | |
25003 | * assembler/X86Assembler.h: | |
25004 | (JSC::X86Assembler::notl_m): | |
25005 | * jit/JITArithmetic.cpp: | |
25006 | (JSC::JIT::emit_op_bitnot): | |
25007 | ||
25008 | 2009-05-12 Sam Weinig <sam@webkit.org> | |
25009 | ||
25010 | Reviewed by Geoffrey Garen. | |
25011 | ||
25012 | Add arithmetic opcode implementations from the old nitro-extreme branch. | |
25013 | ||
25014 | * jit/JIT.h: | |
25015 | * jit/JITArithmetic.cpp: | |
25016 | (JSC::JIT::emit_op_jnless): | |
25017 | (JSC::JIT::emitSlow_op_jnless): | |
25018 | (JSC::JIT::emit_op_jnlesseq): | |
25019 | (JSC::JIT::emitSlow_op_jnlesseq): | |
25020 | (JSC::JIT::emit_op_lshift): | |
25021 | (JSC::JIT::emitSlow_op_lshift): | |
25022 | (JSC::JIT::emit_op_rshift): | |
25023 | (JSC::JIT::emitSlow_op_rshift): | |
25024 | (JSC::JIT::emit_op_bitand): | |
25025 | (JSC::JIT::emitBitAnd32Constant): | |
25026 | (JSC::JIT::emitBitAnd32InPlace): | |
25027 | (JSC::JIT::emit_op_bitor): | |
25028 | (JSC::JIT::emitSlow_op_bitor): | |
25029 | (JSC::JIT::emitBitOr32Constant): | |
25030 | (JSC::JIT::emitBitOr32InPlace): | |
25031 | (JSC::JIT::emit_op_bitxor): | |
25032 | (JSC::JIT::emitSlow_op_bitxor): | |
25033 | (JSC::JIT::emitBitXor32Constant): | |
25034 | (JSC::JIT::emitBitXor32InPlace): | |
25035 | (JSC::JIT::emit_op_bitnot): | |
25036 | (JSC::JIT::emitSlow_op_bitnot): | |
25037 | (JSC::JIT::emit_op_post_inc): | |
25038 | (JSC::JIT::emitSlow_op_post_inc): | |
25039 | (JSC::JIT::emit_op_post_dec): | |
25040 | (JSC::JIT::emitSlow_op_post_dec): | |
25041 | (JSC::JIT::emit_op_pre_inc): | |
25042 | (JSC::JIT::emitSlow_op_pre_inc): | |
25043 | (JSC::JIT::emit_op_pre_dec): | |
25044 | (JSC::JIT::emitSlow_op_pre_dec): | |
25045 | (JSC::JIT::emit_op_add): | |
25046 | (JSC::JIT::emitAdd32Constant): | |
25047 | (JSC::JIT::emitAdd32InPlace): | |
25048 | (JSC::JIT::emitSlow_op_add): | |
25049 | (JSC::JIT::emit_op_sub): | |
25050 | (JSC::JIT::emitSlow_op_sub): | |
25051 | (JSC::JIT::emitSub32ConstantLeft): | |
25052 | (JSC::JIT::emitSub32ConstantRight): | |
25053 | (JSC::JIT::emitSub32InPlaceLeft): | |
25054 | (JSC::JIT::emitSub32InPlaceRight): | |
25055 | (JSC::JIT::emit_op_mul): | |
25056 | (JSC::JIT::emitSlow_op_mul): | |
25057 | (JSC::JIT::emitMul32Constant): | |
25058 | (JSC::JIT::emitMul32InPlace): | |
25059 | (JSC::JIT::emit_op_mod): | |
25060 | (JSC::JIT::emitSlow_op_mod): | |
25061 | * jit/JITOpcodes.cpp: | |
25062 | ||
25063 | 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
25064 | ||
25065 | Removed JIT_OPTIMIZE_ARITHMETIC setting, since it was all about 32bit | |
25066 | value representations. | |
25067 | ||
25068 | Added JSAPIValueWrapper to the repository. | |
25069 | ||
25070 | * jit/JIT.h: | |
25071 | * jit/JITArithmetic.cpp: | |
25072 | * runtime/JSAPIValueWrapper.cpp: Added. | |
25073 | (JSC::JSAPIValueWrapper::toPrimitive): | |
25074 | (JSC::JSAPIValueWrapper::getPrimitiveNumber): | |
25075 | (JSC::JSAPIValueWrapper::toBoolean): | |
25076 | (JSC::JSAPIValueWrapper::toNumber): | |
25077 | (JSC::JSAPIValueWrapper::toString): | |
25078 | (JSC::JSAPIValueWrapper::toObject): | |
25079 | * runtime/JSAPIValueWrapper.h: Added. | |
25080 | (JSC::JSAPIValueWrapper::value): | |
25081 | (JSC::JSAPIValueWrapper::isAPIValueWrapper): | |
25082 | (JSC::JSAPIValueWrapper::JSAPIValueWrapper): | |
25083 | (JSC::jsAPIValueWrapper): | |
25084 | * wtf/Platform.h: | |
25085 | ||
25086 | 2009-05-12 Geoffrey Garen <ggaren@apple.com> | |
25087 | ||
25088 | Turned on the JIT and got it building and running the most trivial of | |
25089 | programs. | |
25090 | ||
25091 | All configurable optimizations are turned off, and a few opcodes are ad | |
25092 | hoc #if'd out. | |
25093 | ||
25094 | So far, I've only merged op_mov and op_end, but some stub-reliant | |
25095 | opcodes work as-is from TOT. | |
25096 | ||
25097 | * bytecode/CodeBlock.cpp: | |
25098 | (JSC::CodeBlock::~CodeBlock): | |
25099 | * bytecode/CodeBlock.h: | |
25100 | * jit/JIT.cpp: | |
25101 | (JSC::JIT::compileOpStrictEq): | |
25102 | * jit/JIT.h: | |
25103 | * jit/JITArithmetic.cpp: | |
25104 | (JSC::JIT::emit_op_lshift): | |
25105 | (JSC::JIT::emitSlow_op_lshift): | |
25106 | (JSC::JIT::emit_op_rshift): | |
25107 | (JSC::JIT::emitSlow_op_rshift): | |
25108 | (JSC::JIT::emit_op_jnless): | |
25109 | (JSC::JIT::emitSlow_op_jnless): | |
25110 | (JSC::JIT::emit_op_jnlesseq): | |
25111 | (JSC::JIT::emitSlow_op_jnlesseq): | |
25112 | (JSC::JIT::emit_op_bitand): | |
25113 | (JSC::JIT::emitSlow_op_bitand): | |
25114 | (JSC::JIT::emit_op_post_inc): | |
25115 | (JSC::JIT::emitSlow_op_post_inc): | |
25116 | (JSC::JIT::emit_op_post_dec): | |
25117 | (JSC::JIT::emitSlow_op_post_dec): | |
25118 | (JSC::JIT::emit_op_pre_inc): | |
25119 | (JSC::JIT::emitSlow_op_pre_inc): | |
25120 | (JSC::JIT::emit_op_pre_dec): | |
25121 | (JSC::JIT::emitSlow_op_pre_dec): | |
25122 | (JSC::JIT::emit_op_mod): | |
25123 | (JSC::JIT::emitSlow_op_mod): | |
25124 | (JSC::JIT::emit_op_add): | |
25125 | (JSC::JIT::emit_op_mul): | |
25126 | (JSC::JIT::emit_op_sub): | |
25127 | (JSC::JIT::compileBinaryArithOpSlowCase): | |
25128 | (JSC::JIT::emitSlow_op_add): | |
25129 | (JSC::JIT::emitSlow_op_mul): | |
25130 | * jit/JITCall.cpp: | |
25131 | (JSC::JIT::compileOpCallInitializeCallFrame): | |
25132 | (JSC::JIT::compileOpConstructSetupArgs): | |
25133 | (JSC::JIT::compileOpCallVarargs): | |
25134 | (JSC::JIT::compileOpCall): | |
25135 | (JSC::JIT::compileOpCallSlowCase): | |
25136 | * jit/JITInlineMethods.h: | |
25137 | (JSC::JIT::getConstantOperandImmediateInt): | |
25138 | (JSC::JIT::isOperandConstantImmediateInt): | |
25139 | (JSC::JIT::emitInitRegister): | |
25140 | (JSC::JIT::addSlowCase): | |
25141 | (JSC::JIT::addJump): | |
25142 | (JSC::JIT::emitJumpSlowToHot): | |
25143 | (JSC::JIT::tagFor): | |
25144 | (JSC::JIT::payloadFor): | |
25145 | (JSC::JIT::emitLoad): | |
25146 | (JSC::JIT::emitLoadReturnValue): | |
25147 | (JSC::JIT::emitStore): | |
25148 | (JSC::JIT::emitStoreReturnValue): | |
25149 | * jit/JITOpcodes.cpp: | |
25150 | (JSC::JIT::emit_op_mov): | |
25151 | (JSC::JIT::emit_op_end): | |
25152 | (JSC::JIT::emit_op_jmp): | |
25153 | (JSC::JIT::emit_op_loop): | |
25154 | (JSC::JIT::emit_op_loop_if_less): | |
25155 | (JSC::JIT::emit_op_loop_if_lesseq): | |
25156 | (JSC::JIT::emit_op_instanceof): | |
25157 | (JSC::JIT::emit_op_get_global_var): | |
25158 | (JSC::JIT::emit_op_put_global_var): | |
25159 | (JSC::JIT::emit_op_get_scoped_var): | |
25160 | (JSC::JIT::emit_op_put_scoped_var): | |
25161 | (JSC::JIT::emit_op_tear_off_activation): | |
25162 | (JSC::JIT::emit_op_ret): | |
25163 | (JSC::JIT::emit_op_construct_verify): | |
25164 | (JSC::JIT::emit_op_to_primitive): | |
25165 | (JSC::JIT::emit_op_loop_if_true): | |
25166 | (JSC::JIT::emit_op_resolve_global): | |
25167 | (JSC::JIT::emit_op_not): | |
25168 | (JSC::JIT::emit_op_jfalse): | |
25169 | (JSC::JIT::emit_op_jeq_null): | |
25170 | (JSC::JIT::emit_op_jneq_null): | |
25171 | (JSC::JIT::emit_op_jneq_ptr): | |
25172 | (JSC::JIT::emit_op_unexpected_load): | |
25173 | (JSC::JIT::emit_op_eq): | |
25174 | (JSC::JIT::emit_op_bitnot): | |
25175 | (JSC::JIT::emit_op_jtrue): | |
25176 | (JSC::JIT::emit_op_neq): | |
25177 | (JSC::JIT::emit_op_bitxor): | |
25178 | (JSC::JIT::emit_op_bitor): | |
25179 | (JSC::JIT::emit_op_throw): | |
25180 | (JSC::JIT::emit_op_next_pname): | |
25181 | (JSC::JIT::emit_op_push_scope): | |
25182 | (JSC::JIT::emit_op_to_jsnumber): | |
25183 | (JSC::JIT::emit_op_push_new_scope): | |
25184 | (JSC::JIT::emit_op_catch): | |
25185 | (JSC::JIT::emit_op_switch_imm): | |
25186 | (JSC::JIT::emit_op_switch_char): | |
25187 | (JSC::JIT::emit_op_switch_string): | |
25188 | (JSC::JIT::emit_op_new_error): | |
25189 | (JSC::JIT::emit_op_eq_null): | |
25190 | (JSC::JIT::emit_op_neq_null): | |
25191 | (JSC::JIT::emit_op_convert_this): | |
25192 | (JSC::JIT::emit_op_profile_will_call): | |
25193 | (JSC::JIT::emit_op_profile_did_call): | |
25194 | (JSC::JIT::emitSlow_op_construct_verify): | |
25195 | (JSC::JIT::emitSlow_op_get_by_val): | |
25196 | (JSC::JIT::emitSlow_op_loop_if_less): | |
25197 | (JSC::JIT::emitSlow_op_loop_if_lesseq): | |
25198 | (JSC::JIT::emitSlow_op_put_by_val): | |
25199 | (JSC::JIT::emitSlow_op_not): | |
25200 | (JSC::JIT::emitSlow_op_instanceof): | |
25201 | * jit/JITPropertyAccess.cpp: | |
25202 | (JSC::JIT::emit_op_get_by_val): | |
25203 | (JSC::JIT::emit_op_put_by_val): | |
25204 | (JSC::JIT::emit_op_put_by_index): | |
25205 | (JSC::JIT::emit_op_put_getter): | |
25206 | (JSC::JIT::emit_op_put_setter): | |
25207 | (JSC::JIT::emit_op_del_by_id): | |
25208 | (JSC::JIT::compileGetByIdHotPath): | |
25209 | (JSC::JIT::compilePutByIdHotPath): | |
25210 | * jit/JITStubCall.h: | |
25211 | (JSC::JITStubCall::JITStubCall): | |
25212 | (JSC::JITStubCall::addArgument): | |
25213 | (JSC::JITStubCall::call): | |
25214 | (JSC::JITStubCall::): | |
25215 | (JSC::CallEvalJITStub::CallEvalJITStub): | |
25216 | * jit/JITStubs.cpp: | |
25217 | (JSC::): | |
25218 | (JSC::JITStubs::cti_op_add): | |
25219 | (JSC::JITStubs::cti_op_pre_inc): | |
25220 | (JSC::JITStubs::cti_op_mul): | |
25221 | (JSC::JITStubs::cti_op_get_by_val): | |
25222 | (JSC::JITStubs::cti_op_get_by_val_string): | |
25223 | (JSC::JITStubs::cti_op_get_by_val_byte_array): | |
25224 | (JSC::JITStubs::cti_op_sub): | |
25225 | (JSC::JITStubs::cti_op_put_by_val): | |
25226 | (JSC::JITStubs::cti_op_put_by_val_array): | |
25227 | (JSC::JITStubs::cti_op_put_by_val_byte_array): | |
25228 | (JSC::JITStubs::cti_op_negate): | |
25229 | (JSC::JITStubs::cti_op_div): | |
25230 | (JSC::JITStubs::cti_op_pre_dec): | |
25231 | (JSC::JITStubs::cti_op_post_inc): | |
25232 | (JSC::JITStubs::cti_op_eq): | |
25233 | (JSC::JITStubs::cti_op_lshift): | |
25234 | (JSC::JITStubs::cti_op_bitand): | |
25235 | (JSC::JITStubs::cti_op_rshift): | |
25236 | (JSC::JITStubs::cti_op_bitnot): | |
25237 | (JSC::JITStubs::cti_op_mod): | |
25238 | (JSC::JITStubs::cti_op_neq): | |
25239 | (JSC::JITStubs::cti_op_post_dec): | |
25240 | (JSC::JITStubs::cti_op_urshift): | |
25241 | (JSC::JITStubs::cti_op_bitxor): | |
25242 | (JSC::JITStubs::cti_op_bitor): | |
25243 | (JSC::JITStubs::cti_op_switch_imm): | |
25244 | * jit/JITStubs.h: | |
25245 | * runtime/JSArray.cpp: | |
25246 | (JSC::JSArray::JSArray): | |
25247 | * runtime/JSFunction.cpp: | |
25248 | (JSC::JSFunction::~JSFunction): | |
25249 | * runtime/JSValue.h: | |
25250 | (JSC::JSValue::payload): | |
25251 | * wtf/Platform.h: | |
25252 | ||
25253 | 2009-05-07 Sam Weinig <sam@webkit.org> | |
25254 | ||
25255 | Reviewed by Geoffrey Garen. | |
25256 | ||
25257 | Add some new MacroAssembler and assembler functions that will be needed shortly. | |
25258 | ||
25259 | * assembler/MacroAssemblerX86Common.h: | |
25260 | (JSC::MacroAssemblerX86Common::add32): | |
25261 | (JSC::MacroAssemblerX86Common::and32): | |
25262 | (JSC::MacroAssemblerX86Common::mul32): | |
25263 | (JSC::MacroAssemblerX86Common::neg32): | |
25264 | (JSC::MacroAssemblerX86Common::or32): | |
25265 | (JSC::MacroAssemblerX86Common::sub32): | |
25266 | (JSC::MacroAssemblerX86Common::xor32): | |
25267 | (JSC::MacroAssemblerX86Common::branchAdd32): | |
25268 | (JSC::MacroAssemblerX86Common::branchMul32): | |
25269 | (JSC::MacroAssemblerX86Common::branchSub32): | |
25270 | * assembler/X86Assembler.h: | |
25271 | (JSC::X86Assembler::): | |
25272 | (JSC::X86Assembler::addl_rm): | |
25273 | (JSC::X86Assembler::andl_mr): | |
25274 | (JSC::X86Assembler::andl_rm): | |
25275 | (JSC::X86Assembler::andl_im): | |
25276 | (JSC::X86Assembler::negl_r): | |
25277 | (JSC::X86Assembler::notl_r): | |
25278 | (JSC::X86Assembler::orl_rm): | |
25279 | (JSC::X86Assembler::orl_im): | |
25280 | (JSC::X86Assembler::subl_rm): | |
25281 | (JSC::X86Assembler::xorl_mr): | |
25282 | (JSC::X86Assembler::xorl_rm): | |
25283 | (JSC::X86Assembler::xorl_im): | |
25284 | (JSC::X86Assembler::imull_mr): | |
25285 | ||
25286 | 2009-05-11 Sam Weinig <sam@webkit.org> | |
25287 | ||
25288 | Reviewed by Cameron Zwarich. | |
25289 | ||
25290 | Remove the NumberHeap. | |
25291 | ||
25292 | * JavaScriptCore.exp: | |
25293 | * runtime/Collector.cpp: | |
25294 | (JSC::Heap::Heap): | |
25295 | (JSC::Heap::destroy): | |
25296 | (JSC::Heap::recordExtraCost): | |
25297 | (JSC::Heap::heapAllocate): | |
25298 | (JSC::Heap::markConservatively): | |
25299 | (JSC::Heap::sweep): | |
25300 | (JSC::Heap::collect): | |
25301 | (JSC::Heap::objectCount): | |
25302 | (JSC::Heap::statistics): | |
25303 | (JSC::typeName): | |
25304 | (JSC::Heap::isBusy): | |
25305 | * runtime/Collector.h: | |
25306 | (JSC::Heap::globalData): | |
25307 | * runtime/JSCell.h: | |
25308 | ||
25309 | 2009-05-11 Geoffrey Garen <ggaren@apple.com> | |
25310 | ||
25311 | Reviewed by Sam Weinig. | |
25312 | ||
25313 | Land initial commit of new number representation for 32 bit platforms, | |
25314 | with JIT disabled. | |
25315 | ||
25316 | * API/APICast.h: | |
25317 | (toJS): | |
25318 | (toRef): | |
25319 | * API/JSCallbackObjectFunctions.h: | |
25320 | (JSC::::hasInstance): | |
25321 | (JSC::::toNumber): | |
25322 | (JSC::::toString): | |
25323 | * API/tests/testapi.c: | |
25324 | (EvilExceptionObject_convertToType): | |
25325 | * AllInOneFile.cpp: | |
25326 | * JavaScriptCore.exp: | |
25327 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
25328 | * bytecode/CodeBlock.cpp: | |
25329 | (JSC::valueToSourceString): | |
25330 | * bytecompiler/BytecodeGenerator.cpp: | |
25331 | (JSC::BytecodeGenerator::emitLoad): | |
25332 | (JSC::BytecodeGenerator::emitUnexpectedLoad): | |
25333 | (JSC::keyForImmediateSwitch): | |
25334 | * bytecompiler/BytecodeGenerator.h: | |
25335 | * interpreter/Interpreter.cpp: | |
25336 | (JSC::Interpreter::dumpRegisters): | |
25337 | (JSC::Interpreter::privateExecute): | |
25338 | * parser/Nodes.cpp: | |
25339 | (JSC::ArrayNode::emitBytecode): | |
25340 | (JSC::processClauseList): | |
25341 | * runtime/ArgList.h: | |
25342 | * runtime/Collector.h: | |
25343 | (JSC::sizeof): | |
25344 | * runtime/DateMath.cpp: | |
25345 | * runtime/ExceptionHelpers.h: | |
25346 | * runtime/InitializeThreading.cpp: | |
25347 | * runtime/JSArray.cpp: | |
25348 | (JSC::JSArray::JSArray): | |
25349 | * runtime/JSCell.cpp: | |
25350 | * runtime/JSCell.h: | |
25351 | (JSC::JSCell::isAPIValueWrapper): | |
25352 | (JSC::JSValue::isString): | |
25353 | (JSC::JSValue::isGetterSetter): | |
25354 | (JSC::JSValue::isObject): | |
25355 | (JSC::JSValue::getString): | |
25356 | (JSC::JSValue::getObject): | |
25357 | (JSC::JSValue::getCallData): | |
25358 | (JSC::JSValue::getConstructData): | |
25359 | (JSC::JSValue::getUInt32): | |
25360 | (JSC::JSValue::marked): | |
25361 | (JSC::JSValue::toPrimitive): | |
25362 | (JSC::JSValue::getPrimitiveNumber): | |
25363 | (JSC::JSValue::toBoolean): | |
25364 | (JSC::JSValue::toNumber): | |
25365 | (JSC::JSValue::toString): | |
25366 | (JSC::JSValue::needsThisConversion): | |
25367 | (JSC::JSValue::toThisString): | |
25368 | (JSC::JSValue::getJSNumber): | |
25369 | (JSC::JSValue::toObject): | |
25370 | (JSC::JSValue::toThisObject): | |
25371 | * runtime/JSGlobalData.cpp: | |
25372 | (JSC::JSGlobalData::JSGlobalData): | |
25373 | * runtime/JSGlobalData.h: | |
25374 | * runtime/JSGlobalObject.h: | |
25375 | (JSC::Structure::prototypeForLookup): | |
25376 | * runtime/JSGlobalObjectFunctions.cpp: | |
25377 | (JSC::globalFuncParseInt): | |
25378 | * runtime/JSImmediate.h: | |
25379 | * runtime/JSNumberCell.cpp: Removed. | |
25380 | * runtime/JSNumberCell.h: Removed. | |
25381 | * runtime/JSObject.h: | |
25382 | (JSC::JSValue::get): | |
25383 | (JSC::JSValue::put): | |
25384 | * runtime/JSString.h: | |
25385 | (JSC::JSValue::toThisJSString): | |
25386 | * runtime/JSValue.cpp: | |
25387 | (JSC::JSValue::toInteger): | |
25388 | (JSC::JSValue::toIntegerPreserveNaN): | |
25389 | (JSC::JSValue::toObjectSlowCase): | |
25390 | (JSC::JSValue::toThisObjectSlowCase): | |
25391 | (JSC::JSValue::synthesizeObject): | |
25392 | (JSC::JSValue::synthesizePrototype): | |
25393 | (JSC::JSValue::description): | |
25394 | (JSC::nonInlineNaN): | |
25395 | * runtime/JSValue.h: | |
25396 | (JSC::JSValue::): | |
25397 | (JSC::EncodedJSValueHashTraits::emptyValue): | |
25398 | (JSC::jsNaN): | |
25399 | (JSC::operator==): | |
25400 | (JSC::operator!=): | |
25401 | (JSC::toInt32): | |
25402 | (JSC::toUInt32): | |
25403 | (JSC::JSValue::encode): | |
25404 | (JSC::JSValue::decode): | |
25405 | (JSC::JSValue::JSValue): | |
25406 | (JSC::JSValue::operator bool): | |
25407 | (JSC::JSValue::operator==): | |
25408 | (JSC::JSValue::operator!=): | |
25409 | (JSC::JSValue::isUndefined): | |
25410 | (JSC::JSValue::isNull): | |
25411 | (JSC::JSValue::isUndefinedOrNull): | |
25412 | (JSC::JSValue::isCell): | |
25413 | (JSC::JSValue::isInt32): | |
25414 | (JSC::JSValue::isUInt32): | |
25415 | (JSC::JSValue::isDouble): | |
25416 | (JSC::JSValue::isTrue): | |
25417 | (JSC::JSValue::isFalse): | |
25418 | (JSC::JSValue::tag): | |
25419 | (JSC::JSValue::asInt32): | |
25420 | (JSC::JSValue::asUInt32): | |
25421 | (JSC::JSValue::asDouble): | |
25422 | (JSC::JSValue::asCell): | |
25423 | (JSC::JSValue::isNumber): | |
25424 | (JSC::JSValue::isBoolean): | |
25425 | (JSC::JSValue::getBoolean): | |
25426 | (JSC::JSValue::uncheckedGetNumber): | |
25427 | (JSC::JSValue::toJSNumber): | |
25428 | (JSC::JSValue::getNumber): | |
25429 | (JSC::JSValue::toInt32): | |
25430 | (JSC::JSValue::toUInt32): | |
25431 | * runtime/Operations.h: | |
25432 | (JSC::JSValue::equal): | |
25433 | (JSC::JSValue::equalSlowCaseInline): | |
25434 | (JSC::JSValue::strictEqual): | |
25435 | (JSC::JSValue::strictEqualSlowCaseInline): | |
25436 | (JSC::jsLess): | |
25437 | (JSC::jsLessEq): | |
25438 | (JSC::jsAdd): | |
25439 | * runtime/PropertySlot.h: | |
25440 | * runtime/StringPrototype.cpp: | |
25441 | (JSC::stringProtoFuncCharAt): | |
25442 | (JSC::stringProtoFuncCharCodeAt): | |
25443 | (JSC::stringProtoFuncIndexOf): | |
25444 | * wtf/Platform.h: | |
25445 | ||
25446 | === Start merge of nitro-extreme branch 2009-07-30 === | |
25447 | ||
25448 | 2009-07-29 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
25449 | ||
25450 | Reviewed by George Staikos. | |
25451 | ||
25452 | Resolve class/struct mixup in forward declarations | |
25453 | https://bugs.webkit.org/show_bug.cgi?id=27708 | |
25454 | ||
25455 | * API/JSClassRef.h: | |
25456 | * bytecode/SamplingTool.h: | |
25457 | * interpreter/Interpreter.h: | |
25458 | * jit/JIT.h: | |
25459 | * profiler/ProfileGenerator.h: | |
25460 | * profiler/Profiler.h: | |
25461 | * runtime/ClassInfo.h: | |
25462 | * runtime/ExceptionHelpers.h: | |
25463 | * runtime/JSByteArray.h: | |
25464 | * runtime/JSCell.h: | |
25465 | * runtime/JSFunction.h: | |
25466 | * runtime/JSGlobalData.h: | |
25467 | * runtime/JSObject.h: | |
25468 | * runtime/JSString.h: | |
25469 | ||
25470 | 2009-07-28 Ada Chan <adachan@apple.com> | |
25471 | ||
25472 | Reviewed by Darin Adler. | |
25473 | ||
25474 | https://bugs.webkit.org/show_bug.cgi?id=27236 | |
25475 | - Implement TCMalloc_SystemRelease and TCMalloc_SystemCommit for Windows. | |
25476 | - Use a background thread to periodically scavenge memory to release back to the system. | |
25477 | ||
25478 | * wtf/FastMalloc.cpp: | |
25479 | (WTF::TCMalloc_PageHeap::init): | |
25480 | (WTF::TCMalloc_PageHeap::runScavengerThread): | |
25481 | (WTF::TCMalloc_PageHeap::scavenge): | |
25482 | (WTF::TCMalloc_PageHeap::shouldContinueScavenging): | |
25483 | (WTF::TCMalloc_PageHeap::New): | |
25484 | (WTF::TCMalloc_PageHeap::AllocLarge): | |
25485 | (WTF::TCMalloc_PageHeap::Delete): | |
25486 | (WTF::TCMalloc_PageHeap::GrowHeap): | |
25487 | (WTF::sleep): | |
25488 | (WTF::TCMalloc_PageHeap::scavengerThread): | |
25489 | * wtf/TCSystemAlloc.cpp: | |
25490 | (TCMalloc_SystemRelease): | |
25491 | (TCMalloc_SystemCommit): | |
25492 | * wtf/TCSystemAlloc.h: | |
25493 | ||
25494 | 2009-07-28 Xan Lopez <xlopez@igalia.com> | |
25495 | ||
25496 | Add new files, fixes distcheck. | |
25497 | ||
25498 | * GNUmakefile.am: | |
25499 | ||
25500 | 2009-07-28 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
25501 | ||
25502 | Reviewed by Simon Hausmann. | |
25503 | ||
25504 | [Qt] Determining whether to use JIT or interpreter | |
25505 | moved from JavaScriptCore.pri to Platform.h | |
25506 | ||
25507 | * JavaScriptCore.pri: | |
25508 | * wtf/Platform.h: | |
25509 | ||
25510 | 2009-07-27 Brian Weinstein <bweinstein@apple.com> | |
25511 | ||
25512 | Fix of misuse of sort command. | |
25513 | ||
25514 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
25515 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
25516 | ||
25517 | 2009-07-27 Brian Weinstein <bweinstein@apple.com> | |
25518 | ||
25519 | Build fix for Windows. | |
25520 | ||
25521 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
25522 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
25523 | ||
25524 | 2009-07-27 Gavin Barraclough <barraclough@apple.com> | |
25525 | ||
25526 | Rubber stamped by Oliver Hunt. | |
25527 | ||
25528 | Fix tyop in JIT, renamed preverveReturnAddressAfterCall -> preserveReturnAddressAfterCall. | |
25529 | ||
25530 | * jit/JIT.cpp: | |
25531 | (JSC::JIT::privateCompile): | |
25532 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
25533 | * jit/JIT.h: | |
25534 | * jit/JITInlineMethods.h: | |
25535 | (JSC::JIT::preserveReturnAddressAfterCall): | |
25536 | * jit/JITPropertyAccess.cpp: | |
25537 | (JSC::JIT::privateCompilePutByIdTransition): | |
25538 | ||
25539 | 2009-07-27 Alexey Proskuryakov <ap@webkit.org> | |
25540 | ||
25541 | Gtk build fix. | |
25542 | ||
25543 | * runtime/JSLock.cpp: (JSC::JSLock::JSLock): Fix "no threading" case. | |
25544 | ||
25545 | 2009-07-27 Alexey Proskuryakov <ap@webkit.org> | |
25546 | ||
25547 | Release build fix. | |
25548 | ||
25549 | * runtime/JSLock.h: (JSC::JSLock::~JSLock): | |
25550 | ||
25551 | 2009-07-27 Alexey Proskuryakov <ap@webkit.org> | |
25552 | ||
25553 | Reviewed by Darin Adler. | |
25554 | ||
25555 | https://bugs.webkit.org/show_bug.cgi?id=27735 | |
25556 | Give a helpful name to JSLock constructor argument | |
25557 | ||
25558 | * API/JSBase.cpp: | |
25559 | (JSGarbageCollect): | |
25560 | * API/JSContextRef.cpp: | |
25561 | * API/JSObjectRef.cpp: | |
25562 | (JSPropertyNameArrayRelease): | |
25563 | (JSPropertyNameAccumulatorAddName): | |
25564 | * JavaScriptCore.exp: | |
25565 | * jsc.cpp: | |
25566 | (functionGC): | |
25567 | (cleanupGlobalData): | |
25568 | (jscmain): | |
25569 | * runtime/Collector.cpp: | |
25570 | (JSC::Heap::destroy): | |
25571 | * runtime/JSLock.cpp: | |
25572 | (JSC::JSLock::JSLock): | |
25573 | (JSC::JSLock::lock): | |
25574 | (JSC::JSLock::unlock): | |
25575 | (JSC::JSLock::DropAllLocks::DropAllLocks): | |
25576 | (JSC::JSLock::DropAllLocks::~DropAllLocks): | |
25577 | * runtime/JSLock.h: | |
25578 | (JSC::): | |
25579 | (JSC::JSLock::JSLock): | |
25580 | (JSC::JSLock::~JSLock): | |
25581 | ||
25582 | 2009-07-25 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
25583 | ||
25584 | Reviewed by Eric Seidel. | |
25585 | ||
25586 | Allow custom memory allocation control for OpaqueJSPropertyNameArray struct | |
25587 | https://bugs.webkit.org/show_bug.cgi?id=27342 | |
25588 | ||
25589 | Inherits OpaqueJSPropertyNameArray struct from FastAllocBase because it has been | |
25590 | instantiated by 'new' JavaScriptCore/API/JSObjectRef.cpp:473. | |
25591 | ||
25592 | * API/JSObjectRef.cpp: | |
25593 | ||
25594 | 2009-07-24 Ada Chan <adachan@apple.com> | |
25595 | ||
25596 | In preparation for https://bugs.webkit.org/show_bug.cgi?id=27236: | |
25597 | Remove TCMALLOC_TRACK_DECOMMITED_SPANS. We'll always track decommitted spans. | |
25598 | We have tested this and show it has little impact on performance. | |
25599 | ||
25600 | Reviewed by Mark Rowe. | |
25601 | ||
25602 | * wtf/FastMalloc.cpp: | |
25603 | (WTF::TCMalloc_PageHeap::New): | |
25604 | (WTF::TCMalloc_PageHeap::AllocLarge): | |
25605 | (WTF::propagateDecommittedState): | |
25606 | (WTF::mergeDecommittedStates): | |
25607 | (WTF::TCMalloc_PageHeap::Delete): | |
25608 | (WTF::TCMalloc_PageHeap::IncrementalScavenge): | |
25609 | ||
25610 | 2009-07-24 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
25611 | ||
25612 | Reviewed by Darin Adler and Adam Barth. | |
25613 | ||
25614 | Build fix for x86 platforms. | |
25615 | https://bugs.webkit.org/show_bug.cgi?id=27602 | |
25616 | ||
25617 | * jit/JIT.cpp: | |
25618 | ||
25619 | 2009-07-23 Kevin Ollivier <kevino@theolliviers.com> | |
25620 | ||
25621 | wx build fix, adding missing header. | |
25622 | ||
25623 | * jit/JIT.cpp: | |
25624 | ||
25625 | 2009-07-22 Yong Li <yong.li@torchmobile.com> | |
25626 | ||
25627 | Reviewed by George Staikos. | |
25628 | ||
25629 | Add wince specific memory files into wtf/wince | |
25630 | https://bugs.webkit.org/show_bug.cgi?id=27550 | |
25631 | ||
25632 | * wtf/wince/FastMallocWince.h: Added. | |
25633 | * wtf/wince/MemoryManager.cpp: Added. | |
25634 | * wtf/wince/MemoryManager.h: Added. | |
25635 | ||
25636 | 2009-07-23 Norbert Leser <norbert.leser@nokia.com> | |
25637 | ||
25638 | Reviewed by Simon Hausmann. | |
25639 | ||
25640 | Fix for missing mmap features in Symbian | |
25641 | https://bugs.webkit.org/show_bug.cgi?id=24540 | |
25642 | ||
25643 | Fix, conditionally for PLATFORM(SYMBIAN), as an alternative | |
25644 | to missing support for the MAP_ANON property flag in mmap. | |
25645 | It utilizes Symbian specific memory allocation features. | |
25646 | ||
25647 | * runtime/Collector.cpp | |
25648 | ||
25649 | 2009-07-22 Gavin Barraclough <barraclough@apple.com> | |
25650 | ||
25651 | Reviewed by Sam Weinig. | |
25652 | ||
25653 | With ENABLE(ASSEMBLER_WX_EXCLUSIVE), only change permissions once per repatch event. | |
25654 | ( https://bugs.webkit.org/show_bug.cgi?id=27564 ) | |
25655 | ||
25656 | Currently we change permissions forwards and backwards for each instruction modified, | |
25657 | instead we should only change permissions once per complete repatching event. | |
25658 | ||
25659 | 2.5% progression running with ENABLE(ASSEMBLER_WX_EXCLUSIVE) enabled, | |
25660 | which recoups 1/3 of the penalty of running with this mode enabled. | |
25661 | ||
25662 | * assembler/ARMAssembler.cpp: | |
25663 | (JSC::ARMAssembler::linkBranch): | |
25664 | - Replace usage of MakeWritable with cacheFlush. | |
25665 | ||
25666 | * assembler/ARMAssembler.h: | |
25667 | (JSC::ARMAssembler::patchPointerInternal): | |
25668 | (JSC::ARMAssembler::repatchLoadPtrToLEA): | |
25669 | - Replace usage of MakeWritable with cacheFlush. | |
25670 | ||
25671 | * assembler/ARMv7Assembler.h: | |
25672 | (JSC::ARMv7Assembler::relinkJump): | |
25673 | (JSC::ARMv7Assembler::relinkCall): | |
25674 | (JSC::ARMv7Assembler::repatchInt32): | |
25675 | (JSC::ARMv7Assembler::repatchPointer): | |
25676 | (JSC::ARMv7Assembler::repatchLoadPtrToLEA): | |
25677 | (JSC::ARMv7Assembler::setInt32): | |
25678 | - Replace usage of MakeWritable with cacheFlush. | |
25679 | ||
25680 | * assembler/LinkBuffer.h: | |
25681 | (JSC::LinkBuffer::performFinalization): | |
25682 | - Make explicit call to cacheFlush. | |
25683 | ||
25684 | * assembler/MacroAssemblerCodeRef.h: | |
25685 | (JSC::MacroAssemblerCodeRef::MacroAssemblerCodeRef): | |
25686 | - Make size always available. | |
25687 | ||
25688 | * assembler/RepatchBuffer.h: | |
25689 | (JSC::RepatchBuffer::RepatchBuffer): | |
25690 | (JSC::RepatchBuffer::~RepatchBuffer): | |
25691 | - Add calls to MakeWritable & makeExecutable. | |
25692 | ||
25693 | * assembler/X86Assembler.h: | |
25694 | (JSC::X86Assembler::relinkJump): | |
25695 | (JSC::X86Assembler::relinkCall): | |
25696 | (JSC::X86Assembler::repatchInt32): | |
25697 | (JSC::X86Assembler::repatchPointer): | |
25698 | (JSC::X86Assembler::repatchLoadPtrToLEA): | |
25699 | - Remove usage of MakeWritable. | |
25700 | ||
25701 | * bytecode/CodeBlock.h: | |
25702 | (JSC::CodeBlock::getJITCode): | |
25703 | - Provide access to CodeBlock's JITCode. | |
25704 | ||
25705 | * jit/ExecutableAllocator.h: | |
25706 | (JSC::ExecutableAllocator::makeExecutable): | |
25707 | (JSC::ExecutableAllocator::cacheFlush): | |
25708 | - Remove MakeWritable, make cacheFlush public. | |
25709 | ||
25710 | * jit/JIT.cpp: | |
25711 | (JSC::ctiPatchNearCallByReturnAddress): | |
25712 | (JSC::ctiPatchCallByReturnAddress): | |
25713 | (JSC::JIT::privateCompile): | |
25714 | (JSC::JIT::unlinkCall): | |
25715 | (JSC::JIT::linkCall): | |
25716 | - Add CodeBlock argument to RepatchBuffer. | |
25717 | ||
25718 | * jit/JIT.h: | |
25719 | - Pass CodeBlock argument for use by RepatchBuffer. | |
25720 | ||
25721 | * jit/JITCode.h: | |
25722 | (JSC::JITCode::start): | |
25723 | (JSC::JITCode::size): | |
25724 | - Provide access to code start & size. | |
25725 | ||
25726 | * jit/JITPropertyAccess.cpp: | |
25727 | (JSC::JIT::privateCompilePutByIdTransition): | |
25728 | (JSC::JIT::patchGetByIdSelf): | |
25729 | (JSC::JIT::patchMethodCallProto): | |
25730 | (JSC::JIT::patchPutByIdReplace): | |
25731 | (JSC::JIT::privateCompilePatchGetArrayLength): | |
25732 | (JSC::JIT::privateCompileGetByIdProto): | |
25733 | (JSC::JIT::privateCompileGetByIdSelfList): | |
25734 | (JSC::JIT::privateCompileGetByIdProtoList): | |
25735 | (JSC::JIT::privateCompileGetByIdChainList): | |
25736 | (JSC::JIT::privateCompileGetByIdChain): | |
25737 | - Add CodeBlock argument to RepatchBuffer. | |
25738 | ||
25739 | * jit/JITStubs.cpp: | |
25740 | (JSC::JITThunks::tryCachePutByID): | |
25741 | (JSC::JITThunks::tryCacheGetByID): | |
25742 | (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
25743 | - Pass CodeBlock argument for use by RepatchBuffer. | |
25744 | ||
25745 | 2009-07-21 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
25746 | ||
25747 | Reviewed by Gavin Barraclough. | |
25748 | ||
25749 | Cache not only the structure of the method, but the | |
25750 | structure of its prototype as well. | |
25751 | https://bugs.webkit.org/show_bug.cgi?id=27077 | |
25752 | ||
25753 | * bytecode/CodeBlock.cpp: | |
25754 | (JSC::CodeBlock::~CodeBlock): | |
25755 | * bytecode/CodeBlock.h: | |
25756 | (JSC::MethodCallLinkInfo::MethodCallLinkInfo): | |
25757 | * jit/JITPropertyAccess.cpp: | |
25758 | (JSC::JIT::patchMethodCallProto): | |
25759 | ||
25760 | 2009-07-21 Gavin Barraclough <barraclough@apple.com> | |
25761 | ||
25762 | Reviewed by Sam Weinig. | |
25763 | ||
25764 | Move call linking / repatching down from AbstractMacroAssembler into MacroAssemblerARCH classes. | |
25765 | ( https://bugs.webkit.org/show_bug.cgi?id=27527 ) | |
25766 | ||
25767 | This allows the implementation to be defined per architecture. Specifically this addresses the | |
25768 | fact that x86-64 MacroAssembler implements far calls as a load to register, followed by a call | |
25769 | to register. Patching the call actually requires the pointer load to be patched, rather than | |
25770 | the call to be patched. This is implementation detail specific to MacroAssemblerX86_64, and as | |
25771 | such is best handled there. | |
25772 | ||
25773 | * assembler/AbstractMacroAssembler.h: | |
25774 | * assembler/MacroAssemblerARM.h: | |
25775 | (JSC::MacroAssemblerARM::linkCall): | |
25776 | (JSC::MacroAssemblerARM::repatchCall): | |
25777 | * assembler/MacroAssemblerARMv7.h: | |
25778 | (JSC::MacroAssemblerARMv7::linkCall): | |
25779 | (JSC::MacroAssemblerARMv7::repatchCall): | |
25780 | * assembler/MacroAssemblerX86.h: | |
25781 | (JSC::MacroAssemblerX86::linkCall): | |
25782 | (JSC::MacroAssemblerX86::repatchCall): | |
25783 | * assembler/MacroAssemblerX86_64.h: | |
25784 | (JSC::MacroAssemblerX86_64::linkCall): | |
25785 | (JSC::MacroAssemblerX86_64::repatchCall): | |
25786 | ||
25787 | 2009-07-21 Adam Treat <adam.treat@torchmobile.com> | |
25788 | ||
25789 | Reviewed by George Staikos. | |
25790 | ||
25791 | Every wtf file includes other wtf files with <> style includes | |
25792 | except this one. Fix the exception. | |
25793 | ||
25794 | * wtf/ByteArray.h: | |
25795 | ||
25796 | 2009-07-21 Gavin Barraclough <barraclough@apple.com> | |
25797 | ||
25798 | Reviewed by Oliver Hunt. | |
25799 | ||
25800 | Move LinkBuffer/RepatchBuffer out of AbstractMacroAssembler. | |
25801 | ( https://bugs.webkit.org/show_bug.cgi?id=27485 ) | |
25802 | ||
25803 | This change is the first step in a process to move code that should be in | |
25804 | the architecture-specific MacroAssembler classes up out of Assmbler and | |
25805 | AbstractMacroAssembler. | |
25806 | ||
25807 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
25808 | - added new files | |
25809 | ||
25810 | * assembler/ARMAssembler.h: | |
25811 | (JSC::ARMAssembler::linkPointer): | |
25812 | - rename patchPointer to bring it in line with the current link/repatch naming scheme | |
25813 | ||
25814 | * assembler/ARMv7Assembler.h: | |
25815 | (JSC::ARMv7Assembler::linkCall): | |
25816 | (JSC::ARMv7Assembler::linkPointer): | |
25817 | (JSC::ARMv7Assembler::relinkCall): | |
25818 | (JSC::ARMv7Assembler::repatchInt32): | |
25819 | (JSC::ARMv7Assembler::repatchPointer): | |
25820 | (JSC::ARMv7Assembler::setInt32): | |
25821 | (JSC::ARMv7Assembler::setPointer): | |
25822 | - rename patchPointer to bring it in line with the current link/repatch naming scheme | |
25823 | ||
25824 | * assembler/AbstractMacroAssembler.h: | |
25825 | (JSC::AbstractMacroAssembler::linkJump): | |
25826 | (JSC::AbstractMacroAssembler::linkCall): | |
25827 | (JSC::AbstractMacroAssembler::linkPointer): | |
25828 | (JSC::AbstractMacroAssembler::getLinkerAddress): | |
25829 | (JSC::AbstractMacroAssembler::getLinkerCallReturnOffset): | |
25830 | (JSC::AbstractMacroAssembler::repatchJump): | |
25831 | (JSC::AbstractMacroAssembler::repatchCall): | |
25832 | (JSC::AbstractMacroAssembler::repatchNearCall): | |
25833 | (JSC::AbstractMacroAssembler::repatchInt32): | |
25834 | (JSC::AbstractMacroAssembler::repatchPointer): | |
25835 | (JSC::AbstractMacroAssembler::repatchLoadPtrToLEA): | |
25836 | - remove the LinkBuffer/RepatchBuffer classes, but leave a set of (private, friended) methods to interface to the Assembler | |
25837 | ||
25838 | * assembler/LinkBuffer.h: Added. | |
25839 | (JSC::LinkBuffer::LinkBuffer): | |
25840 | (JSC::LinkBuffer::~LinkBuffer): | |
25841 | (JSC::LinkBuffer::link): | |
25842 | (JSC::LinkBuffer::patch): | |
25843 | (JSC::LinkBuffer::locationOf): | |
25844 | (JSC::LinkBuffer::locationOfNearCall): | |
25845 | (JSC::LinkBuffer::returnAddressOffset): | |
25846 | (JSC::LinkBuffer::finalizeCode): | |
25847 | (JSC::LinkBuffer::finalizeCodeAddendum): | |
25848 | (JSC::LinkBuffer::code): | |
25849 | (JSC::LinkBuffer::performFinalization): | |
25850 | - new file containing the LinkBuffer class, previously a member of AbstractMacroAssembler | |
25851 | ||
25852 | * assembler/RepatchBuffer.h: Added. | |
25853 | (JSC::RepatchBuffer::RepatchBuffer): | |
25854 | (JSC::RepatchBuffer::relink): | |
25855 | (JSC::RepatchBuffer::repatch): | |
25856 | (JSC::RepatchBuffer::repatchLoadPtrToLEA): | |
25857 | (JSC::RepatchBuffer::relinkCallerToTrampoline): | |
25858 | (JSC::RepatchBuffer::relinkCallerToFunction): | |
25859 | (JSC::RepatchBuffer::relinkNearCallerToTrampoline): | |
25860 | - new file containing the RepatchBuffer class, previously a member of AbstractMacroAssembler | |
25861 | ||
25862 | * assembler/X86Assembler.h: | |
25863 | (JSC::X86Assembler::linkJump): | |
25864 | (JSC::X86Assembler::linkCall): | |
25865 | (JSC::X86Assembler::linkPointerForCall): | |
25866 | (JSC::X86Assembler::linkPointer): | |
25867 | (JSC::X86Assembler::relinkJump): | |
25868 | (JSC::X86Assembler::relinkCall): | |
25869 | (JSC::X86Assembler::repatchInt32): | |
25870 | (JSC::X86Assembler::repatchPointer): | |
25871 | (JSC::X86Assembler::setPointer): | |
25872 | (JSC::X86Assembler::setInt32): | |
25873 | (JSC::X86Assembler::setRel32): | |
25874 | - rename patchPointer to bring it in line with the current link/repatch naming scheme | |
25875 | ||
25876 | * jit/JIT.cpp: | |
25877 | (JSC::ctiPatchNearCallByReturnAddress): | |
25878 | (JSC::ctiPatchCallByReturnAddress): | |
25879 | - include new headers | |
25880 | - remove MacroAssembler:: specification from RepatchBuffer usage | |
25881 | ||
25882 | * jit/JITPropertyAccess.cpp: | |
25883 | * yarr/RegexJIT.cpp: | |
25884 | - include new headers | |
25885 | ||
25886 | 2009-07-21 Robert Agoston <Agoston.Robert@stud.u-szeged.hu> | |
25887 | ||
25888 | Reviewed by David Levin. | |
25889 | ||
25890 | Fixed #undef typo. | |
25891 | https://bugs.webkit.org/show_bug.cgi?id=27506 | |
25892 | ||
25893 | * bytecode/Opcode.h: | |
25894 | ||
25895 | 2009-07-21 Adam Roben <aroben@apple.com> | |
25896 | ||
25897 | Roll out r46153, r46154, and r46155 | |
25898 | ||
25899 | These changes were causing build failures and assertion failures on | |
25900 | Windows. | |
25901 | ||
25902 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
25903 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
25904 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
25905 | * runtime/JSArray.cpp: | |
25906 | * runtime/StringPrototype.cpp: | |
25907 | * runtime/UString.cpp: | |
25908 | * runtime/UString.h: | |
25909 | * wtf/FastMalloc.cpp: | |
25910 | * wtf/FastMalloc.h: | |
25911 | * wtf/Platform.h: | |
25912 | * wtf/PossiblyNull.h: Removed. | |
25913 | ||
25914 | 2009-07-21 Roland Steiner <rolandsteiner@google.com> | |
25915 | ||
25916 | Reviewed by David Levin. | |
25917 | ||
25918 | Add ENABLE_RUBY to list of build options | |
25919 | https://bugs.webkit.org/show_bug.cgi?id=27324 | |
25920 | ||
25921 | * Configurations/FeatureDefines.xcconfig: Added flag ENABLE_RUBY. | |
25922 | ||
25923 | 2009-07-20 Oliver Hunt <oliver@apple.com> | |
25924 | ||
25925 | Build fix attempt #2 | |
25926 | ||
25927 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
25928 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
25929 | ||
25930 | 2009-07-20 Oliver Hunt <oliver@apple.com> | |
25931 | ||
25932 | Build fix attempt #1 | |
25933 | ||
25934 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
25935 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
25936 | ||
25937 | 2009-07-20 Oliver Hunt <oliver@apple.com> | |
25938 | ||
25939 | Reviewed by Gavin Barraclough. | |
25940 | ||
25941 | Make it harder to misuse try* allocation routines | |
25942 | https://bugs.webkit.org/show_bug.cgi?id=27469 | |
25943 | ||
25944 | Jump through a few hoops to make it much harder to accidentally | |
25945 | miss null-checking of values returned by the try-* allocation | |
25946 | routines. | |
25947 | ||
25948 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
25949 | * runtime/JSArray.cpp: | |
25950 | (JSC::JSArray::putSlowCase): | |
25951 | (JSC::JSArray::increaseVectorLength): | |
25952 | * runtime/StringPrototype.cpp: | |
25953 | (JSC::stringProtoFuncFontsize): | |
25954 | (JSC::stringProtoFuncLink): | |
25955 | * runtime/UString.cpp: | |
25956 | (JSC::allocChars): | |
25957 | (JSC::reallocChars): | |
25958 | (JSC::expandCapacity): | |
25959 | (JSC::UString::Rep::reserveCapacity): | |
25960 | (JSC::UString::expandPreCapacity): | |
25961 | (JSC::createRep): | |
25962 | (JSC::concatenate): | |
25963 | (JSC::UString::spliceSubstringsWithSeparators): | |
25964 | (JSC::UString::replaceRange): | |
25965 | (JSC::UString::append): | |
25966 | (JSC::UString::operator=): | |
25967 | * runtime/UString.h: | |
25968 | (JSC::UString::Rep::createEmptyBuffer): | |
25969 | * wtf/FastMalloc.cpp: | |
25970 | (WTF::tryFastZeroedMalloc): | |
25971 | (WTF::tryFastMalloc): | |
25972 | (WTF::tryFastCalloc): | |
25973 | (WTF::tryFastRealloc): | |
25974 | (WTF::TCMallocStats::tryFastMalloc): | |
25975 | (WTF::TCMallocStats::tryFastCalloc): | |
25976 | (WTF::TCMallocStats::tryFastRealloc): | |
25977 | * wtf/FastMalloc.h: | |
25978 | (WTF::TryMallocReturnValue::TryMallocReturnValue): | |
25979 | (WTF::TryMallocReturnValue::~TryMallocReturnValue): | |
25980 | (WTF::TryMallocReturnValue::operator Maybe<T>): | |
25981 | (WTF::TryMallocReturnValue::getValue): | |
25982 | * wtf/PossiblyNull.h: | |
25983 | (WTF::PossiblyNull::PossiblyNull): | |
25984 | (WTF::PossiblyNull::~PossiblyNull): | |
25985 | (WTF::PossiblyNull::getValue): | |
25986 | * wtf/Platform.h: | |
25987 | ||
25988 | 2009-07-20 Gavin Barraclough <barraclough@apple.com> | |
25989 | ||
25990 | RS Oliver Hunt. | |
25991 | ||
25992 | Add ARM assembler files to xcodeproj, for convenience editing. | |
25993 | ||
25994 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
25995 | ||
25996 | 2009-07-20 Jessie Berlin <jberlin@apple.com> | |
25997 | ||
25998 | Reviewed by David Levin. | |
25999 | ||
26000 | Fix an incorrect assertion in Vector::remove. | |
26001 | ||
26002 | https://bugs.webkit.org/show_bug.cgi?id=27477 | |
26003 | ||
26004 | * wtf/Vector.h: | |
26005 | (WTF::::remove): | |
26006 | Assert that the position at which to start removing elements + the | |
26007 | length (the number of elements to remove) is less than or equal to the | |
26008 | size of the entire Vector. | |
26009 | ||
26010 | 2009-07-20 Peter Kasting <pkasting@google.com> | |
26011 | ||
26012 | Reviewed by Mark Rowe. | |
26013 | ||
26014 | https://bugs.webkit.org/show_bug.cgi?id=27468 | |
26015 | Back out r46060, which caused problems for some Apple developers. | |
26016 | ||
26017 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
26018 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: | |
26019 | * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
26020 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
26021 | * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
26022 | ||
26023 | 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26024 | ||
26025 | Reviewed by Oliver Hunt. | |
26026 | ||
26027 | Allow custom memory allocation control in NewThreadContext | |
26028 | https://bugs.webkit.org/show_bug.cgi?id=27338 | |
26029 | ||
26030 | Inherits NewThreadContext struct from FastAllocBase because it | |
26031 | has been instantiated by 'new' JavaScriptCore/wtf/Threading.cpp:76. | |
26032 | ||
26033 | * wtf/Threading.cpp: | |
26034 | ||
26035 | 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26036 | ||
26037 | Reviewed by Oliver Hunt. | |
26038 | ||
26039 | Allow custom memory allocation control in JavaScriptCore's JSClassRef.h | |
26040 | https://bugs.webkit.org/show_bug.cgi?id=27340 | |
26041 | ||
26042 | Inherit StaticValueEntry and StaticFunctionEntry struct from FastAllocBase because these | |
26043 | have been instantiated by 'new' in JavaScriptCore/API/JSClassRef.cpp:153 | |
26044 | and in JavaScriptCore/API/JSClassRef.cpp:166. | |
26045 | ||
26046 | * API/JSClassRef.h: | |
26047 | ||
26048 | 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26049 | ||
26050 | Reviewed by Darin Adler. | |
26051 | ||
26052 | Allow custom memory allocation control in JavaScriptCore's RegexPattern.h | |
26053 | https://bugs.webkit.org/show_bug.cgi?id=27343 | |
26054 | ||
26055 | Inherits RegexPattern.h's structs (which have been instantiated by operator new) from FastAllocBase: | |
26056 | ||
26057 | CharacterClass (new call: JavaScriptCore/yarr/RegexCompiler.cpp:144) | |
26058 | PatternAlternative (new call: JavaScriptCore/yarr/RegexPattern.h:221) | |
26059 | PatternDisjunction (new call: JavaScriptCore/yarr/RegexCompiler.cpp:446) | |
26060 | ||
26061 | * yarr/RegexPattern.h: | |
26062 | ||
26063 | 2009-07-20 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26064 | ||
26065 | Reviewed by Darin Adler. | |
26066 | ||
26067 | Allow custom memory allocation control for JavaScriptCore's MatchFrame struct | |
26068 | https://bugs.webkit.org/show_bug.cgi?id=27344 | |
26069 | ||
26070 | Inherits MatchFrame struct from FastAllocBase because it has | |
26071 | been instantiated by 'new' JavaScriptCore/pcre/pcre_exec.cpp:359. | |
26072 | ||
26073 | * pcre/pcre_exec.cpp: | |
26074 | ||
26075 | 2009-07-20 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
26076 | ||
26077 | Reviewed by Holger Freyther. | |
26078 | ||
26079 | Remove some outdated S60 platform specific code | |
26080 | https://bugs.webkit.org/show_bug.cgi?id=27423 | |
26081 | ||
26082 | * wtf/Platform.h: | |
26083 | ||
26084 | 2009-07-20 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
26085 | ||
26086 | Reviewed by Simon Hausmann. | |
26087 | ||
26088 | Qt build fix with MSVC and MinGW. | |
26089 | ||
26090 | * jsc.pro: Make sure jsc is a console application, and turn off | |
26091 | exceptions and stl support to fix the build. | |
26092 | ||
26093 | 2009-07-20 Xan Lopez <xlopez@igalia.com> | |
26094 | ||
26095 | Reviewed by Gustavo Noronha. | |
26096 | ||
26097 | Do not use C++-style comments in preprocessor directives. | |
26098 | ||
26099 | GCC does not like this in some configurations, using C-style | |
26100 | comments is safer. | |
26101 | ||
26102 | * wtf/Platform.h: | |
26103 | ||
26104 | 2009-07-17 Peter Kasting <pkasting@google.com> | |
26105 | ||
26106 | Reviewed by Steve Falkenburg. | |
26107 | ||
26108 | https://bugs.webkit.org/show_bug.cgi?id=27323 | |
26109 | Only add Cygwin to the path when it isn't already there. This avoids | |
26110 | causing problems for people who purposefully have non-Cygwin versions of | |
26111 | executables like svn in front of the Cygwin ones in their paths. | |
26112 | ||
26113 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
26114 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.vcproj: | |
26115 | * JavaScriptCore.vcproj/WTF/WTFCommon.vsprops: | |
26116 | * JavaScriptCore.vcproj/jsc/jscCommon.vsprops: | |
26117 | * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
26118 | ||
26119 | 2009-07-17 Gabor Loki <loki@inf.u-szeged.hu> | |
26120 | ||
26121 | Reviewed by Gavin Barraclough. | |
26122 | ||
26123 | Add YARR support for generic ARM platforms (disabled by default). | |
26124 | https://bugs.webkit.org/show_bug.cgi?id=24986 | |
26125 | ||
26126 | Add generic ARM port for MacroAssembler. It supports the whole | |
26127 | MacroAssembler functionality except floating point. | |
26128 | ||
26129 | The class JmpSrc is extended with a flag which enables to patch | |
26130 | the jump destination offset during execution. This feature is | |
26131 | required for generic ARM port. | |
26132 | ||
26133 | Signed off by Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
26134 | Signed off by Gabor Loki <loki@inf.u-szeged.hu> | |
26135 | ||
26136 | * JavaScriptCore.pri: | |
26137 | * assembler/ARMAssembler.cpp: Added. | |
26138 | (JSC::ARMAssembler::getLdrImmAddress): | |
26139 | (JSC::ARMAssembler::linkBranch): | |
26140 | (JSC::ARMAssembler::patchConstantPoolLoad): | |
26141 | (JSC::ARMAssembler::getOp2): | |
26142 | (JSC::ARMAssembler::genInt): | |
26143 | (JSC::ARMAssembler::getImm): | |
26144 | (JSC::ARMAssembler::moveImm): | |
26145 | (JSC::ARMAssembler::dataTransfer32): | |
26146 | (JSC::ARMAssembler::baseIndexTransfer32): | |
26147 | (JSC::ARMAssembler::executableCopy): | |
26148 | * assembler/ARMAssembler.h: Added. | |
26149 | (JSC::ARM::): | |
26150 | (JSC::ARMAssembler::ARMAssembler): | |
26151 | (JSC::ARMAssembler::): | |
26152 | (JSC::ARMAssembler::JmpSrc::JmpSrc): | |
26153 | (JSC::ARMAssembler::JmpSrc::enableLatePatch): | |
26154 | (JSC::ARMAssembler::JmpDst::JmpDst): | |
26155 | (JSC::ARMAssembler::JmpDst::isUsed): | |
26156 | (JSC::ARMAssembler::JmpDst::used): | |
26157 | (JSC::ARMAssembler::emitInst): | |
26158 | (JSC::ARMAssembler::and_r): | |
26159 | (JSC::ARMAssembler::ands_r): | |
26160 | (JSC::ARMAssembler::eor_r): | |
26161 | (JSC::ARMAssembler::eors_r): | |
26162 | (JSC::ARMAssembler::sub_r): | |
26163 | (JSC::ARMAssembler::subs_r): | |
26164 | (JSC::ARMAssembler::rsb_r): | |
26165 | (JSC::ARMAssembler::rsbs_r): | |
26166 | (JSC::ARMAssembler::add_r): | |
26167 | (JSC::ARMAssembler::adds_r): | |
26168 | (JSC::ARMAssembler::adc_r): | |
26169 | (JSC::ARMAssembler::adcs_r): | |
26170 | (JSC::ARMAssembler::sbc_r): | |
26171 | (JSC::ARMAssembler::sbcs_r): | |
26172 | (JSC::ARMAssembler::rsc_r): | |
26173 | (JSC::ARMAssembler::rscs_r): | |
26174 | (JSC::ARMAssembler::tst_r): | |
26175 | (JSC::ARMAssembler::teq_r): | |
26176 | (JSC::ARMAssembler::cmp_r): | |
26177 | (JSC::ARMAssembler::orr_r): | |
26178 | (JSC::ARMAssembler::orrs_r): | |
26179 | (JSC::ARMAssembler::mov_r): | |
26180 | (JSC::ARMAssembler::movs_r): | |
26181 | (JSC::ARMAssembler::bic_r): | |
26182 | (JSC::ARMAssembler::bics_r): | |
26183 | (JSC::ARMAssembler::mvn_r): | |
26184 | (JSC::ARMAssembler::mvns_r): | |
26185 | (JSC::ARMAssembler::mul_r): | |
26186 | (JSC::ARMAssembler::muls_r): | |
26187 | (JSC::ARMAssembler::mull_r): | |
26188 | (JSC::ARMAssembler::ldr_imm): | |
26189 | (JSC::ARMAssembler::ldr_un_imm): | |
26190 | (JSC::ARMAssembler::dtr_u): | |
26191 | (JSC::ARMAssembler::dtr_ur): | |
26192 | (JSC::ARMAssembler::dtr_d): | |
26193 | (JSC::ARMAssembler::dtr_dr): | |
26194 | (JSC::ARMAssembler::ldrh_r): | |
26195 | (JSC::ARMAssembler::ldrh_d): | |
26196 | (JSC::ARMAssembler::ldrh_u): | |
26197 | (JSC::ARMAssembler::strh_r): | |
26198 | (JSC::ARMAssembler::push_r): | |
26199 | (JSC::ARMAssembler::pop_r): | |
26200 | (JSC::ARMAssembler::poke_r): | |
26201 | (JSC::ARMAssembler::peek_r): | |
26202 | (JSC::ARMAssembler::clz_r): | |
26203 | (JSC::ARMAssembler::bkpt): | |
26204 | (JSC::ARMAssembler::lsl): | |
26205 | (JSC::ARMAssembler::lsr): | |
26206 | (JSC::ARMAssembler::asr): | |
26207 | (JSC::ARMAssembler::lsl_r): | |
26208 | (JSC::ARMAssembler::lsr_r): | |
26209 | (JSC::ARMAssembler::asr_r): | |
26210 | (JSC::ARMAssembler::size): | |
26211 | (JSC::ARMAssembler::ensureSpace): | |
26212 | (JSC::ARMAssembler::label): | |
26213 | (JSC::ARMAssembler::align): | |
26214 | (JSC::ARMAssembler::jmp): | |
26215 | (JSC::ARMAssembler::patchPointerInternal): | |
26216 | (JSC::ARMAssembler::patchConstantPoolLoad): | |
26217 | (JSC::ARMAssembler::patchPointer): | |
26218 | (JSC::ARMAssembler::repatchInt32): | |
26219 | (JSC::ARMAssembler::repatchPointer): | |
26220 | (JSC::ARMAssembler::repatchLoadPtrToLEA): | |
26221 | (JSC::ARMAssembler::linkJump): | |
26222 | (JSC::ARMAssembler::relinkJump): | |
26223 | (JSC::ARMAssembler::linkCall): | |
26224 | (JSC::ARMAssembler::relinkCall): | |
26225 | (JSC::ARMAssembler::getRelocatedAddress): | |
26226 | (JSC::ARMAssembler::getDifferenceBetweenLabels): | |
26227 | (JSC::ARMAssembler::getCallReturnOffset): | |
26228 | (JSC::ARMAssembler::getOp2Byte): | |
26229 | (JSC::ARMAssembler::placeConstantPoolBarrier): | |
26230 | (JSC::ARMAssembler::RM): | |
26231 | (JSC::ARMAssembler::RS): | |
26232 | (JSC::ARMAssembler::RD): | |
26233 | (JSC::ARMAssembler::RN): | |
26234 | (JSC::ARMAssembler::getConditionalField): | |
26235 | * assembler/ARMv7Assembler.h: | |
26236 | (JSC::ARMv7Assembler::JmpSrc::enableLatePatch): | |
26237 | * assembler/AbstractMacroAssembler.h: | |
26238 | (JSC::AbstractMacroAssembler::Call::enableLatePatch): | |
26239 | (JSC::AbstractMacroAssembler::Jump::enableLatePatch): | |
26240 | * assembler/MacroAssembler.h: | |
26241 | * assembler/MacroAssemblerARM.h: Added. | |
26242 | (JSC::MacroAssemblerARM::): | |
26243 | (JSC::MacroAssemblerARM::add32): | |
26244 | (JSC::MacroAssemblerARM::and32): | |
26245 | (JSC::MacroAssemblerARM::lshift32): | |
26246 | (JSC::MacroAssemblerARM::mul32): | |
26247 | (JSC::MacroAssemblerARM::not32): | |
26248 | (JSC::MacroAssemblerARM::or32): | |
26249 | (JSC::MacroAssemblerARM::rshift32): | |
26250 | (JSC::MacroAssemblerARM::sub32): | |
26251 | (JSC::MacroAssemblerARM::xor32): | |
26252 | (JSC::MacroAssemblerARM::load32): | |
26253 | (JSC::MacroAssemblerARM::load32WithAddressOffsetPatch): | |
26254 | (JSC::MacroAssemblerARM::loadPtrWithPatchToLEA): | |
26255 | (JSC::MacroAssemblerARM::load16): | |
26256 | (JSC::MacroAssemblerARM::store32WithAddressOffsetPatch): | |
26257 | (JSC::MacroAssemblerARM::store32): | |
26258 | (JSC::MacroAssemblerARM::pop): | |
26259 | (JSC::MacroAssemblerARM::push): | |
26260 | (JSC::MacroAssemblerARM::move): | |
26261 | (JSC::MacroAssemblerARM::swap): | |
26262 | (JSC::MacroAssemblerARM::signExtend32ToPtr): | |
26263 | (JSC::MacroAssemblerARM::zeroExtend32ToPtr): | |
26264 | (JSC::MacroAssemblerARM::branch32): | |
26265 | (JSC::MacroAssemblerARM::branch16): | |
26266 | (JSC::MacroAssemblerARM::branchTest32): | |
26267 | (JSC::MacroAssemblerARM::jump): | |
26268 | (JSC::MacroAssemblerARM::branchAdd32): | |
26269 | (JSC::MacroAssemblerARM::mull32): | |
26270 | (JSC::MacroAssemblerARM::branchMul32): | |
26271 | (JSC::MacroAssemblerARM::branchSub32): | |
26272 | (JSC::MacroAssemblerARM::breakpoint): | |
26273 | (JSC::MacroAssemblerARM::nearCall): | |
26274 | (JSC::MacroAssemblerARM::call): | |
26275 | (JSC::MacroAssemblerARM::ret): | |
26276 | (JSC::MacroAssemblerARM::set32): | |
26277 | (JSC::MacroAssemblerARM::setTest32): | |
26278 | (JSC::MacroAssemblerARM::tailRecursiveCall): | |
26279 | (JSC::MacroAssemblerARM::makeTailRecursiveCall): | |
26280 | (JSC::MacroAssemblerARM::moveWithPatch): | |
26281 | (JSC::MacroAssemblerARM::branchPtrWithPatch): | |
26282 | (JSC::MacroAssemblerARM::storePtrWithPatch): | |
26283 | (JSC::MacroAssemblerARM::supportsFloatingPoint): | |
26284 | (JSC::MacroAssemblerARM::supportsFloatingPointTruncate): | |
26285 | (JSC::MacroAssemblerARM::loadDouble): | |
26286 | (JSC::MacroAssemblerARM::storeDouble): | |
26287 | (JSC::MacroAssemblerARM::addDouble): | |
26288 | (JSC::MacroAssemblerARM::subDouble): | |
26289 | (JSC::MacroAssemblerARM::mulDouble): | |
26290 | (JSC::MacroAssemblerARM::convertInt32ToDouble): | |
26291 | (JSC::MacroAssemblerARM::branchDouble): | |
26292 | (JSC::MacroAssemblerARM::branchTruncateDoubleToInt32): | |
26293 | (JSC::MacroAssemblerARM::ARMCondition): | |
26294 | (JSC::MacroAssemblerARM::prepareCall): | |
26295 | (JSC::MacroAssemblerARM::call32): | |
26296 | * assembler/X86Assembler.h: | |
26297 | (JSC::X86Assembler::JmpSrc::enableLatePatch): | |
26298 | * jit/ExecutableAllocator.h: | |
26299 | (JSC::ExecutableAllocator::cacheFlush): | |
26300 | * wtf/Platform.h: | |
26301 | * yarr/RegexJIT.cpp: | |
26302 | (JSC::Yarr::RegexGenerator::generateEnter): | |
26303 | (JSC::Yarr::RegexGenerator::generateReturn): | |
26304 | ||
26305 | 2009-07-17 Gabor Loki <loki@inf.u-szeged.hu> | |
26306 | ||
26307 | Reviewed by Gavin Barraclough. | |
26308 | ||
26309 | Extend AssemblerBuffer with constant pool handling mechanism. | |
26310 | https://bugs.webkit.org/show_bug.cgi?id=24986 | |
26311 | ||
26312 | Add a platform independed constant pool framework. | |
26313 | This pool can store 32 or 64 bits values which is enough to hold | |
26314 | any integer, pointer or double constant. | |
26315 | ||
26316 | * assembler/AssemblerBuffer.h: | |
26317 | (JSC::AssemblerBuffer::putIntUnchecked): | |
26318 | (JSC::AssemblerBuffer::putInt64Unchecked): | |
26319 | (JSC::AssemblerBuffer::append): | |
26320 | (JSC::AssemblerBuffer::grow): | |
26321 | * assembler/AssemblerBufferWithConstantPool.h: Added. | |
26322 | (JSC::): | |
26323 | ||
26324 | 2009-07-17 Eric Roman <eroman@chromium.org> | |
26325 | ||
26326 | Reviewed by Darin Adler. | |
26327 | ||
26328 | Build fix for non-Darwin. | |
26329 | Add a guard for inclusion of RetainPtr.h which includes CoreFoundation.h | |
26330 | ||
26331 | https://bugs.webkit.org/show_bug.cgi?id=27382 | |
26332 | ||
26333 | * wtf/unicode/icu/CollatorICU.cpp: | |
26334 | ||
26335 | 2009-07-17 Alexey Proskuryakov <ap@webkit.org> | |
26336 | ||
26337 | Reviewed by John Sullivan. | |
26338 | ||
26339 | Get user default collation order via a CFLocale API when available. | |
26340 | ||
26341 | * wtf/unicode/icu/CollatorICU.cpp: (WTF::Collator::userDefault): | |
26342 | ||
26343 | 2009-07-17 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
26344 | ||
26345 | Reviewed by Simon Hausmann. | |
26346 | ||
26347 | [Qt] Fix the include path for the Symbian port | |
26348 | https://bugs.webkit.org/show_bug.cgi?id=27358 | |
26349 | ||
26350 | * JavaScriptCore.pri: | |
26351 | ||
26352 | 2009-07-17 Csaba Osztrogonac <oszi@inf.u-szeged.hu> | |
26353 | ||
26354 | Reviewed by David Levin. | |
26355 | ||
26356 | Build fix on platforms don't have MMAP. | |
26357 | https://bugs.webkit.org/show_bug.cgi?id=27365 | |
26358 | ||
26359 | * interpreter/RegisterFile.h: Including stdio.h irrespectively of HAVE(MMAP) | |
26360 | ||
26361 | 2009-07-16 Fumitoshi Ukai <ukai@chromium.org> | |
26362 | ||
26363 | Reviewed by David Levin. | |
26364 | ||
26365 | Add --web-sockets flag and ENABLE_WEB_SOCKETS define. | |
26366 | https://bugs.webkit.org/show_bug.cgi?id=27206 | |
26367 | ||
26368 | Add ENABLE_WEB_SOCKETS | |
26369 | ||
26370 | * Configurations/FeatureDefines.xcconfig: add ENABLE_WEB_SOCKETS | |
26371 | ||
26372 | 2009-07-16 Maxime Simon <simon.maxime@gmail.com> | |
26373 | ||
26374 | Reviewed by Eric Seidel. | |
26375 | ||
26376 | Added Haiku-specific files for JavaScriptCore. | |
26377 | https://bugs.webkit.org/show_bug.cgi?id=26620 | |
26378 | ||
26379 | * wtf/haiku/MainThreadHaiku.cpp: Added. | |
26380 | (WTF::initializeMainThreadPlatform): | |
26381 | (WTF::scheduleDispatchFunctionsOnMainThread): | |
26382 | ||
26383 | 2009-07-16 Gavin Barraclough <barraclough@apple.com> | |
26384 | ||
26385 | RS by Oliver Hunt. | |
26386 | ||
26387 | Revert r45969, this fix does not appear to be valid. | |
26388 | https://bugs.webkit.org/show_bug.cgi?id=27077 | |
26389 | ||
26390 | * bytecode/CodeBlock.cpp: | |
26391 | (JSC::CodeBlock::~CodeBlock): | |
26392 | (JSC::CodeBlock::unlinkCallers): | |
26393 | * jit/JIT.cpp: | |
26394 | * jit/JIT.h: | |
26395 | ||
26396 | 2009-07-16 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26397 | ||
26398 | Reviewed by Oliver Hunt. | |
26399 | ||
26400 | Allow custom memory allocation control in ExceptionInfo and RareData struct | |
26401 | https://bugs.webkit.org/show_bug.cgi?id=27336 | |
26402 | ||
26403 | Inherits ExceptionInfo and RareData struct from FastAllocBase because these | |
26404 | have been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.cpp:1289 and | |
26405 | in JavaScriptCore/bytecode/CodeBlock.h:453. | |
26406 | ||
26407 | Remove unnecessary WTF:: namespace from CodeBlock inheritance. | |
26408 | ||
26409 | * bytecode/CodeBlock.h: | |
26410 | ||
26411 | 2009-07-16 Mark Rowe <mrowe@apple.com> | |
26412 | ||
26413 | Rubber-stamped by Geoff Garen. | |
26414 | ||
26415 | Fix FeatureDefines.xcconfig to not be out of sync with the rest of the world. | |
26416 | ||
26417 | * Configurations/FeatureDefines.xcconfig: | |
26418 | ||
26419 | 2009-07-16 Yong Li <yong.li@torchmobile.com> | |
26420 | ||
26421 | Reviewed by George Staikos. | |
26422 | ||
26423 | https://bugs.webkit.org/show_bug.cgi?id=27320 | |
26424 | _countof is only included in CE6; for CE5 we need to define it ourself | |
26425 | ||
26426 | * wtf/Platform.h: | |
26427 | ||
26428 | 2009-07-16 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
26429 | ||
26430 | Reviewed by Oliver Hunt. | |
26431 | ||
26432 | Workers + garbage collector: weird crashes | |
26433 | https://bugs.webkit.org/show_bug.cgi?id=27077 | |
26434 | ||
26435 | We need to unlink cached method call sites when a function is destroyed. | |
26436 | ||
26437 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
26438 | * bytecode/CodeBlock.cpp: | |
26439 | (JSC::CodeBlock::~CodeBlock): | |
26440 | (JSC::CodeBlock::unlinkCallers): | |
26441 | * jit/JIT.cpp: | |
26442 | (JSC::JIT::unlinkMethodCall): | |
26443 | * jit/JIT.h: | |
26444 | ||
26445 | 2009-07-15 Steve Falkenburg <sfalken@apple.com> | |
26446 | ||
26447 | Windows Build fix. | |
26448 | ||
26449 | Visual Studio reset our intermediate directory on us. | |
26450 | This sets it back. | |
26451 | ||
26452 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
26453 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: | |
26454 | ||
26455 | 2009-07-15 Kwang Yul Seo <skyul@company100.net> | |
26456 | ||
26457 | Reviewed by Eric Seidel. | |
26458 | ||
26459 | https://bugs.webkit.org/show_bug.cgi?id=26794 | |
26460 | Make Yacc-generated parsers to use fastMalloc/fastFree. | |
26461 | ||
26462 | Define YYMALLOC and YYFREE to fastMalloc and fastFree | |
26463 | respectively. | |
26464 | ||
26465 | * parser/Grammar.y: | |
26466 | ||
26467 | 2009-07-15 Darin Adler <darin@apple.com> | |
26468 | ||
26469 | Fix a build for a particular Apple configuration. | |
26470 | ||
26471 | * wtf/FastAllocBase.h: Change include to use "" style for | |
26472 | including another wtf header. This is the style we use for | |
26473 | including other public headers in the same directory. | |
26474 | ||
26475 | 2009-07-15 George Staikos <george.staikos@torchmobile.com> | |
26476 | ||
26477 | Reviewed by Adam Treat. | |
26478 | ||
26479 | https://bugs.webkit.org/show_bug.cgi?id=27303 | |
26480 | Implement createThreadInternal for WinCE. | |
26481 | Contains changes by George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com> | |
26482 | ||
26483 | * wtf/ThreadingWin.cpp: | |
26484 | (WTF::createThreadInternal): | |
26485 | ||
26486 | 2009-07-15 Joe Mason <joe.mason@torchmobile.com> | |
26487 | ||
26488 | Reviewed by George Staikos. | |
26489 | ||
26490 | https://bugs.webkit.org/show_bug.cgi?id=27298 | |
26491 | Platform defines for WINCE. | |
26492 | Contains changes by Yong Li <yong.li@torchmobile.com>, | |
26493 | George Staikos <george.staikos@torchmobile.com> and Joe Mason <joe.mason@torchmobile.com> | |
26494 | ||
26495 | * wtf/Platform.h: | |
26496 | ||
26497 | 2009-07-15 Yong Li <yong.li@torchmobile.com> | |
26498 | ||
26499 | Reviewed by Adam Treat. | |
26500 | ||
26501 | https://bugs.webkit.org/show_bug.cgi?id=27306 | |
26502 | Use RegisterClass instead of RegisterClassEx on WinCE. | |
26503 | ||
26504 | * wtf/win/MainThreadWin.cpp: | |
26505 | (WTF::initializeMainThreadPlatform): | |
26506 | ||
26507 | 2009-07-15 Yong Li <yong.li@torchmobile.com> | |
26508 | ||
26509 | Reviewed by George Staikos. | |
26510 | ||
26511 | https://bugs.webkit.org/show_bug.cgi?id=27301 | |
26512 | Use OutputDebugStringW on WinCE since OutputDebugStringA is not supported | |
26513 | Originally written by Yong Li <yong.li@torchmobile.com> and refactored by | |
26514 | Joe Mason <joe.mason@torchmobile.com> | |
26515 | ||
26516 | * wtf/Assertions.cpp: vprintf_stderr_common | |
26517 | ||
26518 | 2009-07-15 Yong Li <yong.li@torchmobile.com> | |
26519 | ||
26520 | Reviewed by George Staikos. | |
26521 | ||
26522 | https://bugs.webkit.org/show_bug.cgi?id=27020 | |
26523 | msToGregorianDateTime should set utcOffset to 0 when outputIsUTC is false | |
26524 | ||
26525 | * wtf/DateMath.cpp: | |
26526 | (WTF::gregorianDateTimeToMS): | |
26527 | ||
26528 | 2009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
26529 | ||
26530 | Reviewed by Simon Hausmann. | |
26531 | ||
26532 | [Qt] Cleanup - Remove obsolete code from the make system | |
26533 | https://bugs.webkit.org/show_bug.cgi?id=27299 | |
26534 | ||
26535 | * JavaScriptCore.pro: | |
26536 | * jsc.pro: | |
26537 | ||
26538 | 2009-07-07 Norbert Leser <norbert.leser@nokia.com> | |
26539 | ||
26540 | Reviewed by Simon Hausmann. | |
26541 | ||
26542 | https://bugs.webkit.org/show_bug.cgi?id=27056 | |
26543 | ||
26544 | Alternate bool operator for codewarrior compiler (WINSCW). | |
26545 | Compiler (latest b482) reports error for UnspecifiedBoolType construct: | |
26546 | "illegal explicit conversion from 'WTF::OwnArrayPtr<JSC::Register>' to 'bool'" | |
26547 | ||
26548 | Same fix as in r38391. | |
26549 | ||
26550 | * JavaScriptCore/wtf/OwnArrayPtr.h: | |
26551 | ||
26552 | 2009-07-15 Norbert Leser <norbert.leser@nokia.com> | |
26553 | ||
26554 | Reviewed by Darin Adler. | |
26555 | ||
26556 | Qualify include path with wtf to fix compilation | |
26557 | on Symbian. | |
26558 | https://bugs.webkit.org/show_bug.cgi?id=27055 | |
26559 | ||
26560 | * interpreter/Interpreter.h: | |
26561 | ||
26562 | 2009-07-15 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
26563 | ||
26564 | Reviewed by Dave Kilzer. | |
26565 | ||
26566 | Turn off non-portable date manipulations for SYMBIAN | |
26567 | https://bugs.webkit.org/show_bug.cgi?id=27064 | |
26568 | ||
26569 | Introduce HAVE(TM_GMTOFF), HAVE(TM_ZONE) and HAVE(TIMEGM) guards | |
26570 | and place the rules for controlling the guards in Platform.h. | |
26571 | Turn off these newly introduced guards for SYMBIAN. | |
26572 | ||
26573 | * wtf/DateMath.cpp: | |
26574 | (WTF::calculateUTCOffset): | |
26575 | * wtf/DateMath.h: | |
26576 | (WTF::GregorianDateTime::GregorianDateTime): | |
26577 | (WTF::GregorianDateTime::operator tm): | |
26578 | * wtf/Platform.h: | |
26579 | ||
26580 | 2009-07-15 Norbert Leser <norbert.leser@nokia.com> | |
26581 | ||
26582 | Reviewed by Simon Hausmann. | |
26583 | ||
26584 | Undef ASSERT on Symbian, to avoid excessive warnings | |
26585 | https://bugs.webkit.org/show_bug.cgi?id=27052 | |
26586 | ||
26587 | * wtf/Assertions.h: | |
26588 | ||
26589 | 2009-07-15 Oliver Hunt <oliver@apple.com> | |
26590 | ||
26591 | Reviewed by Simon Hausmann. | |
26592 | ||
26593 | REGRESSION: fast/js/postfix-syntax.html fails with interpreter | |
26594 | https://bugs.webkit.org/show_bug.cgi?id=27294 | |
26595 | ||
26596 | When postfix operators operating on locals assign to the same local | |
26597 | the order of operations has to be to store the incremented value, then | |
26598 | store the unmodified number. Rather than implementing this subtle | |
26599 | semantic in the interpreter I've just made the logic explicit in the | |
26600 | bytecode generator, so x=x++ effectively becomes x=ToNumber(x) (for a | |
26601 | local var x). | |
26602 | ||
26603 | * parser/Nodes.cpp: | |
26604 | (JSC::emitPostIncOrDec): | |
26605 | ||
26606 | 2009-07-15 Oliver Hunt <oliver@apple.com> | |
26607 | ||
26608 | Reviewed by Simon Hausmann. | |
26609 | ||
26610 | REGRESSION(43559): fast/js/kde/arguments-scope.html fails with interpreter | |
26611 | https://bugs.webkit.org/show_bug.cgi?id=27259 | |
26612 | ||
26613 | The interpreter was incorrectly basing its need to create the arguments object | |
26614 | based on the presence of the callframe's argument reference rather than the local | |
26615 | arguments reference. Based on this it then overrode the local variable reference. | |
26616 | ||
26617 | * interpreter/Interpreter.cpp: | |
26618 | (JSC::Interpreter::privateExecute): | |
26619 | ||
26620 | 2009-07-14 Steve Falkenburg <sfalken@apple.com> | |
26621 | ||
26622 | Reorganize JavaScriptCore headers into: | |
26623 | API: include/JavaScriptCore/ | |
26624 | Private: include/private/JavaScriptCore/ | |
26625 | ||
26626 | Reviewed by Darin Adler. | |
26627 | ||
26628 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
26629 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreCommon.vsprops: | |
26630 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCoreGenerated.make: | |
26631 | * JavaScriptCore.vcproj/testapi/testapi.vcproj: | |
26632 | * JavaScriptCore.vcproj/testapi/testapiCommon.vsprops: | |
26633 | ||
26634 | 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26635 | ||
26636 | Reviewed by Darin Adler. | |
26637 | ||
26638 | Change JSCell's superclass to NoncopyableCustomAllocated | |
26639 | https://bugs.webkit.org/show_bug.cgi?id=27248 | |
26640 | ||
26641 | JSCell class customizes operator new, since Noncopyable will be | |
26642 | inherited from FastAllocBase, NoncopyableCustomAllocated has | |
26643 | to be used. | |
26644 | ||
26645 | * runtime/JSCell.h: | |
26646 | ||
26647 | 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26648 | ||
26649 | Reviewed by Darin Adler. | |
26650 | ||
26651 | Change all Noncopyable inheriting visibility to public. | |
26652 | https://bugs.webkit.org/show_bug.cgi?id=27225 | |
26653 | ||
26654 | Change all Noncopyable inheriting visibility to public because | |
26655 | it is needed to the custom allocation framework (bug #20422). | |
26656 | ||
26657 | * bytecode/SamplingTool.h: | |
26658 | * bytecompiler/RegisterID.h: | |
26659 | * interpreter/CachedCall.h: | |
26660 | * interpreter/RegisterFile.h: | |
26661 | * parser/Lexer.h: | |
26662 | * parser/Parser.h: | |
26663 | * runtime/ArgList.h: | |
26664 | * runtime/BatchedTransitionOptimizer.h: | |
26665 | * runtime/Collector.h: | |
26666 | * runtime/CommonIdentifiers.h: | |
26667 | * runtime/JSCell.h: | |
26668 | * runtime/JSGlobalObject.h: | |
26669 | * runtime/JSLock.h: | |
26670 | * runtime/JSONObject.cpp: | |
26671 | * runtime/SmallStrings.cpp: | |
26672 | * runtime/SmallStrings.h: | |
26673 | * wtf/CrossThreadRefCounted.h: | |
26674 | * wtf/GOwnPtr.h: | |
26675 | * wtf/Locker.h: | |
26676 | * wtf/MessageQueue.h: | |
26677 | * wtf/OwnArrayPtr.h: | |
26678 | * wtf/OwnFastMallocPtr.h: | |
26679 | * wtf/OwnPtr.h: | |
26680 | * wtf/RefCounted.h: | |
26681 | * wtf/ThreadSpecific.h: | |
26682 | * wtf/Threading.h: | |
26683 | * wtf/Vector.h: | |
26684 | * wtf/unicode/Collator.h: | |
26685 | ||
26686 | 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26687 | ||
26688 | Reviewed by Darin Adler. | |
26689 | ||
26690 | Change ParserArenaRefCounted's superclass to RefCountedCustomAllocated | |
26691 | https://bugs.webkit.org/show_bug.cgi?id=27249 | |
26692 | ||
26693 | ParserArenaDeletable customizes operator new, to avoid double inheritance | |
26694 | ParserArenaDeletable's superclass has been changed to RefCountedCustomAllocated. | |
26695 | ||
26696 | * parser/Nodes.h: | |
26697 | ||
26698 | 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26699 | ||
26700 | Reviewed by Darin Adler. | |
26701 | ||
26702 | Add RefCountedCustomAllocated to RefCounted.h | |
26703 | https://bugs.webkit.org/show_bug.cgi?id=27232 | |
26704 | ||
26705 | Some class which are inherited from RefCounted customize | |
26706 | operator new, but RefCounted is inherited from Noncopyable | |
26707 | which will be inherited from FastAllocBase. To avoid | |
26708 | conflicts Noncopyable inheriting was moved down to RefCounted | |
26709 | and to avoid double inheritance this class has been added. | |
26710 | ||
26711 | * wtf/RefCounted.h: | |
26712 | (WTF::RefCountedCustomAllocated::deref): | |
26713 | (WTF::RefCountedCustomAllocated::~RefCountedCustomAllocated): | |
26714 | ||
26715 | 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26716 | ||
26717 | Reviewed by Darin Adler. | |
26718 | ||
26719 | Add NoncopyableCustomAllocated to Noncopyable.h. | |
26720 | https://bugs.webkit.org/show_bug.cgi?id=27228 | |
26721 | ||
26722 | Some classes which inherited from Noncopyable overrides operator new | |
26723 | since Noncopyable'll be inherited from FastAllocBase, Noncopyable.h | |
26724 | needs to be extended with this new class to support the overriding. | |
26725 | ||
26726 | * wtf/Noncopyable.h: | |
26727 | (WTFNoncopyable::NoncopyableCustomAllocated::NoncopyableCustomAllocated): | |
26728 | (WTFNoncopyable::NoncopyableCustomAllocated::~NoncopyableCustomAllocated): | |
26729 | ||
26730 | 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26731 | ||
26732 | Reviewed by Darin Adler. | |
26733 | ||
26734 | Allow custom memory allocation control for JavaScriptCore's IdentifierTable class | |
26735 | https://bugs.webkit.org/show_bug.cgi?id=27260 | |
26736 | ||
26737 | Inherits IdentifierTable class from FastAllocBase because it has been | |
26738 | instantiated by 'new' in JavaScriptCore/runtime/Identifier.cpp:70. | |
26739 | ||
26740 | * runtime/Identifier.cpp: | |
26741 | ||
26742 | 2009-07-14 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
26743 | ||
26744 | Reviewed by Darin Adler. | |
26745 | ||
26746 | Allow custom memory allocation control for JavaScriptCore's Profiler class | |
26747 | https://bugs.webkit.org/show_bug.cgi?id=27253 | |
26748 | ||
26749 | Inherits Profiler class from FastAllocBase because it has been instantiated by | |
26750 | 'new' in JavaScriptCore/profiler/Profiler.cpp:56. | |
26751 | ||
26752 | * profiler/Profiler.h: | |
26753 | ||
26754 | 2009-07-06 George Staikos <george.staikos@torchmobile.com> | |
26755 | ||
26756 | Reviewed by Adam Treat. | |
26757 | ||
26758 | Authors: George Staikos <george.staikos@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com>, Makoto Matsumoto <matumoto@math.keio.ac.jp>, Takuji Nishimura | |
26759 | ||
26760 | https://bugs.webkit.org/show_bug.cgi?id=27030 | |
26761 | Implement custom RNG for WinCE using Mersenne Twister | |
26762 | ||
26763 | * wtf/RandomNumber.cpp: | |
26764 | (WTF::randomNumber): | |
26765 | * wtf/RandomNumberSeed.h: | |
26766 | (WTF::initializeRandomNumberGenerator): | |
26767 | * wtf/wince/mt19937ar.c: Added. | |
26768 | (init_genrand): | |
26769 | (init_by_array): | |
26770 | (genrand_int32): | |
26771 | (genrand_int31): | |
26772 | (genrand_real1): | |
26773 | (genrand_real2): | |
26774 | (genrand_real3): | |
26775 | (genrand_res53): | |
26776 | ||
26777 | 2009-07-13 Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | |
26778 | ||
26779 | Unreviewed make dist build fix. | |
26780 | ||
26781 | * GNUmakefile.am: | |
26782 | ||
26783 | 2009-07-13 Drew Wilson <atwilson@google.com> | |
26784 | ||
26785 | Reviewed by David Levin. | |
26786 | ||
26787 | Add ENABLE(SHARED_WORKERS) flag and define SharedWorker APIs | |
26788 | https://bugs.webkit.org/show_bug.cgi?id=26932 | |
26789 | ||
26790 | Added ENABLE(SHARED_WORKERS) flag (off by default). | |
26791 | ||
26792 | * Configurations/FeatureDefines.xcconfig: | |
26793 | ||
26794 | 2009-07-07 Norbert Leser <norbert.leser@nokia.com> | |
26795 | ||
26796 | Reviewed by Maciej Stachoviak. | |
26797 | ||
26798 | https://bugs.webkit.org/show_bug.cgi?id=27058 | |
26799 | ||
26800 | Removed superfluous parenthesis around single expression. | |
26801 | Compilers on Symbian platform fail to properly parse and compile. | |
26802 | ||
26803 | * JavaScriptCore/wtf/Platform.h: | |
26804 | ||
26805 | 2009-07-13 Norbert Leser <norbert.leser@nokia.com> | |
26806 | ||
26807 | Reviewed by Maciej Stachoviak. | |
26808 | ||
26809 | https://bugs.webkit.org/show_bug.cgi?id=27054 | |
26810 | ||
26811 | Renamed Translator to HashTranslator | |
26812 | ||
26813 | Codewarrior compiler (WINSCW) latest b482 cannot resolve typename | |
26814 | mismatch between template declaration and definition | |
26815 | (HashTranslator / Translator) | |
26816 | ||
26817 | * wtf/HashSet.h: | |
26818 | ||
26819 | 2009-07-13 Norbert Leser <norbert.leser@nokia.com> | |
26820 | ||
26821 | Reviewed by Eric Seidel. | |
26822 | ||
26823 | https://bugs.webkit.org/show_bug.cgi?id=27053 | |
26824 | ||
26825 | Ambiguity in LabelScope initialization | |
26826 | ||
26827 | Codewarrior compiler (WINSCW) latest b482 on Symbian cannot resolve | |
26828 | type of "0" unambiguously. Set expression explicitly to | |
26829 | PassRefPtr<Label>::PassRefPtr() | |
26830 | ||
26831 | * bytecompiler/BytecodeGenerator.cpp | |
26832 | ||
26833 | 2009-07-11 Simon Fraser <simon.fraser@apple.com> | |
26834 | ||
26835 | Enable support for accelerated compositing and 3d transforms on Leopard. | |
26836 | <https://bugs.webkit.org/show_bug.cgi?id=20166> | |
26837 | <rdar://problem/6120614> | |
26838 | ||
26839 | Reviewed by Oliver Hunt. | |
26840 | ||
26841 | * Configurations/FeatureDefines.xcconfig: | |
26842 | * wtf/Platform.h: | |
26843 | ||
26844 | 2009-07-10 Mark Rowe <mrowe@apple.com> | |
26845 | ||
26846 | Second part of the "make Windows happier" dance. | |
26847 | ||
26848 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
26849 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
26850 | ||
26851 | 2009-07-10 Mark Rowe <mrowe@apple.com> | |
26852 | ||
26853 | Try and make the Windows build happy. | |
26854 | ||
26855 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
26856 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
26857 | ||
26858 | 2009-07-10 Kevin McCullough <kmccullough@apple.com> | |
26859 | ||
26860 | Reviewed by Geoffrey Garen. | |
26861 | ||
26862 | * debugger/Debugger.h: Made this function virtual for use in WebCore's | |
26863 | WebInspector. | |
26864 | ||
26865 | 2009-07-10 Kwang Yul Seo <skyul@company100.net> | |
26866 | ||
26867 | Reviewed by Darin Adler. | |
26868 | ||
26869 | ParserArenaDeletable should override delete | |
26870 | https://bugs.webkit.org/show_bug.cgi?id=26790 | |
26871 | ||
26872 | ParserArenaDeletable overrides new, but it does not override delete. | |
26873 | ParserArenaDeletable must be freed by fastFree | |
26874 | because it is allocated by fastMalloc. | |
26875 | ||
26876 | * parser/NodeConstructors.h: | |
26877 | (JSC::ParserArenaDeletable::operator delete): | |
26878 | * parser/Nodes.h: | |
26879 | ||
26880 | 2009-07-10 Adam Roben <aroben@apple.com> | |
26881 | ||
26882 | Sort all our Xcode projects | |
26883 | ||
26884 | Accomplished using sort-Xcode-project-file. | |
26885 | ||
26886 | Requested by Dave Kilzer. | |
26887 | ||
26888 | * JavaScriptCore.xcodeproj/project.pbxproj: | |
26889 | ||
26890 | 2009-07-09 Maciej Stachowiak <mjs@apple.com> | |
26891 | ||
26892 | Not reviewed, build fix. | |
26893 | ||
26894 | Windows build fix for the last change. | |
26895 | ||
26896 | * wtf/dtoa.cpp: Forgot to include Vector.h | |
26897 | ||
26898 | 2009-07-09 Maciej Stachowiak <mjs@apple.com> | |
26899 | ||
26900 | Reviewed by Darin Adler. | |
26901 | ||
26902 | REGRESSION: crash in edge cases of floating point parsing. | |
26903 | https://bugs.webkit.org/show_bug.cgi?id=27110 | |
26904 | <rdar://problem/7044458> | |
26905 | ||
26906 | Tests: fast/css/number-parsing-crash.html | |
26907 | fast/css/number-parsing-crash.html | |
26908 | fast/js/number-parsing-crash.html | |
26909 | ||
26910 | * wtf/dtoa.cpp: | |
26911 | (WTF::BigInt::BigInt): Converted this to more a proper class, using a Vector | |
26912 | with inline capacity | |
26913 | ||
26914 | (WTF::lshift): Rearranged logic somewhat nontrivially to deal with the new way of sizing BigInts. | |
26915 | Added an assertion to verify that invariants are maintained. | |
26916 | ||
26917 | All other functions are adapted fairly mechanically to the above changes. | |
26918 | (WTF::BigInt::clear): | |
26919 | (WTF::BigInt::size): | |
26920 | (WTF::BigInt::resize): | |
26921 | (WTF::BigInt::words): | |
26922 | (WTF::BigInt::append): | |
26923 | (WTF::multadd): | |
26924 | (WTF::s2b): | |
26925 | (WTF::i2b): | |
26926 | (WTF::mult): | |
26927 | (WTF::cmp): | |
26928 | (WTF::diff): | |
26929 | (WTF::b2d): | |
26930 | (WTF::d2b): | |
26931 | (WTF::ratio): | |
26932 | (WTF::strtod): | |
26933 | (WTF::quorem): | |
26934 | (WTF::dtoa): | |
26935 | ||
26936 | 2009-07-09 Drew Wilson <atwilson@google.com> | |
26937 | ||
26938 | Reviewed by Alexey Proskuryakov. | |
26939 | ||
26940 | Turned on CHANNEL_MESSAGING by default because the MessageChannel API | |
26941 | can now be implemented for Web Workers and is reasonably stable. | |
26942 | ||
26943 | * Configurations/FeatureDefines.xcconfig: | |
26944 | ||
26945 | 2009-07-09 Oliver Hunt <oliver@apple.com> | |
26946 | ||
26947 | * interpreter/Interpreter.cpp: | |
26948 | (JSC::Interpreter::privateExecute): | |
26949 | ||
26950 | 2009-07-09 Oliver Hunt <oliver@apple.com> | |
26951 | ||
26952 | Reviewed by Darin Adler. | |
26953 | ||
26954 | Bug 27016 - Interpreter crashes due to invalid array indexes | |
26955 | <https://bugs.webkit.org/show_bug.cgi?id=27016> | |
26956 | ||
26957 | Unsigned vs signed conversions results in incorrect behaviour in | |
26958 | 64bit interpreter builds. | |
26959 | ||
26960 | * interpreter/Interpreter.cpp: | |
26961 | (JSC::Interpreter::privateExecute): | |
26962 | ||
26963 | 2009-07-09 Dimitri Glazkov <dglazkov@chromium.org> | |
26964 | ||
26965 | Reviewed by Darin Fisher. | |
26966 | ||
26967 | [Chromium] Upstream JavaScriptCore.gypi, the project file for Chromium build. | |
26968 | https://bugs.webkit.org/show_bug.cgi?id=27135 | |
26969 | ||
26970 | * JavaScriptCore.gypi: Added. | |
26971 | ||
26972 | 2009-07-09 Joe Mason <joe.mason@torchmobile.com> | |
26973 | ||
26974 | Reviewed by George Staikos. | |
26975 | ||
26976 | Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com> | |
26977 | ||
26978 | https://bugs.webkit.org/show_bug.cgi?id=27031 | |
26979 | Add an override for deleteOwnedPtr(HDC) on Windows | |
26980 | ||
26981 | * wtf/OwnPtrCommon.h: | |
26982 | * wtf/OwnPtrWin.cpp: | |
26983 | (WTF::deleteOwnedPtr): | |
26984 | ||
26985 | 2009-07-09 Laszlo Gombos <laszlo.1.gombos@nokia.com> | |
26986 | ||
26987 | Reviewed by Darin Adler. | |
26988 | ||
26989 | Guard singal.h dependency with HAVE(SIGNAL_H) to enable building jsc | |
26990 | on SYMBIAN. | |
26991 | ||
26992 | https://bugs.webkit.org/show_bug.cgi?id=27026 | |
26993 | ||
26994 | Based on Norbert Leser's work. | |
26995 | ||
26996 | * jsc.cpp: | |
26997 | (printUsageStatement): | |
26998 | (parseArguments): | |
26999 | * wtf/Platform.h: | |
27000 | ||
27001 | 2009-07-07 Gavin Barraclough <barraclough@apple.com> | |
27002 | ||
27003 | Reviewed by Sam Weinig. | |
27004 | ||
27005 | Stop loading constants into the register file. | |
27006 | ||
27007 | Instead, use high register values (highest bit bar the sign bit set) to indicate | |
27008 | constants in the instruction stream, and when we encounter such a value load it | |
27009 | directly from the CodeBlock. | |
27010 | ||
27011 | Since constants are no longer copied into the register file, this patch renders | |
27012 | the 'unexpected constant' mechanism redundant, and removes it. | |
27013 | ||
27014 | 2% improvement, thanks to Sam Weinig. | |
27015 | ||
27016 | * bytecode/CodeBlock.cpp: | |
27017 | (JSC::CodeBlock::dump): | |
27018 | (JSC::CodeBlock::CodeBlock): | |
27019 | (JSC::CodeBlock::mark): | |
27020 | (JSC::CodeBlock::shrinkToFit): | |
27021 | * bytecode/CodeBlock.h: | |
27022 | (JSC::CodeBlock::isTemporaryRegisterIndex): | |
27023 | (JSC::CodeBlock::constantRegister): | |
27024 | (JSC::CodeBlock::isConstantRegisterIndex): | |
27025 | (JSC::CodeBlock::getConstant): | |
27026 | (JSC::ExecState::r): | |
27027 | * bytecode/Opcode.h: | |
27028 | * bytecompiler/BytecodeGenerator.cpp: | |
27029 | (JSC::BytecodeGenerator::preserveLastVar): | |
27030 | (JSC::BytecodeGenerator::BytecodeGenerator): | |
27031 | (JSC::BytecodeGenerator::addConstantValue): | |
27032 | (JSC::BytecodeGenerator::emitEqualityOp): | |
27033 | (JSC::BytecodeGenerator::emitLoad): | |
27034 | (JSC::BytecodeGenerator::emitResolveBase): | |
27035 | (JSC::BytecodeGenerator::emitResolveWithBase): | |
27036 | (JSC::BytecodeGenerator::emitNewError): | |
27037 | * bytecompiler/BytecodeGenerator.h: | |
27038 | (JSC::BytecodeGenerator::emitNode): | |
27039 | * interpreter/CallFrame.h: | |
27040 | (JSC::ExecState::noCaller): | |
27041 | (JSC::ExecState::hasHostCallFrameFlag): | |
27042 | (JSC::ExecState::addHostCallFrameFlag): | |
27043 | (JSC::ExecState::removeHostCallFrameFlag): | |
27044 | * interpreter/Interpreter.cpp: | |
27045 | (JSC::Interpreter::resolve): | |
27046 | (JSC::Interpreter::resolveSkip): | |
27047 | (JSC::Interpreter::resolveGlobal): | |
27048 | (JSC::Interpreter::resolveBase): | |
27049 | (JSC::Interpreter::resolveBaseAndProperty): | |
27050 | (JSC::Interpreter::resolveBaseAndFunc): | |
27051 | (JSC::Interpreter::dumpRegisters): | |
27052 | (JSC::Interpreter::throwException): | |
27053 | (JSC::Interpreter::createExceptionScope): | |
27054 | (JSC::Interpreter::privateExecute): | |
27055 | (JSC::Interpreter::retrieveArguments): | |
27056 | * jit/JIT.cpp: | |
27057 | (JSC::JIT::privateCompileMainPass): | |
27058 | * jit/JITInlineMethods.h: | |
27059 | (JSC::JIT::emitLoadDouble): | |
27060 | (JSC::JIT::emitLoadInt32ToDouble): | |
27061 | * jit/JITOpcodes.cpp: | |
27062 | (JSC::JIT::emit_op_new_error): | |
27063 | (JSC::JIT::emit_op_enter): | |
27064 | (JSC::JIT::emit_op_enter_with_activation): | |
27065 | * parser/Nodes.cpp: | |
27066 | (JSC::DeleteResolveNode::emitBytecode): | |
27067 | (JSC::DeleteValueNode::emitBytecode): | |
27068 | (JSC::PrefixResolveNode::emitBytecode): | |
27069 | * runtime/JSActivation.cpp: | |
27070 | (JSC::JSActivation::JSActivation): | |
27071 | * wtf/Platform.h: | |
27072 | ||
27073 | 2009-07-07 Mark Rowe <mrowe@apple.com> | |
27074 | ||
27075 | Reviewed by Darin Adler. | |
27076 | ||
27077 | Fix <https://bugs.webkit.org/show_bug.cgi?id=27025> / <rdar://problem/7033448>. | |
27078 | Bug 27025: Crashes and regression test failures related to regexps in 64-bit | |
27079 | ||
27080 | For x86_64 RegexGenerator uses rbx, a callee-save register, as a scratch register but | |
27081 | neglects to save and restore it. The change in handling of the output vector in r45545 | |
27082 | altered code generation so that the RegExp::match was now storing important data in rbx, | |
27083 | which caused crashes and bogus results when it was clobbered. | |
27084 | ||
27085 | * yarr/RegexJIT.cpp: | |
27086 | (JSC::Yarr::RegexGenerator::generateEnter): Save rbx. | |
27087 | (JSC::Yarr::RegexGenerator::generateReturn): Restore rbx. | |
27088 | ||
27089 | 2009-07-06 Ada Chan <adachan@apple.com> | |
27090 | ||
27091 | Reviewed by Darin Adler and Mark Rowe. | |
27092 | ||
27093 | Decommitted spans are added to the list of normal spans rather than | |
27094 | the returned spans in TCMalloc_PageHeap::Delete(). | |
27095 | https://bugs.webkit.org/show_bug.cgi?id=26998 | |
27096 | ||
27097 | In TCMalloc_PageHeap::Delete(), the deleted span can be decommitted in | |
27098 | the process of merging with neighboring spans that are also decommitted. | |
27099 | The merged span needs to be placed in the list of returned spans (spans | |
27100 | whose memory has been returned to the system). Right now it's always added | |
27101 | to the list of the normal spans which can theoretically cause thrashing. | |
27102 | ||
27103 | * wtf/FastMalloc.cpp: | |
27104 | (WTF::TCMalloc_PageHeap::Delete): | |
27105 | ||
27106 | 2009-07-05 Lars Knoll <lars.knoll@nokia.com> | |
27107 | ||
27108 | Reviewed by Maciej Stachowiak. | |
27109 | ||
27110 | https://bugs.webkit.org/show_bug.cgi?id=26843 | |
27111 | ||
27112 | Fix run-time crashes in JavaScriptCore with the Metrowerks compiler on Symbian. | |
27113 | ||
27114 | The Metrowerks compiler on the Symbian platform moves the globally | |
27115 | defined Hashtables into read-only memory, despite one of the members | |
27116 | being mutable. This causes crashes at run-time due to write access to | |
27117 | read-only memory. | |
27118 | ||
27119 | Avoid the use of const with this compiler by introducing the | |
27120 | JSC_CONST_HASHTABLE macro. | |
27121 | ||
27122 | Based on idea by Norbert Leser. | |
27123 | ||
27124 | * runtime/Lookup.h: Define JSC_CONST_HASHTABLE as const for !WINSCW. | |
27125 | * create_hash_table: Use JSC_CONST_HASHTABLE for hashtables. | |
27126 | * runtime/JSGlobalData.cpp: Import various global hashtables via the macro. | |
27127 | ||
27128 | 2009-07-04 Dan Bernstein <mitz@apple.com> | |
27129 | ||
27130 | - debug build fix | |
27131 | ||
27132 | * runtime/RegExpConstructor.cpp: | |
27133 | (JSC::RegExpConstructor::getLastParen): | |
27134 | ||
27135 | 2009-07-03 Yong Li <yong.li@torchmobile.com> | |
27136 | ||
27137 | Reviewed by Maciej Stachowiak (and revised slightly) | |
27138 | ||
27139 | RegExp::match to be optimized | |
27140 | https://bugs.webkit.org/show_bug.cgi?id=26957 | |
27141 | ||
27142 | Allow regexp matching to use Vectors with inline capacity instead of | |
27143 | allocating a new ovector buffer every time. | |
27144 | ||
27145 | ~5% speedup on SunSpider string-unpack-code test, 0.3% on SunSpider overall. | |
27146 | ||
27147 | * runtime/RegExp.cpp: | |
27148 | (JSC::RegExp::match): | |
27149 | * runtime/RegExp.h: | |
27150 | * runtime/RegExpConstructor.cpp: | |
27151 | (JSC::RegExpConstructorPrivate::RegExpConstructorPrivate): | |
27152 | (JSC::RegExpConstructorPrivate::lastOvector): | |
27153 | (JSC::RegExpConstructorPrivate::tempOvector): | |
27154 | (JSC::RegExpConstructorPrivate::changeLastOvector): | |
27155 | (JSC::RegExpConstructor::performMatch): | |
27156 | (JSC::RegExpMatchesArray::RegExpMatchesArray): | |
27157 | (JSC::RegExpMatchesArray::fillArrayInstance): | |
27158 | (JSC::RegExpConstructor::getBackref): | |
27159 | (JSC::RegExpConstructor::getLastParen): | |
27160 | (JSC::RegExpConstructor::getLeftContext): | |
27161 | (JSC::RegExpConstructor::getRightContext): | |
27162 | * runtime/StringPrototype.cpp: | |
27163 | (JSC::stringProtoFuncSplit): | |
27164 | ||
27165 | 2009-06-30 Kwang Yul Seo <skyul@company100.net> | |
27166 | ||
27167 | Reviewed by Eric Seidel. | |
27168 | ||
27169 | Override operator new/delete with const std::nothrow_t& as the second | |
27170 | argument. | |
27171 | https://bugs.webkit.org/show_bug.cgi?id=26792 | |
27172 | ||
27173 | On Windows CE, operator new/delete, new[]/delete[] with const | |
27174 | std::nothrow_t& must be overrided because some standard template | |
27175 | libraries use these operators. | |
27176 | ||
27177 | The problem occurs when memory allocated by new(size_t s, const | |
27178 | std::nothrow_t&) is freed by delete(void* p). This causes the umatched | |
27179 | malloc/free problem. | |
27180 | ||
27181 | The patch overrides all new, delete, new[] and delete[] to use | |
27182 | fastMaloc and fastFree consistently. | |
27183 | ||
27184 | * wtf/FastMalloc.h: | |
27185 | (throw): | |
27186 | ||
27187 | 2009-06-30 Gabor Loki <loki@inf.u-szeged.hu> | |
27188 | ||
27189 | Reviewed by Sam Weinig. | |
27190 | ||
27191 | <https://bugs.webkit.org/show_bug.cgi?id=24986> | |
27192 | ||
27193 | Remove unnecessary references to AssemblerBuffer. | |
27194 | ||
27195 | * interpreter/Interpreter.cpp: | |
27196 | * interpreter/Interpreter.h: | |
27197 | ||
27198 | 2009-06-29 David Levin <levin@chromium.org> | |
27199 | ||
27200 | Reviewed by Oliver Hunt. | |
27201 | ||
27202 | Still seeing occasional leaks from UString::sharedBuffer code | |
27203 | https://bugs.webkit.org/show_bug.cgi?id=26420 | |
27204 | ||
27205 | The problem is that the pointer to the memory allocation isn't visible | |
27206 | by "leaks" due to the lower bits being used as flags. The fix is to | |
27207 | make the pointer visible in memory (in debug only). The downside of | |
27208 | this fix that the memory allocated by sharedBuffer will still look like | |
27209 | a leak in non-debug builds when any flags are set. | |
27210 | ||
27211 | * wtf/PtrAndFlags.h: | |
27212 | (WTF::PtrAndFlags::set): | |
27213 | ||
27214 | 2009-06-29 Sam Weinig <sam@webkit.org> | |
27215 | ||
27216 | Reviewed by Mark Rowe. | |
27217 | ||
27218 | Remove more unused scons support. | |
27219 | ||
27220 | * SConstruct: Removed. | |
27221 | ||
27222 | 2009-06-29 Oliver Hunt <oliver@apple.com> | |
27223 | ||
27224 | Reviewed by Gavin Barraclough. | |
27225 | ||
27226 | <rdar://problem/7016214> JSON.parse fails to parse valid JSON with most Unicode characters | |
27227 | <https://bugs.webkit.org/show_bug.cgi?id=26802> | |
27228 | ||
27229 | In the original JSON.parse patch unicode was handled correctly, however in some last | |
27230 | minute "clean up" I oversimplified isSafeStringCharacter. This patch corrects this bug. | |
27231 | ||
27232 | * runtime/LiteralParser.cpp: | |
27233 | (JSC::isSafeStringCharacter): | |
27234 | (JSC::LiteralParser::Lexer::lexString): | |
27235 | ||
27236 | 2009-06-26 Oliver Hunt <oliver@apple.com> | |
27237 | ||
27238 | Reviewed by Dan Bernstein. | |
27239 | ||
27240 | <rdar://problem/7009684> REGRESSION(r45039): Crashes inside JSEvent::put on PowerPC (26746) | |
27241 | <https://bugs.webkit.org/show_bug.cgi?id=26746> | |
27242 | ||
27243 | Fix for r45039 incorrectly uncached a get_by_id by converting it to put_by_id. Clearly this | |
27244 | is less than correct. This patch corrects that error. | |
27245 | ||
27246 | * interpreter/Interpreter.cpp: | |
27247 | (JSC::Interpreter::tryCacheGetByID): | |
27248 | ||
27249 | 2009-06-26 Eric Seidel <eric@webkit.org> | |
27250 | ||
27251 | No review, only rolling out r45259. | |
27252 | ||
27253 | Roll out r45259 after crash appeared on the bots: | |
27254 | plugins/undefined-property-crash.html | |
27255 | ASSERTION FAILED: s <= HeapConstants<heapType>::cellSize | |
27256 | (leopard-intel-debug-tests/build/JavaScriptCore/runtime/Collector.cpp:278 | |
27257 | void* JSC::Heap::heapAllocate(size_t) [with JSC::HeapType heapType = PrimaryHeap]) | |
27258 | ||
27259 | * runtime/DateInstance.cpp: | |
27260 | * runtime/Identifier.cpp: | |
27261 | * runtime/Lookup.h: | |
27262 | * runtime/RegExpConstructor.cpp: | |
27263 | * runtime/RegExpObject.h: | |
27264 | * runtime/ScopeChain.h: | |
27265 | * runtime/UString.h: | |
27266 | ||
27267 | 2009-06-26 Jedrzej Nowacki <jedrzej.nowacki@nokia.com> | |
27268 | ||
27269 | Reviewed by Simon Hausmann. | |
27270 | ||
27271 | Add support for QDataStream operators to Vector. | |
27272 | ||
27273 | * wtf/Vector.h: | |
27274 | (WTF::operator<<): | |
27275 | (WTF::operator>>): | |
27276 | ||
27277 | 2009-06-24 Sam Weinig <sam@webkit.org> | |
27278 | ||
27279 | Reviewed by Gavin Barraclough. | |
27280 | ||
27281 | Make the opcode sampler work once again. | |
27282 | ||
27283 | * jit/JIT.h: | |
27284 | (JSC::JIT::compileGetByIdProto): | |
27285 | (JSC::JIT::compileGetByIdSelfList): | |
27286 | (JSC::JIT::compileGetByIdProtoList): | |
27287 | (JSC::JIT::compileGetByIdChainList): | |
27288 | (JSC::JIT::compileGetByIdChain): | |
27289 | (JSC::JIT::compilePutByIdTransition): | |
27290 | (JSC::JIT::compileCTIMachineTrampolines): | |
27291 | (JSC::JIT::compilePatchGetArrayLength): | |
27292 | * jit/JITStubCall.h: | |
27293 | (JSC::JITStubCall::call): | |
27294 | ||
27295 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27296 | ||
27297 | Reviewed by Maciej Stachowiak. | |
27298 | ||
27299 | Extend FastAllocBase.h with 'using WTF::FastAllocBase' to avoid | |
27300 | unnecessary WTF:: usings. | |
27301 | Remove existing unnecessary WTF:: usings. | |
27302 | ||
27303 | * interpreter/Interpreter.h: | |
27304 | * profiler/CallIdentifier.h: | |
27305 | * runtime/ScopeChain.h: | |
27306 | * wtf/FastAllocBase.h: | |
27307 | ||
27308 | 2009-06-24 David Levin <levin@chromium.org> | |
27309 | ||
27310 | Fix all builds. | |
27311 | ||
27312 | * bytecode/CodeBlock.h: | |
27313 | * bytecompiler/BytecodeGenerator.h: | |
27314 | * interpreter/Register.h: | |
27315 | ||
27316 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27317 | ||
27318 | Reviewed by Maciej Stachowiak. | |
27319 | ||
27320 | https://bugs.webkit.org/show_bug.cgi?id=26677 | |
27321 | ||
27322 | Inherits CodeBlock class from FastAllocBase because it | |
27323 | has been instantiated by 'new' in JavaScriptCore/bytecode/CodeBlock.h:217. | |
27324 | ||
27325 | * bytecode/CodeBlock.h: | |
27326 | ||
27327 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27328 | ||
27329 | Reviewed by Maciej Stachowiak. | |
27330 | ||
27331 | https://bugs.webkit.org/show_bug.cgi?id=26676 | |
27332 | ||
27333 | Inherits BytecodeGenerator class from FastAllocBase because it has been | |
27334 | instantiated by 'new' in JavaScriptCore/parser/Nodes.cpp:1892. | |
27335 | ||
27336 | * bytecompiler/BytecodeGenerator.h: | |
27337 | ||
27338 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27339 | ||
27340 | Reviewed by Maciej Stachowiak. | |
27341 | ||
27342 | https://bugs.webkit.org/show_bug.cgi?id=26675 | |
27343 | ||
27344 | Inherits Register class from FastAllocBase because it has been | |
27345 | instantiated by 'new' in JavaScriptCore/runtime/JSVariableObject.h:149. | |
27346 | ||
27347 | * interpreter/Register.h: | |
27348 | ||
27349 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27350 | ||
27351 | Reviewed by Darin Adler. | |
27352 | ||
27353 | https://bugs.webkit.org/show_bug.cgi?id=26674 | |
27354 | ||
27355 | Inherits HashMap class from FastAllocBase because it has been | |
27356 | instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:458. | |
27357 | ||
27358 | * wtf/HashMap.h: | |
27359 | ||
27360 | 2009-06-24 Oliver Hunt <oliver@apple.com> | |
27361 | ||
27362 | Reviewed by Darin Adler. | |
27363 | ||
27364 | <rdar://problem/6940519> REGRESSION (Safari 4 Public Beta - TOT): google.com/adplanner shows blank page instead of site details in "basic research' | |
27365 | ||
27366 | The problem was caused by the page returned with a function using a | |
27367 | var declaration list containing around ~3000 variables. The solution | |
27368 | to this is to flatten the comma expression representation and make | |
27369 | codegen comma expressions and initializer lists iterative rather than | |
27370 | recursive. | |
27371 | ||
27372 | * parser/Grammar.y: | |
27373 | * parser/NodeConstructors.h: | |
27374 | (JSC::CommaNode::CommaNode): | |
27375 | * parser/Nodes.cpp: | |
27376 | (JSC::CommaNode::emitBytecode): | |
27377 | * parser/Nodes.h: | |
27378 | (JSC::ExpressionNode::isCommaNode): | |
27379 | (JSC::CommaNode::isCommaNode): | |
27380 | (JSC::CommaNode::append): | |
27381 | ||
27382 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27383 | ||
27384 | Reviewed by Maciej Stachowiak. | |
27385 | ||
27386 | https://bugs.webkit.org/show_bug.cgi?id=26645 | |
27387 | ||
27388 | Inherits ScopeChainNode class from FastAllocBase because it has been | |
27389 | instantiated by 'new' in JavaScriptCore/runtime/ScopeChain.h:95. | |
27390 | ||
27391 | * wtf/RefPtr.h: | |
27392 | ||
27393 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27394 | ||
27395 | Reviewed by Darin Adler. | |
27396 | ||
27397 | https://bugs.webkit.org/show_bug.cgi?id=26648 | |
27398 | ||
27399 | Inherits Deque class from FastAllocBase because it has been | |
27400 | instantiated by 'new' with DEFINE_STATIC_LOCAL macro in | |
27401 | JavaScriptCore/wtf/MainThread.cpp:62. | |
27402 | ||
27403 | * wtf/Deque.h: | |
27404 | ||
27405 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27406 | ||
27407 | Reviewed by Darin Adler. | |
27408 | ||
27409 | https://bugs.webkit.org/show_bug.cgi?id=26644 | |
27410 | ||
27411 | Inherits RefPtr class from FastAllocBase because it has been | |
27412 | instantiated by 'new' in JavaScriptCore/runtime/StructureChain.cpp:41. | |
27413 | ||
27414 | * wtf/RefPtr.h: | |
27415 | ||
27416 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27417 | ||
27418 | Reviewed by Darin Adler. | |
27419 | ||
27420 | Inherits HashSet class from FastAllocBase, because it has been | |
27421 | instantiated by 'new' in JavaScriptCore/runtime/Collector.h:116. | |
27422 | ||
27423 | * wtf/HashSet.h: | |
27424 | ||
27425 | 2009-06-24 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27426 | ||
27427 | Reviewed by Darin Adler. | |
27428 | ||
27429 | Inherits Vector class from FastAllocBase because it has been | |
27430 | instantiated by 'new' in JavaScriptCore/runtime/Structure.cpp:633. | |
27431 | ||
27432 | * wtf/Vector.h: | |
27433 | ||
27434 | 2009-06-24 Norbert Leser <norbert.leser@nokia.com> | |
27435 | ||
27436 | Reviewed by Maciej Stachoviak. | |
27437 | ||
27438 | The BytecodeGenerator objects were instantiated on stack, which takes up ~38kB per instance | |
27439 | (each instance includes copy of JSC::CodeBlock with large SymbolTable, etc.). | |
27440 | Specifically, since there is nested invocation (e.g., GlobalCode --> FunctionCode), | |
27441 | the stack overflows immediately on Symbian hardware (max. 80 kB). | |
27442 | Proposed change allocates generator objects on heap. | |
27443 | Performance impact (if any) should be negligible and change is proposed as general fix, | |
27444 | rather than ifdef'd for SYMBIAN. | |
27445 | ||
27446 | * parser/Nodes.cpp: | |
27447 | (JSC::ProgramNode::generateBytecode): | |
27448 | (JSC::EvalNode::generateBytecode): | |
27449 | (JSC::EvalNode::bytecodeForExceptionInfoReparse): | |
27450 | (JSC::FunctionBodyNode::generateBytecode): | |
27451 | (JSC::FunctionBodyNode::bytecodeForExceptionInfoReparse): | |
27452 | ||
27453 | 2009-06-23 Oliver Hunt <oliver@apple.com> | |
27454 | ||
27455 | Reviewed by Gavin Barraclough. | |
27456 | ||
27457 | <rdar://problem/6992806> REGRESSION: Enumeration can skip new properties in cases of prototypes that have more than 64 (26593) | |
27458 | <https://bugs.webkit.org/show_bug.cgi?id=26593> | |
27459 | ||
27460 | Do not attempt to cache structure chains if they contain a dictionary at any level. | |
27461 | ||
27462 | * interpreter/Interpreter.cpp: | |
27463 | (JSC::Interpreter::tryCachePutByID): | |
27464 | (JSC::Interpreter::tryCacheGetByID): | |
27465 | * jit/JITStubs.cpp: | |
27466 | (JSC::JITThunks::tryCachePutByID): | |
27467 | * runtime/Structure.cpp: | |
27468 | (JSC::Structure::getEnumerablePropertyNames): | |
27469 | (JSC::Structure::addPropertyTransition): | |
27470 | * runtime/StructureChain.cpp: | |
27471 | (JSC::StructureChain::isCacheable): | |
27472 | * runtime/StructureChain.h: | |
27473 | ||
27474 | 2009-06-23 Yong Li <yong.li@torchmobile.com> | |
27475 | ||
27476 | Reviewed by George Staikos. | |
27477 | ||
27478 | https://bugs.webkit.org/show_bug.cgi?id=26654 | |
27479 | Add the proper export define for the JavaScriptCore API when building for WINCE. | |
27480 | ||
27481 | * API/JSBase.h: | |
27482 | ||
27483 | 2009-06-23 Joe Mason <joe.mason@torchmobile.com> | |
27484 | ||
27485 | Reviewed by Adam Treat. | |
27486 | ||
27487 | Authors: Yong Li <yong.li@torchmobile.com>, Joe Mason <joe.mason@torchmobile.com> | |
27488 | ||
27489 | https://bugs.webkit.org/show_bug.cgi?id=26611 | |
27490 | Implement currentThreadStackBase on WINCE by adding a global, | |
27491 | g_stackBase, which must be set to the address of a local variable | |
27492 | by the caller before calling any WebKit function that invokes JSC. | |
27493 | ||
27494 | * runtime/Collector.cpp: | |
27495 | (JSC::isPageWritable): | |
27496 | (JSC::getStackBase): | |
27497 | Starts at the top of the stack and returns the entire range of | |
27498 | consecutive writable pages as an estimate of the actual stack. | |
27499 | This will be much bigger than the actual stack range, so some | |
27500 | dead objects can't be collected, but it guarantees live objects | |
27501 | aren't collected prematurely. | |
27502 | ||
27503 | (JSC::currentThreadStackBase): | |
27504 | On WinCE, returns g_stackBase if set or call getStackBase as a | |
27505 | fallback if not. | |
27506 | ||
27507 | 2009-06-23 Oliver Hunt <oliver@apple.com> | |
27508 | ||
27509 | Reviewed by Alexey Proskuryakov. | |
27510 | ||
27511 | Fix stupid performance problem in the LiteralParser | |
27512 | ||
27513 | The LiteralParser was making a new UString in order to use | |
27514 | toDouble, however UString's toDouble allows a much wider range | |
27515 | of numberic strings than the LiteralParser accepts, and requires | |
27516 | an additional heap allocation or two for the construciton of the | |
27517 | UString. To rectify this we just call WTF::dtoa directly using | |
27518 | a stack allocated buffer to hold the validated numeric literal. | |
27519 | ||
27520 | * runtime/LiteralParser.cpp: | |
27521 | (JSC::LiteralParser::Lexer::lexNumber): | |
27522 | (JSC::LiteralParser::parse): | |
27523 | * runtime/LiteralParser.h: | |
27524 | ||
27525 | 2009-06-22 Oliver Hunt <oliver@apple.com> | |
27526 | ||
27527 | Reviewed by Alexey Proskuryakov. | |
27528 | ||
27529 | Bug 26640: JSON.stringify needs to special case Boolean objects | |
27530 | <https://bugs.webkit.org/show_bug.cgi?id=26640> | |
27531 | ||
27532 | Add special case handling of the Boolean object so we match current | |
27533 | ES5 errata. | |
27534 | ||
27535 | * runtime/JSONObject.cpp: | |
27536 | (JSC::unwrapBoxedPrimitive): renamed from unwrapNumberOrString | |
27537 | (JSC::gap): | |
27538 | (JSC::Stringifier::appendStringifiedValue): | |
27539 | ||
27540 | 2009-06-22 Oliver Hunt <oliver@apple.com> | |
27541 | ||
27542 | Reviewed by Darin Adler. | |
27543 | ||
27544 | Bug 26591: Support revivers in JSON.parse | |
27545 | <https://bugs.webkit.org/show_bug.cgi?id=26591> | |
27546 | ||
27547 | Add reviver support to JSON.parse. This completes the JSON object. | |
27548 | ||
27549 | * runtime/JSONObject.cpp: | |
27550 | (JSC::Walker::Walker): | |
27551 | (JSC::Walker::callReviver): | |
27552 | (JSC::Walker::walk): | |
27553 | (JSC::JSONProtoFuncParse): | |
27554 | ||
27555 | 2009-06-21 Oliver Hunt <oliver@apple.com> | |
27556 | ||
27557 | Reviewed by Darin Adler. | |
27558 | ||
27559 | Bug 26592: Support standard toJSON functions | |
27560 | <https://bugs.webkit.org/show_bug.cgi?id=26592> | |
27561 | ||
27562 | Add support for the standard Date.toJSON function. | |
27563 | ||
27564 | * runtime/DatePrototype.cpp: | |
27565 | (JSC::dateProtoFuncToJSON): | |
27566 | ||
27567 | 2009-06-21 Oliver Hunt <oliver@apple.com> | |
27568 | ||
27569 | Reviewed by Sam Weinig. | |
27570 | ||
27571 | Bug 26594: JSC needs to support Date.toISOString | |
27572 | <https://bugs.webkit.org/show_bug.cgi?id=26594> | |
27573 | ||
27574 | Add support for Date.toISOString. | |
27575 | ||
27576 | * runtime/DatePrototype.cpp: | |
27577 | (JSC::dateProtoFuncToISOString): | |
27578 | ||
27579 | 2009-06-21 Oliver Hunt <oliver@apple.com> | |
27580 | ||
27581 | Remove dead code. | |
27582 | ||
27583 | * runtime/LiteralParser.cpp: | |
27584 | (JSC::LiteralParser::parse): | |
27585 | ||
27586 | 2009-06-21 Oliver Hunt <oliver@apple.com> | |
27587 | ||
27588 | Reviewed by Darin Adler and Cameron Zwarich. | |
27589 | ||
27590 | Bug 26587: Support JSON.parse | |
27591 | <https://bugs.webkit.org/show_bug.cgi?id=26587> | |
27592 | ||
27593 | Extend the LiteralParser to support the full strict JSON | |
27594 | grammar, fix a few places where the grammar was incorrectly | |
27595 | lenient. Doesn't yet support the JSON.parse reviver function | |
27596 | but that does not block the JSON.parse functionality itself. | |
27597 | ||
27598 | * interpreter/Interpreter.cpp: | |
27599 | (JSC::Interpreter::callEval): | |
27600 | * runtime/JSGlobalObjectFunctions.cpp: | |
27601 | (JSC::globalFuncEval): | |
27602 | * runtime/JSONObject.cpp: | |
27603 | (JSC::JSONProtoFuncParse): | |
27604 | * runtime/LiteralParser.cpp: | |
27605 | (JSC::LiteralParser::Lexer::lex): | |
27606 | (JSC::isSafeStringCharacter): | |
27607 | (JSC::LiteralParser::Lexer::lexString): | |
27608 | (JSC::LiteralParser::parse): | |
27609 | * runtime/LiteralParser.h: | |
27610 | (JSC::LiteralParser::LiteralParser): | |
27611 | (JSC::LiteralParser::tryJSONParse): | |
27612 | (JSC::LiteralParser::): | |
27613 | (JSC::LiteralParser::Lexer::Lexer): | |
27614 | ||
27615 | 2009-06-21 David Levin <levin@chromium.org> | |
27616 | ||
27617 | Reviewed by NOBODY (speculative build fix for windows). | |
27618 | ||
27619 | Simply removed some whitespace form this file to make windows build wtf and | |
27620 | hopefully copy the new MessageQueque.h so that WebCore picks it up. | |
27621 | ||
27622 | * wtf/Assertions.cpp: | |
27623 | ||
27624 | 2009-06-21 Drew Wilson <atwilson@google.com> | |
27625 | ||
27626 | Reviewed by David Levin. | |
27627 | ||
27628 | <https://bugs.webkit.org/show_bug.cgi?id=25043> | |
27629 | Added support for multi-threaded MessagePorts. | |
27630 | ||
27631 | * wtf/MessageQueue.h: | |
27632 | (WTF::::appendAndCheckEmpty): | |
27633 | Added API to test whether the queue was empty before adding an element. | |
27634 | ||
27635 | 2009-06-20 David D. Kilzer <ddkilzer@webkit.org> | |
27636 | ||
27637 | Fix namespace comment in SegmentedVector.h | |
27638 | ||
27639 | * wtf/SegmentedVector.h: Updated namespace comment to reflect | |
27640 | new namespace after r44897. | |
27641 | ||
27642 | 2009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
27643 | ||
27644 | Bug 24986: ARM JIT port | |
27645 | <https://bugs.webkit.org/show_bug.cgi?id=24986> | |
27646 | ||
27647 | Reviewed by Oliver Hunt. | |
27648 | ||
27649 | An Iterator added for SegmentedVector. Currently | |
27650 | only the pre ++ operator is supported. | |
27651 | ||
27652 | * wtf/SegmentedVector.h: | |
27653 | (WTF::SegmentedVectorIterator::~SegmentedVectorIterator): | |
27654 | (WTF::SegmentedVectorIterator::operator*): | |
27655 | (WTF::SegmentedVectorIterator::operator->): | |
27656 | (WTF::SegmentedVectorIterator::operator++): | |
27657 | (WTF::SegmentedVectorIterator::operator==): | |
27658 | (WTF::SegmentedVectorIterator::operator!=): | |
27659 | (WTF::SegmentedVectorIterator::operator=): | |
27660 | (WTF::SegmentedVectorIterator::SegmentedVectorIterator): | |
27661 | (WTF::SegmentedVector::alloc): | |
27662 | (WTF::SegmentedVector::begin): | |
27663 | (WTF::SegmentedVector::end): | |
27664 | ||
27665 | 2009-06-20 Zoltan Herczeg <zherczeg@inf.u-szeged.hu> | |
27666 | ||
27667 | Bug 24986: ARM JIT port | |
27668 | <https://bugs.webkit.org/show_bug.cgi?id=24986> | |
27669 | ||
27670 | Reviewed by Oliver Hunt. | |
27671 | ||
27672 | Move SegmentedVector to /wtf subdirectory | |
27673 | and change "namespace JSC" to "namespace WTF" | |
27674 | ||
27675 | Additional build file updates by David Kilzer. | |
27676 | ||
27677 | * GNUmakefile.am: Updated path to SegmentedVector.h. | |
27678 | * JavaScriptCore.order: Updated SegmentedVector namespace from | |
27679 | JSC to WTF in mangled C++ method name. | |
27680 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.vcproj: | |
27681 | Removed reference to bytecompiler\SegmentedVector.h. | |
27682 | * JavaScriptCore.vcproj/WTF/WTF.vcproj: Added reference to | |
27683 | wtf\SegmentedVector.h. | |
27684 | * JavaScriptCore.xcodeproj/project.pbxproj: Moved | |
27685 | SegmentedVector.h definition from bytecompiler subdirectory to | |
27686 | wtf subdirectory. | |
27687 | * bytecompiler/BytecodeGenerator.h: Updated #include path to | |
27688 | SegmentedVector.h and prepended WTF:: namespace to its use. | |
27689 | * parser/Lexer.h: Ditto. | |
27690 | * wtf/SegmentedVector.h: Renamed from JavaScriptCore/bytecompiler/SegmentedVector.h. | |
27691 | (WTF::SegmentedVector::SegmentedVector): | |
27692 | (WTF::SegmentedVector::~SegmentedVector): | |
27693 | (WTF::SegmentedVector::size): | |
27694 | (WTF::SegmentedVector::at): | |
27695 | (WTF::SegmentedVector::operator[]): | |
27696 | (WTF::SegmentedVector::last): | |
27697 | (WTF::SegmentedVector::append): | |
27698 | (WTF::SegmentedVector::removeLast): | |
27699 | (WTF::SegmentedVector::grow): | |
27700 | (WTF::SegmentedVector::clear): | |
27701 | (WTF::SegmentedVector::deleteAllSegments): | |
27702 | (WTF::SegmentedVector::segmentExistsFor): | |
27703 | (WTF::SegmentedVector::segmentFor): | |
27704 | (WTF::SegmentedVector::subscriptFor): | |
27705 | (WTF::SegmentedVector::ensureSegmentsFor): | |
27706 | (WTF::SegmentedVector::ensureSegment): | |
27707 | ||
27708 | 2009-06-19 Gavin Barraclough <barraclough@apple.com> | |
27709 | ||
27710 | Reviewed by NOBODY (build fix take 2 - rename FIELD_OFFSET to something that doesn't conflict with winnt.h). | |
27711 | ||
27712 | * jit/JIT.cpp: | |
27713 | (JSC::JIT::privateCompile): | |
27714 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
27715 | (JSC::JIT::emitGetVariableObjectRegister): | |
27716 | (JSC::JIT::emitPutVariableObjectRegister): | |
27717 | * jit/JIT.h: | |
27718 | * jit/JITArithmetic.cpp: | |
27719 | (JSC::JIT::emit_op_rshift): | |
27720 | (JSC::JIT::emitSlow_op_jnless): | |
27721 | (JSC::JIT::emitSlow_op_jnlesseq): | |
27722 | (JSC::JIT::compileBinaryArithOp): | |
27723 | * jit/JITCall.cpp: | |
27724 | (JSC::JIT::compileOpCallInitializeCallFrame): | |
27725 | (JSC::JIT::compileOpCall): | |
27726 | * jit/JITInlineMethods.h: | |
27727 | (JSC::JIT::restoreArgumentReference): | |
27728 | (JSC::JIT::checkStructure): | |
27729 | * jit/JITOpcodes.cpp: | |
27730 | (JSC::JIT::emit_op_instanceof): | |
27731 | (JSC::JIT::emit_op_get_scoped_var): | |
27732 | (JSC::JIT::emit_op_put_scoped_var): | |
27733 | (JSC::JIT::emit_op_construct_verify): | |
27734 | (JSC::JIT::emit_op_resolve_global): | |
27735 | (JSC::JIT::emit_op_jeq_null): | |
27736 | (JSC::JIT::emit_op_jneq_null): | |
27737 | (JSC::JIT::emit_op_to_jsnumber): | |
27738 | (JSC::JIT::emit_op_catch): | |
27739 | (JSC::JIT::emit_op_eq_null): | |
27740 | (JSC::JIT::emit_op_neq_null): | |
27741 | (JSC::JIT::emit_op_convert_this): | |
27742 | (JSC::JIT::emit_op_profile_will_call): | |
27743 | (JSC::JIT::emit_op_profile_did_call): | |
27744 | (JSC::JIT::emitSlow_op_get_by_val): | |
27745 | * jit/JITPropertyAccess.cpp: | |
27746 | (JSC::JIT::emit_op_get_by_val): | |
27747 | (JSC::JIT::emit_op_put_by_val): | |
27748 | (JSC::JIT::emit_op_method_check): | |
27749 | (JSC::JIT::compileGetByIdHotPath): | |
27750 | (JSC::JIT::emit_op_put_by_id): | |
27751 | (JSC::JIT::compilePutDirectOffset): | |
27752 | (JSC::JIT::compileGetDirectOffset): | |
27753 | (JSC::JIT::privateCompilePutByIdTransition): | |
27754 | (JSC::JIT::privateCompilePatchGetArrayLength): | |
27755 | * jit/JITStubs.cpp: | |
27756 | (JSC::JITThunks::JITThunks): | |
27757 | ||
27758 | 2009-06-19 Gavin Barraclough <barraclough@apple.com> | |
27759 | ||
27760 | Reviewed by NOBODY (Windows build fix). | |
27761 | ||
27762 | * jit/JIT.h: | |
27763 | * jit/JITInlineMethods.h: | |
27764 | ||
27765 | 2009-06-19 Gabor Loki <loki@inf.u-szeged.hu> | |
27766 | ||
27767 | Reviewed by Gavin Barraclough. | |
27768 | ||
27769 | Reorganize ARM architecture specific macros. | |
27770 | Use PLATFORM_ARM_ARCH(7) instead of PLATFORM(ARM_V7). | |
27771 | ||
27772 | Bug 24986: ARM JIT port | |
27773 | <https://bugs.webkit.org/show_bug.cgi?id=24986> | |
27774 | ||
27775 | * assembler/ARMv7Assembler.h: | |
27776 | * assembler/AbstractMacroAssembler.h: | |
27777 | (JSC::AbstractMacroAssembler::Imm32::Imm32): | |
27778 | * assembler/MacroAssembler.h: | |
27779 | * assembler/MacroAssemblerCodeRef.h: | |
27780 | (JSC::MacroAssemblerCodePtr::MacroAssemblerCodePtr): | |
27781 | * jit/ExecutableAllocator.h: | |
27782 | (JSC::ExecutableAllocator::cacheFlush): | |
27783 | * jit/JIT.h: | |
27784 | * jit/JITInlineMethods.h: | |
27785 | (JSC::JIT::restoreArgumentReferenceForTrampoline): | |
27786 | * jit/JITStubs.cpp: | |
27787 | * jit/JITStubs.h: | |
27788 | * wtf/Platform.h: | |
27789 | * yarr/RegexJIT.cpp: | |
27790 | (JSC::Yarr::RegexGenerator::generateEnter): | |
27791 | (JSC::Yarr::RegexGenerator::generateReturn): | |
27792 | ||
27793 | 2009-06-19 Gavin Barraclough <barraclough@apple.com> | |
27794 | ||
27795 | Reviewed by Oliver Hunt. | |
27796 | ||
27797 | Fix armv7 JIT build issues. | |
27798 | ||
27799 | Unfortunate the arm compiler does not like the use of offsetof on JITStackFrame (since it now contains non POD types), | |
27800 | and the FIELD_OFFSET macro does not appear constantish enough for it to be happy with its use in COMPILE_ASSERT macros. | |
27801 | ||
27802 | * Replace offsetofs with FIELD_OFFSETs (safe on C++ objects). | |
27803 | * Move COMPILE_ASSERTs defending layout of JITStackFrame structure on armv7 into JITThunks constructor. | |
27804 | ||
27805 | * jit/JIT.cpp: | |
27806 | * jit/JIT.h: | |
27807 | * jit/JITInlineMethods.h: | |
27808 | (JSC::JIT::restoreArgumentReference): | |
27809 | * jit/JITOpcodes.cpp: | |
27810 | (JSC::JIT::emit_op_catch): | |
27811 | * jit/JITStubs.cpp: | |
27812 | (JSC::JITThunks::JITThunks): | |
27813 | ||
27814 | 2009-06-19 Adam Treat <adam.treat@torchmobile.com> | |
27815 | ||
27816 | Blind attempt at build fix. | |
27817 | ||
27818 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
27819 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
27820 | ||
27821 | 2009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27822 | ||
27823 | Reviewed by Oliver Hunt. | |
27824 | ||
27825 | Inherits CallIdentifier struct from FastAllocBase because it has been | |
27826 | instantiated by 'new' in JavaScriptCore/profiler/CallIdentifier.h:86. | |
27827 | ||
27828 | * wtf/HashCountedSet.h: | |
27829 | ||
27830 | 2009-06-19 Adam Treat <adam.treat@torchmobile.com> | |
27831 | ||
27832 | Reviewed by Oliver Hunt. | |
27833 | ||
27834 | https://bugs.webkit.org/show_bug.cgi?id=26540 | |
27835 | Modify the test shell to add a new function 'checkSyntax' that will | |
27836 | only parse the source instead of executing it. In this way we can test | |
27837 | pure parsing performance against some of the larger scripts in the wild. | |
27838 | ||
27839 | * jsc.cpp: | |
27840 | (GlobalObject::GlobalObject): | |
27841 | (functionCheckSyntax): | |
27842 | ||
27843 | 2009-06-19 Zoltan Horvath <hzoltan@inf.u-szeged.hu> | |
27844 | ||
27845 | Reviewed by Darin Adler. | |
27846 | ||
27847 | Inherits HashCountedSet class from FastAllocBase because it has been | |
27848 | instantiated by 'new' in JavaScriptCore/runtime/Collector.cpp:1095. | |
27849 | ||
27850 | * wtf/HashCountedSet.h: | |
27851 | ||
27852 | 2009-06-19 Yong Li <yong.li@torchmobile.com> | |
27853 | ||
27854 | Reviewed by George Staikos. | |
27855 | ||
27856 | https://bugs.webkit.org/show_bug.cgi?id=26558 | |
27857 | Declare these symbols extern for WINCE as they are provided by libce. | |
27858 | ||
27859 | * runtime/DateConstructor.cpp: | |
27860 | * runtime/DatePrototype.cpp: | |
27861 | (JSC::formatLocaleDate): | |
27862 | ||
27863 | 2009-06-19 Oliver Hunt <oliver@apple.com> | |
27864 | ||
27865 | Reviewed by Maciej Stachowiak. | |
27866 | ||
27867 | <rdar://problem/6988973> ScopeChain leak in interpreter builds | |
27868 | ||
27869 | Move the Scopechain destruction code in JSFunction outside of the ENABLE(JIT) | |
27870 | path. | |
27871 | ||
27872 | * runtime/JSFunction.cpp: | |
27873 | (JSC::JSFunction::~JSFunction): | |
27874 | * wtf/Platform.h: | |
27875 | ||
27876 | 2009-06-19 Yong Li <yong.li@torchmobile.com> | |
27877 | ||
27878 | Reviewed by George Staikos. | |
27879 | ||
27880 | https://bugs.webkit.org/show_bug.cgi?id=26543 | |
27881 | Windows CE uses 'GetLastError' instead of 'errno.' | |
27882 | ||
27883 | * interpreter/RegisterFile.h: | |
27884 | (JSC::RegisterFile::RegisterFile): | |
27885 | (JSC::RegisterFile::grow): | |
27886 | ||
27887 | 2009-06-19 David Levin <levin@chromium.org> | |
27888 | ||
27889 | Reviewed by NOBODY (Windows build fix). | |
27890 | ||
27891 | Add export for Windows corresponding to OSX export done in r44844. | |
27892 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore.def: | |
27893 | * JavaScriptCore.vcproj/JavaScriptCore/JavaScriptCore_debug.def: | |
27894 | ||
27895 | 2009-06-18 Oliver Hunt <oliver@apple.com> | |
27896 | ||
27897 | Reviewed by Gavin "Viceroy of Venezuela" Barraclough. | |
27898 | ||
27899 | Bug 26532: Native functions do not correctly unlink from optimised callsites when they're collected | |
27900 | <https://bugs.webkit.org/show_bug.cgi?id=26532> <rdar://problem/6625385> | |
27901 | ||
27902 | We need to make sure that each native function instance correctly unlinks any references to it | |
27903 | when it is collected. Allowing this to happen required a few changes: | |
27904 | * Every native function needs a codeblock to track the link information | |
27905 | * To have this codeblock, every function now also needs its own functionbodynode | |
27906 | so we no longer get to have a single shared instance. | |
27907 | * Identifying a host function is now done by looking for CodeBlock::codeType() == NativeCode | |
27908 | ||
27909 | * JavaScriptCore.exp: | |
27910 | * bytecode/CodeBlock.cpp: | |
27911 | (JSC::CodeBlock::CodeBlock): | |
27912 | Constructor for NativeCode CodeBlock | |
27913 | (JSC::CodeBlock::derefStructures): | |
27914 | (JSC::CodeBlock::refStructures): | |
27915 | (JSC::CodeBlock::reparseForExceptionInfoIfNecessary): | |
27916 | (JSC::CodeBlock::handlerForBytecodeOffset): | |
27917 | (JSC::CodeBlock::lineNumberForBytecodeOffset): | |
27918 | (JSC::CodeBlock::expressionRangeForBytecodeOffset): | |
27919 | (JSC::CodeBlock::getByIdExceptionInfoForBytecodeOffset): | |
27920 | (JSC::CodeBlock::functionRegisterForBytecodeOffset): | |
27921 | (JSC::CodeBlock::hasGlobalResolveInstructionAtBytecodeOffset): | |
27922 | (JSC::CodeBlock::hasGlobalResolveInfoAtBytecodeOffset): | |
27923 | (JSC::CodeBlock::setJITCode): | |
27924 | Add assertions to ensure we don't try and use NativeCode CodeBlocks as | |
27925 | a normal codeblock. | |
27926 | ||
27927 | * bytecode/CodeBlock.h: | |
27928 | (JSC::): | |
27929 | (JSC::CodeBlock::source): | |
27930 | (JSC::CodeBlock::sourceOffset): | |
27931 | (JSC::CodeBlock::evalCodeCache): | |
27932 | (JSC::CodeBlock::createRareDataIfNecessary): | |
27933 | More assertions. | |
27934 | ||
27935 | * jit/JIT.cpp: | |
27936 | (JSC::JIT::privateCompileCTIMachineTrampolines): | |
27937 | (JSC::JIT::linkCall): | |
27938 | Update logic to allow native function caching | |
27939 | ||
27940 | * jit/JITStubs.cpp: | |
27941 | * parser/Nodes.cpp: | |
27942 | (JSC::FunctionBodyNode::createNativeThunk): | |
27943 | (JSC::FunctionBodyNode::isHostFunction): | |
27944 | * parser/Nodes.h: | |
27945 | * runtime/JSFunction.cpp: | |
27946 | (JSC::JSFunction::JSFunction): | |
27947 | (JSC::JSFunction::~JSFunction): | |
27948 | (JSC::JSFunction::mark): | |
27949 | * runtime/JSGlobalData.cpp: | |
27950 | (JSC::JSGlobalData::~JSGlobalData): | |
27951 | * runtime/JSGlobalData.h: | |
27952 | ||
27953 | 2009-06-18 Gavin Barraclough <barraclough@apple.com> | |
27954 | ||
27955 | Reviewed by NOBODY (Windows build fix). | |
27956 | ||
27957 | * wtf/DateMath.cpp: | |
27958 | (WTF::calculateUTCOffset): | |
27959 | ||
27960 | 2009-06-18 Gavin Barraclough <barraclough@apple.com> | |
27961 | ||
27962 | Reviewed by Geoff Garen. | |
27963 | ||
27964 | Timezone calculation incorrect in Venezuela. | |
27965 | ||
27966 | https://bugs.webkit.org/show_bug.cgi?id=26531 | |
27967 | <rdar://problem/6646169> Time is incorrectly reported to JavaScript in both Safari 3 and Firefox 3 | |
27968 | ||
27969 | The problem is that we're calculating the timezone relative to 01/01/2000, | |
27970 | but the VET timezone changed from -4 hours to -4:30 hours on 12/09/2007. | |
27971 | According to the spec, section 15.9.1.9 states "the time since the beginning | |
27972 | of the year", presumably meaning the *current* year. Change the calculation | |
27973 | to be based on whatever the current year is, rather than a canned date. | |
27974 | ||
27975 | No performance impact. | |
27976 | ||
27977 | * wtf/DateMath.cpp: | |
27978 | (WTF::calculateUTCOffset): | |
27979 | ||
27980 | 2009-06-18 Gavin Barraclough <barraclough@apple.com> | |
27981 | ||
27982 | Rubber Stamped by Mark Rowe (originally reviewed by Sam Weinig). | |
27983 | ||
27984 | (Reintroducing patch added in r44492, and reverted in r44796.) | |
27985 | ||
27986 | Change the implementation of op_throw so the stub function always modifies its | |
27987 | return address - if it doesn't find a 'catch' it will switch to a trampoline | |
27988 | to force a return from JIT execution. This saves memory, by avoiding the need | |
27989 | for a unique return for every op_throw. | |
27990 | ||
27991 | * jit/JITOpcodes.cpp: | |
27992 | (JSC::JIT::emit_op_throw): | |
27993 | JITStubs::cti_op_throw now always changes its return address, | |
27994 | remove return code generated after the stub call (this is now | |
27995 | handled by ctiOpThrowNotCaught). | |
27996 | * jit/JITStubs.cpp: | |
27997 | (JSC::): | |
27998 | Add ctiOpThrowNotCaught definitions. | |
27999 | (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
28000 | Change cti_op_throw to always change its return address. | |
28001 | * jit/JITStubs.h: | |
28002 | Add ctiOpThrowNotCaught declaration. | |
28003 | ||
28004 | 2009-06-18 Kevin McCullough <kmccullough@apple.com> | |
28005 | ||
28006 | Reviewed by Oliver Hunt. | |
28007 | ||
28008 | <rdar://problem/6940880> REGRESSION: Breakpoints don't break in 64-bit | |
28009 | ||
28010 | - Exposed functions now needed by WebCore. | |
28011 | ||
28012 | * JavaScriptCore.exp: | |
28013 | ||
28014 | 2009-06-17 Darin Adler <darin@apple.com> | |
28015 | ||
28016 | Reviewed by Oliver Hunt. | |
28017 | ||
28018 | Bug 26429: Make JSON.stringify non-recursive so it can handle objects | |
28019 | of arbitrary complexity | |
28020 | https://bugs.webkit.org/show_bug.cgi?id=26429 | |
28021 | ||
28022 | For marking I decided not to use gcProtect, because this is inside the engine | |
28023 | so it's easy enough to just do marking. And that darned gcProtect does locking! | |
28024 | Oliver tried to convince me to used MarkedArgumentBuffer, but the constructor | |
28025 | for that class says "FIXME: Remove all clients of this API, then remove this API." | |
28026 | ||
28027 | * runtime/Collector.cpp: | |
28028 | (JSC::Heap::collect): Add a call to JSONObject::markStringifiers. | |
28029 | ||
28030 | * runtime/CommonIdentifiers.cpp: | |
28031 | (JSC::CommonIdentifiers::CommonIdentifiers): Added emptyIdentifier. | |
28032 | * runtime/CommonIdentifiers.h: Ditto. | |
28033 | ||
28034 | * runtime/JSGlobalData.cpp: | |
28035 | (JSC::JSGlobalData::JSGlobalData): Initialize firstStringifierToMark to 0. | |
28036 | * runtime/JSGlobalData.h: Added firstStringifierToMark. | |
28037 | ||
28038 | * runtime/JSONObject.cpp: Cut down the includes to the needed ones only. | |
28039 | (JSC::unwrapNumberOrString): Added. Helper for unwrapping number and string | |
28040 | objects to get their number and string values. | |
28041 | (JSC::ReplacerPropertyName::ReplacerPropertyName): Added. The class is used | |
28042 | to wrap an identifier or integer so we don't have to do any work unless we | |
28043 | actually call a replacer. | |
28044 | (JSC::ReplacerPropertyName::value): Added. | |
28045 | (JSC::gap): Added. Helper function for the Stringifier constructor. | |
28046 | (JSC::PropertyNameForFunctionCall::PropertyNameForFunctionCall): Added. | |
28047 | The class is used to wrap an identifier or integer so we don't have to | |
28048 | allocate a number or string until we actually call toJSON or a replacer. | |
28049 | (JSC::PropertyNameForFunctionCall::asJSValue): Added. | |
28050 | (JSC::Stringifier::Stringifier): Updated and moved out of the class | |
28051 | definition. Added code to hook this into a singly linked list for marking. | |
28052 | (JSC::Stringifier::~Stringifier): Remove from the singly linked list. | |
28053 | (JSC::Stringifier::mark): Mark all the objects in the holder stacks. | |
28054 | (JSC::Stringifier::stringify): Updated. | |
28055 | (JSC::Stringifier::appendQuotedString): Tweaked and streamlined a bit. | |
28056 | (JSC::Stringifier::toJSON): Renamed from toJSONValue. | |
28057 | (JSC::Stringifier::appendStringifiedValue): Renamed from stringify. | |
28058 | Added code to use the m_holderStack to do non-recursive stringify of | |
28059 | objects and arrays. This code also uses the timeout checker since in | |
28060 | pathological cases it could be slow even without calling into the | |
28061 | JavaScript virtual machine. | |
28062 | (JSC::Stringifier::willIndent): Added. | |
28063 | (JSC::Stringifier::indent): Added. | |
28064 | (JSC::Stringifier::unindent): Added. | |
28065 | (JSC::Stringifier::startNewLine): Added. | |
28066 | (JSC::Stringifier::Holder::Holder): Added. | |
28067 | (JSC::Stringifier::Holder::appendNextProperty): Added. This is the | |
28068 | function that handles the format of arrays and objects. | |
28069 | (JSC::JSONObject::getOwnPropertySlot): Moved this down to the bottom | |
28070 | of the file so the JSONObject class is not interleaved with the | |
28071 | Stringifier class. | |
28072 | (JSC::JSONObject::markStringifiers): Added. Calls mark. | |
28073 | (JSC::JSONProtoFuncStringify): Streamlined the code here. The code | |
28074 | to compute the gap string is now a separate function. | |
28075 | ||
28076 | * runtime/JSONObject.h: Made everything private. Added markStringifiers. | |
28077 | ||
28078 | 2009-06-17 Oliver Hunt <oliver@apple.com> | |
28079 | ||
28080 | Reviewed by Gavin Barraclough. | |
28081 | ||
28082 | <rdar://problem/6974140> REGRESSION(r43849): Crash in cti_op_call_NotJSFunction when getting directions on maps.google.com | |
28083 | ||
28084 | Roll out r43849 as it appears that we cannot rely on the address of | |
28085 | an objects property storage being constant even if the structure is | |
28086 | unchanged. | |
28087 | ||
28088 | * jit/JIT.h: | |
28089 | * jit/JITPropertyAccess.cpp: | |
28090 | (JSC::JIT::compileGetDirectOffset): | |
28091 | (JSC::JIT::privateCompileGetByIdProto): | |
28092 | (JSC::JIT::privateCompileGetByIdProtoList): | |
28093 | (JSC::JIT::privateCompileGetByIdChainList): | |
28094 | (JSC::JIT::privateCompileGetByIdChain): | |
28095 | ||
28096 | 2009-06-17 Gavin Barraclough <barraclough@apple.com> | |
28097 | ||
28098 | Rubber Stamped by Mark Rowe. | |
28099 | ||
28100 | Fully revert r44492 & r44748 while we fix a bug they cause on internal builds <rdar://problem/6955963>. | |
28101 | ||
28102 | * jit/JITOpcodes.cpp: | |
28103 | (JSC::JIT::emit_op_throw): | |
28104 | * jit/JITStubs.cpp: | |
28105 | (JSC::): | |
28106 | (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
28107 | * jit/JITStubs.h: | |
28108 | ||
28109 | 2009-06-17 Gavin Barraclough <barraclough@apple.com> | |
28110 | ||
28111 | Reviewed by Mark Rowe. | |
28112 | ||
28113 | <rdar://problem/6947426> sunspider math-cordic.js exhibits different intermediate results running 32-bit vs. 64-bit | |
28114 | ||
28115 | On 64-bit, NaN-encoded values must be detagged before they can be used in rshift. | |
28116 | ||
28117 | No performance impact. | |
28118 | ||
28119 | * jit/JITArithmetic.cpp: | |
28120 | (JSC::JIT::emit_op_rshift): | |
28121 | ||
28122 | 2009-06-17 Adam Treat <adam.treat@torchmobile.com> | |
28123 | ||
28124 | Reviewed by George Staikos. | |
28125 | ||
28126 | https://bugs.webkit.org/show_bug.cgi?id=23155 | |
28127 | Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks. | |
28128 | ||
28129 | * jsc.cpp: | |
28130 | (main): | |
28131 | ||
28132 | 2009-06-17 George Staikos <george.staikos@torchmobile.com> | |
28133 | ||
28134 | Reviewed by Adam Treat. | |
28135 | ||
28136 | https://bugs.webkit.org/show_bug.cgi?id=23155 | |
28137 | Move WIN_CE -> WINCE as previously discussed with Qt WINCE folks. | |
28138 | ||
28139 | * config.h: | |
28140 | * jsc.cpp: | |
28141 | * wtf/Assertions.cpp: | |
28142 | * wtf/Assertions.h: | |
28143 | * wtf/CurrentTime.cpp: | |
28144 | (WTF::lowResUTCTime): | |
28145 | * wtf/DateMath.cpp: | |
28146 | (WTF::getLocalTime): | |
28147 | * wtf/MathExtras.h: | |
28148 | * wtf/Platform.h: | |
28149 | * wtf/StringExtras.h: | |
28150 | * wtf/Threading.h: | |
28151 | * wtf/win/MainThreadWin.cpp: | |
28152 | ||
28153 | 2009-06-17 Gavin Barraclough <barraclough@apple.com> | |
28154 | ||
28155 | Reviewed by Oliver Hunt. | |
28156 | ||
28157 | <rdar://problem/6974175> ASSERT in JITStubs.cpp at appsaccess.apple.com | |
28158 | ||
28159 | Remove PropertySlot::putValue - PropertySlots should only be used for getting, | |
28160 | not putting. Rename JSGlobalObject::getOwnPropertySlot to hasOwnPropertyForWrite, | |
28161 | which is what it really was being used to ask, and remove some other getOwnPropertySlot | |
28162 | & getOwnPropertySlotForWrite methods, which were unused and likely to lead to confusion. | |
28163 | ||
28164 | * runtime/JSGlobalObject.h: | |
28165 | (JSC::JSGlobalObject::hasOwnPropertyForWrite): | |
28166 | * runtime/JSObject.h: | |
28167 | * runtime/JSStaticScopeObject.cpp: | |
28168 | * runtime/JSStaticScopeObject.h: | |
28169 | * runtime/PropertySlot.h: | |
28170 | ||
28171 | 2009-06-16 Gavin Barraclough <barraclough@apple.com> | |
28172 | ||
28173 | Reviewed by Oliver hunt. | |
28174 | ||
28175 | Temporarily partially disable r44492, since this is causing some problems on internal builds. | |
28176 | ||
28177 | * jit/JITOpcodes.cpp: | |
28178 | (JSC::JIT::emit_op_throw): | |
28179 | * jit/JITStubs.cpp: | |
28180 | (JSC::JITStubs::DEFINE_STUB_FUNCTION): | |
28181 | ||
28182 | 2009-06-16 Sam Weinig <sam@webkit.org> | |
28183 | ||
28184 | Fix windows build. | |
28185 | ||
28186 | * jit/JIT.cpp: | |
28187 | (JSC::JIT::JIT): | |
28188 | ||
28189 | 2009-06-16 Sam Weinig <sam@webkit.org> | |
28190 | ||
28191 | Reviewed by Oliver Hunt. | |
28192 | ||
28193 | Initialize m_bytecodeIndex to -1 in JIT, and correctly initialize | |
28194 | it for each type of stub using the return address to find the correct | |
28195 | offset. | |
28196 | ||
28197 | * jit/JIT.cpp: | |
28198 | (JSC::JIT::JIT): | |
28199 | * jit/JIT.h: | |
28200 | (JSC::JIT::compileGetByIdProto): | |
28201 | (JSC::JIT::compileGetByIdSelfList): | |
28202 | (JSC::JIT::compileGetByIdProtoList): | |
28203 | (JSC::JIT::compileGetByIdChainList): | |
28204 | (JSC::JIT::compileGetByIdChain): | |
28205 | (JSC::JIT::compilePutByIdTransition): | |
28206 | (JSC::JIT::compileCTIMachineTrampolines): | |
28207 | (JSC::JIT::compilePatchGetArrayLength): | |
28208 | * jit/JITStubCall.h: | |
28209 | (JSC::JITStubCall::call): | |
28210 | ||
28211 | == Rolled over to ChangeLog-2009-06-16 == |