9f57170e0947c7fc26f174a6c9a21ebbde5cec1f
[WebKit-https.git] / Source / JavaScriptCore / ChangeLog
1 2014-10-30  Saam Barati  <saambarati1@gmail.com>
2
3         AST Nodes should keep track of their end offset
4         https://bugs.webkit.org/show_bug.cgi?id=138143
5
6         Reviewed by Filip Pizlo.
7
8         AST nodes nodes now have an int property for their end text 
9         offsets. This change lays some foundational work that will be 
10         needed in profiling which basic blocks have executed.
11
12         * parser/ASTBuilder.h:
13         (JSC::ASTBuilder::setEndOffset):
14         * parser/Nodes.h:
15         (JSC::Node::endOffset):
16         (JSC::Node::setEndOffset):
17         * parser/Parser.cpp:
18         (JSC::Parser<LexerType>::parseStatement):
19         (JSC::Parser<LexerType>::parseFunctionInfo):
20         (JSC::Parser<LexerType>::parseExpression):
21         (JSC::Parser<LexerType>::parseProperty):
22         * parser/Parser.h:
23         (JSC::Parser<LexerType>::parse):
24         * parser/SyntaxChecker.h:
25         (JSC::SyntaxChecker::operatorStackPop):
26
27 2014-10-30  Joseph Pecoraro  <pecoraro@apple.com>
28
29         Web Inspector: Generate ObjC inspector protocol types and alternate dispatcher interfaces
30         https://bugs.webkit.org/show_bug.cgi?id=138048
31
32         Reviewed by Brian Burg.
33
34         Generate Objective-C interfaces for inspector protocol types, command, and event dispatchers.
35         This is very much like the InspectorProtocolTypes, BackendDispatchers, and FrontendDispatchers,
36         but with an ObjC spin on things.
37
38         The private API that clients would use is all encapsulated in RWIProtocol.h. It includes the
39         types interfaces, command handler protocol, and event dispatcher interface. Where possible the
40         API uses real enums, which hides the raw protocol enum strings from clients.
41
42         Inspector protocol types are, like InspectorProtocolObjects, built on top of an InspectorObject.
43         This offers the flexibilty of adding arbitrary key/values using the RWIProtocolJSONObject
44         interface, which may be required for certain protocol objects like "Network.Headers" which
45         have no fields, but expect arbitrary properties to be added.
46
47         Command handler protocols always have two callbacks. An error callback and a success callback.
48         The signature is very much like BackendDispatchers. In parameters are passed directly to
49         the selectors, and out parameters are defined by the success callback. It will be the client's
50         responsibility to call either of these callbacks to complete handling of a request.
51
52         Event dispatcher interfaces are straight forward, just packaging up the arguments and sending
53         the message to the frontend.
54
55         ObjC <-> Protocol conversion happens in each of the generated files. In type getters / setters,
56         in commands parameters and event parameters. For this to work we generate conversion helpers
57         for all enums, ObjC enum <-> protocol strings. For NSArray <-> InspectorArray there are some
58         static helpers to do the conversions. We do lose some type safety in these conversions.
59
60         * JavaScriptCore.xcodeproj/project.pbxproj:
61         * inspector/scripts/codegen/__init__.py:
62         * inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py:
63         (AlternateBackendDispatcherHeaderGenerator._generate_handler_declarations_for_domain):
64         * inspector/scripts/codegen/generate_backend_dispatcher_header.py:
65         (BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains.AlternateInspector):
66         (BackendDispatcherHeaderGenerator._generate_handler_declarations_for_domain):
67         (BackendDispatcherHeaderGenerator._generate_dispatcher_declarations_for_domain):
68         * inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:
69         (BackendDispatcherImplementationGenerator._generate_handler_class_destructor_for_domain):
70         (BackendDispatcherImplementationGenerator._generate_dispatcher_implementations_for_domain):
71         * inspector/scripts/codegen/generate_frontend_dispatcher_header.py:
72         (FrontendDispatcherHeaderGenerator._generate_dispatcher_declarations_for_domain):
73         * inspector/scripts/codegen/generate_frontend_dispatcher_implementation.py:
74         (FrontendDispatcherImplementationGenerator._generate_dispatcher_implementations_for_domain):
75         * inspector/scripts/codegen/generate_objective_c.py: Added.
76         (join_type_and_name):
77         (strip_comment_markers):
78         (remove_duplicate_from_str):
79         (ObjCTypeCategory):
80         (ObjCTypeCategory.category_of_type):
81         (ObjCGenerator):
82         (ObjCGenerator.identifier_to_objc_identifier):
83         (ObjCGenerator.objc_identifier_to_identifier):
84         (ObjCGenerator.should_generate_domain_types_filter):
85         (ObjCGenerator.should_generate_domain_types_filter.should_generate_domain_types):
86         (ObjCGenerator.should_generate_domain_command_handler_filter):
87         (ObjCGenerator.should_generate_domain_command_handler_filter.should_generate_domain_command_handler):
88         (ObjCGenerator.should_generate_domain_event_dispatcher_filter):
89         (ObjCGenerator.should_generate_domain_event_dispatcher_filter.should_generate_domain_event_dispatcher):
90         (ObjCGenerator.objc_name_for_type):
91         (ObjCGenerator.objc_enum_name_for_anonymous_enum_declaration):
92         (ObjCGenerator.objc_enum_name_for_anonymous_enum_member):
93         (ObjCGenerator.objc_enum_name_for_anonymous_enum_parameter):
94         (ObjCGenerator.objc_enum_name_for_non_anonymous_enum):
95         (ObjCGenerator.variable_name_prefix_for_domain):
96         (ObjCGenerator.objc_accessor_type_for_raw_name):
97         (ObjCGenerator.objc_type_for_raw_name):
98         (ObjCGenerator.objc_class_for_raw_name):
99         (ObjCGenerator.protocol_type_for_raw_name):
100         (ObjCGenerator.protocol_type_for_type):
101         (ObjCGenerator.objc_class_for_type):
102         (ObjCGenerator.objc_accessor_type_for_member):
103         (ObjCGenerator.objc_accessor_type_for_member_internal):
104         (ObjCGenerator.objc_type_for_member):
105         (ObjCGenerator.objc_type_for_member_internal):
106         (ObjCGenerator.objc_type_for_param):
107         (ObjCGenerator.objc_type_for_param_internal):
108         (ObjCGenerator.objc_protocol_export_expression_for_variable):
109         (ObjCGenerator.objc_protocol_import_expression_for_member):
110         (ObjCGenerator.objc_protocol_import_expression_for_parameter):
111         (ObjCGenerator.objc_protocol_import_expression_for_variable):
112         (ObjCGenerator.objc_to_protocol_expression_for_member):
113         (ObjCGenerator.protocol_to_objc_expression_for_member):
114         (ObjCGenerator.objc_setter_method_for_member):
115         (ObjCGenerator.objc_setter_method_for_member_internal):
116         (ObjCGenerator.objc_getter_method_for_member):
117         (ObjCGenerator.objc_getter_method_for_member_internal):
118         * inspector/scripts/codegen/generate_objective_c_backend_dispatcher_header.py: Copied from Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py.
119         (ObjectiveCBackendDispatcherHeaderGenerator):
120         (ObjectiveCBackendDispatcherHeaderGenerator.output_filename):
121         (ObjectiveCBackendDispatcherHeaderGenerator.domains_to_generate):
122         (ObjectiveCBackendDispatcherHeaderGenerator.generate_output):
123         (ObjectiveCBackendDispatcherHeaderGenerator._generate_objc_forward_declarations):
124         (ObjectiveCBackendDispatcherHeaderGenerator._generate_objc_forward_declarations_for_domains):
125         (ObjectiveCBackendDispatcherHeaderGenerator._generate_objc_handler_declarations_for_domain):
126         (ObjectiveCBackendDispatcherHeaderGenerator._generate_objc_handler_declaration_for_command):
127         * inspector/scripts/codegen/generate_objective_c_backend_dispatcher_implementation.py: Added.
128         (ObjectiveCConfigurationImplementationGenerator):
129         (ObjectiveCConfigurationImplementationGenerator.__init__):
130         (ObjectiveCConfigurationImplementationGenerator.output_filename):
131         (ObjectiveCConfigurationImplementationGenerator.domains_to_generate):
132         (ObjectiveCConfigurationImplementationGenerator.generate_output):
133         (ObjectiveCConfigurationImplementationGenerator._generate_handler_implementation_for_domain):
134         (ObjectiveCConfigurationImplementationGenerator._generate_handler_implementation_for_command):
135         (ObjectiveCConfigurationImplementationGenerator._generate_success_block_for_command):
136         (ObjectiveCConfigurationImplementationGenerator._generate_conversions_for_command):
137         (ObjectiveCConfigurationImplementationGenerator._generate_invocation_for_command):
138         * inspector/scripts/codegen/generate_objective_c_configuration_header.py: Copied from Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py.
139         (ObjectiveCConfigurationHeaderGenerator):
140         (ObjectiveCConfigurationHeaderGenerator.output_filename):
141         (ObjectiveCConfigurationHeaderGenerator.generate_output):
142         (ObjectiveCConfigurationHeaderGenerator._generate_configuration_interface_for_domains):
143         (ObjectiveCConfigurationHeaderGenerator._generate_properties_for_domain):
144         * inspector/scripts/codegen/generate_objective_c_configuration_implementation.py: Added.
145         (ObjectiveCBackendDispatcherImplementationGenerator):
146         (ObjectiveCBackendDispatcherImplementationGenerator.__init__):
147         (ObjectiveCBackendDispatcherImplementationGenerator.output_filename):
148         (ObjectiveCBackendDispatcherImplementationGenerator.generate_output):
149         (ObjectiveCBackendDispatcherImplementationGenerator._generate_configuration_implementation_for_domains):
150         (ObjectiveCBackendDispatcherImplementationGenerator._generate_ivars):
151         (ObjectiveCBackendDispatcherImplementationGenerator._generate_dealloc):
152         (ObjectiveCBackendDispatcherImplementationGenerator._generate_handler_setter_for_domain):
153         (ObjectiveCBackendDispatcherImplementationGenerator._generate_event_dispatcher_getter_for_domain):
154         * inspector/scripts/codegen/generate_objective_c_conversion_helpers.py: Added.
155         (add_whitespace_separator):
156         (ObjectiveCConversionHelpersGenerator):
157         (ObjectiveCConversionHelpersGenerator.__init__):
158         (ObjectiveCConversionHelpersGenerator.output_filename):
159         (ObjectiveCConversionHelpersGenerator.domains_to_generate):
160         (ObjectiveCConversionHelpersGenerator.generate_output):
161         (ObjectiveCConversionHelpersGenerator._generate_enum_conversion_functions):
162         (ObjectiveCConversionHelpersGenerator._generate_anonymous_enum_conversion_for_declaration):
163         (ObjectiveCConversionHelpersGenerator._generate_anonymous_enum_conversion_for_member):
164         (ObjectiveCConversionHelpersGenerator._generate_anonymous_enum_conversion_for_parameter):
165         (ObjectiveCConversionHelpersGenerator._generate_enum_objc_to_protocol_string):
166         (ObjectiveCConversionHelpersGenerator._generate_enum_from_protocol_string):
167         * inspector/scripts/codegen/generate_objective_c_frontend_dispatcher_implementation.py: Added.
168         (ObjectiveCFrontendDispatcherImplementationGenerator):
169         (ObjectiveCFrontendDispatcherImplementationGenerator.__init__):
170         (ObjectiveCFrontendDispatcherImplementationGenerator.output_filename):
171         (ObjectiveCFrontendDispatcherImplementationGenerator.domains_to_generate):
172         (ObjectiveCFrontendDispatcherImplementationGenerator.generate_output):
173         (ObjectiveCFrontendDispatcherImplementationGenerator._generate_event_dispatcher_implementations):
174         (ObjectiveCFrontendDispatcherImplementationGenerator._generate_event):
175         (ObjectiveCFrontendDispatcherImplementationGenerator._generate_event_signature):
176         (ObjectiveCFrontendDispatcherImplementationGenerator._generate_event_out_parameters):
177         * inspector/scripts/codegen/generate_objective_c_header.py: Added.
178         (add_whitespace_separator):
179         (ObjectiveCHeaderGenerator):
180         (ObjectiveCHeaderGenerator.__init__):
181         (ObjectiveCHeaderGenerator.output_filename):
182         (ObjectiveCHeaderGenerator.generate_output):
183         (ObjectiveCHeaderGenerator._generate_forward_declarations):
184         (ObjectiveCHeaderGenerator._generate_enums):
185         (ObjectiveCHeaderGenerator._generate_types):
186         (ObjectiveCHeaderGenerator._generate_anonymous_enum_for_declaration):
187         (ObjectiveCHeaderGenerator._generate_anonymous_enum_for_member):
188         (ObjectiveCHeaderGenerator._generate_anonymous_enum_for_parameter):
189         (ObjectiveCHeaderGenerator._generate_enum):
190         (ObjectiveCHeaderGenerator._generate_enum.NS_ENUM):
191         (ObjectiveCHeaderGenerator._generate_type_interface):
192         (ObjectiveCHeaderGenerator._generate_init_method_for_required_members):
193         (ObjectiveCHeaderGenerator._generate_member_property):
194         (ObjectiveCHeaderGenerator._generate_command_protocols):
195         (ObjectiveCHeaderGenerator._generate_single_command_protocol):
196         (ObjectiveCHeaderGenerator._callback_block_for_command):
197         (ObjectiveCHeaderGenerator._generate_event_interfaces):
198         (ObjectiveCHeaderGenerator._generate_single_event_interface):
199         * inspector/scripts/codegen/generate_objective_c_internal_header.py: Copied from Source/JavaScriptCore/inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py.
200         (ObjectiveCTypesInternalHeaderGenerator):
201         (ObjectiveCTypesInternalHeaderGenerator.output_filename):
202         (ObjectiveCTypesInternalHeaderGenerator.generate_output):
203         (ObjectiveCTypesInternalHeaderGenerator._generate_event_dispatcher_private_interfaces):
204         * inspector/scripts/codegen/generate_objective_c_types_implementation.py: Added.
205         (add_whitespace_separator):
206         (ObjectiveCTypesImplementationGenerator):
207         (ObjectiveCTypesImplementationGenerator.__init__):
208         (ObjectiveCTypesImplementationGenerator.output_filename):
209         (ObjectiveCTypesImplementationGenerator.domains_to_generate):
210         (ObjectiveCTypesImplementationGenerator.generate_output):
211         (ObjectiveCTypesImplementationGenerator.generate_type_implementations):
212         (ObjectiveCTypesImplementationGenerator.generate_type_implementation):
213         (ObjectiveCTypesImplementationGenerator._generate_init_method_for_required_members):
214         (ObjectiveCTypesImplementationGenerator._generate_setter_for_member):
215         (ObjectiveCTypesImplementationGenerator._generate_getter_for_member):
216         * inspector/scripts/codegen/generate_protocol_types_header.py:
217         (ProtocolTypesHeaderGenerator._generate_forward_declarations):
218         (_generate_typedefs_for_domain):
219         (_generate_builders_for_domain):
220         * inspector/scripts/codegen/generator.py:
221         (Generator.wrap_with_guard_for_domain):
222         (Generator):
223         (Generator.wrap_with_guard):
224         * inspector/scripts/codegen/generator_templates.py:
225         (AlternateInspector):
226         (ObjCInspector):
227         * inspector/scripts/codegen/models.py:
228         (Framework.fromString):
229         (Frameworks):
230         * inspector/scripts/generate-inspector-protocol-bindings.py:
231         (generate_from_specification):
232         * inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
233         * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
234         * inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
235         * inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
236         * inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
237         * inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
238         * inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
239         * inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
240         * inspector/scripts/tests/expected/type-declaration-array-type.json-result:
241         * inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
242         * inspector/scripts/tests/expected/type-declaration-object-type.json-result:
243         * inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
244
245 2014-10-30  Andreas Kling  <akling@apple.com>
246
247         Unreviewed assertion fix.
248
249         RegExpCachedResult::m_reified is now the dedicated member that knows whether
250         the result was reified into an array or not. Check that instead of m_result
251         which is now single-purpose.
252
253         * runtime/RegExpCachedResult.cpp:
254         (JSC::RegExpCachedResult::setInput):
255
256 2014-10-29  Andreas Kling  <akling@apple.com>
257
258         Use plain JSArray for RegExp matches instead of a lazily populated custom object.
259         <https://webkit.org/b/138191>
260
261         Reviewed by Geoffrey Garen.
262
263         We're already offering two RegExp matching APIs, one that collects subpattern
264         matches (exec), and one that simply tests for a match (test).
265         Given that, it was pretty overkill to lazily populate the resulting array of
266         matches, since the user could simply use test() if they didn't need them.
267
268         This allows the JIT to generate better code for RegExp match arrays, and also
269         enables some fast paths in the JSC runtime that check if an object isJSArray().
270
271         Looks like ~1.5% improvement on Octane/regexp according to run-jsc-benchmarks.
272
273         * jit/Repatch.cpp:
274         (JSC::tryCacheGetByID):
275         * runtime/JSArray.h:
276         (JSC::createArrayButterflyWithExactLength): Deleted.
277         * runtime/JSGlobalObject.cpp:
278         (JSC::JSGlobalObject::init):
279         * runtime/RegExpCachedResult.cpp:
280         (JSC::RegExpCachedResult::visitChildren):
281         (JSC::RegExpCachedResult::lastResult):
282         (JSC::RegExpCachedResult::leftContext):
283         (JSC::RegExpCachedResult::rightContext):
284         * runtime/RegExpCachedResult.h:
285         (JSC::RegExpCachedResult::RegExpCachedResult):
286         (JSC::RegExpCachedResult::record):
287         (JSC::RegExpCachedResult::input):
288         * runtime/RegExpConstructor.cpp:
289         (JSC::RegExpConstructor::getBackref):
290         (JSC::RegExpConstructor::getLastParen):
291         (JSC::RegExpConstructor::getLeftContext):
292         (JSC::RegExpConstructor::getRightContext):
293         * runtime/RegExpMatchesArray.cpp:
294         (JSC::createRegExpMatchesArray):
295         (JSC::RegExpMatchesArray::RegExpMatchesArray): Deleted.
296         (JSC::RegExpMatchesArray::create): Deleted.
297         (JSC::RegExpMatchesArray::finishCreation): Deleted.
298         (JSC::RegExpMatchesArray::visitChildren): Deleted.
299         (JSC::RegExpMatchesArray::reifyAllProperties): Deleted.
300         (JSC::RegExpMatchesArray::reifyMatchProperty): Deleted.
301         (JSC::RegExpMatchesArray::leftContext): Deleted.
302         (JSC::RegExpMatchesArray::rightContext): Deleted.
303         * runtime/RegExpMatchesArray.h:
304         (JSC::RegExpMatchesArray::createStructure): Deleted.
305         (JSC::RegExpMatchesArray::reifyAllPropertiesIfNecessary): Deleted.
306         (JSC::RegExpMatchesArray::reifyMatchPropertyIfNecessary): Deleted.
307         (JSC::RegExpMatchesArray::getOwnPropertySlot): Deleted.
308         (JSC::RegExpMatchesArray::getOwnPropertySlotByIndex): Deleted.
309         (JSC::RegExpMatchesArray::put): Deleted.
310         (JSC::RegExpMatchesArray::putByIndex): Deleted.
311         (JSC::RegExpMatchesArray::deleteProperty): Deleted.
312         (JSC::RegExpMatchesArray::deletePropertyByIndex): Deleted.
313         (JSC::RegExpMatchesArray::getOwnPropertyNames): Deleted.
314         (JSC::RegExpMatchesArray::defineOwnProperty): Deleted.
315         (JSC::isRegExpMatchesArray): Deleted.
316         * runtime/RegExpObject.cpp:
317         (JSC::RegExpObject::exec):
318         * runtime/StringPrototype.cpp:
319         (JSC::stringProtoFuncMatch):
320
321 2014-10-29  Joseph Pecoraro  <pecoraro@apple.com>
322
323         Web Inspector: Fix Type Dependency Issues
324         https://bugs.webkit.org/show_bug.cgi?id=125664
325
326         Reviewed by Brian Burg.
327
328         Now that all JSON protocol files are processed together again
329         in r174892, we can remove the duplicated types which were only
330         needed when the domains were split.
331
332         * inspector/protocol/Console.json:
333         * inspector/protocol/Runtime.json:
334
335 2014-10-28  Commit Queue  <commit-queue@webkit.org>
336
337         Unreviewed, rolling out r175249.
338         https://bugs.webkit.org/show_bug.cgi?id=138138
339
340         Appears to be failing some JS tests (Requested by mlam_ on
341         #webkit).
342
343         Reverted changeset:
344
345         "Holes are not copied properly when Arrays change shape to
346         ArrayStorage type."
347         https://bugs.webkit.org/show_bug.cgi?id=138118
348         http://trac.webkit.org/changeset/175249
349
350 2014-10-27  Mark Lam  <mark.lam@apple.com>
351
352         Holes are not copied properly when Arrays change shape to ArrayStorage type.
353         <https://webkit.org/b/138118>
354
355         Reviewed by Mark Hahnenberg.
356
357         When we convert non-ArrayStorage typed arrays into ArrayStorage typed arrays,
358         we skipped the holes.  As a result, the slots in the ArrayStorage vector that
359         corresponds to those holes are uninitialize.  This is now fixed.
360
361         * runtime/JSObject.cpp:
362         (JSC::JSObject::convertUndecidedToArrayStorage):
363         (JSC::JSObject::convertInt32ToArrayStorage):
364         (JSC::JSObject::convertDoubleToArrayStorage):
365         (JSC::JSObject::convertContiguousToArrayStorage):
366
367 2014-10-27  Mark Lam  <mark.lam@apple.com>
368
369         Crash when attempting to perform array iteration on a non-array with numeric keys not initialized.
370         <https://webkit.org/b/137814>
371
372         Reviewed by Geoffrey Garen.
373
374         The arrayIteratorNextThunkGenerator() thunk was not checking for the case where
375         the butterfly may be NULL.  This was the source of the crash, and is now fixed.
376
377         In addition, it is also not checking for the case where a property named "length"
378         may have been set on the iterated object.  The thunk only checks the butterfly's
379         publicLength for its iteration operation.  Array objects will work fine with this
380         because it always updates its butterfly's publicLength when its length changes.
381         In the case of iterable non-Array objects, the "length" property will require a
382         look up outside of the scope of this thunk.  The fix is simply to limit the fast
383         case checks in this thunk to Array objects.
384
385         * jit/ThunkGenerators.cpp:
386         (JSC::arrayIteratorNextThunkGenerator):
387
388 2014-10-27  Mark Lam  <mark.lam@apple.com>
389
390         Simplified some JSObject methods for converting arrays to ArrayStorage shape.
391         <https://webkit.org/b/138119>
392
393         Reviewed by Filip Pizlo.
394
395         Currently, for each Undecided, Int32, Double, and Contiguous array shapes,
396         there are 3 JSObject methods to convert them to ArrayStorage shape:
397             ArrayStorage* convert<shape>ToArrayStorage(VM&, NonPropertyTransition, unsigned neededLength);
398             ArrayStorage* convert<shape>ToArrayStorage(VM&, NonPropertyTransition);
399             ArrayStorage* convert<shape>ToArrayStorage(VM&);
400
401         However, the neededLength that is passed is always m_butterfly->vectorLength().
402         Hence, the method that takes a neededLength is really not needed.  This patch
403         removes this unneeded verbosity.
404
405         * runtime/JSObject.cpp:
406         (JSC::JSObject::convertUndecidedToArrayStorage):
407         (JSC::JSObject::convertInt32ToArrayStorage):
408         - Also reordered the placement of the DeferGC statement so this Int32 function
409           will look more similar to the others.
410         (JSC::JSObject::convertDoubleToArrayStorage):
411         (JSC::JSObject::convertContiguousToArrayStorage):
412         * runtime/JSObject.h:
413
414 2014-10-25  Brian J. Burg  <burg@cs.washington.edu>
415
416         Web Inspector: timelines should not count time elapsed while paused in the debugger
417         https://bugs.webkit.org/show_bug.cgi?id=136351
418
419         Unreviewed, follow-up fix after r175203. The debugger agent should not assume
420         that the inspector environment's stopwatch has already been started.
421
422         * inspector/agents/InspectorDebuggerAgent.cpp:
423         (Inspector::InspectorDebuggerAgent::didPause): Check if the stopwatch isActive() before stopping.
424
425 2014-10-18  Brian J. Burg  <burg@cs.washington.edu>
426
427         Web Inspector: timelines should not count time elapsed while paused in the debugger
428         https://bugs.webkit.org/show_bug.cgi?id=136351
429
430         Reviewed by Timothy Hatcher.
431
432         Now that we have a stopwatch to provide pause-aware timing data, we can remove the
433         profiler's handling of debugger pause/continue callbacks. The debugger agent accounts
434         for suspended execution by pausing and resuming the stopwatch.
435
436         * API/JSProfilerPrivate.cpp:
437         (JSStartProfiling): Use a fresh stopwatch when profiling from the JSC API.
438         * inspector/InspectorEnvironment.h:
439         * inspector/JSGlobalObjectInspectorController.cpp:
440         (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
441         (Inspector::JSGlobalObjectInspectorController::executionStopwatch):
442         * inspector/JSGlobalObjectInspectorController.h:
443         * inspector/ScriptDebugServer.cpp:
444         (Inspector::ScriptDebugServer::handlePause):
445         * inspector/agents/InspectorDebuggerAgent.cpp:
446         (Inspector::InspectorDebuggerAgent::didPause):
447         (Inspector::InspectorDebuggerAgent::breakpointActionProbe):
448         (Inspector::InspectorDebuggerAgent::didContinue):
449         * inspector/agents/InspectorDebuggerAgent.h:
450         * profiler/LegacyProfiler.cpp:
451         (JSC::LegacyProfiler::profiler): Use nullptr.
452         (JSC::LegacyProfiler::startProfiling): Hand off a stopwatch to the profile generator.
453         (JSC::LegacyProfiler::stopProfiling): Use nullptr.
454         (JSC::LegacyProfiler::didPause): Deleted.
455         (JSC::LegacyProfiler::didContinue): Deleted.
456         * profiler/LegacyProfiler.h:
457         * profiler/Profile.cpp: The root node should always have a start time of 0.0.
458         (JSC::Profile::Profile):
459         * profiler/ProfileGenerator.cpp: Remove debugger pause/continue callbacks and the
460         timestamp member that was used to track time elapsed by the debugger. Just use the
461         stopwatch's elapsed times to generate start/elapsed times for function calls.
462
463         (JSC::ProfileGenerator::create):
464         (JSC::ProfileGenerator::ProfileGenerator):
465         (JSC::AddParentForConsoleStartFunctor::operator()): The parent node of |console.profile|
466         should have a start time of 0.0, since it represents the starting node of profiling.
467
468         (JSC::ProfileGenerator::beginCallEntry):
469         (JSC::ProfileGenerator::endCallEntry):
470         (JSC::ProfileGenerator::didPause): Deleted.
471         (JSC::ProfileGenerator::didContinue): Deleted.
472         * profiler/ProfileGenerator.h:
473
474 2014-10-24  Mark Lam  <mark.lam@apple.com>
475
476         Simplified IndexingType's hasAnyArrayStorage().
477         <https://webkit.org/b/138051>
478
479         Reviewed by Michael Saboff.
480
481         IndexingType's hasAnyArrayStorage() currently does subtraction of ArrayStorageShape
482         with the purpose of making non-ArrayStorage types underflow (with that subtraction)
483         and have a result that exceeds SlowPutArrayStorageShape.  What it is doing is
484         basically checking for a shape value that is greater equal to ArrayStorageShape.
485         We can just simplify the code as such.
486
487         Also added a comment to describe the structure of the bits in IndexingType.
488
489         * runtime/IndexingType.h:
490         (JSC::hasAnyArrayStorage):
491
492 2014-10-23  Joseph Pecoraro  <pecoraro@apple.com>
493
494         Web Inspector: Provide a way to have alternate inspector agents
495         https://bugs.webkit.org/show_bug.cgi?id=137901
496
497         Reviewed by Brian Burg.
498
499         Provide a way to use alternate inspector agents debugging a JSContext.
500         Expose a very slim private API that a client could use to know when
501         an inspector has connected/disconnected, and a way to register its
502         augmentative agents.
503
504         * Configurations/FeatureDefines.xcconfig:
505         * JavaScriptCore.xcodeproj/project.pbxproj:
506         New feature guard. New files.
507
508         * API/JSContextRef.cpp:
509         (JSGlobalContextGetAugmentableInspectorController):
510         * API/JSContextRefInspectorSupport.h: Added.
511         Access to the private interface from a JSContext.
512
513         * inspector/JSGlobalObjectInspectorController.cpp:
514         (Inspector::JSGlobalObjectInspectorController::JSGlobalObjectInspectorController):
515         (Inspector::JSGlobalObjectInspectorController::connectFrontend):
516         (Inspector::JSGlobalObjectInspectorController::disconnectFrontend):
517         * inspector/JSGlobalObjectInspectorController.h:
518         * inspector/augmentable/AugmentableInspectorController.h: Added.
519         (Inspector::AugmentableInspectorController::~AugmentableInspectorController):
520         (Inspector::AugmentableInspectorController::connected):
521         * inspector/augmentable/AugmentableInspectorControllerClient.h: Added.
522         (Inspector::AugmentableInspectorControllerClient::~AugmentableInspectorControllerClient):
523         * inspector/augmentable/AlternateDispatchableAgent.h: Added.
524         (Inspector::AlternateDispatchableAgent::AlternateDispatchableAgent):
525         Provide the private APIs a client could use to add alternate agents using alternate backend dispatchers.
526
527         * inspector/scripts/codegen/__init__.py:
528         * inspector/scripts/generate-inspector-protocol-bindings.py:
529         (generate_from_specification):
530         New includes, and use the new generator.
531         
532         * inspector/scripts/codegen/generate_alternate_backend_dispatcher_header.py: Added.
533         (AlternateBackendDispatcherHeaderGenerator):
534         (AlternateBackendDispatcherHeaderGenerator.__init__):
535         (AlternateBackendDispatcherHeaderGenerator.output_filename):
536         (AlternateBackendDispatcherHeaderGenerator.generate_output):
537         (AlternateBackendDispatcherHeaderGenerator._generate_handler_declarations_for_domain):
538         (AlternateBackendDispatcherHeaderGenerator._generate_handler_declaration_for_command):
539         Generate the abstract AlternateInspectorBackendDispatcher interfaces.
540
541         * inspector/scripts/codegen/generate_backend_dispatcher_header.py:
542         (BackendDispatcherHeaderGenerator.generate_output):
543         (BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains):
544         (BackendDispatcherHeaderGenerator._generate_alternate_handler_forward_declarations_for_domains.AlternateInspector):
545         Forward declare alternate dispatchers, and allow setting an alternate dispatcher on a domain dispatcher.
546
547         * inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:
548         (BackendDispatcherImplementationGenerator.generate_output):
549         (BackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
550         Check for and dispatch on an AlternateInspectorBackendDispatcher if there is one for this domain.
551
552         * inspector/scripts/codegen/generator_templates.py:
553         (AlternateInspectorBackendDispatcher):
554         (AlternateInspector):
555         Template boilerplate for prelude and postlude.
556
557         * inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
558         * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
559         * inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
560         * inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
561         * inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
562         * inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
563         * inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
564         * inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
565         * inspector/scripts/tests/expected/type-declaration-array-type.json-result:
566         * inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
567         * inspector/scripts/tests/expected/type-declaration-object-type.json-result:
568         * inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
569         Rebaseline tests.
570
571 2014-10-23  Michael Saboff  <msaboff@apple.com>
572
573         offsets.rb:183:in `buildOffsetsMap': unhandled exception - is offlineasm dependency tracking broken? (132668)
574         https://bugs.webkit.org/show_bug.cgi?id=138017
575
576         Reviewed by Mark Lam.
577
578         Removed from the nput file $(SRCROOT)/llint/LowLevelAssembler.asm and output file
579         $(BUILT_PRODUCTS_DIR)/LLIntOffsets/LLIntDesiredOffsets.h from the Generate Derived Sources
580         build phase in the LLInt Offset target.  There is no need for Xcode to do any dependency
581         checking with these files as the ruby script offlineasm/generate_offset_extractor.rb will
582         do that for us.
583
584         * JavaScriptCore.xcodeproj/project.pbxproj:
585
586 2014-10-23  Michael Saboff  <msaboff@apple.com>
587
588         Change CallFrame::lexicalGlobalObject() to use Callee instead of JSScope
589         https://bugs.webkit.org/show_bug.cgi?id=136901
590
591         Reviewed by Mark Lam.
592
593         Implement ExecState::lexicalGlobalObject() using Callee.
594         
595         * runtime/JSScope.h:
596         (JSC::ExecState::lexicalGlobalObject):
597
598 2014-10-22  Milan Crha  <mcrha@redhat.com>
599
600         Prefix isnan() with std::.
601         <https://webkit.org/b/137966>.
602
603         Reviewed by Carlos Garcia Campos.
604
605         * profiler/ProfileNode.h:
606         (JSC::ProfileNode::Call::setStartTime):
607         (JSC::ProfileNode::Call::setElapsedTime):
608
609 2014-10-22  Mark Lam  <mark.lam@apple.com>
610
611         Refactoring to simplify some code in DatePrototype.cpp.
612         <https://webkit.org/b/137997>
613
614         Reviewed by Filip Pizlo.
615
616         A bunch of functions in DatePrototype.cpp have the pattern of loading a
617         constant into a local variable only to pass it to a callee function
618         immediately after.  There is no other use for that variable.  This adds
619         additional verbosity with no added benefit.
620
621         This patch refactors those functions to just pass the constant arg directly.
622
623         * runtime/DatePrototype.cpp:
624         (JSC::dateProtoFuncSetMilliSeconds):
625         (JSC::dateProtoFuncSetUTCMilliseconds):
626         (JSC::dateProtoFuncSetSeconds):
627         (JSC::dateProtoFuncSetUTCSeconds):
628         (JSC::dateProtoFuncSetMinutes):
629         (JSC::dateProtoFuncSetUTCMinutes):
630         (JSC::dateProtoFuncSetHours):
631         (JSC::dateProtoFuncSetUTCHours):
632         (JSC::dateProtoFuncSetDate):
633         (JSC::dateProtoFuncSetUTCDate):
634         (JSC::dateProtoFuncSetMonth):
635         (JSC::dateProtoFuncSetUTCMonth):
636         (JSC::dateProtoFuncSetFullYear):
637         (JSC::dateProtoFuncSetUTCFullYear):
638
639 2014-10-22  Byungseon Shin  <sun.shin@lge.com>
640
641         String(new Date(Mar 30 2014 01:00:00)) is wrong in CET
642         https://bugs.webkit.org/show_bug.cgi?id=130967
643
644         Reviewed by Mark Lam.
645
646         By definition of calculateLocalTimeOffset, input time should be UTC time.
647         But there are many cases when input time is based on local time.
648         So, it gives erroneous results while calculating offset of DST boundary time.
649         By adding a argument to distinguish UTC and local time, we can get the correct offset.
650
651         * JavaScriptCore.order:
652         * runtime/DateConstructor.cpp:
653         (JSC::constructDate):
654         (JSC::callDate):
655         (JSC::dateUTC):
656         * runtime/DateInstance.cpp:
657         (JSC::DateInstance::calculateGregorianDateTime):
658         (JSC::DateInstance::calculateGregorianDateTimeUTC):
659         * runtime/DatePrototype.cpp:
660         (JSC::setNewValueFromTimeArgs):
661         (JSC::setNewValueFromDateArgs):
662         (JSC::dateProtoFuncSetMilliSeconds):
663         (JSC::dateProtoFuncSetUTCMilliseconds):
664         (JSC::dateProtoFuncSetSeconds):
665         (JSC::dateProtoFuncSetUTCSeconds):
666         (JSC::dateProtoFuncSetMinutes):
667         (JSC::dateProtoFuncSetUTCMinutes):
668         (JSC::dateProtoFuncSetHours):
669         (JSC::dateProtoFuncSetUTCHours):
670         (JSC::dateProtoFuncSetDate):
671         (JSC::dateProtoFuncSetUTCDate):
672         (JSC::dateProtoFuncSetMonth):
673         (JSC::dateProtoFuncSetUTCMonth):
674         (JSC::dateProtoFuncSetFullYear):
675         (JSC::dateProtoFuncSetUTCFullYear):
676         (JSC::dateProtoFuncSetYear):
677         * runtime/JSDateMath.cpp:
678         (JSC::localTimeOffset):
679         (JSC::gregorianDateTimeToMS):
680         (JSC::msToGregorianDateTime):
681         (JSC::parseDateFromNullTerminatedCharacters):
682         * runtime/JSDateMath.h:
683         * runtime/VM.h:
684         (JSC::LocalTimeOffsetCache::LocalTimeOffsetCache):
685         (JSC::LocalTimeOffsetCache::reset):
686         Passing TimeType argument to distingush UTC time and local time.
687
688 2014-10-22  Joseph Pecoraro  <pecoraro@apple.com>
689
690         Web Inspector: Fix generator importing of protocol type "any", treat as value
691         https://bugs.webkit.org/show_bug.cgi?id=137931
692
693         Reviewed by Timothy Hatcher.
694
695         Treat incoming "any" objects as InspectorValues, which can be any type.
696         Add the necessary boilerplate to import.
697
698         * inspector/InspectorBackendDispatcher.cpp:
699         (Inspector::AsMethodBridges::asValue):
700         (Inspector::InspectorBackendDispatcher::getValue):
701         * inspector/InspectorBackendDispatcher.h:
702         * inspector/scripts/codegen/generator.py:
703         (Generator.keyed_get_method_for_type):
704         * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
705
706 2014-10-22  Michael Saboff  <msaboff@apple.com>
707
708         REGRESSION(r174996): Broke C_LOOP
709         https://bugs.webkit.org/show_bug.cgi?id=137971
710
711         Reviewed by Mark Lam.
712
713         Removed incorrect move to cfr (CallFrameRegister) before we make the call to a native function.
714         After r174996, the source register for the move contained garbage causing the crash.  The move
715         to cfr before making the call to the native function is wrong and should have been removed
716         some time ago.  This brings the ARM64 / C_LOOP code path inline with the other CPU paths.
717         Tested on ARM64 as well as a C_LOOP build.
718
719         * llint/LowLevelInterpreter64.asm:
720
721 2014-10-21  Mark Lam  <mark.lam@apple.com>
722
723         Remove erroneous canUseJIT() in the intrinsics version of JITThunks::hostFunctionStub().
724         <https://webkit.org/b/137937>
725
726         Reviewed by Michael Saboff.
727
728         This version of JITThunks::hostFunctionStub() can only be called from the intrinsics
729         version of VM::getHostFunction() which asserts canUseJIT().  Hence, we can eliminate
730         the canUseJIT() check in JITThunks::hostFunctionStub().  We don't handle the
731         !canUseJIT() case properly there anyway.
732
733         * jit/JITThunks.cpp:
734         (JSC::JITThunks::hostFunctionStub):
735
736 2014-10-21  Michael Saboff  <msaboff@apple.com>
737
738         Add operator==(PropertyName, const char*)
739         https://bugs.webkit.org/show_bug.cgi?id=137925
740
741         Reviewed by Mark Lam.
742
743         * runtime/PropertyName.h:
744         (JSC::operator==): Added to simplify comparison with string literals.
745
746
747 2014-10-21  Michael Saboff  <msaboff@apple.com>
748
749         Change native call frames to use the scope from their Callee instead of their caller's scope
750         https://bugs.webkit.org/show_bug.cgi?id=137907
751
752         Reviewed by Mark Lam.
753
754         Changed setting of scope for native CallFrames to use the scope associated with the
755         Callee instead of the caller's scope.
756
757         * jit/ThunkGenerators.cpp:
758         (JSC::nativeForGenerator):
759         * llint/LowLevelInterpreter32_64.asm:
760         * llint/LowLevelInterpreter64.asm:
761
762 2014-10-21  Tibor Meszaros  <tmeszaros.u-szeged@partner.samsung.com>
763
764         Add missing ENABLE(FTL_NATIVE_CALL_INLINING) guard to BundlePath.cpp after r174940
765         https://bugs.webkit.org/show_bug.cgi?id=137924
766
767         Reviewed by Csaba Osztrogonác.
768
769         * runtime/BundlePath.cpp:
770
771 2014-10-21  Dániel Bátyai  <dbatyai.u-szeged@partner.samsung.com>
772
773         Fix FTL Native Inlining for EFL
774         https://bugs.webkit.org/show_bug.cgi?id=137774
775
776         Reviewed by Michael Saboff.
777
778         Added required functionality for Native Inlining to EFL, and fixed a bug/typo in the original code,
779         which caused incorrect memory allocation.
780
781         * CMakeLists.txt:
782         * create-llvm-ir-from-source-file.py: Added.
783         * create-symbol-table-index.py: Added.
784         * ftl/FTLLowerDFGToLLVM.cpp:
785         (JSC::FTL::LowerDFGToLLVM::lower):
786         (JSC::FTL::LowerDFGToLLVM::getModuleByPathForSymbol):
787         (JSC::FTL::LowerDFGToLLVM::exitValueForAvailability):
788         (JSC::FTL::LowerDFGToLLVM::exitValueForNode):
789         * runtime/BundlePath.cpp: Added.
790         (JSC::bundlePath):
791         * runtime/JSDataViewPrototype.cpp:
792         (JSC::getData):
793         (JSC::setData):
794         * runtime/MathObject.cpp:
795
796 2014-10-21  Milan Crha  <mcrha@redhat.com>
797
798         Move JSC::MacroAssemblerX86Common::s_sse2CheckState definition to MacroAssemblerX86Common.cpp.
799         <https://webkit.org/b/137807>
800
801         Reviewed by Csaba Osztrogonác.
802
803         * assembler/MacroAssemblerX86Common.cpp:
804         * jit/JIT.cpp:
805
806 2014-10-20  Joseph Pecoraro  <pecoraro@apple.com>
807
808         Unreviewed add back copyright line that was accidentally removed.
809
810         * inspector/scripts/codegen/generator_templates.py:
811         (GeneratorTemplates):
812
813 2014-10-20  Joseph Pecoraro  <pecoraro@apple.com>
814
815         Web Inspector: InspectorBackendCommands should include when to activate particular domains
816         https://bugs.webkit.org/show_bug.cgi?id=137753
817
818         Reviewed by Timothy Hatcher.
819
820         Add an availability property to domains that only activate for
821         particular debuggable types. If missing, the domain is always
822         activated. Otherwise it must be a debuggable type string.
823         When a frontend is opened for that debuggable type, the domain
824         will be activated.
825
826         * inspector/scripts/codegen/models.py:
827         (Protocol.parse_domain):
828         (Domain.__init__):
829         (Domains):
830         Parse and validate the Domain's "availability" property.
831
832         * inspector/scripts/codegen/generate_backend_commands.py:
833         (BackendCommandsGenerator.generate_domain):
834         Emit InspectorBackend.activateDomain with debuggable type filter.
835
836         * inspector/protocol/ApplicationCache.json:
837         * inspector/protocol/CSS.json:
838         * inspector/protocol/DOM.json:
839         * inspector/protocol/DOMDebugger.json:
840         * inspector/protocol/DOMStorage.json:
841         * inspector/protocol/Database.json:
842         * inspector/protocol/IndexedDB.json:
843         * inspector/protocol/LayerTree.json:
844         * inspector/protocol/Network.json:
845         * inspector/protocol/Page.json:
846         * inspector/protocol/Replay.json:
847         * inspector/protocol/Timeline.json:
848         * inspector/protocol/Worker.json:
849         These domains only activate for Web debuggables.
850
851         * inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
852         * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
853         * inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
854         * inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
855         * inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
856         Update existing tests that now have activate output.
857
858         * inspector/scripts/tests/expected/fail-on-domain-availability.json-error: Added.
859         * inspector/scripts/tests/fail-on-domain-availability.json: Added.
860         Add a test for "availability" validation.
861
862 2014-10-20  Joseph Pecoraro  <pecoraro@apple.com>
863
864         [Win] Build fix for generated inspector files.
865
866         Rubberstamped by Brent Fulgham.
867
868         * inspector/scripts/codegen/generate_backend_dispatcher_header.py:
869         (BackendDispatcherHeaderGenerator._generate_async_handler_declaration_for_command):
870         * inspector/scripts/codegen/generator_templates.py:
871         (GeneratorTemplates):
872
873 2014-10-20  Brent Fulgham  <bfulgham@apple.com>
874
875         [Win] Unreviewed build fix.
876
877         We need to (1) pass the 'windows' argument to our script for checking feature definitions,
878         and (2) we must use Cwd::realpath on our path input arguments to avoid Cygwin and Windows
879         getting confused about path separators versus escape characters.
880
881
882         * JavaScriptCore.vcxproj/build-generated-files.pl:
883
884 2014-10-20  Mark Lam  <mark.lam@apple.com>
885
886         [Follow up] Web Process crash when starting the web inspector after r174025.
887         <https://webkit.org/b/137340>
888
889         Reviewed by Geoffrey Garen.
890
891         Applied Geoff's feedback to clean up some code for better clarity after
892         r174856.
893
894         * dfg/DFGFixupPhase.cpp:
895         (JSC::DFG::FixupPhase::insertCheck):
896         * dfg/DFGInsertionSet.h:
897         (JSC::DFG::InsertionSet::insertOutOfOrder):
898
899 2014-10-20  Mark Lam  <mark.lam@apple.com>
900
901         Factor out JITCode::typeName() for debugging use.
902         <https://webkit.org/b/137888>
903
904         Reviewed by Geoffrey Garen.
905
906         JITCode's printInternal() currently decodes the JITType into a string and
907         prints it.  This change factors out the part that decodes the JITType into
908         JITCode::typeName() so that we can call it from lldb while debugging to
909         quickly decode a JITType value.
910
911         * jit/JITCode.cpp:
912         (JSC::JITCode::typeName):
913         (WTF::printInternal):
914         * jit/JITCode.h:
915
916 2014-10-20  Joseph Pecoraro  <pecoraro@apple.com>
917
918         Unreviewed Windows Build Fix #2 after r174892.
919
920         * JavaScriptCore.vcxproj/build-generated-files.pl:
921         Define FEATURE_DEFINES for JavaScriptCore's DerivedSources.make.
922         This uses the same technique as WebCore.
923
924 2014-10-20  Mark Lam  <mark.lam@apple.com>
925
926         Fix placement of a few items in vcxproj ItemGroups.
927         <https://webkit.org/b/137886>
928
929         Reviewed by Geoffrey Garen.
930
931         https://webkit.org/b/137873 is likely a cut-and-paste error that manifested
932         because we had ClCompile and ClInclude entries mixed up in the wrong ItemGroups.
933         We should fix these so that ClCompile entries are in the ClCompile ItemGroup,
934         and ClInclude entries in the ClInclude ItemGroup.  This will help reduce the
935         chance of future cut-and-paste errors of this nature.
936
937         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
938         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
939
940 2014-10-20  Joseph Pecoraro  <pecoraro@apple.com>
941
942         Unreviewed Windows Build Fix after r174892.
943
944         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
945         Update file name to the new generated file name.
946
947 2014-10-20  Joseph Pecoraro  <pecoraro@apple.com>
948
949         Web Inspector: Rename generated Inspector.json to CombinedDomains.json to prevent name collisions
950         https://bugs.webkit.org/show_bug.cgi?id=137825
951
952         Reviewed by Timothy Hatcher.
953
954         * CMakeLists.txt:
955         * DerivedSources.make:
956         * JavaScriptCore.vcxproj/copy-files.cmd:
957         * JavaScriptCore.xcodeproj/project.pbxproj:
958         * inspector/protocol/Inspector.json: Renamed from Source/JavaScriptCore/inspector/protocol/InspectorDomain.json.
959
960 2014-10-20  Joseph Pecoraro  <pecoraro@apple.com>
961
962         Web Inspector: Generate all Inspector domains together in JavaScriptCore
963         https://bugs.webkit.org/show_bug.cgi?id=137748
964
965         Reviewed by Brian Burg.
966
967         * inspector/protocol/ApplicationCache.json: Renamed from Source/WebCore/inspector/protocol/ApplicationCache.json.
968         * inspector/protocol/CSS.json: Renamed from Source/WebCore/inspector/protocol/CSS.json.
969         * inspector/protocol/DOM.json: Renamed from Source/WebCore/inspector/protocol/DOM.json.
970         * inspector/protocol/DOMDebugger.json: Renamed from Source/WebCore/inspector/protocol/DOMDebugger.json.
971         * inspector/protocol/DOMStorage.json: Renamed from Source/WebCore/inspector/protocol/DOMStorage.json.
972         * inspector/protocol/Database.json: Renamed from Source/WebCore/inspector/protocol/Database.json.
973         * inspector/protocol/IndexedDB.json: Renamed from Source/WebCore/inspector/protocol/IndexedDB.json.
974         * inspector/protocol/LayerTree.json: Renamed from Source/WebCore/inspector/protocol/LayerTree.json.
975         * inspector/protocol/Network.json: Renamed from Source/WebCore/inspector/protocol/Network.json.
976         * inspector/protocol/Page.json: Renamed from Source/WebCore/inspector/protocol/Page.json.
977         * inspector/protocol/Replay.json: Renamed from Source/WebCore/inspector/protocol/Replay.json.
978         * inspector/protocol/Timeline.json: Renamed from Source/WebCore/inspector/protocol/Timeline.json.
979         * inspector/protocol/Worker.json: Renamed from Source/WebCore/inspector/protocol/Worker.json.
980         Move all protocol files into this directory.
981
982         * inspector/InspectorProtocolTypesBase.h: Renamed from Source/JavaScriptCore/inspector/InspectorProtocolTypes.h.
983         Renamed the base types file to not clash with the generated types file.
984
985         * CMakeLists.txt:
986         * DerivedSources.make:
987         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
988         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
989         * JavaScriptCore.vcxproj/copy-files.cmd:
990         * JavaScriptCore.xcodeproj/project.pbxproj:
991         Update build phases for new JSON files and new filenames.
992
993         * inspector/scripts/tests/expected/commands-with-async-attribute.json-result:
994         * inspector/scripts/tests/expected/commands-with-optional-call-return-parameters.json-result:
995         * inspector/scripts/tests/expected/domains-with-varying-command-sizes.json-result:
996         * inspector/scripts/tests/expected/events-with-optional-parameters.json-result:
997         * inspector/scripts/tests/expected/generate-domains-with-feature-guards.json-result:
998         * inspector/scripts/tests/expected/same-type-id-different-domain.json-result:
999         * inspector/scripts/tests/expected/shadowed-optional-type-setters.json-result:
1000         * inspector/scripts/tests/expected/type-declaration-aliased-primitive-type.json-result:
1001         * inspector/scripts/tests/expected/type-declaration-array-type.json-result:
1002         * inspector/scripts/tests/expected/type-declaration-enum-type.json-result:
1003         * inspector/scripts/tests/expected/type-declaration-object-type.json-result:
1004         * inspector/scripts/tests/expected/type-requiring-runtime-casts.json-result:
1005         Updated names of things now that prefixes are no longer needed.
1006
1007         * inspector/ConsoleMessage.h:
1008         * inspector/ContentSearchUtilities.cpp:
1009         * inspector/ContentSearchUtilities.h:
1010         * inspector/InjectedScript.h:
1011         * inspector/InjectedScriptBase.h:
1012         * inspector/ScriptCallFrame.h:
1013         * inspector/ScriptCallStack.h:
1014         * inspector/agents/InspectorAgent.h:
1015         * inspector/agents/InspectorConsoleAgent.h:
1016         * inspector/agents/InspectorDebuggerAgent.cpp:
1017         (Inspector::breakpointActionTypeForString):
1018         * inspector/agents/InspectorDebuggerAgent.h:
1019         * inspector/agents/InspectorRuntimeAgent.h:
1020         * runtime/TypeProfiler.cpp:
1021         * runtime/TypeSet.cpp:
1022         Update includes and update a few function names that are generated.
1023
1024         * inspector/scripts/codegen/generate_protocol_types_header.py:
1025         (ProtocolTypesHeaderGenerator.output_filename):
1026         (ProtocolTypesHeaderGenerator.generate_output):
1027         Include an export macro for type string constants defined in the implementation file.
1028
1029         * inspector/scripts/codegen/generate_backend_commands.py:
1030         (BackendCommandsGenerator.output_filename):
1031         * inspector/scripts/codegen/generate_backend_dispatcher_header.py:
1032         (BackendDispatcherHeaderGenerator.output_filename):
1033         (BackendDispatcherHeaderGenerator.generate_output):
1034         * inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:
1035         (BackendDispatcherImplementationGenerator.output_filename):
1036         (BackendDispatcherImplementationGenerator.generate_output):
1037         (BackendDispatcherImplementationGenerator._generate_async_dispatcher_class_for_domain):
1038         (BackendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_command):
1039         * inspector/scripts/codegen/generate_frontend_dispatcher_header.py:
1040         (FrontendDispatcherHeaderGenerator.output_filename):
1041         (FrontendDispatcherHeaderGenerator.generate_output):
1042         * inspector/scripts/codegen/generate_frontend_dispatcher_implementation.py:
1043         (FrontendDispatcherImplementationGenerator.output_filename):
1044         (FrontendDispatcherImplementationGenerator.generate_output):
1045         (FrontendDispatcherImplementationGenerator._generate_dispatcher_implementation_for_event):
1046         (_generate_class_for_object_declaration):
1047         (_generate_builder_setter_for_member):
1048         (_generate_unchecked_setter_for_member):
1049         * inspector/scripts/codegen/generate_protocol_types_implementation.py:
1050         (ProtocolTypesImplementationGenerator.output_filename):
1051         (ProtocolTypesImplementationGenerator.generate_output):
1052         (ProtocolTypesImplementationGenerator._generate_enum_mapping):
1053         * inspector/scripts/codegen/models.py:
1054         (Framework.fromString):
1055         (Frameworks):
1056         * inspector/scripts/generate-inspector-protocol-bindings.py:
1057         Simplify generator now that prefixes are no longer needed. This updates
1058         filenames, includes, and the list of supported directories.
1059
1060 2014-10-20  Csaba Osztrogonác  <ossy@webkit.org>
1061
1062         Remove obsolete comments after r99798
1063         https://bugs.webkit.org/show_bug.cgi?id=137871
1064
1065         Reviewed by Darin Adler.
1066
1067         r99798 removed the comment in MacroAssemblerARMv7::supportsFloatingPointTruncate(),
1068         so we should remove the stale references to this removed comment.
1069
1070         * assembler/MacroAssemblerX86.h:
1071         * assembler/MacroAssemblerX86_64.h:
1072
1073 2014-10-20  Csaba Osztrogonác  <ossy@webkit.org>
1074
1075         MacroAssemblerX86Common.cpp should be built on Windows too
1076         https://bugs.webkit.org/show_bug.cgi?id=137873
1077
1078         Reviewed by Brent Fulgham.
1079
1080         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj:
1081         * JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:
1082
1083 2014-10-20  Csaba Osztrogonác  <ossy@webkit.org>
1084
1085         [cmake] Remove duplicated source files
1086         https://bugs.webkit.org/show_bug.cgi?id=137875
1087
1088         Reviewed by Gyuyoung Kim.
1089
1090         * CMakeLists.txt:
1091
1092 2014-10-18  Brian J. Burg  <burg@cs.washington.edu>
1093
1094         Web Replay: code generator shouldn't complain about enums without a storage type if they are in an enclosing scope
1095         https://bugs.webkit.org/show_bug.cgi?id=137084
1096
1097         Reviewed by Joseph Pecoraro.
1098
1099         In order to generate encode/decode method declarations without pulling in lots of headers,
1100         the generator must forward declare enums (for enum classes or enums with explicit sizes).
1101
1102         Change the generator to not require an explicit size if an enum is declared inside a struct
1103         or class definition. In that case, it must pull in headers since scoped enums can't be
1104         forward declared.
1105
1106         This patch also fixes some chained if-statements that should be if-else statements.
1107
1108         Test: updated replay/scripts/tests/generate-enum-encoding-helpers.json to cover the new case.
1109
1110         * replay/scripts/CodeGeneratorReplayInputs.py:
1111         (InputsModel.parse_type_with_framework_name.is):
1112         (InputsModel.parse_type_with_framework_name.is.must):
1113         (Generator.generate_enum_trait_implementation):
1114         (InputsModel.parse_type_with_framework_name): Deleted.
1115         * replay/scripts/CodeGeneratorReplayInputsTemplates.py:
1116         * replay/scripts/tests/expected/fail-on-c-style-enum-no-storage.json-error:
1117         * replay/scripts/tests/expected/generate-enum-encoding-helpers-with-guarded-values.json-TestReplayInputs.cpp:
1118         (JSC::EncodingTraits<WebCore::MouseButton>::decodeValue):
1119         * replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.cpp:
1120         (JSC::EncodingTraits<WebCore::MouseButton>::decodeValue):
1121         (JSC::EncodingTraits<WebCore::PlatformEvent::Type>::encodeValue):
1122         (JSC::EncodingTraits<WebCore::PlatformEvent::Type>::decodeValue):
1123         * replay/scripts/tests/expected/generate-enum-encoding-helpers.json-TestReplayInputs.h:
1124         * replay/scripts/tests/expected/generate-enums-with-same-base-name.json-TestReplayInputs.cpp:
1125         (JSC::EncodingTraits<WebCore::FormData1::Type>::decodeValue):
1126         (JSC::EncodingTraits<PlatformEvent1::Type>::decodeValue):
1127         * replay/scripts/tests/generate-enum-encoding-helpers.json: Added a new input to cover this case.
1128
1129 2014-10-17  Mark Lam  <mark.lam@apple.com>
1130
1131         Web Process crash when starting the web inspector after r174025.
1132         <https://webkit.org/b/137340>
1133
1134         Reviewed by Filip Pizlo.
1135
1136         After r174025, we can generate a bad graph in the DFG fixup phase like so:
1137
1138             102:<!0:-> StoreBarrier(Check:KnownCell:@19, ..., bc#44)
1139             60:<!0:->  PutStructure(Check:KnownCell:@19, ..., bc#44)
1140             103:<!0:-> Check(Check:NotCell:@54, ..., bc#44)
1141                     // ^-- PutByOffset's StoreBarrier has been elided and replaced
1142                     //     with a speculation check which can OSR exit.
1143             61:<!0:->  PutByOffset(Check:KnownCell:@19, ..., bc#44)
1144
1145         As a result, the structure change will get executed even if we end up OSR
1146         exiting before the PutByOffset.  In the baseline JIT code, the structure now
1147         erroneously tells the put operation that there is a value in that property
1148         slot when it is actually uninitialized (hence, the crash).
1149
1150         The fix is to insert the Check at the earliest point possible:
1151
1152         1. If the checked node is in the same bytecode as the PutByOffset, then
1153            the earliest point where we can insert the Check is right after the
1154            checked node.
1155
1156         2. If the checked node is from a preceding bytecode (before the PutByOffset),
1157            then the earliest point where we can insert the Check is at the start
1158            of the current bytecode.
1159
1160         Also reverted the workaround from r174749: https://webkit.org/b/137758.
1161
1162         Benchmark results appear to be a wash on aggregate.
1163
1164         * dfg/DFGFixupPhase.cpp:
1165         (JSC::DFG::FixupPhase::indexOfNode):
1166         (JSC::DFG::FixupPhase::indexOfFirstNodeOfExitOrigin):
1167         (JSC::DFG::FixupPhase::fixupNode):
1168         (JSC::DFG::FixupPhase::insertCheck):
1169         * dfg/DFGInsertionSet.h:
1170         (JSC::DFG::InsertionSet::insertOutOfOrder):
1171         (JSC::DFG::InsertionSet::insertOutOfOrderNode):
1172
1173 2014-10-10  Oliver Hunt  <oliver@apple.com>
1174
1175         Various arguments optimisations in codegen fail to account for arguments being in lexical record
1176         https://bugs.webkit.org/show_bug.cgi?id=137617
1177
1178         Reviewed by Michael Saboff.
1179
1180         Rework the way we track |arguments| references so that we don't try
1181         to use the |arguments| reference on the stack if it's not safe.
1182
1183         To do this without nuking performance it was necessary to update
1184         the parser to track modification of the |arguments| reference
1185         itself.
1186
1187         * bytecode/CodeBlock.cpp:
1188         * bytecompiler/BytecodeGenerator.cpp:
1189         (JSC::BytecodeGenerator::BytecodeGenerator):
1190         (JSC::BytecodeGenerator::willResolveToArguments):
1191         (JSC::BytecodeGenerator::uncheckedLocalArgumentsRegister):
1192         (JSC::BytecodeGenerator::emitCall):
1193         (JSC::BytecodeGenerator::emitConstruct):
1194         (JSC::BytecodeGenerator::emitEnumeration):
1195         (JSC::BytecodeGenerator::uncheckedRegisterForArguments): Deleted.
1196         * bytecompiler/BytecodeGenerator.h:
1197         (JSC::BytecodeGenerator::hasSafeLocalArgumentsRegister):
1198         * bytecompiler/NodesCodegen.cpp:
1199         (JSC::BracketAccessorNode::emitBytecode):
1200         (JSC::DotAccessorNode::emitBytecode):
1201         (JSC::getArgumentByVal):
1202         (JSC::CallFunctionCallDotNode::emitBytecode):
1203         (JSC::ApplyFunctionCallDotNode::emitBytecode):
1204         (JSC::ArrayPatternNode::emitDirectBinding):
1205         * interpreter/StackVisitor.cpp:
1206         (JSC::StackVisitor::Frame::existingArguments):
1207         * parser/Nodes.h:
1208         (JSC::ScopeNode::modifiesArguments):
1209         * parser/Parser.cpp:
1210         (JSC::Parser<LexerType>::parseInner):
1211         * parser/Parser.h:
1212         (JSC::Scope::getCapturedVariables):
1213         * parser/ParserModes.h:
1214
1215 2014-10-17  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
1216
1217         Use WTF::move() instead of std::move() to help ensure move semantics in JavaScriptCore
1218         https://bugs.webkit.org/show_bug.cgi?id=137809
1219
1220         Reviewed by Csaba Osztrogonác.
1221
1222         Substitution of WTF::move() for std::move(). Clean up std::move() in JavaScriptCore.
1223
1224         * bytecode/GetByIdStatus.cpp:
1225         (JSC::GetByIdStatus::computeForStubInfo):
1226         * bytecode/PutByIdStatus.cpp:
1227         (JSC::PutByIdStatus::computeForStubInfo):
1228         * bytecode/PutByIdVariant.cpp:
1229         (JSC::PutByIdVariant::setter):
1230
1231 2014-10-15  Oliver Hunt  <oliver@apple.com>
1232
1233         Use a single allocation for the Arguments object
1234         https://bugs.webkit.org/show_bug.cgi?id=137751
1235
1236         Reviewed by Filip Pizlo.
1237
1238         This patch removes the secondary allocation for parameters in the Arguments
1239         object.  This is faily simple, but we needed to make it possible for the JIT
1240         to allocate a variable GC object.  To do this i've added a new 
1241         emitAllocateVariableSizedJSObject function to the JIT that does the work to
1242         find the correct heap for a variable sized allocation and then bump that
1243         allocator.
1244
1245         * dfg/DFGSpeculativeJIT.cpp:
1246         (JSC::DFG::SpeculativeJIT::emitAllocateArguments):
1247         * dfg/DFGSpeculativeJIT.h:
1248         (JSC::DFG::SpeculativeJIT::emitAllocateVariableSizedJSObject):
1249         * heap/CopyToken.h:
1250         * heap/Heap.h:
1251         (JSC::Heap::subspaceForObjectWithoutDestructor):
1252         (JSC::Heap::subspaceForObjectNormalDestructor):
1253         (JSC::Heap::subspaceForObjectsWithImmortalStructure):
1254         * heap/MarkedSpace.h:
1255         (JSC::MarkedSpace::subspaceForObjectsWithNormalDestructor):
1256         (JSC::MarkedSpace::subspaceForObjectsWithImmortalStructure):
1257         (JSC::MarkedSpace::subspaceForObjectsWithoutDestructor):
1258         * interpreter/StackVisitor.cpp:
1259         (JSC::StackVisitor::Frame::createArguments):
1260         * runtime/Arguments.cpp:
1261         (JSC::Arguments::visitChildren):
1262         (JSC::Arguments::copyBackingStore):
1263         (JSC::Arguments::tearOff):
1264         (JSC::Arguments::allocateRegisterArray): Deleted.
1265         * runtime/Arguments.h:
1266         (JSC::Arguments::create):
1267         (JSC::Arguments::isTornOff):
1268         (JSC::Arguments::offsetOfRegisterArray):
1269         (JSC::Arguments::registerArraySizeInBytes):
1270         (JSC::Arguments::registerArray):
1271         (JSC::Arguments::allocationSize): Deleted.
1272
1273 2014-10-15  Filip Pizlo  <fpizlo@apple.com>
1274
1275         Apparently we've had a hole in arguments capture all along
1276         https://bugs.webkit.org/show_bug.cgi?id=137767
1277
1278         Reviewed by Oliver Hunt.
1279
1280         * dfg/DFGByteCodeParser.cpp:
1281         (JSC::DFG::ByteCodeParser::getArgument):
1282         * tests/stress/arguments-captured.js: Added.
1283         (foo):
1284         (bar):
1285
1286 2014-10-16  Saam Barati  <saambarati1@gmail.com>
1287
1288         Have the ProfileType node in the DFG convert to a structure check where it can
1289         https://bugs.webkit.org/show_bug.cgi?id=137596
1290
1291         Reviewed by Filip Pizlo.
1292
1293         TypeSet now keeps track of the live set of Structures it has seen.
1294         It no longer nukes everything during GC. It now only removes unmarked
1295         structures during GC. This modification allows the ProfileType node 
1296         to convert into a CheckStructure node safely in the DFG. 
1297
1298         This change brings up the conversion rate from ProfileType to Check 
1299         or CheckStructrue from ~45% to ~65%. This change also speeds the 
1300         type profiler up significantly: consistently between 2x-20x faster. 
1301
1302         This patch also does some slight refactoring: a few type profiler
1303         related fields are moved from VM to TypeProfiler.
1304
1305         * bytecode/CodeBlock.cpp:
1306         (JSC::CodeBlock::CodeBlock):
1307         * dfg/DFGFixupPhase.cpp:
1308         (JSC::DFG::FixupPhase::fixupNode):
1309         * dfg/DFGNode.h:
1310         (JSC::DFG::Node::convertToCheckStructure):
1311         * heap/Heap.cpp:
1312         (JSC::Heap::collect):
1313         * runtime/SymbolTable.cpp:
1314         (JSC::SymbolTable::uniqueIDForVariable):
1315         * runtime/SymbolTable.h:
1316         * runtime/TypeLocationCache.cpp:
1317         (JSC::TypeLocationCache::getTypeLocation):
1318         * runtime/TypeProfiler.cpp:
1319         (JSC::TypeProfiler::TypeProfiler):
1320         (JSC::TypeProfiler::nextTypeLocation):
1321         (JSC::TypeProfiler::invalidateTypeSetCache):
1322         (JSC::TypeProfiler::dumpTypeProfilerData):
1323         * runtime/TypeProfiler.h:
1324         (JSC::TypeProfiler::getNextUniqueVariableID):
1325         * runtime/TypeProfilerLog.cpp:
1326         (JSC::TypeProfilerLog::processLogEntries):
1327         * runtime/TypeSet.cpp:
1328         (JSC::TypeSet::addTypeInformation):
1329         (JSC::TypeSet::invalidateCache):
1330         * runtime/TypeSet.h:
1331         (JSC::TypeSet::structureSet):
1332         * runtime/VM.cpp:
1333         (JSC::VM::VM):
1334         (JSC::VM::enableTypeProfiler):
1335         (JSC::VM::disableTypeProfiler):
1336         (JSC::VM::dumpTypeProfilerData):
1337         (JSC::VM::nextTypeLocation): Deleted.
1338         (JSC::VM::invalidateTypeSetCache): Deleted.
1339         * runtime/VM.h:
1340         (JSC::VM::typeProfiler):
1341         (JSC::VM::getNextUniqueVariableID): Deleted.
1342         * tests/typeProfiler/dfg-jit-optimizations.js:
1343
1344 2014-10-16  Adrien Destugues  <pulkomandy@gmail.com>
1345
1346         Use isnan from std namespace in ProfileGenerator.cpp
1347         https://bugs.webkit.org/show_bug.cgi?id=137653
1348
1349         Reviewed by Darin Adler.
1350
1351         The C++ isnan() function is in the std namespace. The unprefixed isnan
1352         may be available because of C99 headers leakage in C++, but should not
1353         be used.
1354
1355         No new tests: no functional change, build fix on platforms which don't
1356         export C99 functions in C++.
1357
1358         * profiler/ProfileGenerator.cpp:
1359         (JSC::ProfileGenerator::beginCallEntry):
1360         (JSC::ProfileGenerator::endCallEntry):
1361         (JSC::ProfileGenerator::didPause):
1362         (JSC::ProfileGenerator::didContinue):
1363
1364 2014-10-15  Michael Saboff  <msaboff@apple.com>
1365
1366         REGRESSION(r174025): remote inspector crashes frequently when executing inspector frontend's JavaScript
1367         https://bugs.webkit.org/show_bug.cgi?id=137758
1368
1369         Rubber stamped by Filip Pizlo.
1370
1371         Reverted r174025 for just PutByOffset Nodes.
1372
1373         * dfg/DFGFixupPhase.cpp:
1374         (JSC::DFG::FixupPhase::fixupNode):
1375
1376 2014-10-14  Gyuyoung Kim  <gyuyoung.kim@samsung.com>
1377
1378         Clean up unnecessary PassOwnPtr.h inclusion
1379         https://bugs.webkit.org/show_bug.cgi?id=137726
1380
1381         Reviewed by Chris Dumez.
1382
1383         * API/JSCallbackObject.h: Remove PassOwnPtr.h inclusion.
1384         * bytecode/DFGExitProfile.cpp: ditto.
1385
1386 2014-10-14  Brent Fulgham  <bfulgham@apple.com>
1387
1388         [Win] Unreviewed gardening. Ignore Visual Studio *.sdf files.
1389
1390         * JavaScriptCore.vcxproj: Modified properties svn:ignore and svn:ignore.
1391         * JavaScriptCore.vcxproj/jsc: Modified property svn:ignore.
1392
1393 2014-10-14  Matthew Mirman  <mmirman@apple.com>
1394
1395         Removes references to LLVMJIT which is no longer part of LLVM
1396         https://bugs.webkit.org/show_bug.cgi?id=137708
1397
1398         Reviewed by Filip Pizlo.
1399
1400         * Configurations/LLVMForJSC.xcconfig: removed -lLLVMJIT
1401         * llvm/LLVMAPIFunctions.h: removed LinkInJIT
1402
1403 2014-10-14  peavo@outlook.com  <peavo@outlook.com>
1404
1405         [Win32] Thunk is not implemented.
1406         https://bugs.webkit.org/show_bug.cgi?id=137691
1407
1408         Reviewed by Mark Lam.
1409
1410         Thunks for functions with double operands (floor, etc.) are not implemented on Win32.
1411
1412         * jit/ThunkGenerators.cpp:
1413
1414 2014-10-12  Alexey Proskuryakov  <ap@apple.com>
1415
1416         Adding svn:ignore so that .pyc files don't show up as new.
1417
1418         * inspector/scripts/codegen: Added property svn:ignore.
1419
1420 2014-10-10  Commit Queue  <commit-queue@webkit.org>
1421
1422         Unreviewed, rolling out r174606.
1423         https://bugs.webkit.org/show_bug.cgi?id=137621
1424
1425         broke a JSC test (Requested by estes on #webkit).
1426
1427         Reverted changeset:
1428
1429         "Various arguments optimisations in codegen fail to account
1430         for arguments being in lexical record"
1431         https://bugs.webkit.org/show_bug.cgi?id=137617
1432         http://trac.webkit.org/changeset/174606
1433
1434 2014-10-10  Oliver Hunt  <oliver@apple.com>
1435
1436         Various arguments optimisations in codegen fail to account for arguments being in lexical record
1437         https://bugs.webkit.org/show_bug.cgi?id=137617
1438
1439         Reviewed by Michael Saboff.
1440
1441         Rework the way we track |arguments| references so that we don't try
1442         to use the |arguments| reference on the stack if it's not safe.
1443
1444         To do this without nuking performance it was necessary to update
1445         the parser to track modification of the |arguments| reference
1446         itself.
1447
1448         * bytecode/CodeBlock.cpp:
1449         * bytecompiler/BytecodeGenerator.cpp:
1450         (JSC::BytecodeGenerator::BytecodeGenerator):
1451         (JSC::BytecodeGenerator::willResolveToArguments):
1452         (JSC::BytecodeGenerator::uncheckedLocalArgumentsRegister):
1453         (JSC::BytecodeGenerator::emitCall):
1454         (JSC::BytecodeGenerator::emitConstruct):
1455         (JSC::BytecodeGenerator::emitEnumeration):
1456         (JSC::BytecodeGenerator::uncheckedRegisterForArguments): Deleted.
1457         * bytecompiler/BytecodeGenerator.h:
1458         (JSC::BytecodeGenerator::hasSafeLocalArgumentsRegister):
1459         * bytecompiler/NodesCodegen.cpp:
1460         (JSC::BracketAccessorNode::emitBytecode):
1461         (JSC::DotAccessorNode::emitBytecode):
1462         (JSC::getArgumentByVal):
1463         (JSC::CallFunctionCallDotNode::emitBytecode):
1464         (JSC::ApplyFunctionCallDotNode::emitBytecode):
1465         (JSC::ArrayPatternNode::emitDirectBinding):
1466         * interpreter/StackVisitor.cpp:
1467         (JSC::StackVisitor::Frame::existingArguments):
1468         * parser/Nodes.h:
1469         (JSC::ScopeNode::modifiesArguments):
1470         * parser/Parser.cpp:
1471         (JSC::Parser<LexerType>::parseInner):
1472         * parser/Parser.h:
1473         (JSC::Scope::getCapturedVariables):
1474         * parser/ParserModes.h:
1475
1476 2014-10-09  Joseph Pecoraro  <pecoraro@apple.com>
1477
1478         Web Inspector: Remove unused generator code
1479         https://bugs.webkit.org/show_bug.cgi?id=137564
1480
1481         Reviewed by Brian Burg.
1482
1483         * inspector/scripts/codegen/generate_backend_dispatcher_header.py:
1484         (BackendDispatcherHeaderGenerator.generate_output): Deleted.
1485         * inspector/scripts/codegen/generate_backend_dispatcher_implementation.py:
1486         (BackendDispatcherImplementationGenerator.generate_output):
1487         * inspector/scripts/codegen/generate_frontend_dispatcher_header.py:
1488         (FrontendDispatcherHeaderGenerator.generate_output):
1489         * inspector/scripts/codegen/generate_frontend_dispatcher_implementation.py:
1490         (FrontendDispatcherImplementationGenerator.generate_output):
1491         * inspector/scripts/codegen/generate_protocol_types_header.py:
1492         (ProtocolTypesHeaderGenerator.generate_output):
1493         * inspector/scripts/codegen/generate_protocol_types_implementation.py:
1494         (ProtocolTypesImplementationGenerator.generate_output):
1495         inputFilename is now handled by the generic generator base class.
1496
1497         * inspector/scripts/codegen/models.py:
1498         (Framework.fromString):
1499         (Frameworks):
1500         * inspector/scripts/generate-inspector-protocol-bindings.py:
1501         The WTF framework is unused. Remove unexpected frameworks.
1502
1503 2014-10-09  Dean Jackson  <dino@apple.com>
1504
1505         Remove ENABLE_CSS3_CONDITIONAL_RULES
1506         https://bugs.webkit.org/show_bug.cgi?id=137571
1507
1508         Reviewed by Simon Fraser.
1509
1510         * Configurations/FeatureDefines.xcconfig:
1511
1512 2014-10-09  Adrien Destugues  <pulkomandy@gmail.com>
1513
1514         Fix compiler warning on noreturn function
1515         https://bugs.webkit.org/show_bug.cgi?id=137558
1516
1517         Reviewed by Darin Adler.
1518
1519         The function is marked "noreturn", but the stub implementation does
1520         return. No new tests: function is never called. Only fixes a warning.
1521
1522         * heap/HeapStatistics.cpp:
1523         (JSC::HeapStatistics::exitWithFailure):
1524
1525 2014-10-09  Akos Kiss  <akiss@inf.u-szeged.hu>
1526
1527         Ensure that inline assembly Thunk functions don't conflict with the section designations of the compiler
1528         https://bugs.webkit.org/show_bug.cgi?id=137434
1529
1530         Reviewed by Michael Saboff.
1531
1532         The ARM64 version of the defineUnaryDoubleOpWrapper macro in
1533         ThunkGenerators.cpp contains inline assembly with .text assembler
1534         directive followed by a static variable declaration. This macro gets
1535         expanded several times afterwards, however, only during the compilation
1536         of the first expansion does gcc insert a .data assembler directive
1537         before the assembled version of the static variable. Thus, only the
1538         first variable gets allocated in the .data section, all the others
1539         remain in .text. If JavaScriptCore is built as a shared library then
1540         this causes a segmentation fault during dynamic linking.
1541
1542         This patch puts a .previous directive at the end of the inline assembly
1543         to ensure that the assumptions of the compiler about the sections are
1544         not broken and the following variable goes to the right place.
1545
1546         * jit/ThunkGenerators.cpp:
1547
1548 2014-10-08  Oliver Hunt  <oliver@apple.com>
1549
1550         Make sure arguments tearoff is performed through the environment record if necessary
1551         https://bugs.webkit.org/show_bug.cgi?id=137538
1552
1553         Reviewed by Michael Saboff.
1554
1555         Fairly simple change.  If we have a lexical record we need to pull the unmodified
1556         arguments object from the record and then use the standard op_tear_off_arguments
1557         instruction on the temporary.
1558
1559         * bytecompiler/BytecodeGenerator.cpp:
1560         (JSC::BytecodeGenerator::emitGetOwnScope):
1561         (JSC::BytecodeGenerator::emitReturn):
1562         * bytecompiler/BytecodeGenerator.h:
1563
1564 2014-10-08  peavo@outlook.com  <peavo@outlook.com>
1565
1566         [WinCairo] Enable JIT on 32-bit.
1567         https://bugs.webkit.org/show_bug.cgi?id=137521
1568
1569         Reviewed by Mark Lam.
1570
1571         Enable JIT on Windows 32-bit, but disable it at runtime if SSE2 is not present.
1572
1573         * JavaScriptCore.vcxproj/LLInt/LLIntAssembly/build-LLIntAssembly.pl:
1574         * runtime/Options.cpp:
1575         (JSC::recomputeDependentOptions):
1576
1577 2014-10-08  Brent Fulgham  <bfulgham@apple.com>
1578
1579         [Win] Resolve some static analysis warnings in JavaScriptCore
1580         https://bugs.webkit.org/show_bug.cgi?id=137508
1581
1582         Reviewed by Geoffrey Garen.
1583
1584         * API/tests/testapi.c:
1585         (assertEqualsAsCharactersPtr): MSVC insists on using %Iu as its format specifier
1586         for size_t. Make the format string conditional on Windows.
1587         * bytecode/Watchpoint.h:
1588         (JSC::InlineWatchpointSet::encodeState): Silence warning about left-shifting 'state'
1589         as a 32-bit value before OR-ing it with a 64-bit value.
1590         * dfg/DFGFixupPhase.cpp:
1591         (JSC::DFG::FixupPhase::fixupNode): Silence warning about operator prescedence
1592         causing the || operation to take place before the >= test.
1593         * dfg/DFGInPlaceAbstractState.cpp:
1594         (JSC::DFG::InPlaceAbstractState::endBasicBlock): Ditto (|| before !=)
1595         * testRegExp.cpp:
1596         (testOneRegExp): Ditto %Iu format specifier.
1597         * yarr/YarrInterpreter.cpp:
1598         (JSC::Yarr::Interpreter::allocParenthesesDisjunctionContext): Silence warning about
1599         using a 32-bit value as part of a 64-bit calculation.
1600
1601 2014-10-07  Simon Fraser  <simon.fraser@apple.com>
1602
1603         Roll-over Changelogs.
1604
1605         * ChangeLog-2014-10-07: Copied from Source/JavaScriptCore/ChangeLog.
1606
1607 == Rolled over to ChangeLog-2014-10-07 ==